claudemesh-cli 1.34.7 → 1.34.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/entrypoints/cli.js +184 -19
- package/dist/entrypoints/cli.js.map +13 -12
- package/dist/entrypoints/mcp.js +43 -6
- package/dist/entrypoints/mcp.js.map +3 -3
- package/package.json +1 -1
- package/skills/claudemesh/SKILL.md +8 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/ui/styles.ts", "../../src/constants/exit-codes.ts", "../../src/constants/urls.ts", "../../src/constants/timings.ts", "../../src/utils/url.ts", "../../src/services/daemon/policy.ts", "../../src/constants/paths.ts", "../../src/services/config/schemas.ts", "../../src/services/config/read.ts", "../../src/services/config/write.ts", "../../src/services/config/facade.ts", "../../src/services/logger/logger.ts", "../../src/services/logger/facade.ts", "../../src/services/api/errors.ts", "../../src/services/api/client.ts", "../../src/services/api/my.ts", "../../src/services/api/public.ts", "../../src/services/api/facade.ts", "../../src/services/device/info.ts", "../../src/services/device/facade.ts", "../../src/services/spawn/claude.ts", "../../src/services/spawn/browser.ts", "../../src/services/spawn/facade.ts", "../../src/services/auth/token-store.ts", "../../src/services/auth/errors.ts", "../../src/services/auth/device-code.ts", "../../src/services/auth/client.ts", "../../src/services/auth/dashboard-sync.ts", "../../src/services/auth/callback-listener.ts", "../../src/services/auth/facade.ts", "../../src/services/crypto/keypair.ts", "../../src/services/crypto/file-crypto.ts", "../../src/services/crypto/box.ts", "../../src/services/crypto/random.ts", "../../src/services/crypto/facade.ts", "../../src/services/broker/hello-sig.ts", "../../src/services/broker/ws-client.ts", "../../src/services/broker/manager.ts", "../../src/services/broker/envelope.ts", "../../src/services/broker/facade.ts", "../../src/ui/render.ts", "../../src/ui/screen.ts", "../../src/ui/spinner.ts", "../../src/daemon/paths.ts", "../../src/daemon/local-token.ts", "../../src/services/session/token.ts", "../../src/daemon/ipc/client.ts", "../../src/services/daemon/lifecycle.ts", "../../src/ui/warnings.ts", "../../src/services/bridge/daemon-route.ts", "../../src/services/broker/session-hello-sig.ts", "../../src/commands/launch.ts", "../../src/ui/welcome/WelcomeScreen.ts", "../../src/ui/welcome/MeshPickerStep.ts", "../../src/ui/welcome/index.ts", "../../src/commands/login.ts", "../../src/commands/welcome.ts", "../../src/services/mesh/list.ts", "../../src/services/mesh/create.ts", "../../src/services/mesh/rename.ts", "../../src/services/mesh/leave.ts", "../../src/services/mesh/join.ts", "../../src/services/state/last-used.ts", "../../src/services/state/facade.ts", "../../src/services/mesh/resolve-target.ts", "../../src/services/mesh/facade.ts", "../../src/commands/new.ts", "../../src/services/invite/generate.ts", "../../src/services/invite/parse-v1.ts", "../../src/services/invite/enroll.ts", "../../src/services/invite/v2.ts", "../../src/services/invite/facade.ts", "../../src/commands/join.ts", "../../src/commands/list.ts", "../../src/commands/delete-mesh.ts", "../../src/commands/rename.ts", "../../src/services/clipboard/read.ts", "../../src/services/clipboard/facade.ts", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMode.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QR8bitByte.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMath.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMaskPattern.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRUtil.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRRSBlock.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRBitBuffer.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/index.js", "../../../../node_modules/qrcode-terminal/lib/main.js", "../../src/ui/qr.ts", "../../src/commands/invite.ts", "../../src/commands/connect.ts", "../../src/commands/info.ts", "../../src/services/api/with-rest-key.ts", "../../src/commands/me.ts", "../../src/commands/kick.ts", "../../src/commands/ban.ts", "../../src/services/session/resolve.ts", "../../src/commands/peers.ts", "../../src/commands/send.ts", "../../src/commands/inbox-actions.ts", "../../src/commands/inbox.ts", "../../src/commands/state.ts", "../../src/commands/remember.ts", "../../src/commands/recall.ts", "../../src/cli/validators.ts", "../../src/commands/broker-actions.ts", "../../src/commands/remind.ts", "../../src/commands/register.ts", "../../src/commands/logout.ts", "../../src/commands/whoami.ts", "../../src/daemon/lock.ts", "../../src/daemon/db/outbox.ts", "../../src/daemon/db/sqlite.ts", "../../src/daemon/fingerprint.ts", "../../src/daemon/ipc/handlers/send.ts", "../../src/daemon/db/inbox.ts", "../../src/daemon/events.ts", "../../src/daemon/process-info.ts", "../../src/daemon/session-registry.ts", "../../src/daemon/ipc/server.ts", "../../src/daemon/ws-lifecycle.ts", "../../src/daemon/broker.ts", "../../src/daemon/session-broker.ts", "../../src/daemon/drain.ts", "../../src/daemon/inbound.ts", "../../src/daemon/identity.ts", "../../src/daemon/run.ts", "../../src/daemon/service-install.ts", "../../src/commands/daemon.ts", "../../src/commands/install.ts", "../../src/commands/uninstall.ts", "../../src/commands/doctor.ts", "../../src/commands/status.ts", "../../src/commands/sync.ts", "../../src/services/health/check-node-version.ts", "../../src/services/health/check-claude-binary.ts", "../../src/services/health/check-mcp-registered.ts", "../../src/services/health/check-hooks-registered.ts", "../../src/services/health/check-config-perms.ts", "../../src/services/health/check-keypairs-valid.ts", "../../src/services/health/facade.ts", "../../src/commands/test.ts", "../../src/commands/completions.ts", "../../src/commands/verify.ts", "../../src/commands/url-handler.ts", "../../src/commands/status-line.ts", "../../src/commands/backup.ts", "../../src/commands/upgrade.ts", "../../src/commands/grants.ts", "../../src/commands/profile.ts", "../../src/commands/platform-actions.ts", "../../src/commands/skill.ts", "../../src/commands/file.ts", "../../../../packages/sdk/dist/crypto.js", "../../../../packages/sdk/dist/client.js", "../../../../packages/sdk/dist/bridge.js", "../../../../packages/sdk/dist/index.js", "../../src/commands/bridge.ts", "../../src/commands/apikey.ts", "../../src/commands/topic.ts", "../../src/services/crypto/topic-key.ts", "../../src/commands/topic-tail.ts", "../../src/commands/topic-post.ts", "../../src/commands/notification.ts", "../../src/commands/member.ts", "../../src/mcp/server.ts", "../../src/commands/mcp.ts", "../../src/commands/hook.ts", "../../src/commands/seed-test-mesh.ts", "../../src/cli/argv.ts", "../../src/cli/handlers/signal.ts", "../../src/cli/handlers/error.ts", "../../src/services/update/check.ts", "../../src/utils/semver.ts", "../../src/cli/update-notice.ts", "../../src/entrypoints/cli.ts", "../../src/cli/output/version.ts", "../../src/cli/policy-classify.ts", "../../src/services/policy/index.ts"],
|
|
3
|
+
"sources": ["../../src/ui/styles.ts", "../../src/constants/exit-codes.ts", "../../src/constants/urls.ts", "../../src/constants/timings.ts", "../../src/utils/url.ts", "../../src/services/daemon/policy.ts", "../../src/constants/paths.ts", "../../src/services/config/schemas.ts", "../../src/services/config/read.ts", "../../src/services/config/write.ts", "../../src/services/config/facade.ts", "../../src/services/logger/logger.ts", "../../src/services/logger/facade.ts", "../../src/services/api/errors.ts", "../../src/services/api/client.ts", "../../src/services/api/my.ts", "../../src/services/api/public.ts", "../../src/services/api/facade.ts", "../../src/services/device/info.ts", "../../src/services/device/facade.ts", "../../src/services/spawn/claude.ts", "../../src/services/spawn/browser.ts", "../../src/services/spawn/facade.ts", "../../src/services/auth/token-store.ts", "../../src/services/auth/errors.ts", "../../src/services/auth/device-code.ts", "../../src/services/auth/client.ts", "../../src/services/auth/dashboard-sync.ts", "../../src/services/auth/callback-listener.ts", "../../src/services/auth/facade.ts", "../../src/services/crypto/keypair.ts", "../../src/services/crypto/file-crypto.ts", "../../src/services/crypto/box.ts", "../../src/services/crypto/random.ts", "../../src/services/crypto/facade.ts", "../../src/services/broker/hello-sig.ts", "../../src/services/broker/ws-client.ts", "../../src/services/broker/manager.ts", "../../src/services/broker/envelope.ts", "../../src/services/broker/facade.ts", "../../src/ui/render.ts", "../../src/ui/screen.ts", "../../src/ui/spinner.ts", "../../src/daemon/paths.ts", "../../src/daemon/local-token.ts", "../../src/services/session/token.ts", "../../src/daemon/ipc/client.ts", "../../src/services/daemon/lifecycle.ts", "../../src/ui/warnings.ts", "../../src/services/bridge/daemon-route.ts", "../../src/services/broker/session-hello-sig.ts", "../../src/commands/launch.ts", "../../src/ui/welcome/WelcomeScreen.ts", "../../src/ui/welcome/MeshPickerStep.ts", "../../src/ui/welcome/index.ts", "../../src/commands/login.ts", "../../src/commands/welcome.ts", "../../src/services/mesh/list.ts", "../../src/services/mesh/create.ts", "../../src/services/mesh/rename.ts", "../../src/services/mesh/leave.ts", "../../src/services/mesh/join.ts", "../../src/services/state/last-used.ts", "../../src/services/state/facade.ts", "../../src/services/mesh/resolve-target.ts", "../../src/services/mesh/facade.ts", "../../src/commands/new.ts", "../../src/services/invite/generate.ts", "../../src/services/invite/parse-v1.ts", "../../src/services/invite/enroll.ts", "../../src/services/invite/v2.ts", "../../src/services/invite/facade.ts", "../../src/commands/join.ts", "../../src/commands/list.ts", "../../src/commands/delete-mesh.ts", "../../src/commands/rename.ts", "../../src/services/clipboard/read.ts", "../../src/services/clipboard/facade.ts", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMode.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QR8bitByte.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMath.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMaskPattern.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRUtil.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRRSBlock.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRBitBuffer.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/index.js", "../../../../node_modules/qrcode-terminal/lib/main.js", "../../src/ui/qr.ts", "../../src/commands/invite.ts", "../../src/commands/connect.ts", "../../src/commands/info.ts", "../../src/services/api/with-rest-key.ts", "../../src/commands/me.ts", "../../src/commands/kick.ts", "../../src/commands/ban.ts", "../../src/services/session/resolve.ts", "../../src/commands/peers.ts", "../../src/commands/send.ts", "../../src/commands/inbox-actions.ts", "../../src/commands/inbox.ts", "../../src/commands/state.ts", "../../src/commands/remember.ts", "../../src/commands/recall.ts", "../../src/cli/validators.ts", "../../src/commands/broker-actions.ts", "../../src/commands/remind.ts", "../../src/commands/register.ts", "../../src/commands/logout.ts", "../../src/commands/whoami.ts", "../../src/daemon/lock.ts", "../../src/daemon/db/outbox.ts", "../../src/daemon/db/sqlite.ts", "../../src/daemon/fingerprint.ts", "../../src/daemon/ipc/handlers/send.ts", "../../src/daemon/db/inbox.ts", "../../src/daemon/events.ts", "../../src/daemon/process-info.ts", "../../src/daemon/session-registry.ts", "../../src/daemon/ipc/server.ts", "../../src/daemon/ws-lifecycle.ts", "../../src/daemon/broker.ts", "../../src/daemon/session-broker.ts", "../../src/daemon/drain.ts", "../../src/daemon/inbox-pruner.ts", "../../src/daemon/inbound.ts", "../../src/daemon/identity.ts", "../../src/daemon/run.ts", "../../src/daemon/service-install.ts", "../../src/commands/daemon.ts", "../../src/commands/install.ts", "../../src/commands/uninstall.ts", "../../src/commands/doctor.ts", "../../src/commands/status.ts", "../../src/commands/sync.ts", "../../src/services/health/check-node-version.ts", "../../src/services/health/check-claude-binary.ts", "../../src/services/health/check-mcp-registered.ts", "../../src/services/health/check-hooks-registered.ts", "../../src/services/health/check-config-perms.ts", "../../src/services/health/check-keypairs-valid.ts", "../../src/services/health/facade.ts", "../../src/commands/test.ts", "../../src/commands/completions.ts", "../../src/commands/verify.ts", "../../src/commands/url-handler.ts", "../../src/commands/status-line.ts", "../../src/commands/backup.ts", "../../src/commands/upgrade.ts", "../../src/commands/grants.ts", "../../src/commands/profile.ts", "../../src/commands/platform-actions.ts", "../../src/commands/skill.ts", "../../src/commands/file.ts", "../../../../packages/sdk/dist/crypto.js", "../../../../packages/sdk/dist/client.js", "../../../../packages/sdk/dist/bridge.js", "../../../../packages/sdk/dist/index.js", "../../src/commands/bridge.ts", "../../src/commands/apikey.ts", "../../src/commands/topic.ts", "../../src/services/crypto/topic-key.ts", "../../src/commands/topic-tail.ts", "../../src/commands/topic-post.ts", "../../src/commands/notification.ts", "../../src/commands/member.ts", "../../src/mcp/server.ts", "../../src/commands/mcp.ts", "../../src/commands/hook.ts", "../../src/commands/seed-test-mesh.ts", "../../src/cli/argv.ts", "../../src/cli/handlers/signal.ts", "../../src/cli/handlers/error.ts", "../../src/services/update/check.ts", "../../src/utils/semver.ts", "../../src/cli/update-notice.ts", "../../src/entrypoints/cli.ts", "../../src/cli/output/version.ts", "../../src/cli/policy-classify.ts", "../../src/services/policy/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"const isTTY =\n process.stdout.isTTY && !process.env.NO_COLOR && process.env.TERM !== \"dumb\";\n\nconst esc = (code: string) => (s: string) =>\n isTTY ? `${code}${s}\\x1b[0m` : s;\n\nexport const orange = esc(\"\\x1b[38;5;208m\");\nexport const clay = esc(\"\\x1b[38;5;173m\");\nexport const amber = esc(\"\\x1b[38;5;214m\");\n\nexport const bold = esc(\"\\x1b[1m\");\nexport const dim = esc(\"\\x1b[2m\");\nexport const green = esc(\"\\x1b[32m\");\nexport const yellow = esc(\"\\x1b[33m\");\nexport const red = esc(\"\\x1b[31m\");\nexport const cyan = esc(\"\\x1b[36m\");\nexport const boldOrange = esc(\"\\x1b[1m\\x1b[38;5;208m\");\n\nexport const HIDE_CURSOR = isTTY ? \"\\x1b[?25l\" : \"\";\nexport const SHOW_CURSOR = isTTY ? \"\\x1b[?25h\" : \"\";\nexport const CLEAR_SCREEN = isTTY ? \"\\x1b[2J\\x1b[H\" : \"\";\nexport const CLEAR_LINE = isTTY ? \"\\x1b[K\" : \"\";\n\nexport function moveTo(row: number, col: number): string {\n return isTTY ? `\\x1b[${row};${col}H` : \"\";\n}\n\nexport function moveUp(n: number): string {\n return isTTY ? `\\x1b[${n}A` : \"\";\n}\n\nexport function visibleLength(s: string): number {\n return s.replace(/\\x1b\\[[^m]*m/g, \"\").length;\n}\n\nexport const icons = {\n check: \"✔\",\n cross: \"✘\",\n warn: \"⚠\",\n arrow: \"→\",\n bullet: \"●\",\n dash: \"—\",\n ellipsis: \"…\",\n} as const;\n",
|
|
6
6
|
"export const EXIT = {\n SUCCESS: 0,\n USER_CANCELLED: 1,\n AUTH_FAILED: 2,\n INVALID_ARGS: 3,\n NETWORK_ERROR: 4,\n NOT_FOUND: 5,\n ALREADY_EXISTS: 6,\n PERMISSION_DENIED: 7,\n INTERNAL_ERROR: 8,\n CLAUDE_MISSING: 9,\n IO_ERROR: 10,\n} as const;\n\nexport type ExitCode = (typeof EXIT)[keyof typeof EXIT];\n",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"import { request as httpRequest } from \"node:http\";\n\nimport { DAEMON_PATHS, DAEMON_TCP_HOST, DAEMON_TCP_DEFAULT_PORT } from \"../paths.js\";\nimport { readLocalToken } from \"../local-token.js\";\nimport { readSessionTokenFromEnv } from \"~/services/session/token.js\";\n\nexport interface IpcRequestOptions {\n method?: \"GET\" | \"POST\" | \"PATCH\" | \"DELETE\";\n path: string;\n body?: unknown;\n /** Force TCP loopback instead of UDS (for tests / cross-container scenarios). */\n preferTcp?: boolean;\n timeoutMs?: number;\n}\n\nexport interface IpcResponse<T = unknown> {\n status: number;\n body: T;\n}\n\nexport class IpcError extends Error {\n constructor(public status: number, public payload: unknown, msg: string) {\n super(msg);\n }\n}\n\n/** Small, dependency-free IPC client for talking to the local daemon. */\nexport async function ipc<T = unknown>(opts: IpcRequestOptions): Promise<IpcResponse<T>> {\n const useTcp = !!opts.preferTcp;\n const headers: Record<string, string> = {\n accept: \"application/json\",\n host: \"localhost\",\n };\n\n let bodyBuf: Buffer | undefined;\n if (opts.body !== undefined) {\n bodyBuf = Buffer.from(JSON.stringify(opts.body), \"utf8\");\n headers[\"content-type\"] = \"application/json\";\n headers[\"content-length\"] = String(bodyBuf.length);\n }\n\n if (useTcp) {\n const tok = readLocalToken();\n if (!tok) throw new IpcError(0, null, \"daemon local token not found; is the daemon running?\");\n headers.authorization = `Bearer ${tok}`;\n }\n\n // Per-session token attribution. When the calling process has\n // CLAUDEMESH_IPC_TOKEN_FILE set (a launched session and its\n // descendants), attach the session token. The daemon's auth\n // middleware resolves it to a SessionInfo and uses it for default-\n // mesh scoping. Sent as a second Authorization header is not\n // possible per HTTP semantics, so we layer: when both UDS and a\n // session token exist, send the session token; the bearer remains\n // only for TCP loopback callers.\n if (!useTcp) {\n const sessionTok = readSessionTokenFromEnv();\n if (sessionTok) headers.authorization = `ClaudeMesh-Session ${sessionTok}`;\n }\n\n return new Promise<IpcResponse<T>>((resolve, reject) => {\n const req = httpRequest(\n useTcp\n ? { host: DAEMON_TCP_HOST, port: DAEMON_TCP_DEFAULT_PORT, path: opts.path, method: opts.method ?? \"GET\", headers }\n : { socketPath: DAEMON_PATHS.SOCK_FILE, path: opts.path, method: opts.method ?? \"GET\", headers },\n (res) => {\n const chunks: Buffer[] = [];\n res.on(\"data\", (c) => chunks.push(c));\n res.on(\"end\", () => {\n const raw = Buffer.concat(chunks).toString(\"utf8\");\n let parsed: unknown = raw;\n try { parsed = raw.length > 0 ? JSON.parse(raw) : null; } catch { /* leave raw */ }\n resolve({ status: res.statusCode ?? 0, body: parsed as T });\n });\n },\n );\n req.setTimeout(opts.timeoutMs ?? 5_000, () => req.destroy(new Error(\"ipc_timeout\")));\n req.on(\"error\", (err) => reject(err));\n if (bodyBuf) req.write(bodyBuf);\n req.end();\n });\n}\n",
|
|
52
52
|
"/**\n * Daemon lifecycle helper — probe, auto-spawn, retry, fall-through.\n *\n * Every daemon-routed CLI verb passes through `ensureDaemonReady()` before\n * its IPC call. The helper:\n *\n * 1. Probes the socket via a fast `/v1/version` IPC (~5-10 ms).\n * 2. If the socket is missing OR present-but-stale, attempts a detached\n * `claudemesh daemon up` spawn under a file-lock.\n * 3. Polls for the new socket up to a budget (default 3s).\n * 4. Returns a state describing what happened, so the caller can either\n * proceed warm or fall back to the cold path with a clear warning.\n *\n * State machine:\n * - \"up\" daemon was already running\n * - \"started\" daemon was down; we spawned it; it came up\n * - \"down\" daemon was down; auto-spawn skipped (e.g., recursion guard)\n * - \"spawn-failed\" spawn attempted but socket never appeared within budget\n * - \"spawn-suppressed\" recently-failed marker is fresh; skipped retry\n *\n * Stale-socket handling: if the socket file exists but the IPC probe\n * fails (ECONNREFUSED / timeout), we treat the file as stale, remove\n * it, and proceed as if the daemon were down. This fixes the prior bug\n * where `existsSync(SOCK_FILE)` was a false positive after a daemon\n * crash.\n *\n * Recursion guard: when we spawn the daemon we set\n * `CLAUDEMESH_INTERNAL_NO_AUTOSPAWN=1` in its env so any nested CLI\n * calls inside the daemon skip the auto-spawn check and avoid a loop.\n */\n\nimport { existsSync, readFileSync, statSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport { ipc, IpcError } from \"~/daemon/ipc/client.js\";\nimport { DAEMON_PATHS } from \"~/daemon/paths.js\";\n\nexport type DaemonReadyState =\n | \"up\"\n | \"started\"\n | \"down\"\n | \"spawn-failed\"\n | \"spawn-suppressed\"\n /** 1.31.0+: launchd / systemd manages the daemon and it didn't respond\n * within the service budget. Distinct from spawn-failed: the CLI did\n * not attempt to spawn (the OS owns the lifecycle). */\n | \"service-not-ready\";\n\nexport interface EnsureDaemonResult {\n state: DaemonReadyState;\n /** Total ms spent in this call (probe ± spawn ± poll). */\n durationMs: number;\n /** When state is `spawn-failed` or `spawn-suppressed`, a one-line reason. */\n reason?: string;\n}\n\nexport interface EnsureDaemonOpts {\n /** Total budget for socket-appearance polling after spawn. Default 3000ms. */\n budgetMs?: number;\n /** Skip auto-spawn entirely. Used by `--no-daemon` and the recursion guard. */\n noAutoSpawn?: boolean;\n /** When auto-spawning a legacy single-mesh daemon, pin a slug. Omit for multi-mesh (default). */\n mesh?: string;\n}\n\nconst SPAWN_LOCK_FILE = () => join(DAEMON_PATHS.DAEMON_DIR, \".spawn.lock\");\nconst SPAWN_FAIL_FILE = () => join(DAEMON_PATHS.DAEMON_DIR, \".spawn-failure\");\nconst SPAWN_FAIL_TTL_MS = 30_000;\n// 1.31.0: 800 ms was too tight — the daemon's first IPC after a launchd\n// (re)start can take a beat while it migrates SQLite, opens broker WSes,\n// and warms up the event loop. False \"stale\" probes triggered the\n// pointless spawn → \"socket did not appear\" warning even on a perfectly\n// healthy service-managed daemon. 2500 ms still bounds the worst case.\nconst PROBE_TIMEOUT_MS = 2_500;\n// When the daemon is service-managed (launchd/systemd) and KeepAlive=true,\n// the OS guarantees a restart on death — the CLI must NOT race that with\n// its own spawn. Just wait longer for the service unit to come up.\nconst SERVICE_BUDGET_MS = 8_000;\n\nlet lastResultThisProcess: EnsureDaemonResult | null = null;\n\n/** Probe daemon and return what we know. Cached per-process so a script\n * with 50 sends doesn't re-spawn 50 times. */\nexport async function ensureDaemonReady(opts: EnsureDaemonOpts = {}): Promise<EnsureDaemonResult> {\n if (lastResultThisProcess && (lastResultThisProcess.state === \"up\" || lastResultThisProcess.state === \"started\")) {\n return lastResultThisProcess;\n }\n if (process.env.CLAUDEMESH_INTERNAL_NO_AUTOSPAWN === \"1\") {\n opts = { ...opts, noAutoSpawn: true };\n }\n const result = await runEnsureDaemon(opts);\n lastResultThisProcess = result;\n return result;\n}\n\n/** Reset the per-process cache. Test helper. */\nexport function _resetDaemonReadyCache(): void {\n lastResultThisProcess = null;\n}\n\nasync function runEnsureDaemon(opts: EnsureDaemonOpts): Promise<EnsureDaemonResult> {\n const t0 = Date.now();\n\n // Step 1 — probe.\n const probe = await probeDaemon();\n if (probe === \"up\") return { state: \"up\", durationMs: Date.now() - t0 };\n\n // Step 2 — service-managed shortcut. When launchd / systemd manages\n // the daemon and KeepAlive is set, the OS will restart a crashed\n // daemon on its own; the CLI must NOT race that with its own spawn\n // (would double-bind the singleton lock and trigger \"daemon already\n // running\" errors). Just wait quietly for the service to bring the\n // socket up.\n if (isServiceManaged()) {\n if (probe === \"stale\") cleanupStaleFiles();\n const polled = await pollForSocket(SERVICE_BUDGET_MS);\n if (polled.ok) return { state: \"up\", durationMs: Date.now() - t0 };\n const tool = process.platform === \"darwin\"\n ? `launchctl print gui/$(id -u)/${SERVICE_LABEL}`\n : `systemctl --user status ${SYSTEMD_UNIT}`;\n return {\n state: \"service-not-ready\",\n durationMs: Date.now() - t0,\n reason: `service-managed daemon not responding within ${SERVICE_BUDGET_MS}ms (run \\`${tool}\\`)`,\n };\n }\n\n if (probe === \"stale\") cleanupStaleFiles();\n\n // Step 3 — auto-spawn unless forbidden.\n if (opts.noAutoSpawn) {\n return { state: \"down\", durationMs: Date.now() - t0, reason: \"auto-spawn disabled\" };\n }\n if (recentSpawnFailureFresh()) {\n return {\n state: \"spawn-suppressed\",\n durationMs: Date.now() - t0,\n reason: `daemon failed to start within last ${Math.round(SPAWN_FAIL_TTL_MS / 1000)}s`,\n };\n }\n\n // Step 4 — spawn detached.\n const spawnRes = await spawnDaemon(opts);\n if (spawnRes.ok) {\n return { state: \"started\", durationMs: Date.now() - t0 };\n }\n\n // Step 5 — record failure for backoff and report.\n markSpawnFailure();\n return { state: \"spawn-failed\", durationMs: Date.now() - t0, reason: spawnRes.reason };\n}\n\nconst SERVICE_LABEL = \"com.claudemesh.daemon\";\nconst SYSTEMD_UNIT = \"claudemesh-daemon.service\";\n\n/**\n * Returns true when the user has installed the daemon as a launchd\n * agent (macOS) or systemd --user unit (Linux). We detect by file\n * presence rather than shelling out to launchctl/systemctl on every\n * CLI invocation — this stays cheap and avoids spurious permission\n * prompts on locked-down hosts.\n */\nfunction isServiceManaged(): boolean {\n if (process.platform === \"darwin\") {\n return existsSync(join(homedir(), \"Library\", \"LaunchAgents\", `${SERVICE_LABEL}.plist`));\n }\n if (process.platform === \"linux\") {\n return existsSync(join(homedir(), \".config\", \"systemd\", \"user\", SYSTEMD_UNIT));\n }\n return false;\n}\n\nasync function probeDaemon(): Promise<\"up\" | \"absent\" | \"stale\"> {\n if (!existsSync(DAEMON_PATHS.SOCK_FILE)) return \"absent\";\n try {\n const res = await ipc<{ version?: string }>({ path: \"/v1/version\", timeoutMs: PROBE_TIMEOUT_MS });\n if (res.status === 200) return \"up\";\n return \"stale\";\n } catch (err) {\n if (err instanceof IpcError) return \"stale\";\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout|EPIPE|ECONNRESET/.test(msg)) return \"stale\";\n return \"stale\";\n }\n}\n\nfunction cleanupStaleFiles(): void {\n for (const p of [DAEMON_PATHS.SOCK_FILE, DAEMON_PATHS.PID_FILE]) {\n try { unlinkSync(p); } catch { /* best-effort */ }\n }\n}\n\nfunction recentSpawnFailureFresh(): boolean {\n try {\n const st = statSync(SPAWN_FAIL_FILE());\n return Date.now() - st.mtimeMs < SPAWN_FAIL_TTL_MS;\n } catch {\n return false;\n }\n}\n\nfunction markSpawnFailure(): void {\n try { writeFileSync(SPAWN_FAIL_FILE(), String(Date.now()), { mode: 0o600 }); } catch { /* best-effort */ }\n}\n\nfunction clearSpawnFailure(): void {\n try { unlinkSync(SPAWN_FAIL_FILE()); } catch { /* best-effort */ }\n}\n\ninterface SpawnResult { ok: boolean; reason?: string; }\n\nasync function spawnDaemon(opts: EnsureDaemonOpts): Promise<SpawnResult> {\n const lockResult = await acquireOrShareLock(opts);\n if (lockResult === \"wait-existing\") {\n // Another process is spawning; just wait for the socket to appear.\n return await pollForSocket(opts.budgetMs ?? 3_000);\n }\n\n try {\n const { spawn } = await import(\"node:child_process\");\n const binary = await resolveCliBinary();\n const args = [\"daemon\", \"up\"];\n if (opts.mesh) args.push(\"--mesh\", opts.mesh);\n\n const child = spawn(binary, args, {\n detached: true,\n stdio: \"ignore\",\n env: { ...process.env, CLAUDEMESH_INTERNAL_NO_AUTOSPAWN: \"1\" },\n });\n child.unref();\n\n const polled = await pollForSocket(opts.budgetMs ?? 3_000);\n if (polled.ok) clearSpawnFailure();\n return polled;\n } catch (err) {\n return { ok: false, reason: err instanceof Error ? err.message : String(err) };\n } finally {\n releaseLock();\n }\n}\n\n/** Acquire spawn lock. If another process holds it AND its pid is alive,\n * return \"wait-existing\" so we share that spawn attempt. If the pid is\n * dead, take over the lock. */\nasync function acquireOrShareLock(_opts: EnsureDaemonOpts): Promise<\"acquired\" | \"wait-existing\"> {\n const lockPath = SPAWN_LOCK_FILE();\n if (existsSync(lockPath)) {\n try {\n const pidStr = readFileSync(lockPath, \"utf8\").trim();\n const pid = Number.parseInt(pidStr, 10);\n if (Number.isFinite(pid) && pid > 0) {\n try {\n process.kill(pid, 0); // signal 0 = liveness probe\n return \"wait-existing\";\n } catch {\n // Holder is dead — fall through to take over.\n }\n }\n } catch { /* unreadable lock — take over */ }\n }\n try {\n writeFileSync(lockPath, String(process.pid), { mode: 0o600 });\n } catch { /* best-effort; lock is advisory */ }\n return \"acquired\";\n}\n\nfunction releaseLock(): void {\n try { unlinkSync(SPAWN_LOCK_FILE()); } catch { /* best-effort */ }\n}\n\nasync function pollForSocket(budgetMs: number): Promise<SpawnResult> {\n const start = Date.now();\n while (Date.now() - start < budgetMs) {\n if (existsSync(DAEMON_PATHS.SOCK_FILE)) {\n // Don't just trust file presence — confirm it answers.\n const probe = await probeDaemon();\n if (probe === \"up\") return { ok: true };\n }\n await new Promise((r) => setTimeout(r, 150));\n }\n return { ok: false, reason: `socket did not appear within ${budgetMs}ms` };\n}\n\n/** Resolve the absolute path to the `claudemesh` binary the user is running.\n * When invoked via tsx/bun in dev, fall back to the system `claudemesh`. */\nasync function resolveCliBinary(): Promise<string> {\n const argv1 = process.argv[1] ?? \"claudemesh\";\n if (/\\.ts$/.test(argv1) || /node_modules|src\\/entrypoints/.test(argv1)) {\n try {\n const { execSync } = await import(\"node:child_process\");\n return execSync(\"which claudemesh\", { encoding: \"utf8\" }).trim() || \"claudemesh\";\n } catch {\n return \"claudemesh\";\n }\n }\n return argv1;\n}\n",
|
|
53
53
|
"/**\n * Once-per-process daemon-state warnings, routed to stderr.\n *\n * Suppressed under --quiet (caller responsibility — we never inspect\n * argv). JSON callers should consult the result's `state` field\n * directly and skip calling this helper.\n */\n\nimport type { EnsureDaemonResult } from \"~/services/daemon/lifecycle.js\";\nimport { getDaemonPolicy } from \"~/services/daemon/policy.js\";\nimport { dim } from \"./styles.js\";\n\nlet alreadyWarned = false;\n\nexport interface WarnDaemonOpts {\n quiet?: boolean;\n /** When true, emit nothing — the caller will surface the state in JSON. */\n json?: boolean;\n}\n\n/** Print a single, severity-appropriate line to stderr describing the\n * result of `ensureDaemonReady`. Returns whether anything was printed. */\nexport function warnDaemonState(\n res: EnsureDaemonResult,\n opts: WarnDaemonOpts = {},\n): boolean {\n if (alreadyWarned) return false;\n if (opts.quiet || opts.json) return false;\n if (res.state === \"up\") return false;\n\n // Under --strict, the cold-path gate at `withMesh` will print its own\n // refusal message — suppress the misleading \"using cold path\" hint\n // here so the user sees a single, accurate error.\n if (getDaemonPolicy().mode === \"strict\" && res.state !== \"started\") return false;\n\n alreadyWarned = true;\n const tag = (label: string) => `[claudemesh] ${label}`;\n const hint = (s: string) => dim(s);\n\n switch (res.state) {\n case \"started\":\n process.stderr.write(`${tag(\"info\")} daemon restarted automatically ${hint(`(took ${res.durationMs}ms)`)}\\n`);\n return true;\n case \"down\":\n process.stderr.write(`${tag(\"info\")} daemon not running — using cold path ${hint(\"(slower; run `claudemesh daemon up` for warm path)\")}\\n`);\n return true;\n case \"spawn-suppressed\":\n process.stderr.write(`${tag(\"warn\")} ${res.reason ?? \"daemon failed to start recently\"} — using cold path ${hint(\"(run `claudemesh doctor`)\")}\\n`);\n return true;\n case \"spawn-failed\":\n process.stderr.write(`${tag(\"warn\")} daemon spawn failed${res.reason ? `: ${res.reason}` : \"\"} — using cold path ${hint(\"(check ~/.claudemesh/daemon/daemon.log)\")}\\n`);\n return true;\n case \"service-not-ready\":\n process.stderr.write(`${tag(\"warn\")} ${res.reason ?? \"service-managed daemon not responding\"} — using cold path ${hint(\"(check ~/.claudemesh/daemon/daemon.log)\")}\\n`);\n return true;\n }\n return false;\n}\n\n/** Reset the once-per-process latch. Test helper. */\nexport function _resetDaemonWarningLatch(): void {\n alreadyWarned = false;\n}\n",
|
|
54
|
-
"// Daemon-routed CLI helpers. Returns null when the daemon is unreachable\n// AND auto-spawn could not bring it up — caller is expected to fall back\n// to its cold-path WS or to error out under `--strict`.\n//\n// Auto-recovery: when the daemon socket is missing or stale, every\n// helper here calls into the lifecycle module which probes, spawns\n// (under a lock), polls, and retries — so cold-path fallback only\n// fires if auto-spawn failed. The lifecycle module caches its\n// per-process result, so a script doing 50 sends pays the spawn cost\n// at most once.\n//\n// 1.28.0: the orphaned bridge tier between daemon and cold paths was\n// removed. Two paths only: daemon (with auto-spawn) → cold.\n\nimport { ipc } from \"~/daemon/ipc/client.js\";\nimport { ensureDaemonReady } from \"~/services/daemon/lifecycle.js\";\nimport { getDaemonPolicy } from \"~/services/daemon/policy.js\";\nimport { warnDaemonState } from \"~/ui/warnings.js\";\n\nfunction meshQuery(mesh?: string): string {\n return mesh ? `?mesh=${encodeURIComponent(mesh)}` : \"\";\n}\n\n/** Common entry: ensure the daemon is reachable, emitting a one-shot\n * stderr warning describing what we did. Returns true when the daemon\n * is now reachable, false when the caller should fall back.\n *\n * --no-daemon short-circuits to false; --strict's enforcement lives at\n * the cold-path entry point (`withMesh` in commands/connect.ts) so a\n * single chokepoint covers every verb. */\nasync function daemonReachable(): Promise<boolean> {\n const policy = getDaemonPolicy();\n if (policy.mode === \"no-daemon\") return false;\n const res = await ensureDaemonReady({ noAutoSpawn: false });\n warnDaemonState(res, {});\n return res.state === \"up\" || res.state === \"started\";\n}\n\n/** Try fetching the peer list through the daemon (~1ms warm IPC).\n * Returns null when the daemon socket isn't present so the caller can\n * fall back to bridge / cold paths. */\nexport async function tryListPeersViaDaemon(mesh?: string): Promise<unknown[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ peers?: unknown[] }>({ path: `/v1/peers${meshQuery(mesh)}`, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.peers) ? res.body.peers : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/**\n * 1.34.0 — Try fetching the persisted inbox from the daemon.\n *\n * Reads from `~/.claudemesh/daemon/inbox.db` via `/v1/inbox`. This is\n * the authoritative source of received messages — pushes from the\n * broker land here through the daemon's session-WS / member-WS push\n * handler. The pre-1.34.0 cold-path inbox command opened a fresh\n * BrokerClient and drained an empty in-memory buffer, which never\n * matched what the daemon was actually receiving.\n */\nexport interface InboxItem {\n id: string;\n client_message_id: string;\n broker_message_id: string | null;\n mesh: string;\n topic: string | null;\n sender_pubkey: string;\n sender_name: string;\n body: string | null;\n received_at: string;\n reply_to_id: string | null;\n}\n\nexport async function tryListInboxViaDaemon(mesh?: string, limit = 100): Promise<InboxItem[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const path = `/v1/inbox${meshQuery(mesh)}${meshQuery(mesh) ? \"&\" : \"?\"}limit=${limit}`;\n const res = await ipc<{ items?: InboxItem[] }>({ path, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.items) ? res.body.items : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/**\n * 1.34.7: bulk-delete inbox rows. `mesh` scopes to one mesh (omit =\n * across every attached mesh); `beforeIso` filters by `received_at <\n * Date.parse(beforeIso)`. Returns the number of rows removed, or null\n * when the daemon couldn't be reached.\n */\nexport async function tryFlushInboxViaDaemon(\n args: { mesh?: string; beforeIso?: string } = {},\n): Promise<number | null> {\n if (!(await daemonReachable())) return null;\n try {\n const params: string[] = [];\n if (args.mesh) params.push(`mesh=${encodeURIComponent(args.mesh)}`);\n if (args.beforeIso) params.push(`before=${encodeURIComponent(args.beforeIso)}`);\n const path = `/v1/inbox${params.length ? `?${params.join(\"&\")}` : \"\"}`;\n const res = await ipc<{ removed?: number }>({ path, method: \"DELETE\", timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return typeof res.body.removed === \"number\" ? res.body.removed : null;\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/** 1.34.7: delete one inbox row by id. Returns true iff the row was\n * removed; false on 404; null on transport failure. */\nexport async function tryDeleteInboxRowViaDaemon(id: string): Promise<boolean | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ removed?: number }>({\n path: `/v1/inbox/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n timeoutMs: 3_000,\n });\n if (res.status === 404) return false;\n if (res.status !== 200) return null;\n return (res.body.removed ?? 0) > 0;\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/** Try fetching mesh-published skills through the daemon. */\nexport async function tryListSkillsViaDaemon(mesh?: string): Promise<unknown[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ skills?: unknown[] }>({ path: `/v1/skills${meshQuery(mesh)}`, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.skills) ? res.body.skills : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/** Try fetching one skill body through the daemon. */\nexport async function tryGetSkillViaDaemon(name: string, mesh?: string): Promise<unknown | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ skill?: unknown }>({\n path: `/v1/skills/${encodeURIComponent(name)}${meshQuery(mesh)}`,\n timeoutMs: 3_000,\n });\n if (res.status === 404) return null;\n if (res.status !== 200) return null;\n return res.body.skill ?? null;\n } catch { return null; }\n}\n\n// --- state ---\n\nexport type StateEntry = {\n key: string;\n value: unknown;\n updatedBy: string;\n updatedAt: string;\n mesh?: string;\n};\n\n/** Try reading a single state key through the daemon. Returns:\n * - the entry when the daemon found it\n * - undefined when the daemon ran but the key is unset (404)\n * - null when the daemon socket isn't present (caller falls back) */\nexport async function tryGetStateViaDaemon(key: string, mesh?: string): Promise<StateEntry | undefined | null> {\n if (!(await daemonReachable())) return null;\n try {\n const path = `/v1/state?key=${encodeURIComponent(key)}${mesh ? `&mesh=${encodeURIComponent(mesh)}` : \"\"}`;\n const res = await ipc<{ state?: StateEntry; error?: string }>({ path, timeoutMs: 3_000 });\n if (res.status === 404) return undefined;\n if (res.status !== 200) return null;\n return res.body.state ?? undefined;\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\nexport async function tryListStateViaDaemon(mesh?: string): Promise<StateEntry[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ entries?: StateEntry[] }>({ path: `/v1/state${meshQuery(mesh)}`, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.entries) ? res.body.entries : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\nexport async function trySetStateViaDaemon(key: string, value: unknown, mesh?: string): Promise<boolean> {\n if (!(await daemonReachable())) return false;\n try {\n const res = await ipc<{ ok?: boolean; error?: string }>({\n method: \"POST\",\n path: \"/v1/state\",\n timeoutMs: 3_000,\n body: { key, value, ...(mesh ? { mesh } : {}) },\n });\n return res.status === 200 && res.body.ok === true;\n } catch { return false; }\n}\n\n// --- memory ---\n\nexport type MemoryEntry = {\n id: string;\n content: string;\n tags: string[];\n rememberedBy: string;\n rememberedAt: string;\n mesh?: string;\n};\n\nexport async function tryRememberViaDaemon(content: string, tags?: string[], mesh?: string): Promise<{ id: string; mesh?: string } | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ id?: string; mesh?: string; error?: string }>({\n method: \"POST\",\n path: \"/v1/memory\",\n timeoutMs: 5_000,\n body: { content, ...(tags?.length ? { tags } : {}), ...(mesh ? { mesh } : {}) },\n });\n if (res.status !== 200 || !res.body.id) return null;\n return { id: res.body.id, mesh: res.body.mesh };\n } catch { return null; }\n}\n\nexport async function tryRecallViaDaemon(query: string, mesh?: string): Promise<MemoryEntry[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const path = `/v1/memory?q=${encodeURIComponent(query)}${mesh ? `&mesh=${encodeURIComponent(mesh)}` : \"\"}`;\n const res = await ipc<{ matches?: MemoryEntry[] }>({ path, timeoutMs: 5_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.matches) ? res.body.matches : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\nexport async function tryForgetViaDaemon(id: string, mesh?: string): Promise<boolean> {\n if (!(await daemonReachable())) return false;\n try {\n const path = `/v1/memory/${encodeURIComponent(id)}${meshQuery(mesh)}`;\n const res = await ipc<{ ok?: boolean }>({ method: \"DELETE\", path, timeoutMs: 3_000 });\n return res.status === 200 && res.body.ok === true;\n } catch { return false; }\n}\n\nexport type DaemonSendOk = {\n ok: true;\n messageId: string;\n duplicate?: boolean;\n status?: \"queued\" | \"inflight\";\n};\nexport type DaemonSendErr = { ok: false; error: string };\nexport type DaemonSendResult = DaemonSendOk | DaemonSendErr;\n\nexport async function trySendViaDaemon(args: {\n to: string;\n message: string;\n priority: \"now\" | \"next\" | \"low\";\n /** Caller-stable id for cross-invocation idempotency. Optional. */\n idempotencyKey?: string;\n /** When set, only forward to the daemon if it's attached to this mesh.\n * We can't query the daemon's mesh today (no IPC route exposes it),\n * so for v0.9.0 this is informational; the caller already picked the\n * right mesh by either flag or single-mesh-default. */\n expectedMesh?: string;\n}): Promise<DaemonSendResult | null> {\n if (!(await daemonReachable())) return null;\n\n try {\n const res = await ipc<{\n client_message_id?: string;\n status?: \"queued\" | \"inflight\";\n broker_message_id?: string;\n duplicate?: boolean;\n error?: string;\n }>({\n method: \"POST\",\n path: \"/v1/send\",\n timeoutMs: 3_000,\n body: {\n to: args.to,\n message: args.message,\n priority: args.priority,\n ...(args.idempotencyKey ? { client_message_id: args.idempotencyKey } : {}),\n // v1.26.0 multi-mesh: forward the caller's chosen mesh so the\n // daemon picks the right broker. Omitting it on a single-mesh\n // daemon still works (auto-pick); omitting it on a multi-mesh\n // daemon returns 400 with the attached list.\n ...(args.expectedMesh ? { mesh: args.expectedMesh } : {}),\n },\n });\n\n if (res.status === 202 || res.status === 200) {\n return {\n ok: true,\n messageId: res.body.broker_message_id ?? res.body.client_message_id ?? \"\",\n duplicate: res.body.duplicate,\n status: res.body.status,\n };\n }\n return { ok: false, error: res.body.error ?? `daemon http ${res.status}` };\n } catch (err) {\n // Connection errors → daemon went away mid-call. Treat as \"not present\"\n // so the caller falls back rather than failing.\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return { ok: false, error: msg };\n }\n}\n",
|
|
54
|
+
"// Daemon-routed CLI helpers. Returns null when the daemon is unreachable\n// AND auto-spawn could not bring it up — caller is expected to fall back\n// to its cold-path WS or to error out under `--strict`.\n//\n// Auto-recovery: when the daemon socket is missing or stale, every\n// helper here calls into the lifecycle module which probes, spawns\n// (under a lock), polls, and retries — so cold-path fallback only\n// fires if auto-spawn failed. The lifecycle module caches its\n// per-process result, so a script doing 50 sends pays the spawn cost\n// at most once.\n//\n// 1.28.0: the orphaned bridge tier between daemon and cold paths was\n// removed. Two paths only: daemon (with auto-spawn) → cold.\n\nimport { ipc } from \"~/daemon/ipc/client.js\";\nimport { ensureDaemonReady } from \"~/services/daemon/lifecycle.js\";\nimport { getDaemonPolicy } from \"~/services/daemon/policy.js\";\nimport { warnDaemonState } from \"~/ui/warnings.js\";\n\nfunction meshQuery(mesh?: string): string {\n return mesh ? `?mesh=${encodeURIComponent(mesh)}` : \"\";\n}\n\n/** Common entry: ensure the daemon is reachable, emitting a one-shot\n * stderr warning describing what we did. Returns true when the daemon\n * is now reachable, false when the caller should fall back.\n *\n * --no-daemon short-circuits to false; --strict's enforcement lives at\n * the cold-path entry point (`withMesh` in commands/connect.ts) so a\n * single chokepoint covers every verb. */\nasync function daemonReachable(): Promise<boolean> {\n const policy = getDaemonPolicy();\n if (policy.mode === \"no-daemon\") return false;\n const res = await ensureDaemonReady({ noAutoSpawn: false });\n warnDaemonState(res, {});\n return res.state === \"up\" || res.state === \"started\";\n}\n\n/** Try fetching the peer list through the daemon (~1ms warm IPC).\n * Returns null when the daemon socket isn't present so the caller can\n * fall back to bridge / cold paths. */\nexport async function tryListPeersViaDaemon(mesh?: string): Promise<unknown[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ peers?: unknown[] }>({ path: `/v1/peers${meshQuery(mesh)}`, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.peers) ? res.body.peers : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/**\n * 1.34.0 — Try fetching the persisted inbox from the daemon.\n *\n * Reads from `~/.claudemesh/daemon/inbox.db` via `/v1/inbox`. This is\n * the authoritative source of received messages — pushes from the\n * broker land here through the daemon's session-WS / member-WS push\n * handler. The pre-1.34.0 cold-path inbox command opened a fresh\n * BrokerClient and drained an empty in-memory buffer, which never\n * matched what the daemon was actually receiving.\n */\nexport interface InboxItem {\n id: string;\n client_message_id: string;\n broker_message_id: string | null;\n mesh: string;\n topic: string | null;\n sender_pubkey: string;\n sender_name: string;\n body: string | null;\n received_at: string;\n reply_to_id: string | null;\n /** 1.34.8: ISO timestamp of when the row was first surfaced to the\n * user (interactive listing or live channel reminder). `null` =\n * never seen. */\n seen_at?: string | null;\n}\n\nexport async function tryListInboxViaDaemon(\n mesh?: string,\n limit = 100,\n opts: { unreadOnly?: boolean; markSeen?: boolean } = {},\n): Promise<InboxItem[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const params: string[] = [`limit=${limit}`];\n if (mesh) params.push(`mesh=${encodeURIComponent(mesh)}`);\n // 1.34.8: read-state filters. `unread_only=true` narrows to seen_at\n // IS NULL; `mark_seen=false` lets the caller peek without flipping\n // the seen flag (used by the welcome push on the MCP side, not the\n // CLI). Default behavior matches pre-1.34.8 — return everything\n // and stamp it seen — so existing callers keep working.\n if (opts.unreadOnly) params.push(\"unread_only=true\");\n if (opts.markSeen === false) params.push(\"mark_seen=false\");\n const path = `/v1/inbox?${params.join(\"&\")}`;\n const res = await ipc<{ items?: InboxItem[] }>({ path, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.items) ? res.body.items : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/**\n * 1.34.7: bulk-delete inbox rows. `mesh` scopes to one mesh (omit =\n * across every attached mesh); `beforeIso` filters by `received_at <\n * Date.parse(beforeIso)`. Returns the number of rows removed, or null\n * when the daemon couldn't be reached.\n */\nexport async function tryFlushInboxViaDaemon(\n args: { mesh?: string; beforeIso?: string } = {},\n): Promise<number | null> {\n if (!(await daemonReachable())) return null;\n try {\n const params: string[] = [];\n if (args.mesh) params.push(`mesh=${encodeURIComponent(args.mesh)}`);\n if (args.beforeIso) params.push(`before=${encodeURIComponent(args.beforeIso)}`);\n const path = `/v1/inbox${params.length ? `?${params.join(\"&\")}` : \"\"}`;\n const res = await ipc<{ removed?: number }>({ path, method: \"DELETE\", timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return typeof res.body.removed === \"number\" ? res.body.removed : null;\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/** 1.34.7: delete one inbox row by id. Returns true iff the row was\n * removed; false on 404; null on transport failure. */\nexport async function tryDeleteInboxRowViaDaemon(id: string): Promise<boolean | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ removed?: number }>({\n path: `/v1/inbox/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n timeoutMs: 3_000,\n });\n if (res.status === 404) return false;\n if (res.status !== 200) return null;\n return (res.body.removed ?? 0) > 0;\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/** Try fetching mesh-published skills through the daemon. */\nexport async function tryListSkillsViaDaemon(mesh?: string): Promise<unknown[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ skills?: unknown[] }>({ path: `/v1/skills${meshQuery(mesh)}`, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.skills) ? res.body.skills : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\n/** Try fetching one skill body through the daemon. */\nexport async function tryGetSkillViaDaemon(name: string, mesh?: string): Promise<unknown | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ skill?: unknown }>({\n path: `/v1/skills/${encodeURIComponent(name)}${meshQuery(mesh)}`,\n timeoutMs: 3_000,\n });\n if (res.status === 404) return null;\n if (res.status !== 200) return null;\n return res.body.skill ?? null;\n } catch { return null; }\n}\n\n// --- state ---\n\nexport type StateEntry = {\n key: string;\n value: unknown;\n updatedBy: string;\n updatedAt: string;\n mesh?: string;\n};\n\n/** Try reading a single state key through the daemon. Returns:\n * - the entry when the daemon found it\n * - undefined when the daemon ran but the key is unset (404)\n * - null when the daemon socket isn't present (caller falls back) */\nexport async function tryGetStateViaDaemon(key: string, mesh?: string): Promise<StateEntry | undefined | null> {\n if (!(await daemonReachable())) return null;\n try {\n const path = `/v1/state?key=${encodeURIComponent(key)}${mesh ? `&mesh=${encodeURIComponent(mesh)}` : \"\"}`;\n const res = await ipc<{ state?: StateEntry; error?: string }>({ path, timeoutMs: 3_000 });\n if (res.status === 404) return undefined;\n if (res.status !== 200) return null;\n return res.body.state ?? undefined;\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\nexport async function tryListStateViaDaemon(mesh?: string): Promise<StateEntry[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ entries?: StateEntry[] }>({ path: `/v1/state${meshQuery(mesh)}`, timeoutMs: 3_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.entries) ? res.body.entries : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\nexport async function trySetStateViaDaemon(key: string, value: unknown, mesh?: string): Promise<boolean> {\n if (!(await daemonReachable())) return false;\n try {\n const res = await ipc<{ ok?: boolean; error?: string }>({\n method: \"POST\",\n path: \"/v1/state\",\n timeoutMs: 3_000,\n body: { key, value, ...(mesh ? { mesh } : {}) },\n });\n return res.status === 200 && res.body.ok === true;\n } catch { return false; }\n}\n\n// --- memory ---\n\nexport type MemoryEntry = {\n id: string;\n content: string;\n tags: string[];\n rememberedBy: string;\n rememberedAt: string;\n mesh?: string;\n};\n\nexport async function tryRememberViaDaemon(content: string, tags?: string[], mesh?: string): Promise<{ id: string; mesh?: string } | null> {\n if (!(await daemonReachable())) return null;\n try {\n const res = await ipc<{ id?: string; mesh?: string; error?: string }>({\n method: \"POST\",\n path: \"/v1/memory\",\n timeoutMs: 5_000,\n body: { content, ...(tags?.length ? { tags } : {}), ...(mesh ? { mesh } : {}) },\n });\n if (res.status !== 200 || !res.body.id) return null;\n return { id: res.body.id, mesh: res.body.mesh };\n } catch { return null; }\n}\n\nexport async function tryRecallViaDaemon(query: string, mesh?: string): Promise<MemoryEntry[] | null> {\n if (!(await daemonReachable())) return null;\n try {\n const path = `/v1/memory?q=${encodeURIComponent(query)}${mesh ? `&mesh=${encodeURIComponent(mesh)}` : \"\"}`;\n const res = await ipc<{ matches?: MemoryEntry[] }>({ path, timeoutMs: 5_000 });\n if (res.status !== 200) return null;\n return Array.isArray(res.body.matches) ? res.body.matches : [];\n } catch (err) {\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return null;\n }\n}\n\nexport async function tryForgetViaDaemon(id: string, mesh?: string): Promise<boolean> {\n if (!(await daemonReachable())) return false;\n try {\n const path = `/v1/memory/${encodeURIComponent(id)}${meshQuery(mesh)}`;\n const res = await ipc<{ ok?: boolean }>({ method: \"DELETE\", path, timeoutMs: 3_000 });\n return res.status === 200 && res.body.ok === true;\n } catch { return false; }\n}\n\nexport type DaemonSendOk = {\n ok: true;\n messageId: string;\n duplicate?: boolean;\n status?: \"queued\" | \"inflight\";\n};\nexport type DaemonSendErr = { ok: false; error: string };\nexport type DaemonSendResult = DaemonSendOk | DaemonSendErr;\n\nexport async function trySendViaDaemon(args: {\n to: string;\n message: string;\n priority: \"now\" | \"next\" | \"low\";\n /** Caller-stable id for cross-invocation idempotency. Optional. */\n idempotencyKey?: string;\n /** When set, only forward to the daemon if it's attached to this mesh.\n * We can't query the daemon's mesh today (no IPC route exposes it),\n * so for v0.9.0 this is informational; the caller already picked the\n * right mesh by either flag or single-mesh-default. */\n expectedMesh?: string;\n}): Promise<DaemonSendResult | null> {\n if (!(await daemonReachable())) return null;\n\n try {\n const res = await ipc<{\n client_message_id?: string;\n status?: \"queued\" | \"inflight\";\n broker_message_id?: string;\n duplicate?: boolean;\n error?: string;\n }>({\n method: \"POST\",\n path: \"/v1/send\",\n timeoutMs: 3_000,\n body: {\n to: args.to,\n message: args.message,\n priority: args.priority,\n ...(args.idempotencyKey ? { client_message_id: args.idempotencyKey } : {}),\n // v1.26.0 multi-mesh: forward the caller's chosen mesh so the\n // daemon picks the right broker. Omitting it on a single-mesh\n // daemon still works (auto-pick); omitting it on a multi-mesh\n // daemon returns 400 with the attached list.\n ...(args.expectedMesh ? { mesh: args.expectedMesh } : {}),\n },\n });\n\n if (res.status === 202 || res.status === 200) {\n return {\n ok: true,\n messageId: res.body.broker_message_id ?? res.body.client_message_id ?? \"\",\n duplicate: res.body.duplicate,\n status: res.body.status,\n };\n }\n return { ok: false, error: res.body.error ?? `daemon http ${res.status}` };\n } catch (err) {\n // Connection errors → daemon went away mid-call. Treat as \"not present\"\n // so the caller falls back rather than failing.\n const msg = String(err);\n if (/ENOENT|ECONNREFUSED|ipc_timeout/.test(msg)) return null;\n return { ok: false, error: msg };\n }\n}\n",
|
|
55
55
|
"/**\n * CLI-side helpers for the per-session attestation flow.\n *\n * Two pieces:\n * 1. `signParentAttestation` — `claudemesh launch` calls this with the\n * member's stable secret key to mint a long-lived (≤24h) token that\n * vouches for an ephemeral session pubkey. The attestation travels\n * with the session-token registration to the daemon.\n * 2. `signSessionHello` — the daemon's `SessionBrokerClient` calls this\n * on every WS-connect to sign the canonical session-hello bytes with\n * the session secret key (proves liveness + possession).\n *\n * Both formats mirror the broker's `canonicalSessionAttestation` /\n * `canonicalSessionHello`. Drift will surface as `bad_signature` from\n * the broker, never silent breakage.\n */\n\nimport { ensureSodium } from \"~/services/crypto/keypair.js\";\n\n/** Default attestation lifetime — 12h leaves headroom under broker's 24h cap. */\nexport const DEFAULT_ATTESTATION_TTL_MS = 12 * 60 * 60 * 1000;\n\nexport interface ParentAttestation {\n sessionPubkey: string;\n parentMemberPubkey: string;\n expiresAt: number;\n signature: string;\n}\n\n/** Sign the parent-vouches-session attestation. */\nexport async function signParentAttestation(args: {\n parentMemberPubkey: string;\n parentSecretKey: string;\n sessionPubkey: string;\n /** Override the lifetime; default 12h. */\n ttlMs?: number;\n /** Override clock for tests. */\n now?: number;\n}): Promise<ParentAttestation> {\n const s = await ensureSodium();\n const expiresAt = (args.now ?? Date.now()) + (args.ttlMs ?? DEFAULT_ATTESTATION_TTL_MS);\n const canonical = `claudemesh-session-attest|${args.parentMemberPubkey}|${args.sessionPubkey}|${expiresAt}`;\n const sig = s.crypto_sign_detached(\n s.from_string(canonical),\n s.from_hex(args.parentSecretKey),\n );\n return {\n sessionPubkey: args.sessionPubkey,\n parentMemberPubkey: args.parentMemberPubkey,\n expiresAt,\n signature: s.to_hex(sig),\n };\n}\n\n/** Sign the per-WS-connect session-hello bytes. */\nexport async function signSessionHello(args: {\n meshId: string;\n parentMemberPubkey: string;\n sessionPubkey: string;\n sessionSecretKey: string;\n now?: number;\n}): Promise<{ timestamp: number; signature: string }> {\n const s = await ensureSodium();\n const timestamp = args.now ?? Date.now();\n const canonical =\n `claudemesh-session-hello|${args.meshId}|${args.parentMemberPubkey}|${args.sessionPubkey}|${timestamp}`;\n const sig = s.crypto_sign_detached(\n s.from_string(canonical),\n s.from_hex(args.sessionSecretKey),\n );\n return { timestamp, signature: s.to_hex(sig) };\n}\n",
|
|
56
56
|
"// @ts-nocheck — v1 port, runtime-tested\n/**\n * `claudemesh launch` — spawn `claude` with peer mesh identity.\n *\n * Flags are defined in index.ts (citty command) — that is the source of\n * truth. This file receives already-parsed flags and rawArgs.\n *\n * Flow:\n * 1. Receive parsed flags from citty + rawArgs for -- passthrough\n * 2. If --join: run join flow first\n * 3. Load config → pick mesh (auto if 1, interactive picker if >1)\n * 4. Write per-session config to tmpdir (isolates mesh selection)\n * 5. Spawn claude with CLAUDEMESH_CONFIG_DIR + CLAUDEMESH_DISPLAY_NAME\n * 6. On exit: cleanup tmpdir\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { mkdtempSync, writeFileSync, rmSync, readdirSync, statSync, existsSync, readFileSync } from \"node:fs\";\nimport { tmpdir, hostname, homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { readConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport type { Config, JoinedMesh, GroupEntry } from \"~/services/config/facade.js\";\nimport { startCallbackListener, generatePairingCode } from \"~/services/auth/facade.js\";\nimport { openBrowser } from \"~/services/spawn/facade.js\";\nimport { BrokerClient } from \"~/services/broker/facade.js\";\nimport { render } from \"~/ui/render.js\";\n\n// Flags as parsed by citty (index.ts is the source of truth for definitions).\nexport interface LaunchFlags {\n name?: string;\n role?: string;\n groups?: string;\n join?: string;\n mesh?: string;\n \"message-mode\"?: string;\n \"system-prompt\"?: string;\n resume?: string;\n continue?: boolean;\n yes?: boolean;\n quiet?: boolean;\n}\n\n// --- Interactive mesh picker ---\n\n/**\n * Ensure the per-user daemon is running before we hand off to Claude Code.\n *\n * As of 1.24.0 the daemon owns the broker WS and feeds the MCP push-pipe\n * over IPC SSE. If the socket is absent when Claude boots its MCP shim,\n * the shim bails (no fallback). Delegates to the shared lifecycle helper\n * (services/daemon/lifecycle.ts) which probes the socket properly\n * (avoiding the stale-socket bug where existsSync was a false positive\n * after a daemon crash), spawns under a file-lock, and polls for liveness.\n */\nasync function ensureDaemonRunning(meshSlug: string, quiet: boolean): Promise<void> {\n const { ensureDaemonReady } = await import(\"~/services/daemon/lifecycle.js\");\n if (!quiet) render.info(\"ensuring claudemesh daemon is running…\");\n // Larger budget for `launch` — it's a one-shot flow where the user\n // is actively waiting; cold node start + broker hello can take\n // longer than the default 3s budget for ad-hoc verbs.\n const res = await ensureDaemonReady({ budgetMs: 10_000, mesh: meshSlug });\n if (res.state === \"up\") {\n if (!quiet) render.ok(\"daemon already running\");\n return;\n }\n if (res.state === \"started\") {\n if (!quiet) render.ok(`daemon ready (${res.durationMs}ms)`);\n return;\n }\n render.warn(\n `daemon ${res.state}${res.reason ? `: ${res.reason}` : \"\"}`,\n \"Run `claudemesh daemon up --mesh \" + meshSlug + \"` manually, then re-launch.\",\n );\n}\n\nasync function pickMesh(meshes: JoinedMesh[]): Promise<JoinedMesh> {\n if (meshes.length === 1) return meshes[0]!;\n\n console.log(\"\\n Select mesh:\");\n meshes.forEach((m, i) => {\n console.log(` ${i + 1}) ${m.slug}`);\n });\n console.log(\"\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(\" Choice [1]: \", (answer) => {\n rl.close();\n const idx = parseInt(answer || \"1\", 10) - 1;\n if (idx >= 0 && idx < meshes.length) {\n resolve(meshes[idx]!);\n } else {\n console.error(\" Invalid choice, using first mesh.\");\n resolve(meshes[0]!);\n }\n });\n });\n}\n\n// --- Group string parser ---\n\n/** Parse \"frontend:lead,reviewers:member,all\" → GroupEntry[] */\nfunction parseGroupsString(raw: string): GroupEntry[] {\n return raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean)\n .map((token) => {\n const idx = token.indexOf(\":\");\n if (idx === -1) return { name: token };\n return { name: token.slice(0, idx), role: token.slice(idx + 1) };\n });\n}\n\n// --- Interactive role/groups prompts ---\n\nfunction askLine(prompt: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(prompt, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\n// --- Permission confirmation ---\n\nasync function confirmPermissions(): Promise<void> {\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const yellow = (s: string): string => (useColor ? `\\x1b[33m${s}\\x1b[39m` : s);\n\n console.log(yellow(bold(\" Autonomous mode\")));\n console.log(\"\");\n console.log(\" Claude will run with --dangerously-skip-permissions, bypassing\");\n console.log(\" ALL permission prompts — not just claudemesh tools.\");\n console.log(\" Peers exchange text only — no file access, no tool calls.\");\n console.log(\"\");\n console.log(dim(\" Without -y: only claudemesh tools are pre-approved (via allowedTools).\"));\n console.log(dim(\" Use -y for autonomous agents. Omit it for shared/multi-person meshes.\"));\n console.log(\"\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve, reject) => {\n rl.question(` ${bold(\"Continue?\")} [Y/n] `, (answer) => {\n rl.close();\n const a = answer.trim().toLowerCase();\n if (a === \"\" || a === \"y\" || a === \"yes\") {\n resolve();\n } else {\n console.log(\"\\n Aborted. Run without autonomous mode:\");\n console.log(\" claude --dangerously-load-development-channels server:claudemesh\\n\");\n process.exit(0);\n }\n });\n });\n}\n\n// --- Banner ---\n\nimport {\n bold as tBold, dim as tDim, green as tGreen, orange as tOrange,\n boldOrange, HIDE_CURSOR, SHOW_CURSOR,\n} from \"~/ui/styles.js\";\nimport {\n enterFullScreen, exitFullScreen, writeCentered, termSize,\n drawTopBar, drawBottomBar, menuSelect, textInput, confirmPrompt,\n} from \"~/ui/screen.js\";\nimport { createSpinner, FRAME_HEIGHT } from \"~/ui/spinner.js\";\n\ninterface LaunchWizardResult {\n mesh: JoinedMesh;\n role: string | null;\n groups: GroupEntry[];\n messageMode: \"push\" | \"inbox\" | \"off\";\n skipPermissions: boolean;\n}\n\n/**\n * Full-screen launch wizard — spinning logo + interactive config.\n * Mesh selection, role, groups, message mode, permissions — all in one TUI.\n * Falls back to plain text on non-TTY.\n */\nasync function runLaunchWizard(opts: {\n displayName: string;\n meshes: JoinedMesh[];\n selectedMesh: JoinedMesh | null;\n existingRole: string | null;\n existingGroups: GroupEntry[];\n existingMessageMode: \"push\" | \"inbox\" | \"off\" | null;\n skipPermConfirm: boolean;\n}): Promise<LaunchWizardResult> {\n if (!process.stdout.isTTY) {\n return {\n mesh: opts.selectedMesh ?? opts.meshes[0]!,\n role: opts.existingRole,\n groups: opts.existingGroups,\n messageMode: opts.existingMessageMode ?? \"push\",\n skipPermissions: opts.skipPermConfirm,\n };\n }\n\n const { rows } = termSize();\n enterFullScreen();\n drawTopBar();\n\n // Spinning logo centered in upper portion\n const logoTop = Math.floor((rows - FRAME_HEIGHT - 16) / 2);\n const brandRow = logoTop + FRAME_HEIGHT + 1;\n const subtitleRow = brandRow + 1;\n const formRow = subtitleRow + 2;\n\n writeCentered(brandRow, boldOrange(\"claudemesh\"));\n writeCentered(subtitleRow, tDim(\"peer mesh for Claude Code\"));\n\n const spinner = createSpinner({\n render(lines) {\n for (let i = 0; i < lines.length; i++) {\n writeCentered(logoTop + i, lines[i]!);\n }\n },\n interval: 70,\n });\n spinner.start();\n\n // Show detected info\n let row = formRow;\n writeCentered(row, `Directory ${tGreen(\"✓\")} ${process.cwd()}`);\n row++;\n writeCentered(row, `Name ${tGreen(\"✓\")} ${opts.displayName}`);\n row += 2;\n\n // Mesh selection\n let mesh: JoinedMesh;\n if (opts.selectedMesh) {\n mesh = opts.selectedMesh;\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n row++;\n } else if (opts.meshes.length === 1) {\n mesh = opts.meshes[0]!;\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n row++;\n } else {\n spinner.stop();\n const choice = await menuSelect({\n title: \"Select mesh\",\n items: opts.meshes.map((m) => m.slug),\n row,\n });\n mesh = opts.meshes[choice]!;\n // Redraw as confirmed\n for (let i = 0; i < opts.meshes.length + 1; i++) {\n writeCentered(row + i, \" \");\n }\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n spinner.start();\n row++;\n }\n\n row++;\n\n // Interactive fields\n let role = opts.existingRole;\n let groups = opts.existingGroups;\n let messageMode = opts.existingMessageMode ?? \"push\" as \"push\" | \"inbox\" | \"off\";\n\n // Role input\n if (role === null) {\n spinner.stop();\n const answer = await textInput({ label: \"Role\", row, placeholder: \"optional — press Enter to skip\" });\n if (answer) role = answer;\n spinner.start();\n row++;\n } else {\n writeCentered(row, `Role ${tGreen(\"✓\")} ${role}`);\n row++;\n }\n\n // Groups input\n if (groups.length === 0) {\n spinner.stop();\n const answer = await textInput({ label: \"Groups\", row, placeholder: \"comma-separated, optional\" });\n if (answer) groups = parseGroupsString(answer);\n spinner.start();\n row++;\n } else {\n const tags = groups.map(g => `@${g.name}${g.role ? `:${g.role}` : \"\"}`).join(\", \");\n writeCentered(row, `Groups ${tGreen(\"✓\")} ${tags}`);\n row++;\n }\n\n // Message mode selection\n if (opts.existingMessageMode === null) {\n row++;\n spinner.stop();\n const choice = await menuSelect({\n title: \"Message mode\",\n items: [\n \"Push (real-time, peers can interrupt)\",\n \"Inbox (held until you check)\",\n \"Off (tools only, no messages)\",\n ],\n row,\n });\n messageMode = ([\"push\", \"inbox\", \"off\"] as const)[choice];\n spinner.start();\n row += 5;\n } else {\n writeCentered(row, `Messages ${tGreen(\"✓\")} ${messageMode}`);\n row++;\n }\n\n // Permissions confirmation\n let skipPermissions = opts.skipPermConfirm;\n if (!skipPermissions) {\n row++;\n spinner.stop();\n writeCentered(row, tDim(\"Claude will run with --dangerously-skip-permissions,\"));\n writeCentered(row + 1, tDim(\"bypassing ALL permission prompts — not just claudemesh.\"));\n row += 3;\n const confirmed = await confirmPrompt({\n message: boldOrange(\"Autonomous mode?\"),\n row,\n defaultYes: true,\n });\n if (!confirmed) {\n exitFullScreen();\n console.log(\" Run without autonomous mode:\");\n console.log(\" claude --dangerously-load-development-channels server:claudemesh\\n\");\n process.exit(0);\n }\n skipPermissions = true;\n spinner.start();\n }\n\n // Final animation\n row += 2;\n writeCentered(row, tDim(\"Launching Claude Code...\"));\n\n await new Promise(r => setTimeout(r, 800));\n spinner.stop();\n exitFullScreen();\n\n return { mesh, role, groups, messageMode, skipPermissions };\n}\n\n/**\n * 1.32.0 — broker welcome line printed right after the launch banner.\n * Polls the daemon's /v1/health (per-mesh broker WS state) and tries\n * to fetch the inbox + peer count via daemon-route helpers. Best-effort:\n * if any call fails the welcome simply prints what it knows and moves\n * on — never blocks the launch path.\n */\nasync function printBrokerWelcome(meshSlug: string): Promise<void> {\n const useColor = !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const green = (s: string): string => (useColor ? `\\x1b[32m${s}\\x1b[22m` : s);\n const yellow = (s: string): string => (useColor ? `\\x1b[33m${s}\\x1b[22m` : s);\n\n // Probe daemon health for broker WS state.\n let brokerState = \"unknown\";\n try {\n const { ipc } = await import(\"~/daemon/ipc/client.js\");\n const res = await ipc<{ ok?: boolean; brokers?: Record<string, string> }>({\n path: \"/v1/health\",\n timeoutMs: 1_500,\n });\n if (res.status === 200 && res.body?.brokers) {\n brokerState = res.body.brokers[meshSlug] ?? \"unknown\";\n }\n } catch { /* daemon unreachable — not fatal */ }\n\n // Peer count (best-effort).\n let peerCount = -1;\n try {\n const { tryListPeersViaDaemon } = await import(\"~/services/bridge/daemon-route.js\");\n const peers = (await tryListPeersViaDaemon()) ?? [];\n peerCount = peers.filter((p) =>\n (p as { channel?: string }).channel !== \"claudemesh-daemon\",\n ).length;\n } catch { /* skip peer count */ }\n\n // Unread inbox count (best-effort).\n let unread = -1;\n try {\n const { ipc } = await import(\"~/daemon/ipc/client.js\");\n const res = await ipc<{ messages?: unknown[] }>({\n path: \"/v1/inbox\",\n timeoutMs: 1_500,\n });\n if (res.status === 200 && Array.isArray(res.body?.messages)) {\n unread = res.body.messages.length;\n }\n } catch { /* skip unread */ }\n\n const dot = brokerState === \"open\" ? green(\"●\") : yellow(\"●\");\n const parts: string[] = [];\n parts.push(`broker ${brokerState === \"open\" ? \"connected\" : brokerState}`);\n if (peerCount >= 0) parts.push(`${peerCount} peer${peerCount === 1 ? \"\" : \"s\"} online`);\n if (unread >= 0) parts.push(`${unread} unread`);\n console.log(`${dot} ${parts.join(dim(\" · \"))}`);\n console.log(\"\");\n}\n\nfunction printBanner(name: string, meshSlug: string, role: string | null, groups: GroupEntry[], messageMode: \"push\" | \"inbox\" | \"off\"): void {\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n\n const roleSuffix = role ? ` (${role})` : \"\";\n const groupTags = groups.length\n ? \" [\" + groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : \"\"}`).join(\", \") + \"]\"\n : \"\";\n\n const rule = \"─\".repeat(60);\n console.log(bold(`claudemesh launch`) + dim(` — as ${name}${roleSuffix} on ${meshSlug}${groupTags} [${messageMode}]`));\n console.log(rule);\n if (messageMode === \"push\") {\n console.log(\"Peer messages arrive as <channel> reminders in real-time.\");\n } else if (messageMode === \"inbox\") {\n console.log(\"Peer messages held in inbox. Use check_messages to read.\");\n } else {\n console.log(\"Messages off. Use check_messages to poll manually.\");\n }\n console.log(\"Peers send text only — they cannot call tools or read files.\");\n console.log(dim(`Config: ${getConfigPath()}`));\n console.log(rule);\n console.log(\"\");\n}\n\n// --- Main ---\n\nexport async function runLaunch(flags: LaunchFlags, rawArgs: string[]): Promise<void> {\n // Extract args that follow \"--\" — passed straight through to claude.\n const dashIdx = rawArgs.indexOf(\"--\");\n const claudePassthrough = dashIdx >= 0 ? rawArgs.slice(dashIdx + 1) : [];\n\n // Normalise flags into the internal shape used below.\n const args = {\n name: flags.name ?? null,\n role: flags.role ?? null,\n groups: flags.groups ?? null,\n joinLink: flags.join ?? null,\n meshSlug: flags.mesh ?? null,\n messageMode: ([\"push\", \"inbox\", \"off\"].includes(flags[\"message-mode\"] ?? \"\")\n ? flags[\"message-mode\"] as \"push\" | \"inbox\" | \"off\"\n : null),\n systemPrompt: flags[\"system-prompt\"] ?? null,\n resume: flags.resume ?? null,\n continueSession: flags.continue ?? false,\n quiet: flags.quiet ?? false,\n skipPermConfirm: flags.yes ?? false,\n claudeArgs: claudePassthrough,\n };\n\n // 1. If --join, run join flow first.\n if (args.joinLink) {\n render.info(tDim(\"Joining mesh…\"));\n const invite = await parseInviteLink(args.joinLink);\n const keypair = await generateKeypair();\n const displayName = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n const enroll = await enrollWithBroker({\n brokerWsUrl: invite.payload.broker_url,\n inviteToken: invite.token,\n invitePayload: invite.payload,\n peerPubkey: keypair.publicKey,\n displayName,\n });\n const config = readConfig();\n config.meshes = config.meshes.filter(\n (m) => m.slug !== invite.payload.mesh_slug,\n );\n config.meshes.push({\n meshId: invite.payload.mesh_id,\n memberId: enroll.memberId,\n slug: invite.payload.mesh_slug,\n name: invite.payload.mesh_slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: invite.payload.broker_url,\n joinedAt: new Date().toISOString(),\n });\n const { writeConfig } = await import(\"~/services/config/facade.js\");\n writeConfig(config);\n render.ok(\n `joined ${tBold(invite.payload.mesh_slug)}`,\n enroll.alreadyMember ? \"already member\" : undefined,\n );\n }\n\n // 2. Load config, pick mesh.\n const config = readConfig();\n let justSynced = false;\n\n if (config.meshes.length === 0 && !args.joinLink) {\n const useColor = !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const green = (s: string): string => (useColor ? `\\x1b[32m${s}\\x1b[39m` : s);\n\n const code = generatePairingCode();\n const listener = await startCallbackListener();\n const url = `https://claudemesh.com/cli-auth?port=${listener.port}&code=${code}&action=sync`;\n\n console.log(`\\n ${bold(\"Welcome to claudemesh!\")} No meshes found.`);\n console.log(` Opening browser to sign in...\\n`);\n\n const opened = await openBrowser(url);\n if (!opened) {\n console.log(` Couldn't open browser automatically.`);\n }\n console.log(` ${dim(`Visit: ${url}`)}`);\n console.log(` ${dim(`Or join with invite: claudemesh launch --join <url>`)}\\n`);\n\n // Race: localhost callback vs manual paste vs timeout\n const manualPromise = new Promise<string>((resolve) => {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n rl.question(\" Paste sync token (or wait for browser): \", (answer) => {\n rl.close();\n if (answer.trim()) resolve(answer.trim());\n });\n });\n\n const timeoutPromise = new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), 15 * 60_000);\n });\n\n const syncToken = await Promise.race([\n listener.token,\n manualPromise,\n timeoutPromise,\n ]);\n\n listener.close();\n\n if (!syncToken) {\n console.error(\"\\n Timed out waiting for sign-in.\");\n process.exit(1);\n }\n\n // Generate keypair and sync with broker\n const { generateKeypair } = await import(\"~/services/crypto/facade.js\");\n const keypair = await generateKeypair();\n const displayNameForSync = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n\n const { syncWithBroker } = await import(\"~/services/auth/facade.js\");\n const result = await syncWithBroker(syncToken, keypair.publicKey, displayNameForSync);\n\n // Write all meshes to config\n const { writeConfig } = await import(\"~/services/config/facade.js\");\n for (const m of result.meshes) {\n config.meshes.push({\n meshId: m.mesh_id,\n memberId: m.member_id,\n slug: m.slug,\n name: m.slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: m.broker_url,\n joinedAt: new Date().toISOString(),\n });\n }\n config.accountId = result.account_id;\n writeConfig(config);\n justSynced = true;\n\n console.log(`\\n ${green(\"✓\")} Synced ${result.meshes.length} mesh(es): ${result.meshes.map(m => m.slug).join(\", \")}\\n`);\n }\n\n if (config.meshes.length === 0) {\n render.err(\"No meshes joined.\", \"Run `claudemesh join <url>` or use --join <url>.\");\n process.exit(1);\n }\n\n // Resolve mesh — by flag, auto (if 1), or defer to wizard (if >1)\n let mesh: JoinedMesh;\n if (args.meshSlug) {\n const found = config.meshes.find((m) => m.slug === args.meshSlug);\n if (!found) {\n render.err(\n `Mesh \"${args.meshSlug}\" not found.`,\n `Joined: ${config.meshes.map((m) => m.slug).join(\", \")}`,\n );\n process.exit(1);\n }\n mesh = found;\n } else if (config.meshes.length === 1) {\n mesh = config.meshes[0]!;\n } else {\n // Multiple meshes — wizard will handle selection\n mesh = null as unknown as JoinedMesh; // set by wizard below\n }\n\n // 3. Session identity + role/groups via TUI wizard.\n const displayName = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n\n let role: string | null = args.role;\n let parsedGroups: GroupEntry[] = args.groups ? parseGroupsString(args.groups) : [];\n let messageMode: \"push\" | \"inbox\" | \"off\" = args.messageMode ?? \"push\";\n\n // `-y` (skipPermConfirm) implies fully non-interactive — skip the wizard\n // entirely and use sensible defaults (role=member, no groups, push mode).\n // Same applies to `--quiet` and the post-sync path where we already picked.\n const nonInteractive = args.quiet || justSynced || args.skipPermConfirm;\n if (!nonInteractive) {\n const wizardResult = await runLaunchWizard({\n displayName,\n meshes: config.meshes,\n selectedMesh: mesh ?? null,\n existingRole: args.role,\n existingGroups: parsedGroups,\n existingMessageMode: args.messageMode ?? null,\n skipPermConfirm: args.skipPermConfirm,\n });\n mesh = wizardResult.mesh;\n role = wizardResult.role;\n parsedGroups = wizardResult.groups;\n messageMode = wizardResult.messageMode;\n args.skipPermConfirm = wizardResult.skipPermissions;\n } else if (!mesh) {\n // No mesh picked yet + non-interactive — pick the first one deterministically.\n mesh = config.meshes[0]!;\n }\n\n // Clean up orphaned tmpdirs from crashed sessions (older than 1 hour)\n const tmpBase = tmpdir();\n try {\n for (const entry of readdirSync(tmpBase)) {\n if (!entry.startsWith(\"claudemesh-\")) continue;\n const full = join(tmpBase, entry);\n const age = Date.now() - statSync(full).mtimeMs;\n if (age > 3600_000) rmSync(full, { recursive: true, force: true });\n }\n } catch { /* best effort */ }\n\n // Ensure the daemon is running before we spawn Claude. The MCP shim\n // (loaded by --dangerously-load-development-channels server:claudemesh)\n // requires the daemon's UDS to be reachable at boot — if it isn't,\n // channel push, slash commands, and resources fail.\n await ensureDaemonRunning(mesh.slug, args.quiet);\n\n // Clean up stale mesh MCP entries from crashed sessions\n try {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n if (existsSync(claudeConfigPath)) {\n const claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n const mcpServers = claudeConfig.mcpServers ?? {};\n let cleaned = 0;\n for (const key of Object.keys(mcpServers)) {\n if (!key.startsWith(\"mesh:\")) continue;\n const meta = mcpServers[key]?._meshSession;\n if (!meta?.pid) continue;\n // Check if the PID is still alive\n try {\n process.kill(meta.pid, 0); // signal 0 = check existence\n } catch {\n // PID is dead — remove stale entry\n delete mcpServers[key];\n cleaned++;\n }\n }\n if (cleaned > 0) {\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n }\n }\n } catch { /* best effort */ }\n\n // --- Fetch deployed services for native MCP entries ---\n let serviceCatalog: Array<{\n name: string;\n description: string;\n status: string;\n tools: Array<{ name: string; description: string; inputSchema: object }>;\n deployed_by: string;\n }> = [];\n\n try {\n const tmpClient = new BrokerClient(mesh, { displayName });\n await tmpClient.connect();\n // Wait briefly for hello_ack with service catalog\n await new Promise(r => setTimeout(r, 2000));\n serviceCatalog = tmpClient.serviceCatalog;\n tmpClient.close();\n } catch {\n // Non-fatal — launch without native service entries\n if (!args.quiet) {\n console.log(\" (Could not fetch service catalog — mesh services won't be natively available)\");\n }\n }\n\n // 4. Write session config to tmpdir (isolates mesh selection).\n const tmpDir = mkdtempSync(join(tmpdir(), \"claudemesh-\"));\n const sessionConfig: Config = {\n version: 1,\n meshes: [mesh],\n displayName,\n ...(role ? { role } : {}),\n ...(parsedGroups.length > 0 ? { groups: parsedGroups } : {}),\n messageMode,\n };\n writeFileSync(\n join(tmpDir, \"config.json\"),\n JSON.stringify(sessionConfig, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n // 4b. Mint a per-session IPC token, persist it under tmpDir, and\n // register it with the daemon. The token's path is exposed to\n // the spawned claude (and all its descendants) via env so\n // CLI invocations from inside the session auto-attribute to it.\n //\n // 1.30.0: also mint an ephemeral ed25519 session keypair and a\n // parent-vouched attestation. The daemon uses these to open a\n // long-lived broker WebSocket per session (presence row keyed on\n // the session pubkey, member_id from the parent), so sibling\n // sessions in the same mesh see each other in `peer list`.\n //\n // Session-id resolution: 1.29.0 referenced `claudeSessionId`\n // before its `const` declaration further down the file, hitting\n // the TDZ → ReferenceError swallowed by the surrounding catch.\n // The IPC registration has been silently failing every launch\n // since 1.29.0. Hoist the declaration up so it actually runs.\n const isResume = args.resume !== null || args.continueSession;\n const claudeSessionId = isResume ? undefined : randomUUID();\n let sessionTokenFilePath: string | null = null;\n let sessionTokenForCleanup: string | null = null;\n try {\n const { mintSessionToken, TOKEN_FILE_ENV } = await import(\"~/services/session/token.js\");\n const minted = mintSessionToken(tmpDir);\n sessionTokenFilePath = minted.filePath;\n sessionTokenForCleanup = minted.token;\n\n // Per-session ephemeral keypair + parent attestation (1.30.0+).\n // Older daemons ignore unknown body fields, so sending presence\n // material always is forward-compatible.\n let presencePayload: {\n session_pubkey: string;\n session_secret_key: string;\n parent_attestation: {\n session_pubkey: string;\n parent_member_pubkey: string;\n expires_at: number;\n signature: string;\n };\n } | undefined;\n try {\n const { generateKeypair } = await import(\"~/services/crypto/facade.js\");\n const { signParentAttestation } = await import(\"~/services/broker/session-hello-sig.js\");\n const sessionKp = await generateKeypair();\n const att = await signParentAttestation({\n parentMemberPubkey: mesh.pubkey,\n parentSecretKey: mesh.secretKey,\n sessionPubkey: sessionKp.publicKey,\n });\n presencePayload = {\n session_pubkey: sessionKp.publicKey,\n session_secret_key: sessionKp.secretKey,\n parent_attestation: {\n session_pubkey: att.sessionPubkey,\n parent_member_pubkey: att.parentMemberPubkey,\n expires_at: att.expiresAt,\n signature: att.signature,\n },\n };\n } catch {\n // Keypair / attestation failure — proceed without per-session\n // presence. The session still registers; only the broker-side\n // presence row is skipped.\n }\n\n // Register with the daemon. Best-effort: a daemon failure here\n // means the session falls back to user-level scope, which is fine.\n const { ipc } = await import(\"~/daemon/ipc/client.js\");\n const sessionIdForRegister = claudeSessionId ?? randomUUID();\n await ipc({\n method: \"POST\",\n path: \"/v1/sessions/register\",\n timeoutMs: 3_000,\n body: {\n token: minted.token,\n session_id: sessionIdForRegister,\n mesh: mesh.slug,\n display_name: displayName,\n pid: process.pid,\n cwd: process.cwd(),\n ...(role ? { role } : {}),\n ...(parsedGroups.length > 0 ? { groups: parsedGroups.map((g) => `@${g.name}${g.role ? `:${g.role}` : \"\"}`) } : {}),\n ...(presencePayload ? { presence: presencePayload } : {}),\n },\n }).catch(() => null);\n\n // Pin the env name on a global so the spawn block below can pick it up.\n (process as unknown as { _claudemeshTokenEnv?: { name: string; value: string } })._claudemeshTokenEnv = {\n name: TOKEN_FILE_ENV,\n value: minted.filePath,\n };\n } catch {\n // Token mint or registration failed — proceed without per-session\n // attribution. CLI invocations from the session will still work,\n // they'll just default to user-level scope.\n }\n\n // 5. Print summary banner (wizard already handled all interactive config).\n if (!args.quiet) {\n printBanner(displayName, mesh.slug, role, parsedGroups, messageMode);\n // 1.32.0+: broker welcome — confirm the per-session WS is actually\n // attached and surface peer count + unread inbox so the user lands\n // in claude code with a clear state instead of silent assumptions.\n await printBrokerWelcome(mesh.slug);\n }\n\n // --- Install native MCP entries for deployed mesh services ---\n const meshMcpEntries: Array<{ key: string; entry: unknown }> = [];\n\n if (serviceCatalog.length > 0) {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n\n // Read-modify-write: only touch mesh:* entries in mcpServers\n let claudeConfig: Record<string, unknown> = {};\n try {\n claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n } catch {\n claudeConfig = {};\n }\n\n const mcpServers = (claudeConfig.mcpServers ?? {}) as Record<string, unknown>;\n\n // Session-scoped key: mesh:<service>:<sessionId>\n const sessionTag = `${process.pid}`;\n\n for (const svc of serviceCatalog) {\n if (svc.status !== \"running\") continue;\n const entryKey = `mesh:${svc.name}:${sessionTag}`;\n const entry = {\n command: \"claudemesh\",\n args: [\"mcp\", \"--service\", svc.name],\n env: {\n CLAUDEMESH_CONFIG_DIR: tmpDir,\n },\n _meshSession: {\n pid: process.pid,\n meshSlug: mesh.slug,\n serviceName: svc.name,\n createdAt: new Date().toISOString(),\n },\n };\n mcpServers[entryKey] = entry;\n meshMcpEntries.push({ key: entryKey, entry });\n }\n\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n\n if (!args.quiet && meshMcpEntries.length > 0) {\n console.log(` ${meshMcpEntries.length} mesh service(s) registered as native MCPs:`);\n for (const { key } of meshMcpEntries) {\n const svcName = key.split(\":\")[1];\n const svc = serviceCatalog.find(s => s.name === svcName);\n console.log(` ${svcName} (${svc?.tools.length ?? 0} tools)`);\n }\n console.log(\"\");\n }\n }\n\n // 6. Spawn claude with ephemeral config + dev channel + auto-permissions.\n // Strip any user-supplied --dangerously flags to avoid duplicates.\n const filtered: string[] = [];\n for (let i = 0; i < args.claudeArgs.length; i++) {\n if (args.claudeArgs[i] === \"--dangerously-load-development-channels\"\n || args.claudeArgs[i] === \"--dangerously-skip-permissions\") {\n if (args.claudeArgs[i] === \"--dangerously-load-development-channels\") i++;\n continue;\n }\n filtered.push(args.claudeArgs[i]!);\n }\n // --dangerously-skip-permissions is only added when the user explicitly\n // passes -y / --yes. Without it, claudemesh tools still work because\n // `claudemesh install` pre-approves them via allowedTools in settings.json.\n // This keeps permissions tight for multi-person meshes.\n // Session identity: claudeSessionId was generated above (4b) so the\n // session-token registration could include it. Reuse here.\n\n const claudeArgs = [\n \"--dangerously-load-development-channels\",\n \"server:claudemesh\",\n ...(claudeSessionId ? [\"--session-id\", claudeSessionId] : []),\n ...(args.resume ? [\"--resume\", args.resume] : []),\n ...(args.continueSession ? [\"--continue\"] : []),\n ...(args.skipPermConfirm ? [\"--dangerously-skip-permissions\"] : []),\n ...(args.systemPrompt ? [\"--system-prompt\", args.systemPrompt] : []),\n ...filtered,\n ];\n\n // Resolve the full path to `claude` — when launched from a non-interactive\n // shell (e.g. nvm node shebang), ~/.local/bin may not be in PATH.\n const isWindows = process.platform === \"win32\";\n let claudeBin = \"claude\";\n if (!isWindows) {\n const candidates = [\n join(homedir(), \".local\", \"bin\", \"claude\"),\n \"/usr/local/bin/claude\",\n join(homedir(), \".claude\", \"bin\", \"claude\"),\n ];\n for (const c of candidates) {\n if (existsSync(c)) { claudeBin = c; break; }\n }\n }\n\n // 7. Define cleanup — runs on every exit path via process.on('exit').\n // Synchronous-only (rmSync + writeFileSync) so it works inside the\n // 'exit' event, which does not allow async work.\n const cleanup = (): void => {\n // Remove mesh MCP entries from ~/.claude.json\n if (meshMcpEntries.length > 0) {\n try {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n const claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n const mcpServers = claudeConfig.mcpServers ?? {};\n for (const { key } of meshMcpEntries) {\n delete mcpServers[key];\n }\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n } catch { /* best effort */ }\n }\n // The token's session-token file lives inside tmpDir; rmSync below\n // shreds the secret. The daemon's session reaper notices the\n // launched session's pid is gone within 30s and drops the registry\n // entry. Explicit DELETE on /v1/sessions is feasible only from an\n // async exit hook, which adds complexity for ~30s of memory the\n // reaper will reclaim anyway. Leaving as-is; revisit if the\n // registry ever grows persistence.\n // Ephemeral config dir (also drops the session-token file)\n try {\n rmSync(tmpDir, { recursive: true, force: true });\n } catch { /* best effort */ }\n };\n\n // Register cleanup on every exit path — including normal exit, uncaught\n // throws, and fatal signals. process.on('exit') fires synchronously, which\n // is what the rmSync + writeFileSync above need.\n process.on(\"exit\", cleanup);\n\n // 8. Hard-reset the TTY before handing control to claude.\n //\n // Every interactive element in the pre-launch flow — the full-screen\n // wizard (tui/screen.ts), the permission confirmation, the callback-\n // listener paste prompt, the mesh picker — attaches listeners to\n // process.stdin, toggles raw mode, hides the cursor, and sometimes\n // enters the alt-screen. Those helpers do best-effort cleanup in their\n // own finally blocks, but any leak — an orphaned 'data' listener, a\n // still-raw TTY, a pending render paint — means the parent node process\n // keeps competing with claude's Ink TUI for the same keystrokes and\n // stdout frames. Symptoms: dropped keystrokes at the claude prompt, or\n // the wizard visibly repainting on top of claude after launch.\n //\n // Defensive reset here is cheap and guarantees a clean TTY regardless\n // of what the wizard helpers did or didn't restore.\n if (process.stdin.isTTY) {\n try { process.stdin.setRawMode(false); } catch { /* not a TTY under some parents */ }\n }\n process.stdin.removeAllListeners(\"data\");\n process.stdin.removeAllListeners(\"keypress\");\n process.stdin.removeAllListeners(\"readable\");\n process.stdin.pause();\n if (process.stdout.isTTY) {\n process.stdout.write(\"\\x1b[?25h\"); // show cursor\n process.stdout.write(\"\\x1b[?1049l\"); // exit alt-screen if any wizard step entered it\n }\n\n // 9. Block-and-wait on claude with spawnSync.\n //\n // Why spawnSync instead of spawn + child.on('exit'):\n // - spawn keeps the parent node event loop running alongside claude.\n // Any stray listener, setImmediate, or async wizard tail-end can\n // still fire during claude's lifetime, stealing input or painting\n // over claude's TUI.\n // - spawnSync blocks the parent event loop completely until claude\n // exits. No listeners fire. Nothing paints. The parent is effectively\n // suspended, and claude has exclusive ownership of the TTY.\n //\n // Signal forwarding: claude inherits the TTY process group via\n // stdio: \"inherit\". When the user hits Ctrl-C, the terminal sends\n // SIGINT to the whole group. Claude handles it (Ink unmounts, exits\n // cleanly); spawnSync returns with result.signal='SIGINT'. We re-raise\n // the same signal on the parent so it dies the same way.\n const result = spawnSync(claudeBin, claudeArgs, {\n stdio: \"inherit\",\n shell: isWindows,\n env: {\n ...process.env,\n CLAUDEMESH_CONFIG_DIR: tmpDir,\n CLAUDEMESH_DISPLAY_NAME: displayName,\n ...(claudeSessionId ? { CLAUDEMESH_SESSION_ID: claudeSessionId } : {}),\n ...(sessionTokenFilePath ? { CLAUDEMESH_IPC_TOKEN_FILE: sessionTokenFilePath } : {}),\n MCP_TIMEOUT: process.env.MCP_TIMEOUT ?? \"30000\",\n MAX_MCP_OUTPUT_TOKENS: process.env.MAX_MCP_OUTPUT_TOKENS ?? \"50000\",\n ...(role ? { CLAUDEMESH_ROLE: role } : {}),\n },\n });\n\n // 10. Handle the result. Cleanup runs automatically via process.on('exit').\n if (result.error) {\n const err = result.error as NodeJS.ErrnoException;\n if (err.code === \"ENOENT\") {\n render.err(\"`claude` not found on PATH.\", \"Install Claude Code first.\");\n } else {\n render.err(`failed to launch claude: ${err.message}`);\n }\n process.exit(1);\n }\n\n if (result.signal) {\n // Re-raise the same signal so the parent dies the same way the child did.\n process.kill(process.pid, result.signal);\n return;\n }\n\n process.exit(result.status ?? 0);\n}\n",
|
|
57
57
|
"import { bold, green, dim, orange, icons } from \"../styles.js\";\n\nexport function renderWelcome(): void {\n console.log(\"\");\n console.log(\" \" + orange(\"Welcome to claudemesh\"));\n console.log(\" \" + dim(\"Peer mesh for Claude Code sessions\"));\n console.log(\"\");\n console.log(\" What would you like to do?\");\n console.log(\"\");\n console.log(\" \" + bold(\"1)\") + \" \" + green(\"Register\") + \" a new account\");\n console.log(\" \" + bold(\"2)\") + \" \" + green(\"Login\") + \" to an existing account\");\n console.log(\" \" + bold(\"3)\") + \" \" + green(\"Join\") + \" a mesh from an invite link\");\n console.log(\" \" + bold(\"4)\") + \" Exit\");\n console.log(\"\");\n}\n",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"/**\n * `claudemesh peers` — list connected peers in the mesh.\n *\n * Shows all meshes by default, or filter with --mesh.\n *\n * Warm path: dials the per-mesh bridge socket the push-pipe holds open.\n * Cold path: opens its own WS via `withMesh`. Bridge fall-through is\n * transparent — output is identical.\n *\n * `--json` accepts an optional comma-separated field list:\n * claudemesh peers --json (full record)\n * claudemesh peers --json name,pubkey,status (projection)\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim, green, yellow } from \"~/ui/styles.js\";\n\nexport interface PeersFlags {\n mesh?: string;\n /** `true`/`undefined` = full record; comma-separated string = field projection. */\n json?: boolean | string;\n /** When false (default), hide control-plane presence rows from the\n * human renderer — they're infrastructure (daemon-WS member-keyed\n * presence), not interactive peers, and confused users into thinking\n * the daemon counted as a \"peer\". The JSON output still includes them\n * so scripts that need a full inventory can opt in via --all (or\n * just consume JSON).\n *\n * Source of truth is the broker-side `role` field\n * (`'control-plane' | 'session' | 'service'`). Older brokers don't\n * emit `role` yet — this code falls back to treating missing role as\n * `'session'` so legacy peer rows stay visible. */\n all?: boolean;\n}\n\n/**\n * Broker-emitted peer classification, added 2026-05-04. Older brokers\n * may omit it — treat missing as 'session' so legacy meshes still\n * render their peers (and don't accidentally hide them all). The CLI\n * never emits 'control-plane' on its own; that comes from the broker.\n */\nexport type PeerRole = \"control-plane\" | \"session\" | \"service\";\n\ninterface PeerRecord {\n pubkey: string;\n /** Stable member pubkey (independent of session). When sender shares\n * this with a peer, they're talking to the same person across all\n * their open sessions. */\n memberPubkey?: string;\n /** Per-launch session identifier (uuid). Used by the renderer to\n * disambiguate sibling sessions of the same member that otherwise\n * look identical (same name, same cwd). */\n sessionId?: string;\n displayName: string;\n status?: string;\n summary?: string;\n groups: Array<{ name: string; role?: string }>;\n /** Top-level convenience alias for `profile.role`, lifted by the CLI\n * since 1.31.5 so JSON consumers (the agent-vibes claudemesh skill,\n * launched-session LLMs) see the user-supplied role string at the\n * shape's top level. Same value as `profile.role`. Distinct from\n * `peerRole` below — that's the broker's presence-class taxonomy. */\n role?: string;\n /** Broker-emitted presence classification: 'control-plane' | 'session'\n * | 'service'. Source of truth for the --all visibility filter and\n * the default-hide rule. Older brokers omit this; the CLI fills\n * missing values with 'session' so legacy peer rows stay visible.\n *\n * Renamed from `role` to avoid collision with 1.31.5's profile.role\n * lift above. Wire-level field on the broker is also `peerRole`. */\n peerRole?: PeerRole;\n peerType?: string;\n channel?: string;\n model?: string;\n cwd?: string;\n /** Peer-level profile metadata (set via `claudemesh profile`). The\n * broker passes this through verbatim; the most common field is\n * `role` (\"lead\", \"reviewer\", \"human\", etc.) but capabilities, bio,\n * avatar, and title also live here when set. */\n profile?: {\n role?: string;\n title?: string;\n bio?: string;\n avatar?: string;\n capabilities?: string[];\n [k: string]: unknown;\n };\n /** True when this peer is one of the caller's own member's sessions.\n * Set in the cli (not the broker) by comparing memberPubkey against\n * the caller's stable JoinedMesh.pubkey. */\n isSelf?: boolean;\n /** When isSelf is true, true if this is the exact session running\n * the command (vs a sibling session of the same member). */\n isThisSession?: boolean;\n [k: string]: unknown;\n}\n\n/** Friendly aliases — `name` is what users will type; broker calls it `displayName`. */\nconst FIELD_ALIAS: Record<string, string> = {\n name: \"displayName\",\n};\n\nfunction projectFields(record: PeerRecord, fields: string[]): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const f of fields) {\n const sourceKey = FIELD_ALIAS[f] ?? f;\n out[f] = (record as Record<string, unknown>)[sourceKey];\n }\n return out;\n}\n\nasync function listPeersForMesh(slug: string): Promise<PeerRecord[]> {\n const config = readConfig();\n const joined = config.meshes.find((m) => m.slug === slug);\n const selfMemberPubkey = joined?.pubkey ?? null;\n\n // Resolve our own session pubkey via the daemon's /v1/sessions/me when\n // we're inside a launched session. Without this, isThisSession can't\n // be set on the daemon path (only on the cold path where a fresh WS\n // creates the keypair), and the renderer can't tell the user which\n // row in `peer list` is them.\n let selfSessionPubkey: string | null = null;\n try {\n const { getSessionInfo } = await import(\"~/services/session/resolve.js\");\n const sess = await getSessionInfo();\n if (sess && sess.mesh === slug && sess.presence?.sessionPubkey) {\n selfSessionPubkey = sess.presence.sessionPubkey;\n }\n } catch { /* not in a launched session; isThisSession stays false */ }\n\n // Daemon path — preferred when running. Same routing pattern as send.ts:\n // ~1 ms IPC round-trip; broker WS already warm in the daemon. The\n // lifecycle helper inside tryListPeersViaDaemon auto-spawns the\n // daemon if it's down and probes it for liveness — no separate bridge\n // tier is needed any more (1.28.0).\n try {\n const { tryListPeersViaDaemon } = await import(\"~/services/bridge/daemon-route.js\");\n const dr = await tryListPeersViaDaemon();\n if (dr !== null) {\n return dr.map((p) => annotateSelf(p as PeerRecord, selfMemberPubkey, selfSessionPubkey));\n }\n } catch { /* daemon route helper not available; fall through */ }\n\n // Cold path — open our own WS. Reached only when the lifecycle helper\n // could not bring the daemon up.\n let result: PeerRecord[] = [];\n await withMesh({ meshSlug: slug }, async (client) => {\n const all = (await client.listPeers()) as unknown as PeerRecord[];\n const selfSessionPubkey = client.getSessionPubkey();\n result = all.map((p) =>\n annotateSelf(p, selfMemberPubkey, selfSessionPubkey),\n );\n });\n return result;\n}\n\n/**\n * Tag each peer record with `isSelf` / `isThisSession` so the renderer\n * (and downstream code that picks targets, e.g. `claudemesh send`) can\n * tell sender's own sessions from real peers. The broker has always\n * surfaced a sender's siblings as separate rows because they're separate\n * presence rows; the cli just hadn't been making that visible.\n *\n * Also normalizes the broker's `peerRole` classification: missing\n * values (older brokers) default to 'session' so legacy peer rows stay\n * visible under the default `--all=false` filter.\n *\n * And lifts `profile.role` to a top-level `role` field — the 1.31.5\n * convenience alias for JSON consumers (skill SKILL.md, launched-session\n * LLMs, jq pipelines). Same value as profile.role; distinct from\n * peerRole (presence taxonomy).\n */\nfunction annotateSelf(\n peer: PeerRecord,\n selfMemberPubkey: string | null,\n selfSessionPubkey: string | null,\n): PeerRecord {\n const isSelf = !!(\n selfMemberPubkey &&\n peer.memberPubkey &&\n peer.memberPubkey === selfMemberPubkey\n );\n const isThisSession = !!(\n isSelf &&\n selfSessionPubkey &&\n peer.pubkey === selfSessionPubkey\n );\n const peerRole: PeerRole = peer.peerRole ?? \"session\";\n const profileRole = peer.profile?.role?.trim() || undefined;\n return {\n ...peer,\n ...(profileRole ? { role: profileRole } : {}),\n peerRole,\n isSelf,\n isThisSession,\n };\n}\n\nexport async function runPeers(flags: PeersFlags): Promise<void> {\n const config = readConfig();\n\n // Mesh selection precedence:\n // 1. explicit --mesh <slug> (always wins)\n // 2. session-token mesh (when invoked from inside a launched session)\n // 3. all joined meshes (default for bare shells)\n let slugs: string[];\n if (flags.mesh) {\n slugs = [flags.mesh];\n } else {\n const { getSessionInfo } = await import(\"~/services/session/resolve.js\");\n const sess = await getSessionInfo();\n slugs = sess ? [sess.mesh] : config.meshes.map((m) => m.slug);\n }\n\n if (slugs.length === 0) {\n render.err(\"No meshes joined.\");\n render.hint(\"claudemesh <invite-url> # join + launch\");\n process.exit(1);\n }\n\n // Field projection: --json a,b,c\n const fieldList: string[] | null =\n typeof flags.json === \"string\" && flags.json.length > 0\n ? flags.json.split(\",\").map((s) => s.trim()).filter(Boolean)\n : null;\n const wantsJson = flags.json !== undefined && flags.json !== false;\n\n const allJson: Array<{ mesh: string; peers: unknown[] }> = [];\n\n for (const slug of slugs) {\n try {\n const peers = await listPeersForMesh(slug);\n\n if (wantsJson) {\n const projected = fieldList\n ? peers.map((p) => projectFields(p, fieldList))\n : peers;\n allJson.push({ mesh: slug, peers: projected });\n continue;\n }\n\n // Hide control-plane rows by default — they're infrastructure\n // (daemon-WS member-keyed presence), not interactive peers, and\n // they confused users into thinking the daemon counted as a\n // separate peer. --all opts back in for debugging.\n //\n // Source of truth: broker-emitted `peerRole` field (added\n // 2026-05-04). annotateSelf() filled in 'session' for older\n // brokers that don't emit peerRole yet, so this filter is\n // backwards-compatible by construction — legacy rows show up.\n const visible = flags.all\n ? peers\n : peers.filter((p) => p.peerRole !== \"control-plane\");\n\n // Sort: this-session first, then your-other-sessions, then real\n // peers. Within each group, idle/working ahead of dnd. Inside the\n // groups, leave broker order. The point is: when you run peer\n // list, the row that's YOU is row 1.\n const sorted = visible.slice().sort((a, b) => {\n const score = (p: PeerRecord) =>\n p.isThisSession ? 0 : p.isSelf ? 1 : 2;\n return score(a) - score(b);\n });\n\n const hiddenControlPlane = peers.length - visible.length;\n const header = hiddenControlPlane > 0\n ? `peers on ${slug} (${sorted.length}, ${hiddenControlPlane} control-plane hidden — use --all)`\n : `peers on ${slug} (${sorted.length})`;\n render.section(header);\n\n if (sorted.length === 0) {\n render.info(dim(\" (no peers connected)\"));\n continue;\n }\n\n for (const p of sorted) {\n const statusDot = p.status === \"working\" ? yellow(\"●\") : green(\"●\");\n const name = bold(p.displayName);\n const meta: string[] = [];\n if (p.peerType) meta.push(p.peerType);\n if (p.channel) meta.push(p.channel);\n if (p.model) meta.push(p.model);\n const metaStr = meta.length ? dim(` (${meta.join(\", \")})`) : \"\";\n const summary = p.summary ? dim(` — ${p.summary}`) : \"\";\n const pubkeyTag = dim(` · ${p.pubkey.slice(0, 16)}…`);\n // Short sessionId tag — appears for sibling sessions of the same\n // member that would otherwise be visually identical (same name,\n // same cwd, only the truncated pubkey on the right differs).\n const sidTag = p.sessionId\n ? dim(` · sid:${p.sessionId.slice(0, 8)}`)\n : \"\";\n const selfTag = p.isThisSession\n ? dim(\" \") + yellow(\"(this session)\")\n : p.isSelf\n ? dim(\" \") + yellow(\"(your other session)\")\n : \"\";\n\n // Inline tags (\"role:lead [@flexicar:reviewer, @oncall]\") so the\n // first thing the user sees beside the name is the access /\n // affiliation context. Empty role + empty groups → omit the\n // bracket entirely (the dim summary line below carries the\n // explicit \"(no role / no groups)\" so JSON output is unaffected\n // and screen readers don't get spammed with literal \"no\").\n const inlineTags: string[] = [];\n const peerRole = p.profile?.role?.trim();\n if (peerRole) inlineTags.push(`role:${peerRole}`);\n if (p.groups.length) {\n inlineTags.push(\n ...p.groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : \"\"}`),\n );\n }\n const tagsStr = inlineTags.length ? \" [\" + inlineTags.join(\", \") + \"]\" : \"\";\n\n render.info(\n `${statusDot} ${name}${selfTag}${tagsStr}${metaStr}${pubkeyTag}${sidTag}${summary}`,\n );\n\n // Second line: cwd + an explicit role/groups footer when both\n // are absent. Surfacing the absence is important — the previous\n // renderer hid it, so users couldn't tell \"no role set\" from\n // \"the cli isn't showing roles\".\n if (p.cwd) render.info(dim(` cwd: ${p.cwd}`));\n if (!peerRole && p.groups.length === 0) {\n render.info(dim(\" role: (none) groups: (none)\"));\n }\n }\n } catch (e) {\n render.err(`${slug}: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n if (wantsJson) {\n process.stdout.write(\n JSON.stringify(slugs.length === 1 ? allJson[0]?.peers : allJson, null, 2) + \"\\n\",\n );\n }\n}\n",
|
|
104
104
|
"/**\n * `claudemesh send <to> <message>` — send a message to a peer or group.\n *\n * <to> can be:\n * - a display name (\"Mou\")\n * - a pubkey hex (\"abc123...\")\n * - @group (\"@flexicar\")\n * - * (broadcast to all)\n *\n * Warm path: dials the per-mesh bridge socket the push-pipe holds open\n * (~5ms). Cold path: opens its own WS via `withMesh` (~300-700ms).\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { trySendViaDaemon } from \"~/services/bridge/daemon-route.js\";\nimport type { Priority } from \"~/services/broker/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { dim } from \"~/ui/styles.js\";\n\nexport interface SendFlags {\n mesh?: string;\n priority?: string;\n json?: boolean;\n /** Allow sending to a target that resolves to one of the caller's\n * own sessions. Off by default — trying to message your own\n * sibling session is almost always an accident (copying a hex\n * pubkey from `peer list` without realizing it was your own row). */\n self?: boolean;\n}\n\nexport async function runSend(flags: SendFlags, to: string, message: string): Promise<void> {\n if (!to || !message) {\n render.err(\"Usage: claudemesh send <to> <message>\");\n process.exit(1);\n }\n\n const priority: Priority =\n flags.priority === \"now\" ? \"now\"\n : flags.priority === \"low\" ? \"low\"\n : \"next\";\n\n // Resolve which mesh to use. With --mesh, target it directly.\n // Without, use first joined mesh — same default as withMesh.\n const config = readConfig();\n const meshSlug =\n flags.mesh ??\n (config.meshes.length === 1 ? config.meshes[0]!.slug : null);\n\n // 1.31.6: hex-prefix resolution. If `to` looks like hex but isn't a\n // full 64-char pubkey, resolve it against the peer list and replace\n // it with the matching full pubkey. The broker stores `targetSpec`\n // verbatim and the drain query at apps/broker/src/broker.ts:2408\n // matches only on full pubkeys, so a 16-hex prefix would queue\n // successfully but never fetch — sender saw \"sent\", recipient saw\n // nothing. Resolving here makes the CLI's prefix UX work end-to-end\n // and surfaces ambiguous / unmatched prefixes with a clear error\n // instead of a silent drop.\n if (\n !to.startsWith(\"@\") &&\n !to.startsWith(\"#\") &&\n to !== \"*\" &&\n /^[0-9a-f]{4,63}$/i.test(to)\n ) {\n try {\n const { tryListPeersViaDaemon } = await import(\"~/services/bridge/daemon-route.js\");\n const peers = (await tryListPeersViaDaemon()) ?? [];\n const lower = to.toLowerCase();\n const matches = peers.filter((p) => {\n const pk = (p as { pubkey?: string }).pubkey ?? \"\";\n const mpk = (p as { memberPubkey?: string }).memberPubkey ?? \"\";\n return pk.toLowerCase().startsWith(lower) || mpk.toLowerCase().startsWith(lower);\n });\n if (matches.length === 0) {\n render.err(`No peer matches hex prefix \"${to}\".`);\n const names = peers\n .map((p) => (p as { displayName?: string }).displayName)\n .filter(Boolean)\n .join(\", \");\n if (names) render.hint(`online: ${names}`);\n process.exit(1);\n }\n if (matches.length > 1) {\n const candidates = matches\n .map((p) => {\n const pk = (p as { pubkey?: string }).pubkey ?? \"\";\n const dn = (p as { displayName?: string }).displayName ?? \"?\";\n return `${dn} ${pk.slice(0, 16)}…`;\n })\n .join(\", \");\n render.err(`Ambiguous hex prefix \"${to}\" — matches ${matches.length} peers.`);\n render.hint(`candidates: ${candidates}`);\n render.hint(\"Use a longer prefix or paste the full 64-char pubkey.\");\n process.exit(1);\n }\n to = (matches[0] as { pubkey?: string }).pubkey ?? to;\n } catch {\n // Daemon unreachable — fall through; cold path will try a name\n // lookup and surface its own error if that also fails.\n }\n }\n\n // Self-DM safety check: if target is a 64-char hex that matches the\n // caller's own member pubkey, refuse without --self. Catches the\n // common pasted-from-peer-list-not-realizing-it-was-mine footgun.\n // With --self, member-pubkey targeting fans out to every connected\n // sibling session of your member (the broker's drain only matches\n // exact session pubkeys, so we resolve here in the CLI).\n if (meshSlug) {\n const joined = config.meshes.find((m) => m.slug === meshSlug);\n const isOwnMemberKey =\n joined && /^[0-9a-f]{64}$/i.test(to) && to.toLowerCase() === joined.pubkey.toLowerCase();\n\n if (isOwnMemberKey && !flags.self) {\n render.err(\n `Target \"${to.slice(0, 16)}…\" is your own member pubkey on mesh \"${meshSlug}\".`,\n );\n render.hint(\n \"Pass --self to message a sibling session of your own member, or pick a different peer's pubkey.\",\n );\n process.exit(1);\n }\n\n if (isOwnMemberKey && flags.self) {\n // Member-pubkey fan-out: resolve to every connected sibling\n // session pubkey and send one message per recipient. Required\n // because the broker's drain query at apps/broker/src/broker.ts\n // matches target_spec only against full session pubkeys —\n // sending to a member pubkey would queue successfully but no\n // drain would fetch.\n try {\n const { tryListPeersViaDaemon } = await import(\"~/services/bridge/daemon-route.js\");\n const { getSessionInfo } = await import(\"~/services/session/resolve.js\");\n const peers = (await tryListPeersViaDaemon()) ?? [];\n const session = await getSessionInfo();\n const ownSessionPk = session?.presence?.sessionPubkey?.toLowerCase();\n const siblings = peers.filter((p) => {\n const r = p as { memberPubkey?: string; pubkey?: string; channel?: string };\n if (!r.pubkey) return false;\n if (ownSessionPk && r.pubkey.toLowerCase() === ownSessionPk) return false;\n if (r.channel === \"claudemesh-daemon\") return false;\n return r.memberPubkey?.toLowerCase() === to.toLowerCase();\n });\n if (siblings.length === 0) {\n render.err(`--self fan-out: no other sibling sessions of your member online.`);\n process.exit(1);\n }\n const results: Array<{ pubkey: string; ok: boolean; messageId?: string; error?: string }> = [];\n for (const peer of siblings) {\n const pk = (peer as { pubkey: string }).pubkey;\n const dr = await trySendViaDaemon({ to: pk, message, priority, expectedMesh: meshSlug ?? undefined });\n if (dr === null) {\n results.push({ pubkey: pk, ok: false, error: \"daemon path unavailable\" });\n continue;\n }\n if (dr.ok) {\n results.push({\n pubkey: pk,\n ok: true,\n ...(dr.messageId ? { messageId: dr.messageId } : {}),\n });\n } else {\n results.push({ pubkey: pk, ok: false, error: dr.error });\n }\n }\n const okCount = results.filter((r) => r.ok).length;\n if (flags.json) {\n console.log(JSON.stringify({ ok: okCount > 0, fanout: results, via: \"daemon\" }));\n } else if (okCount === results.length) {\n render.ok(`fanned out to ${okCount} sibling session${okCount === 1 ? \"\" : \"s\"} (daemon)`);\n for (const r of results) render.info(dim(` → ${r.pubkey.slice(0, 16)}… ${r.messageId ? dim(r.messageId.slice(0, 8)) : \"\"}`));\n } else {\n render.warn(`fanned out: ${okCount}/${results.length} delivered`);\n for (const r of results) {\n const tag = r.ok ? \"✔\" : \"✘\";\n render.info(` ${tag} ${r.pubkey.slice(0, 16)}… ${r.error ? dim(`— ${r.error}`) : \"\"}`);\n }\n }\n return;\n } catch (e) {\n render.err(`--self fan-out failed: ${e instanceof Error ? e.message : String(e)}`);\n process.exit(1);\n }\n }\n }\n\n // Daemon path — preferred when a long-lived daemon is local. UDS at\n // ~/.claudemesh/daemon/daemon.sock; ~1ms round-trip; persists outbox\n // across CLI invocations so a `claudemesh send` survives a daemon\n // crash via the on-disk outbox.\n {\n const dr = await trySendViaDaemon({ to, message, priority, expectedMesh: meshSlug ?? undefined });\n if (dr !== null) {\n if (dr.ok) {\n if (flags.json) console.log(JSON.stringify({ ok: true, messageId: dr.messageId, target: to, via: \"daemon\", duplicate: !!dr.duplicate }));\n else render.ok(`sent to ${to} (daemon)`, dr.messageId ? dim(dr.messageId.slice(0, 8)) : undefined);\n return;\n }\n // Daemon answered but rejected (409 idempotency, 400 schema). Surface; do not fall through.\n if (flags.json) console.log(JSON.stringify({ ok: false, error: dr.error, via: \"daemon\" }));\n else render.err(`send failed (daemon): ${dr.error}`);\n process.exit(1);\n }\n // dr === null → daemon not running and lifecycle couldn't auto-\n // spawn it; fall through to cold path. The orphaned bridge tier\n // was removed in 1.28.0.\n }\n\n // Cold path — open our own WS, encrypt locally, fire envelope.\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n let targetSpec = to;\n if (to.startsWith(\"#\") && !/^#[0-9a-z_-]{20,}$/i.test(to)) {\n // Topic by name → resolve to \"#<topicId>\" via topicList. The broker\n // wire format is \"#<topicId>\"; users type \"#<name>\" for ergonomics.\n const name = to.slice(1);\n const topics = await client.topicList();\n const match = topics.find((t) => t.name === name);\n if (!match) {\n const names = topics.map((t) => \"#\" + t.name).join(\", \");\n render.err(`Topic \"${to}\" not found.`, `topics: ${names || \"(none)\"}`);\n process.exit(1);\n }\n targetSpec = \"#\" + match.id;\n } else if (!to.startsWith(\"@\") && !to.startsWith(\"#\") && to !== \"*\" && !/^[0-9a-f]{64}$/i.test(to)) {\n const peers = await client.listPeers();\n const match = peers.find(\n (p) => p.displayName.toLowerCase() === to.toLowerCase(),\n );\n if (!match) {\n const names = peers.map((p) => p.displayName).join(\", \");\n render.err(`Peer \"${to}\" not found.`, `online: ${names || \"(none)\"}`);\n process.exit(1);\n }\n targetSpec = match.pubkey;\n }\n\n const result = await client.send(targetSpec, message, priority);\n if (result.ok) {\n if (flags.json) {\n console.log(JSON.stringify({ ok: true, messageId: result.messageId, target: to }));\n } else {\n render.ok(`sent to ${to}`, result.messageId ? dim(result.messageId.slice(0, 8)) : undefined);\n }\n } else {\n if (flags.json) {\n console.log(JSON.stringify({ ok: false, error: result.error ?? \"unknown\" }));\n } else {\n render.err(`send failed: ${result.error ?? \"unknown error\"}`);\n }\n process.exit(1);\n }\n });\n}\n",
|
|
105
105
|
"/**\n * `claudemesh inbox flush` and `claudemesh inbox delete <id>` —\n * mutate the daemon's persistent inbox store\n * (`~/.claudemesh/daemon/inbox.db`) over IPC.\n *\n * 1.34.7: until this version, the only way to clean the inbox was a\n * raw `sqlite3 inbox.db \"DELETE FROM inbox\"` against the daemon's\n * private DB. That works but bypasses the IPC layer (and any future\n * lifecycle hooks on row removal), and is invisible to a user who\n * doesn't know the schema. These two verbs make the operation visible\n * + safe + scriptable.\n */\n\nimport {\n tryFlushInboxViaDaemon,\n tryDeleteInboxRowViaDaemon,\n} from \"~/services/bridge/daemon-route.js\";\nimport { render } from \"~/ui/render.js\";\nimport { dim } from \"~/ui/styles.js\";\n\nexport interface InboxFlushFlags {\n mesh?: string;\n /** ISO-8601 timestamp; deletes rows received_at < before. */\n before?: string;\n /** Required when neither --mesh nor --before is set, to prevent an\n * accidental \"delete every row on every mesh\". */\n all?: boolean;\n json?: boolean;\n}\n\nexport async function runInboxFlush(flags: InboxFlushFlags): Promise<void> {\n const hasFilter = !!(flags.mesh || flags.before);\n if (!hasFilter && !flags.all) {\n if (flags.json) { process.stdout.write(JSON.stringify({ ok: false, error: \"missing_filter\" }) + \"\\n\"); return; }\n render.info(dim(\n \"Refusing to flush every row on every mesh.\\n\" +\n \" Re-run with --mesh <slug>, --before <iso-timestamp>, or --all to confirm.\",\n ));\n process.exit(1);\n }\n\n const removed = await tryFlushInboxViaDaemon({\n ...(flags.mesh ? { mesh: flags.mesh } : {}),\n ...(flags.before ? { beforeIso: flags.before } : {}),\n });\n\n if (removed === null) {\n if (flags.json) { process.stdout.write(JSON.stringify({ ok: false, error: \"daemon_unreachable\" }) + \"\\n\"); return; }\n render.info(dim(\"Daemon not reachable. Run `claudemesh daemon up` and retry.\"));\n process.exit(1);\n }\n\n if (flags.json) {\n process.stdout.write(JSON.stringify({ ok: true, removed }) + \"\\n\");\n return;\n }\n const scope = flags.mesh\n ? `mesh \"${flags.mesh}\"`\n : flags.before\n ? `older than ${flags.before}`\n : \"all meshes\";\n render.info(`✔ Flushed ${removed} message${removed === 1 ? \"\" : \"s\"} from ${scope}.`);\n}\n\nexport interface InboxDeleteFlags {\n json?: boolean;\n}\n\nexport async function runInboxDelete(id: string, flags: InboxDeleteFlags): Promise<void> {\n if (!id) {\n if (flags.json) { process.stdout.write(JSON.stringify({ ok: false, error: \"missing_id\" }) + \"\\n\"); return; }\n render.info(dim(\"Usage: claudemesh inbox delete <message-id>\"));\n process.exit(1);\n }\n const ok = await tryDeleteInboxRowViaDaemon(id);\n if (ok === null) {\n if (flags.json) { process.stdout.write(JSON.stringify({ ok: false, error: \"daemon_unreachable\" }) + \"\\n\"); return; }\n render.info(dim(\"Daemon not reachable. Run `claudemesh daemon up` and retry.\"));\n process.exit(1);\n }\n if (!ok) {\n if (flags.json) { process.stdout.write(JSON.stringify({ ok: false, error: \"not_found\", id }) + \"\\n\"); return; }\n render.info(dim(`No inbox row with id \"${id}\".`));\n process.exit(1);\n }\n if (flags.json) {\n process.stdout.write(JSON.stringify({ ok: true, id }) + \"\\n\");\n return;\n }\n render.info(`✔ Deleted inbox row ${id}.`);\n}\n",
|
|
106
|
-
"/**\n * `claudemesh inbox` — read pending peer messages from the daemon's\n * persisted inbox (`~/.claudemesh/daemon/inbox.db`).\n *\n * 1.34.0: switched from the legacy cold-path \"open fresh broker WS,\n * drain in-memory buffer\" flow to a daemon IPC read against `/v1/inbox`.\n * The cold path was structurally broken — the persistent inbox lives in\n * the daemon, and pushes land on its session-WS, not on a freshly-opened\n * standalone WS. The daemon-route `tryListInboxViaDaemon` returns rows\n * persisted across daemon restarts and surfaces them with the correct\n * mesh scoping (server-side mesh filter added in 1.34.0).\n *\n * Cold-path fallback removed: when the daemon isn't reachable, the\n * prior implementation returned an empty list anyway (no broker state\n * = no buffered pushes), so removing that path doesn't lose any\n * functionality. Strict mode emits a clear error via daemon-route.\n */\n\nimport { tryListInboxViaDaemon } from \"~/services/bridge/daemon-route.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\n\nexport interface InboxFlags {\n mesh?: string;\n json?: boolean;\n /** Cap the number of rows returned by the daemon. Default 100. */\n limit?: number;\n}\n\ninterface FormattedItem {\n sender_pubkey: string;\n sender_name: string;\n body: string | null;\n topic: string | null;\n received_at: string;\n mesh: string;\n}\n\nfunction formatMessage(msg: FormattedItem, includeMesh: boolean): string {\n const text = msg.body ?? \"[encrypted]\";\n const from = msg.sender_name && msg.sender_name !== msg.sender_pubkey.slice(0, 8)\n ? `${msg.sender_name} (${msg.sender_pubkey.slice(0, 8)})`\n : msg.sender_pubkey.slice(0, 8);\n const time = new Date(msg.received_at).toLocaleTimeString();\n const topicTag = msg.topic ? ` (#${msg.topic})` : \"\";\n const meshTag = includeMesh ? ` [${msg.mesh}]` : \"\";\n return ` ${bold(from)} ${dim(`${meshTag}${topicTag} ${time}`)}\\n ${text}`;\n}\n\nexport async function runInbox(flags: InboxFlags): Promise<void> {\n // Mesh resolution is owned by the daemon (it knows which meshes are\n // attached) — the CLI just forwards the user's --mesh flag through.\n // When omitted, the daemon's `/v1/inbox` honors the session-default\n // mesh on auth-token requests; out-of-session callers see rows from\n // every attached mesh. We don't pre-validate the mesh slug here so\n // the command works even from a launch tmpdir whose local\n // `config.json` only knows about the launch's mesh.\n const meshSlug = flags.mesh;\n\n const items = await tryListInboxViaDaemon(meshSlug, flags.limit ?? 100);\n if (items === null) {\n if (flags.json) { process.stdout.write(\"[]\\n\"); return; }\n render.info(dim(\"Daemon not reachable. Run `claudemesh daemon up` and retry.\"));\n return;\n }\n\n if (flags.json) {\n process.stdout.write(JSON.stringify(items, null, 2) + \"\\n\");\n return;\n }\n\n if (items.length === 0) {\n const scope = meshSlug ? `mesh \"${meshSlug}\"` : \"any mesh\";\n render.info(dim(`No messages on ${scope}.`));\n return;\n }\n\n const heading = meshSlug\n ? `inbox — ${meshSlug} (${items.length} message${items.length === 1 ? \"\" : \"s\"})`\n : `inbox (${items.length} message${items.length === 1 ? \"\" : \"s\"})`;\n render.section(heading);\n // When the user didn't filter by mesh, surface the mesh slug per row\n // so they can tell apart rows from different meshes at a glance.\n for (const msg of items) {\n process.stdout.write(formatMessage(msg, !meshSlug) + \"\\n\\n\");\n }\n}\n",
|
|
106
|
+
"/**\n * `claudemesh inbox` — read pending peer messages from the daemon's\n * persisted inbox (`~/.claudemesh/daemon/inbox.db`).\n *\n * 1.34.0: switched from the legacy cold-path \"open fresh broker WS,\n * drain in-memory buffer\" flow to a daemon IPC read against `/v1/inbox`.\n * The cold path was structurally broken — the persistent inbox lives in\n * the daemon, and pushes land on its session-WS, not on a freshly-opened\n * standalone WS. The daemon-route `tryListInboxViaDaemon` returns rows\n * persisted across daemon restarts and surfaces them with the correct\n * mesh scoping (server-side mesh filter added in 1.34.0).\n *\n * Cold-path fallback removed: when the daemon isn't reachable, the\n * prior implementation returned an empty list anyway (no broker state\n * = no buffered pushes), so removing that path doesn't lose any\n * functionality. Strict mode emits a clear error via daemon-route.\n */\n\nimport { tryListInboxViaDaemon } from \"~/services/bridge/daemon-route.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\n\nexport interface InboxFlags {\n mesh?: string;\n json?: boolean;\n /** Cap the number of rows returned by the daemon. Default 100. */\n limit?: number;\n /** 1.34.8: only show rows whose seen_at is NULL (i.e., never\n * surfaced via an interactive listing or live channel reminder).\n * When omitted, every row is returned and an interactive listing\n * stamps them seen as a side effect. */\n unread?: boolean;\n}\n\ninterface FormattedItem {\n sender_pubkey: string;\n sender_name: string;\n body: string | null;\n topic: string | null;\n received_at: string;\n mesh: string;\n}\n\nfunction formatMessage(msg: FormattedItem, includeMesh: boolean): string {\n const text = msg.body ?? \"[encrypted]\";\n const from = msg.sender_name && msg.sender_name !== msg.sender_pubkey.slice(0, 8)\n ? `${msg.sender_name} (${msg.sender_pubkey.slice(0, 8)})`\n : msg.sender_pubkey.slice(0, 8);\n const time = new Date(msg.received_at).toLocaleTimeString();\n const topicTag = msg.topic ? ` (#${msg.topic})` : \"\";\n const meshTag = includeMesh ? ` [${msg.mesh}]` : \"\";\n return ` ${bold(from)} ${dim(`${meshTag}${topicTag} ${time}`)}\\n ${text}`;\n}\n\nexport async function runInbox(flags: InboxFlags): Promise<void> {\n // Mesh resolution is owned by the daemon (it knows which meshes are\n // attached) — the CLI just forwards the user's --mesh flag through.\n // When omitted, the daemon's `/v1/inbox` honors the session-default\n // mesh on auth-token requests; out-of-session callers see rows from\n // every attached mesh. We don't pre-validate the mesh slug here so\n // the command works even from a launch tmpdir whose local\n // `config.json` only knows about the launch's mesh.\n const meshSlug = flags.mesh;\n\n const items = await tryListInboxViaDaemon(meshSlug, flags.limit ?? 100, {\n unreadOnly: flags.unread === true,\n // CLI is the canonical \"I'm reading my inbox\" path — let the daemon\n // auto-stamp seen_at on the rows we just rendered. The MCP welcome\n // path passes mark_seen=false instead and stamps explicitly after\n // the channel notification succeeds.\n markSeen: true,\n });\n if (items === null) {\n if (flags.json) { process.stdout.write(\"[]\\n\"); return; }\n render.info(dim(\"Daemon not reachable. Run `claudemesh daemon up` and retry.\"));\n return;\n }\n\n if (flags.json) {\n process.stdout.write(JSON.stringify(items, null, 2) + \"\\n\");\n return;\n }\n\n if (items.length === 0) {\n const scope = meshSlug ? `mesh \"${meshSlug}\"` : \"any mesh\";\n const filter = flags.unread ? \"unread \" : \"\";\n render.info(dim(`No ${filter}messages on ${scope}.`));\n return;\n }\n\n const filterTag = flags.unread ? \" unread\" : \"\";\n const heading = meshSlug\n ? `inbox — ${meshSlug} (${items.length}${filterTag} message${items.length === 1 ? \"\" : \"s\"})`\n : `inbox (${items.length}${filterTag} message${items.length === 1 ? \"\" : \"s\"})`;\n render.section(heading);\n // When the user didn't filter by mesh, surface the mesh slug per row\n // so they can tell apart rows from different meshes at a glance.\n for (const msg of items) {\n process.stdout.write(formatMessage(msg, !meshSlug) + \"\\n\\n\");\n }\n}\n",
|
|
107
107
|
"/**\n * `claudemesh state get <key>` — read a shared state value\n * `claudemesh state set <key> <value>` — write a shared state value\n * `claudemesh state list` — list all state entries\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { tryGetStateViaDaemon, tryListStateViaDaemon, trySetStateViaDaemon } from \"~/services/bridge/daemon-route.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\n\nexport interface StateFlags {\n mesh?: string;\n json?: boolean;\n}\n\nexport async function runStateGet(flags: StateFlags, key: string): Promise<void> {\n // Daemon path first.\n const daemonEntry = await tryGetStateViaDaemon(key, flags.mesh);\n if (daemonEntry !== null) {\n if (!daemonEntry) { render.info(dim(\"(not set)\")); return; }\n if (flags.json) { console.log(JSON.stringify(daemonEntry, null, 2)); return; }\n const val = typeof daemonEntry.value === \"string\" ? daemonEntry.value : JSON.stringify(daemonEntry.value);\n render.info(val);\n render.info(dim(` set by ${daemonEntry.updatedBy} at ${new Date(daemonEntry.updatedAt).toLocaleString()}`));\n return;\n }\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const entry = await client.getState(key);\n if (!entry) {\n render.info(dim(\"(not set)\"));\n return;\n }\n if (flags.json) {\n console.log(JSON.stringify(entry, null, 2));\n return;\n }\n const val = typeof entry.value === \"string\" ? entry.value : JSON.stringify(entry.value);\n render.info(val);\n render.info(dim(` set by ${entry.updatedBy} at ${new Date(entry.updatedAt).toLocaleString()}`));\n });\n}\n\nexport async function runStateSet(flags: StateFlags, key: string, value: string): Promise<void> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch {\n parsed = value;\n }\n\n // Daemon path first.\n const daemonOk = await trySetStateViaDaemon(key, parsed, flags.mesh);\n if (daemonOk) {\n render.ok(`${bold(key)} = ${JSON.stringify(parsed)}`);\n return;\n }\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n await client.setState(key, parsed);\n render.ok(`${bold(key)} = ${JSON.stringify(parsed)}`);\n });\n}\n\nexport async function runStateList(flags: StateFlags): Promise<void> {\n // Daemon path first.\n const daemonRows = await tryListStateViaDaemon(flags.mesh);\n if (daemonRows !== null) {\n if (flags.json) { console.log(JSON.stringify(daemonRows, null, 2)); return; }\n if (daemonRows.length === 0) { render.info(dim(\"(no state)\")); return; }\n render.section(`state (${daemonRows.length})`);\n for (const e of daemonRows) {\n const val = typeof e.value === \"string\" ? e.value : JSON.stringify(e.value);\n process.stdout.write(` ${bold(e.key)}: ${val}\\n`);\n process.stdout.write(` ${dim(e.updatedBy + \" · \" + new Date(e.updatedAt).toLocaleString())}\\n`);\n }\n return;\n }\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client, mesh) => {\n const entries = await client.listState();\n\n if (flags.json) {\n console.log(JSON.stringify(entries, null, 2));\n return;\n }\n\n if (entries.length === 0) {\n render.info(dim(`No state on mesh \"${mesh.slug}\".`));\n return;\n }\n\n render.section(`state (${entries.length})`);\n for (const e of entries) {\n const val = typeof e.value === \"string\" ? e.value : JSON.stringify(e.value);\n process.stdout.write(` ${bold(e.key)}: ${val}\\n`);\n process.stdout.write(` ${dim(e.updatedBy + \" · \" + new Date(e.updatedAt).toLocaleString())}\\n`);\n }\n });\n}\n",
|
|
108
108
|
"import { withMesh } from \"./connect.js\";\nimport { tryRememberViaDaemon } from \"~/services/bridge/daemon-route.js\";\nimport { render } from \"~/ui/render.js\";\nimport { dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function remember(\n content: string,\n opts: { mesh?: string; tags?: string; json?: boolean } = {},\n): Promise<number> {\n if (!content) {\n render.err(\"Usage: claudemesh remember <text>\");\n return EXIT.INVALID_ARGS;\n }\n const tags = opts.tags?.split(\",\").map((t) => t.trim()).filter(Boolean);\n\n // Daemon path first.\n const daemonRes = await tryRememberViaDaemon(content, tags, opts.mesh);\n if (daemonRes) {\n if (opts.json) {\n console.log(JSON.stringify({ id: daemonRes.id, content, tags, mesh: daemonRes.mesh }));\n return EXIT.SUCCESS;\n }\n render.ok(\"remembered\", dim(daemonRes.id.slice(0, 8)));\n return EXIT.SUCCESS;\n }\n\n return await withMesh({ meshSlug: opts.mesh ?? null }, async (client) => {\n const id = await client.remember(content, tags);\n\n if (opts.json) {\n console.log(JSON.stringify({ id, content, tags }));\n return EXIT.SUCCESS;\n }\n\n if (id) {\n render.ok(\"remembered\", dim(id.slice(0, 8)));\n return EXIT.SUCCESS;\n }\n render.err(\"failed to store memory\");\n return EXIT.INTERNAL_ERROR;\n });\n}\n",
|
|
109
109
|
"import { withMesh } from \"./connect.js\";\nimport { tryRecallViaDaemon } from \"~/services/bridge/daemon-route.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function recall(\n query: string,\n opts: { mesh?: string; json?: boolean } = {},\n): Promise<number> {\n if (!query) {\n render.err(\"Usage: claudemesh recall <query>\");\n return EXIT.INVALID_ARGS;\n }\n\n // Daemon path first.\n const daemonMatches = await tryRecallViaDaemon(query, opts.mesh);\n if (daemonMatches !== null) {\n if (opts.json) { console.log(JSON.stringify(daemonMatches, null, 2)); return EXIT.SUCCESS; }\n if (daemonMatches.length === 0) { render.info(dim(\"no memories found.\")); return EXIT.SUCCESS; }\n render.section(`memories (${daemonMatches.length})`);\n for (const m of daemonMatches) {\n const tags = m.tags.length ? dim(` [${m.tags.map((t) => clay(t)).join(dim(\", \"))}]`) : \"\";\n process.stdout.write(` ${bold(m.id.slice(0, 8))}${tags}\\n`);\n process.stdout.write(` ${m.content}\\n`);\n process.stdout.write(` ${dim(m.rememberedBy + \" · \" + new Date(m.rememberedAt).toLocaleString())}\\n\\n`);\n }\n return EXIT.SUCCESS;\n }\n\n return await withMesh({ meshSlug: opts.mesh ?? null }, async (client) => {\n const memories = await client.recall(query);\n\n if (opts.json) {\n console.log(JSON.stringify(memories, null, 2));\n return EXIT.SUCCESS;\n }\n\n if (memories.length === 0) {\n render.info(dim(\"no memories found.\"));\n return EXIT.SUCCESS;\n }\n\n render.section(`memories (${memories.length})`);\n for (const m of memories) {\n const tags = m.tags.length ? dim(` [${m.tags.map((t) => clay(t)).join(dim(\", \"))}]`) : \"\";\n process.stdout.write(` ${bold(m.id.slice(0, 8))}${tags}\\n`);\n process.stdout.write(` ${m.content}\\n`);\n process.stdout.write(` ${dim(m.rememberedBy + \" · \" + new Date(m.rememberedAt).toLocaleString())}\\n\\n`);\n }\n return EXIT.SUCCESS;\n });\n}\n",
|
|
@@ -118,18 +118,19 @@
|
|
|
118
118
|
"// SQLite shim. The daemon runs under Node 22.5+ in production (node:sqlite).\n// During local dev (bun src/entrypoints/cli.ts daemon up) we fall back to\n// bun:sqlite, which has a near-identical API surface for what we use.\n\nexport type SqliteDb = {\n prepare(sql: string): {\n run(...params: unknown[]): { changes: number; lastInsertRowid: number | bigint };\n get<T = unknown>(...params: unknown[]): T | undefined;\n all<T = unknown>(...params: unknown[]): T[];\n };\n exec(sql: string): void;\n close(): void;\n};\n\ninterface DatabaseCtor {\n new (path: string): SqliteDb;\n}\n\nlet cached: DatabaseCtor | null = null;\n\nasync function loadSqlite(): Promise<DatabaseCtor> {\n if (cached) return cached;\n\n // Prefer node:sqlite (production runtime).\n try {\n const mod = (await import(\"node:sqlite\")) as { DatabaseSync: DatabaseCtor };\n cached = mod.DatabaseSync;\n return cached;\n } catch (nodeErr) {\n // Dev path: bun:sqlite. Bun's Database has prepare/exec/close already.\n try {\n const bunMod = (await import(\"bun:sqlite\")) as { Database: DatabaseCtor };\n cached = bunMod.Database;\n return cached;\n } catch {\n const msg = `claudemesh daemon requires Node.js 22.5+ for the embedded SQLite store ` +\n `(node:sqlite), or Bun (bun:sqlite) for dev. ` +\n `Current: ${process.version}. Original error: ${String(nodeErr)}`;\n throw new Error(msg);\n }\n }\n}\n\nexport async function openSqlite(path: string): Promise<SqliteDb> {\n const Database = await loadSqlite();\n const db = new Database(path);\n // Default pragmas for daemon use:\n // journal_mode WAL — concurrent reads while one writer is in BEGIN IMMEDIATE.\n // synchronous NORMAL — balance durability/throughput; daemon is the only writer.\n // foreign_keys ON — enforce constraints if any are added later.\n // busy_timeout — let BEGIN IMMEDIATE wait briefly for a contending writer.\n db.exec(`\n PRAGMA journal_mode = WAL;\n PRAGMA synchronous = NORMAL;\n PRAGMA foreign_keys = ON;\n PRAGMA busy_timeout = 5000;\n `);\n return db;\n}\n\n/**\n * Run `fn` inside a `BEGIN IMMEDIATE` transaction. Per spec §4.5.1, this is\n * what serializes IPC accept against concurrent same-id requests; SQLite has\n * no row-level lock and `SELECT FOR UPDATE` is not supported.\n */\nexport function inImmediateTx<T>(db: SqliteDb, fn: () => T): T {\n db.exec(\"BEGIN IMMEDIATE\");\n try {\n const out = fn();\n db.exec(\"COMMIT\");\n return out;\n } catch (err) {\n try { db.exec(\"ROLLBACK\"); } catch { /* ignore */ }\n throw err;\n }\n}\n",
|
|
119
119
|
"// Canonical request fingerprint per spec §4.4.\n//\n// request_fingerprint = sha256(\n// envelope_version || 0x00 ||\n// destination_kind || 0x00 ||\n// destination_ref || 0x00 ||\n// reply_to_id_or_empty || 0x00 ||\n// priority || 0x00 ||\n// meta_canonical_json || 0x00 ||\n// body_hash\n// )\n\nimport { createHash } from \"node:crypto\";\n\nexport type DestKind = \"topic\" | \"dm\" | \"queue\";\nexport type Priority = \"now\" | \"next\" | \"low\";\n\nexport interface SendRequestForFingerprint {\n envelope_version: number;\n destination_kind: DestKind;\n destination_ref: string;\n reply_to_id?: string | null;\n priority: Priority;\n meta?: Record<string, unknown> | null;\n /** UTF-8 body bytes. */\n body: Uint8Array;\n}\n\nconst NUL = Buffer.from([0]);\n\nexport function computeRequestFingerprint(req: SendRequestForFingerprint): Buffer {\n const h = createHash(\"sha256\");\n h.update(String(req.envelope_version), \"utf8\"); h.update(NUL);\n h.update(req.destination_kind, \"utf8\"); h.update(NUL);\n h.update(req.destination_ref, \"utf8\"); h.update(NUL);\n h.update(req.reply_to_id ?? \"\", \"utf8\"); h.update(NUL);\n h.update(req.priority, \"utf8\"); h.update(NUL);\n h.update(req.meta ? canonicalJson(req.meta) : \"\", \"utf8\");\n h.update(NUL);\n h.update(createHash(\"sha256\").update(req.body).digest());\n return h.digest();\n}\n\n/**\n * Minimal JCS-like canonicalization: sort object keys, no whitespace, no\n * non-ASCII escape funny business. Sufficient for v0.9.0 (TS-only).\n * Cross-language SDK ports get a vetted JCS lib + conformance tests\n * (deferred per followups doc).\n */\nexport function canonicalJson(value: unknown): string {\n return JSON.stringify(sortKeys(value));\n}\n\nfunction sortKeys(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sortKeys);\n if (value !== null && typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n const out: Record<string, unknown> = {};\n for (const k of Object.keys(obj).sort()) out[k] = sortKeys(obj[k]);\n return out;\n }\n return value;\n}\n\nexport function fingerprintHexPrefix(fp: Uint8Array, bytes = 8): string {\n let s = \"\";\n for (let i = 0; i < bytes && i < fp.length; i++) {\n s += fp[i]!.toString(16).padStart(2, \"0\");\n }\n return s;\n}\n",
|
|
120
120
|
"// IPC accept handler for POST /v1/send. Implements the §4.5.1 lookup table:\n// daemon-local idempotency over outbox states × fingerprint match/mismatch.\n//\n// Broker delivery (drain → broker WS) is a separate concern and not part of\n// this handler — this only serializes the daemon-local accept.\n\nimport { randomUUID } from \"node:crypto\";\n\nimport {\n findByClientId,\n fingerprintsEqual,\n insertPending,\n type OutboxRow,\n} from \"../../db/outbox.js\";\nimport { inImmediateTx, type SqliteDb } from \"../../db/sqlite.js\";\nimport {\n computeRequestFingerprint,\n fingerprintHexPrefix,\n type DestKind,\n type Priority,\n} from \"../../fingerprint.js\";\n\nexport interface SendRequest {\n to: string; // peer name | pubkey hex | @group | * | topic name\n message: string;\n priority?: Priority;\n meta?: Record<string, unknown>;\n reply_to_id?: string;\n /** Optional caller-supplied id. Wins over Idempotency-Key header. */\n client_message_id?: string;\n /** Destination kind + ref must be supplied by the IPC layer after parsing `to`. */\n destination_kind: DestKind;\n destination_ref: string;\n /** Sprint 4: pre-resolved broker-format target (pubkey hex, \"#topicId\", @group, *). */\n target_spec?: string;\n /** Sprint 4: pre-encrypted ciphertext (base64). For DMs: crypto_box. For broadcast/topic: base64-of-plaintext. */\n ciphertext?: string;\n /** Sprint 4: nonce that pairs with ciphertext (base64). */\n nonce?: string;\n /** Sprint 4: which mesh this send is for (single-mesh daemon today; multi-mesh later). */\n mesh?: string;\n /** 1.34.0: when the IPC request authenticated as a launched session,\n * the IPC layer fills this with the session's hex pubkey. The drain\n * worker uses it to route via the matching SessionBrokerClient so\n * broker fan-out attributes the push to the session pubkey instead\n * of the daemon's member pubkey. */\n sender_session_pubkey?: string;\n}\n\nexport type AcceptOutcome =\n | { kind: \"accepted_pending\"; status: 202; client_message_id: string }\n | { kind: \"accepted_inflight\"; status: 202; client_message_id: string }\n | { kind: \"accepted_done\"; status: 200; client_message_id: string; broker_message_id: string | null }\n | { kind: \"conflict\"; status: 409; reason: string; daemon_fingerprint_prefix: string; broker_message_id?: string | null };\n\nexport interface AcceptDeps {\n db: SqliteDb;\n /** Override for testing. */\n now?: () => number;\n /** Override for testing. */\n newId?: () => string;\n}\n\nexport const ENVELOPE_VERSION = 1;\n\n/**\n * Daemon-local idempotency: serialized via BEGIN IMMEDIATE so concurrent\n * IPC requests with the same client_message_id produce one outcome.\n */\nexport function acceptSend(req: SendRequest, deps: AcceptDeps): AcceptOutcome {\n const now = (deps.now ?? Date.now)();\n const newId = deps.newId ?? randomUUID;\n\n // Per spec, caller-supplied client_message_id wins; otherwise daemon mints one.\n const clientId = req.client_message_id?.trim() || ulidLike(newId);\n\n const body = Buffer.from(req.message, \"utf8\");\n const fingerprint = computeRequestFingerprint({\n envelope_version: ENVELOPE_VERSION,\n destination_kind: req.destination_kind,\n destination_ref: req.destination_ref,\n reply_to_id: req.reply_to_id ?? null,\n priority: req.priority ?? \"next\",\n meta: req.meta ?? null,\n body,\n });\n\n return inImmediateTx(deps.db, () => {\n const existing = findByClientId(deps.db, clientId);\n if (!existing) {\n insertPending(deps.db, {\n id: newId(),\n client_message_id: clientId,\n request_fingerprint: fingerprint,\n payload: body,\n now,\n mesh: req.mesh,\n target_spec: req.target_spec,\n nonce: req.nonce,\n ciphertext: req.ciphertext,\n priority: req.priority,\n sender_session_pubkey: req.sender_session_pubkey,\n });\n return { kind: \"accepted_pending\", status: 202, client_message_id: clientId };\n }\n\n return decideForExistingRow(existing, fingerprint);\n });\n}\n\nfunction decideForExistingRow(row: OutboxRow, fp: Buffer): AcceptOutcome {\n const match = fingerprintsEqual(fp, row.request_fingerprint);\n const fpPrefix = fingerprintHexPrefix(fp);\n\n // Spec §4.5.1 lookup table.\n switch (row.status) {\n case \"pending\":\n return match\n ? { kind: \"accepted_pending\", status: 202, client_message_id: row.client_message_id }\n : conflict(\"outbox_pending_fingerprint_mismatch\", fpPrefix);\n\n case \"inflight\":\n return match\n ? { kind: \"accepted_inflight\", status: 202, client_message_id: row.client_message_id }\n : conflict(\"outbox_inflight_fingerprint_mismatch\", fpPrefix);\n\n case \"done\":\n return match\n ? {\n kind: \"accepted_done\",\n status: 200,\n client_message_id: row.client_message_id,\n broker_message_id: row.broker_message_id,\n }\n : conflict(\"outbox_done_fingerprint_mismatch\", fpPrefix, row.broker_message_id);\n\n case \"dead\":\n return match\n ? conflict(\"outbox_dead_fingerprint_match\", fpPrefix, row.broker_message_id)\n : conflict(\"outbox_dead_fingerprint_mismatch\", fpPrefix);\n\n case \"aborted\":\n return match\n ? conflict(\"outbox_aborted_fingerprint_match\", fpPrefix)\n : conflict(\"outbox_aborted_fingerprint_mismatch\", fpPrefix);\n\n default: {\n // Exhaustiveness check.\n const _: never = row.status;\n throw new Error(`unknown outbox status: ${String(_)}`);\n }\n }\n}\n\nfunction conflict(reason: string, fpPrefix: string, brokerMessageId: string | null = null): AcceptOutcome {\n return {\n kind: \"conflict\",\n status: 409,\n reason,\n daemon_fingerprint_prefix: fpPrefix,\n broker_message_id: brokerMessageId,\n };\n}\n\n/** Tiny ULID-ish generator: 26-char Crockford-base32 from time + random. */\nfunction ulidLike(newId: () => string): string {\n // We don't ship a full ULID lib for one fallback path; uuid is fine here.\n // The wire-stable id is whatever we return; downstream just uses it as text.\n return newId();\n}\n",
|
|
121
|
-
"// Inbox schema + accessors. Schema is the v0.9.0 spec §4.10 / v3 §4.5\n// content table; FTS5 index is deferred to the followups doc.\n\nimport type { SqliteDb } from \"./sqlite.js\";\n\nexport interface InboxRow {\n id: string;\n client_message_id: string;\n broker_message_id: string | null;\n mesh: string;\n topic: string | null;\n sender_pubkey: string;\n sender_name: string;\n body: string | null;\n meta: string | null;\n received_at: number;\n reply_to_id: string | null;\n}\n\nexport function migrateInbox(db: SqliteDb): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS inbox (\n id TEXT PRIMARY KEY,\n client_message_id TEXT NOT NULL UNIQUE,\n broker_message_id TEXT,\n mesh TEXT NOT NULL,\n topic TEXT,\n sender_pubkey TEXT NOT NULL,\n sender_name TEXT NOT NULL,\n body TEXT,\n meta TEXT,\n received_at INTEGER NOT NULL,\n reply_to_id TEXT\n );\n CREATE INDEX IF NOT EXISTS inbox_received_at ON inbox(received_at);\n CREATE INDEX IF NOT EXISTS inbox_topic ON inbox(topic);\n CREATE INDEX IF NOT EXISTS inbox_sender ON inbox(sender_pubkey);\n `);\n}\n\n/**\n * Spec §4.5 insert path:\n * INSERT ... ON CONFLICT(client_message_id) DO NOTHING RETURNING id\n *\n * Returns the new row id when this was a fresh insert, or null when the\n * message id was already known (idempotent receive).\n */\nexport function insertIfNew(db: SqliteDb
|
|
121
|
+
"// Inbox schema + accessors. Schema is the v0.9.0 spec §4.10 / v3 §4.5\n// content table; FTS5 index is deferred to the followups doc.\n\nimport type { SqliteDb } from \"./sqlite.js\";\n\nexport interface InboxRow {\n id: string;\n client_message_id: string;\n broker_message_id: string | null;\n mesh: string;\n topic: string | null;\n sender_pubkey: string;\n sender_name: string;\n body: string | null;\n meta: string | null;\n received_at: number;\n reply_to_id: string | null;\n /** 1.34.8: Unix ms of when this row was first surfaced to the user\n * (returned by an interactive `inbox` listing or pushed via channel\n * reminder). NULL = never seen. Welcome filters on `seen_at IS NULL`\n * so freshly-launched sessions only see what they actually missed. */\n seen_at: number | null;\n}\n\nexport function migrateInbox(db: SqliteDb): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS inbox (\n id TEXT PRIMARY KEY,\n client_message_id TEXT NOT NULL UNIQUE,\n broker_message_id TEXT,\n mesh TEXT NOT NULL,\n topic TEXT,\n sender_pubkey TEXT NOT NULL,\n sender_name TEXT NOT NULL,\n body TEXT,\n meta TEXT,\n received_at INTEGER NOT NULL,\n reply_to_id TEXT\n );\n CREATE INDEX IF NOT EXISTS inbox_received_at ON inbox(received_at);\n CREATE INDEX IF NOT EXISTS inbox_topic ON inbox(topic);\n CREATE INDEX IF NOT EXISTS inbox_sender ON inbox(sender_pubkey);\n `);\n // 1.34.8: read-state tracking. Pre-1.34.8 rows land with seen_at=NULL\n // (treated as unread); welcome surfaces them once and the listing\n // marks them seen. Indexed because welcome queries WHERE seen_at IS\n // NULL on every launch.\n const cols = db.prepare(`PRAGMA table_info(inbox)`).all<{ name: string }>();\n if (!cols.some((c) => c.name === \"seen_at\")) {\n db.exec(`ALTER TABLE inbox ADD COLUMN seen_at INTEGER`);\n db.exec(`CREATE INDEX IF NOT EXISTS inbox_seen_at ON inbox(seen_at)`);\n }\n}\n\n/**\n * Spec §4.5 insert path:\n * INSERT ... ON CONFLICT(client_message_id) DO NOTHING RETURNING id\n *\n * Returns the new row id when this was a fresh insert, or null when the\n * message id was already known (idempotent receive).\n */\nexport function insertIfNew(\n db: SqliteDb,\n // 1.34.8: callers don't pass `seen_at` — it's always NULL on insert\n // (a freshly-received row is by definition unread). Stripping the\n // field from the input type keeps inbound.ts callers from having to\n // construct it.\n row: Omit<InboxRow, \"id\" | \"seen_at\"> & { id: string },\n): string | null {\n // node:sqlite does support RETURNING. bun:sqlite does too. We branch on\n // the row count instead so it works on both.\n const before = db.prepare(`SELECT id FROM inbox WHERE client_message_id = ?`).get<{ id: string }>(row.client_message_id);\n if (before) return null;\n db.prepare(`\n INSERT INTO inbox (\n id, client_message_id, broker_message_id, mesh, topic,\n sender_pubkey, sender_name, body, meta, received_at, reply_to_id\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(client_message_id) DO NOTHING\n `).run(\n row.id, row.client_message_id, row.broker_message_id, row.mesh, row.topic,\n row.sender_pubkey, row.sender_name, row.body, row.meta, row.received_at, row.reply_to_id,\n );\n // Confirm the insert landed (handles the conflict-noop race).\n const after = db.prepare(`SELECT id FROM inbox WHERE client_message_id = ?`).get<{ id: string }>(row.client_message_id);\n return after?.id === row.id ? row.id : null;\n}\n\nexport interface ListInboxParams {\n since?: number; // received_at >= since\n topic?: string;\n fromPubkey?: string;\n /** 1.34.0: filter by mesh slug. Omit to return rows across all meshes. */\n mesh?: string;\n /** 1.34.8: only rows with `seen_at IS NULL`. Used by the welcome\n * push so a freshly-launched session surfaces what it actually\n * missed instead of every row from the last 24h. */\n unreadOnly?: boolean;\n limit?: number;\n}\n\nexport function listInbox(db: SqliteDb, p: ListInboxParams): InboxRow[] {\n const where: string[] = [];\n const args: unknown[] = [];\n if (p.since !== undefined) { where.push(\"received_at >= ?\"); args.push(p.since); }\n if (p.topic !== undefined) { where.push(\"topic = ?\"); args.push(p.topic); }\n if (p.fromPubkey !== undefined){ where.push(\"sender_pubkey = ?\"); args.push(p.fromPubkey); }\n if (p.mesh !== undefined) { where.push(\"mesh = ?\"); args.push(p.mesh); }\n if (p.unreadOnly === true) { where.push(\"seen_at IS NULL\"); }\n const sql = `\n SELECT id, client_message_id, broker_message_id, mesh, topic,\n sender_pubkey, sender_name, body, meta, received_at, reply_to_id, seen_at\n FROM inbox\n ${where.length ? \"WHERE \" + where.join(\" AND \") : \"\"}\n ORDER BY received_at DESC\n LIMIT ?\n `;\n args.push(Math.min(Math.max(p.limit ?? 100, 1), 1000));\n return db.prepare(sql).all<InboxRow>(...args);\n}\n\n/** 1.34.8: stamp `seen_at = now` on every row whose id is in `ids`,\n * but only when `seen_at IS NULL` so re-marking doesn't bump the\n * timestamp on a row the user already knew about. Returns the number\n * of rows that flipped from unread → seen. Used by:\n * - the IPC `/v1/inbox` route when called by an interactive\n * listing (the daemon stamps after returning rows so the human\n * who just looked at their inbox doesn't see the same rows\n * flagged \"unread\" on next launch);\n * - the MCP server when the SSE message event surfaces a live\n * `<channel>` reminder (Claude Code already saw the row inline,\n * no need to surface it again on welcome). */\nexport function markInboxSeen(db: SqliteDb, ids: readonly string[], now = Date.now()): number {\n if (ids.length === 0) return 0;\n const placeholders = ids.map(() => \"?\").join(\",\");\n const r = db.prepare(\n `UPDATE inbox SET seen_at = ? WHERE seen_at IS NULL AND id IN (${placeholders})`,\n ).run(now, ...ids);\n return Number(r.changes);\n}\n\n/** 1.34.8: TTL prune. Removes inbox rows older than `cutoffMs`\n * (received_at < cutoffMs). Daemon schedules this hourly with a 30-day\n * default retention (see startInboxPruner). Returns the number of\n * rows removed so the caller can log the volume. */\nexport function pruneInboxBefore(db: SqliteDb, cutoffMs: number): number {\n const r = db.prepare(`DELETE FROM inbox WHERE received_at < ?`).run(cutoffMs);\n return Number(r.changes);\n}\n\n/** 1.34.7: delete a single inbox row by id. Returns true iff a row was\n * removed. The CLI exposes this as `claudemesh inbox delete <id>`. */\nexport function deleteInboxRow(db: SqliteDb, id: string): boolean {\n const r = db.prepare(`DELETE FROM inbox WHERE id = ?`).run(id);\n return Number(r.changes) > 0;\n}\n\n/** 1.34.7: bulk delete with mesh / age filters. Returns the number of\n * rows removed. With no filter, deletes ALL rows on ALL meshes —\n * caller is expected to gate this behind a `--all` confirmation. */\nexport interface FlushInboxParams {\n mesh?: string;\n /** Unix ms — delete rows received_at < before. */\n before?: number;\n}\nexport function flushInbox(db: SqliteDb, p: FlushInboxParams): number {\n const where: string[] = [];\n const args: unknown[] = [];\n if (p.mesh !== undefined) { where.push(\"mesh = ?\"); args.push(p.mesh); }\n if (p.before !== undefined) { where.push(\"received_at < ?\"); args.push(p.before); }\n const sql = `DELETE FROM inbox ${where.length ? \"WHERE \" + where.join(\" AND \") : \"\"}`;\n const r = db.prepare(sql).run(...args);\n return Number(r.changes);\n}\n",
|
|
122
122
|
"// Lightweight in-process event bus + SSE writer. Used by /v1/events SSE\n// stream and consumed by hooks (post-v0.9.0).\n\nimport type { ServerResponse } from \"node:http\";\n\nexport type DaemonEventKind =\n | \"message\"\n | \"peer_join\"\n | \"peer_leave\"\n | \"broker_status\"\n | \"system\";\n\nexport interface DaemonEvent {\n kind: DaemonEventKind;\n ts: string;\n data: Record<string, unknown>;\n}\n\ntype Subscriber = (e: DaemonEvent) => void;\n\nexport class EventBus {\n private subs = new Set<Subscriber>();\n\n publish(kind: DaemonEventKind, data: Record<string, unknown>): void {\n const e: DaemonEvent = { kind, ts: new Date().toISOString(), data };\n for (const s of this.subs) {\n try { s(e); } catch { /* one bad subscriber must not poison the rest */ }\n }\n }\n\n subscribe(fn: Subscriber): () => void {\n this.subs.add(fn);\n return () => this.subs.delete(fn);\n }\n}\n\n/** Write an event to an open SSE response. */\nexport function writeSse(res: ServerResponse, e: DaemonEvent, idCounter: number): void {\n res.write(`id: ${idCounter}\\n`);\n res.write(`event: ${e.kind}\\n`);\n res.write(`data: ${JSON.stringify({ ts: e.ts, ...e.data })}\\n\\n`);\n}\n\n/** Open an SSE stream on the response and route bus events to it. */\nexport function bindSseStream(res: ServerResponse, bus: EventBus): () => void {\n res.statusCode = 200;\n res.setHeader(\"Content-Type\", \"text/event-stream\");\n res.setHeader(\"Cache-Control\", \"no-cache, no-transform\");\n res.setHeader(\"Connection\", \"keep-alive\");\n res.setHeader(\"X-Accel-Buffering\", \"no\");\n res.write(\": connected\\n\\n\");\n\n let counter = 0;\n const unsubscribe = bus.subscribe((e) => writeSse(res, e, ++counter));\n\n const heartbeat = setInterval(() => {\n try { res.write(\": keepalive\\n\\n\"); }\n catch { /* socket already torn down; cleanup handled below */ }\n }, 15_000);\n\n const cleanup = () => {\n clearInterval(heartbeat);\n unsubscribe();\n try { res.end(); } catch { /* ignore */ }\n };\n res.on(\"close\", cleanup);\n res.on(\"error\", cleanup);\n return cleanup;\n}\n",
|
|
123
123
|
"/**\n * Process-info helpers used by the session reaper to detect dead-pid AND\n * pid-reuse safely.\n *\n * `process.kill(pid, 0)` alone is insufficient: a recently-recycled pid\n * passes the liveness check even though the process registered under it\n * is long gone. To avoid mistakenly trusting a recycled pid, we capture\n * a stable per-process start-time at register, and compare it on each\n * sweep — if it changed, treat the original process as dead.\n *\n * macOS + Linux both expose `ps -o lstart=` returning a fixed-format\n * timestamp (\"Sun May 4 09:14:00 2026\"). Equality is the only\n * operation the reaper needs, so we keep the value as an opaque string.\n *\n * IMPORTANT (1.31.1): every fork / execFile blocks the daemon's event\n * loop until ps completes (~30-80 ms per call on macOS). The first\n * 1.31.0 implementation called execFileSync once per registered\n * session every 5 s, and with 10+ sessions that stalled IPC for hundreds\n * of milliseconds at a time — long enough that probes against\n * /v1/version were declared \"stale\" and the CLI fell back to the cold\n * path with the misleading \"service-managed daemon not responding\"\n * warning. This module now exposes:\n *\n * - `getProcessStartTime(pid)`: async, single-pid, used at register.\n * - `getProcessStartTimes(pids)`: async, batched, used by the reaper.\n * One ps invocation handles N pids, so the per-sweep cost is fixed\n * and tiny regardless of how many sessions are registered.\n */\n\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\n/**\n * Returns a stable process-start identifier for `pid`, or null if the\n * process is dead or unreachable. Async — never blocks the event loop.\n */\nexport async function getProcessStartTime(pid: number): Promise<string | null> {\n if (!Number.isFinite(pid) || pid <= 0) return null;\n try {\n const { stdout } = await execFileAsync(\"ps\", [\"-o\", \"lstart=\", \"-p\", String(pid)], {\n encoding: \"utf8\",\n timeout: 1_000,\n });\n const out = stdout.trim();\n return out.length > 0 ? out : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Batched form: returns a Map<pid, lstart> for every pid that is still\n * alive. Pids that ps doesn't return (i.e. dead) are absent from the\n * map. One ps fork handles all pids — O(1) sweep cost regardless of\n * session count.\n */\nexport async function getProcessStartTimes(pids: number[]): Promise<Map<number, string>> {\n const result = new Map<number, string>();\n const valid = pids.filter((p) => Number.isFinite(p) && p > 0);\n if (valid.length === 0) return result;\n // ps -o pid,lstart= -p p1,p2,... emits one row per live pid:\n // \" 12345 Sun May 4 09:14:00 2026\"\n // Dead pids are silently omitted.\n try {\n const { stdout } = await execFileAsync(\n \"ps\",\n [\"-o\", \"pid=,lstart=\", \"-p\", valid.join(\",\")],\n { encoding: \"utf8\", timeout: 2_000 },\n );\n for (const raw of stdout.split(\"\\n\")) {\n const line = raw.trim();\n if (!line) continue;\n const m = /^(\\d+)\\s+(.+)$/.exec(line);\n if (!m) continue;\n const pid = Number.parseInt(m[1]!, 10);\n const lstart = m[2]!.trim();\n if (Number.isFinite(pid) && lstart.length > 0) result.set(pid, lstart);\n }\n } catch {\n // ps failure (timeout, ENOENT) — treat as \"no info available\" and\n // let the reaper fall back to bare liveness for these pids. Better\n // to keep entries than to nuke them on a transient ps error.\n }\n return result;\n}\n\n/** Liveness-only probe (signal 0). Use together with start-time guard. */\nexport function isPidAlive(pid: number): boolean {\n if (!Number.isFinite(pid) || pid <= 0) return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch {\n return false;\n }\n}\n",
|
|
124
124
|
"/**\n * In-memory per-token session registry kept by the daemon.\n *\n * `claudemesh launch` POSTs `/v1/sessions/register` with the token it\n * minted plus session metadata (sessionId, mesh, displayName, pid,\n * cwd, role, groups). Subsequent CLI invocations from inside that\n * session present the token via `Authorization: ClaudeMesh-Session\n * <hex>` and the daemon's IPC auth middleware resolves it here in O(1).\n *\n * Lifecycle:\n * - register replaces any prior entry under the same `sessionId`\n * (handles re-launch and `--resume` flows cleanly).\n * - reaper polls every 5 s. An entry is dropped when its pid is dead\n * OR when its captured start-time no longer matches the running\n * process (PID reuse — original is gone, OS recycled the number).\n * - hard ttl ceiling of 24 h is a leak guard for forgotten sessions.\n *\n * Persistence: in-memory only for v1. A daemon restart clears the\n * registry — every launched session needs to re-register. That's fine\n * for now because launch.ts re-registers on `ensureDaemonRunning`'s\n * success path, and most ad-hoc CLI invocations from outside a launched\n * session have no token to begin with.\n */\n\nimport { getProcessStartTime, getProcessStartTimes, isPidAlive } from \"./process-info.js\";\n\n/**\n * Optional per-launch presence material. Carried opaquely through the\n * registry; the daemon's session-broker subsystem (1.30.0+) reads it to\n * open a long-lived broker WebSocket per session. Absent on older CLIs\n * — register accepts payloads without it for backward compat.\n */\nexport interface SessionPresence {\n /** Hex ed25519 pubkey, 64 chars. */\n sessionPubkey: string;\n /** Hex ed25519 secret key (held in-memory only; never disk). */\n sessionSecretKey: string;\n /** Parent-member-signed attestation; see signParentAttestation. */\n parentAttestation: {\n sessionPubkey: string;\n parentMemberPubkey: string;\n expiresAt: number;\n signature: string;\n };\n}\n\nexport interface SessionInfo {\n token: string;\n sessionId: string;\n mesh: string;\n displayName: string;\n pid: number;\n cwd?: string;\n role?: string;\n groups?: string[];\n /** 1.30.0+: per-launch presence material. */\n presence?: SessionPresence;\n /**\n * 1.31.0+: opaque per-process start-time captured at register. The\n * reaper compares the live value against this on every sweep — a\n * mismatch means the original process exited and the pid was reused\n * by an unrelated program, so the registry entry must be dropped.\n * `undefined` when capture failed (process already dead at register\n * time, ps unavailable, etc.) — the reaper falls back to bare\n * liveness in that case.\n */\n startTime?: string;\n registeredAt: number;\n}\n\n/** Lifecycle callbacks invoked synchronously after registry mutation. */\nexport interface RegistryHooks {\n onRegister?: (info: SessionInfo) => void;\n onDeregister?: (info: SessionInfo) => void;\n}\n\nconst TTL_MS = 24 * 60 * 60 * 1000;\nconst REAPER_INTERVAL_MS = 5 * 1000;\n\nconst byToken = new Map<string, SessionInfo>();\nconst bySessionId = new Map<string, string>();\nconst hooks: RegistryHooks = {};\n\nlet reaperHandle: NodeJS.Timeout | null = null;\n\nexport function startReaper(): void {\n if (reaperHandle) return;\n // The sweep is async (batched ps) — wrap in `void` so setInterval\n // doesn't try to await us, and so an unexpected throw doesn't crash\n // the daemon. Errors are swallowed inside reapDead.\n reaperHandle = setInterval(() => { void reapDead(); }, REAPER_INTERVAL_MS).unref?.() ?? reaperHandle;\n}\n\nexport function stopReaper(): void {\n if (reaperHandle) { clearInterval(reaperHandle); reaperHandle = null; }\n}\n\n/**\n * Wire daemon-level lifecycle hooks. Called once at daemon boot — passing\n * `{}` clears them. Idempotent across calls so tests can re-bind.\n */\nexport function setRegistryHooks(next: RegistryHooks): void {\n hooks.onRegister = next.onRegister;\n hooks.onDeregister = next.onDeregister;\n}\n\nexport function registerSession(info: Omit<SessionInfo, \"registeredAt\">): SessionInfo {\n // Replace any prior entry under the same sessionId.\n const priorToken = bySessionId.get(info.sessionId);\n if (priorToken && priorToken !== info.token) {\n const prior = byToken.get(priorToken);\n if (prior) {\n byToken.delete(priorToken);\n try { hooks.onDeregister?.(prior); } catch { /* hook errors must never throttle the registry */ }\n }\n }\n\n // Caller may pre-fill info.startTime (tests do this for determinism).\n // For the real path we fire-and-forget an async ps probe — register\n // stays sync and microsecond-fast, and the start-time lands on the\n // entry within a few ms. Until it lands, the reaper falls back to\n // bare liveness for this entry, which is fine for the common case\n // (PID reuse is rare; the brief window without the guard is\n // tolerable).\n const stored: SessionInfo = { ...info, registeredAt: Date.now() };\n byToken.set(info.token, stored);\n bySessionId.set(info.sessionId, info.token);\n try { hooks.onRegister?.(stored); } catch { /* see above */ }\n if (stored.startTime === undefined) {\n void captureStartTimeAsync(info.token, info.pid);\n }\n return stored;\n}\n\nasync function captureStartTimeAsync(token: string, pid: number): Promise<void> {\n const lstart = await getProcessStartTime(pid);\n if (lstart === null) return;\n const entry = byToken.get(token);\n if (!entry || entry.pid !== pid) return; // entry was replaced; skip\n entry.startTime = lstart;\n}\n\nexport function deregisterByToken(token: string): boolean {\n const entry = byToken.get(token);\n if (!entry) return false;\n byToken.delete(token);\n if (bySessionId.get(entry.sessionId) === token) bySessionId.delete(entry.sessionId);\n try { hooks.onDeregister?.(entry); } catch { /* see above */ }\n return true;\n}\n\nexport function resolveToken(token: string): SessionInfo | null {\n const entry = byToken.get(token);\n if (!entry) return null;\n if (Date.now() - entry.registeredAt > TTL_MS) {\n deregisterByToken(token);\n return null;\n }\n return entry;\n}\n\nexport function listSessions(): SessionInfo[] {\n return [...byToken.values()];\n}\n\nasync function reapDead(): Promise<void> {\n // Snapshot first; the second (async) phase calls ps and we must not\n // mutate the registry mid-iteration.\n const entries = [...byToken.entries()];\n\n // Phase 1 — TTL + bare liveness. Sync, microsecond-fast.\n const dead: string[] = [];\n const survivors: Array<[string, SessionInfo]> = [];\n for (const [token, info] of entries) {\n if (Date.now() - info.registeredAt > TTL_MS) { dead.push(token); continue; }\n if (!isPidAlive(info.pid)) { dead.push(token); continue; }\n survivors.push([token, info]);\n }\n\n // Phase 2 — PID-reuse guard for survivors that have a captured\n // start-time. Single batched ps call: O(1) forks regardless of\n // session count. Survivors without a start-time keep the bare-\n // liveness verdict from phase 1 (their captureStartTimeAsync may\n // still be in-flight from a recent register).\n const guardedPids = survivors\n .filter(([, info]) => info.startTime !== undefined)\n .map(([, info]) => info.pid);\n if (guardedPids.length > 0) {\n try {\n const live = await getProcessStartTimes(guardedPids);\n for (const [token, info] of survivors) {\n if (info.startTime === undefined) continue;\n const lstart = live.get(info.pid);\n // ps may transiently miss a pid that was alive when isPidAlive\n // ran — treat absence as \"racing\", let the next sweep decide.\n if (lstart === undefined) continue;\n if (lstart !== info.startTime) dead.push(token);\n }\n } catch {\n // ps failure here is non-fatal: survivors keep their phase-1\n // verdict. Logging is the daemon's responsibility — the\n // registry deliberately stays log-free.\n }\n }\n\n for (const t of dead) deregisterByToken(t);\n}\n\n/** Test helper: run a single reaper pass. */\nexport async function _runReaperOnce(): Promise<void> {\n await reapDead();\n}\n\n/** Test helper. */\nexport function _resetRegistry(): void {\n byToken.clear();\n bySessionId.clear();\n hooks.onRegister = undefined;\n hooks.onDeregister = undefined;\n}\n",
|
|
125
|
-
"import { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\nimport { chmodSync, existsSync, unlinkSync } from \"node:fs\";\nimport { timingSafeEqual } from \"node:crypto\";\n\nimport { DAEMON_PATHS, DAEMON_TCP_HOST, DAEMON_TCP_DEFAULT_PORT } from \"../paths.js\";\nimport type { SqliteDb } from \"../db/sqlite.js\";\nimport { acceptSend, type SendRequest } from \"./handlers/send.js\";\nimport { listInbox, deleteInboxRow, flushInbox } from \"../db/inbox.js\";\nimport { listOutbox, requeueDeadOrPending, type OutboxStatus } from \"../db/outbox.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { bindSseStream, type EventBus } from \"../events.js\";\nimport type { DaemonBrokerClient } from \"../broker.js\";\nimport {\n registerSession, deregisterByToken, resolveToken, listSessions, startReaper,\n type SessionInfo,\n} from \"../session-registry.js\";\nimport { VERSION } from \"~/constants/urls.js\";\n\n/**\n * Per spec §3.3:\n * - UDS reaches via filesystem perms (0600): no bearer required.\n * - TCP loopback + SSE require `Authorization: Bearer <local_token>`.\n * - Token in query string returns 400 + security log.\n * - Host header must be localhost / 127.0.0.1 / [::1] / empty.\n * - All endpoints auth-required by default; `/v1/health` opt-in public.\n *\n * v0.9.0 surface: /v1/version, /v1/health (auth-required), more added later.\n */\nexport interface IpcServerOptions {\n localToken: string;\n /** Bind a TCP loopback listener too (default true; container default is UDS-only). */\n tcpEnabled?: boolean;\n /** Override the default TCP port. */\n tcpPort?: number;\n /** Make /v1/health reachable without a token (k8s probe scenario). */\n publicHealthCheck?: boolean;\n /** Optional logger. Falls back to console.error for warnings/security events. */\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n /** Outbox database handle for /v1/send. */\n outboxDb?: SqliteDb;\n /** Inbox database handle for /v1/inbox. */\n inboxDb?: SqliteDb;\n /** Event bus backing /v1/events SSE stream. */\n bus?: EventBus;\n /** v1.26.0: per-mesh broker map for peers/skills/profile passthrough. */\n brokers?: Map<string, DaemonBrokerClient>;\n /** v1.26.0: per-mesh JoinedMesh entries (carry pubkey + secretKey for crypto). */\n meshConfigs?: Map<string, { slug: string; pubkey: string; secretKey: string }>;\n /** Notify when a new outbox row was inserted (drains can wake). */\n onPendingInserted?: () => void;\n}\n\nexport interface IpcServerHandle {\n uds: Server;\n tcp: Server | null;\n /** Resolves once both listeners are live. */\n ready: Promise<void>;\n close: () => Promise<void>;\n}\n\nexport function startIpcServer(opts: IpcServerOptions): IpcServerHandle {\n const log = opts.log ?? defaultLogger;\n\n const handler = makeHandler({\n localToken: opts.localToken,\n publicHealthCheck: !!opts.publicHealthCheck,\n log,\n outboxDb: opts.outboxDb,\n inboxDb: opts.inboxDb,\n bus: opts.bus,\n brokers: opts.brokers,\n meshConfigs: opts.meshConfigs,\n onPendingInserted: opts.onPendingInserted,\n });\n\n // --- UDS listener -------------------------------------------------------\n if (existsSync(DAEMON_PATHS.SOCK_FILE)) {\n // Possible stale socket from a previous crashed daemon. We hold the\n // singleton lock by the time we reach here, so it's safe to remove.\n try { unlinkSync(DAEMON_PATHS.SOCK_FILE); } catch { /* ignore */ }\n }\n const uds = createServer(handler);\n const udsReady = new Promise<void>((resolve, reject) => {\n uds.once(\"error\", reject);\n uds.listen(DAEMON_PATHS.SOCK_FILE, () => {\n // Restrict the socket file itself; node creates it 0755 by default.\n try { chmodSync(DAEMON_PATHS.SOCK_FILE, 0o600); }\n catch (err) { log(\"warn\", \"uds_chmod_failed\", { err: String(err) }); }\n resolve();\n });\n });\n\n // --- TCP listener (optional, off in container defaults) ----------------\n let tcp: Server | null = null;\n let tcpReady: Promise<void> = Promise.resolve();\n if (opts.tcpEnabled !== false) {\n tcp = createServer(handler);\n tcpReady = new Promise<void>((resolve, reject) => {\n tcp!.once(\"error\", reject);\n tcp!.listen(opts.tcpPort ?? DAEMON_TCP_DEFAULT_PORT, DAEMON_TCP_HOST, () => resolve());\n });\n }\n\n return {\n uds,\n tcp,\n ready: Promise.all([udsReady, tcpReady]).then(() => undefined),\n close: async () => {\n await Promise.allSettled([\n new Promise<void>((res) => uds.close(() => res())),\n tcp ? new Promise<void>((res) => tcp!.close(() => res())) : Promise.resolve(),\n ]);\n try { unlinkSync(DAEMON_PATHS.SOCK_FILE); } catch { /* ignore */ }\n },\n };\n}\n\nfunction defaultLogger(level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n}\n\nfunction makeHandler(opts: {\n localToken: string;\n publicHealthCheck: boolean;\n log: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n outboxDb?: SqliteDb;\n inboxDb?: SqliteDb;\n bus?: EventBus;\n brokers?: Map<string, DaemonBrokerClient>;\n meshConfigs?: Map<string, { slug: string; pubkey: string; secretKey: string }>;\n onPendingInserted?: () => void;\n}) {\n const tokenBytes = Buffer.from(opts.localToken, \"utf8\");\n\n return async (req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url ?? \"/\", \"http://daemon.local\");\n\n // Token in query string → security event + 400.\n if (url.searchParams.has(\"token\")) {\n opts.log(\"warn\", \"ipc_token_in_query_string_rejected\", { path: url.pathname });\n respond(res, 400, { error: \"token must be in Authorization header, not query string\" });\n return;\n }\n\n // Host header check — only the loopback names allowed.\n const host = (req.headers.host ?? \"\").toLowerCase().split(\":\")[0]?.trim() ?? \"\";\n if (host && host !== \"localhost\" && host !== \"127.0.0.1\" && host !== \"[::1]\" && host !== \"::1\") {\n respond(res, 403, { error: \"forbidden host\" });\n return;\n }\n\n // Origin allowlist — empty by default (no browsers should hit this).\n if (req.headers.origin) {\n respond(res, 403, { error: \"forbidden origin\" });\n return;\n }\n\n // Authentication. UDS connections (over unix socket) skip the bearer\n // check because filesystem perms gate access; TCP requires it.\n const isUds = (req.socket as { remoteAddress?: string }).remoteAddress === undefined;\n const isPublicHealth = opts.publicHealthCheck && url.pathname === \"/v1/health\";\n if (!isUds && !isPublicHealth) {\n const authz = req.headers.authorization ?? \"\";\n const m = /^Bearer\\s+(.+)$/.exec(authz.trim());\n if (!m || !m[1]) {\n respond(res, 401, { error: \"missing bearer token\" });\n return;\n }\n const provided = Buffer.from(m[1], \"utf8\");\n if (provided.length !== tokenBytes.length || !timingSafeEqual(provided, tokenBytes)) {\n opts.log(\"warn\", \"ipc_bearer_mismatch\", { path: url.pathname });\n respond(res, 401, { error: \"invalid bearer token\" });\n return;\n }\n }\n\n // Per-session token resolution. Layers on top of the machine-level\n // local-token auth above: callers from inside a `claudemesh launch`-\n // spawned session pass `Authorization: ClaudeMesh-Session <hex>`\n // (instead of, or in addition to, Bearer over TCP) and we resolve\n // it to a SessionInfo that downstream routes use for default-mesh\n // scoping and attribution.\n let session: SessionInfo | null = null;\n {\n const authz = req.headers.authorization ?? \"\";\n const sm = /^ClaudeMesh-Session\\s+([0-9a-f]{64})$/i.exec(authz.trim());\n if (sm && sm[1]) session = resolveToken(sm[1].toLowerCase());\n }\n /** Pick mesh from explicit body/query first, then session default. */\n const meshFromCtx = (explicit?: string | null): string | null =>\n (explicit && explicit.trim()) ? explicit : (session?.mesh ?? null);\n\n // Routing.\n if (req.method === \"GET\" && url.pathname === \"/v1/version\") {\n respond(res, 200, {\n daemon_version: VERSION,\n ipc_api: \"v1\",\n ipc_features: [\"version\", \"health\", \"send\", \"inbox\", \"events\", \"peers\", \"profile\", \"skills\", \"state\", \"memory\", \"sessions\"],\n schema_version: 1,\n });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/health\") {\n // 1.31.0: include per-mesh broker WS state so callers can verify\n // functional connectivity, not just that the daemon process is\n // running. Used by `claudemesh install` post-flight to wait for\n // at least one broker to be `open` before declaring success —\n // catches dead WS / DNS / TLS / outbound-blocked-port issues at\n // install time instead of when the user's first message fails.\n const brokers: Record<string, string> = {};\n if (opts.brokers) {\n for (const [slug, client] of opts.brokers) brokers[slug] = client.status;\n }\n respond(res, 200, { ok: true, pid: process.pid, brokers });\n return;\n }\n\n // Session registry routes (1.29.0)\n if (req.method === \"POST\" && url.pathname === \"/v1/sessions/register\") {\n try {\n const body = await readJsonBody(req, 64 * 1024) as Record<string, unknown> | null;\n if (!body) { respond(res, 400, { error: \"missing body\" }); return; }\n const token = typeof body.token === \"string\" ? body.token : \"\";\n if (!/^[0-9a-f]{64}$/i.test(token)) { respond(res, 400, { error: \"token must be 64 hex chars\" }); return; }\n const sessionId = typeof body.session_id === \"string\" ? body.session_id : \"\";\n const mesh = typeof body.mesh === \"string\" ? body.mesh : \"\";\n const displayName = typeof body.display_name === \"string\" ? body.display_name : \"\";\n const pid = typeof body.pid === \"number\" ? body.pid : 0;\n if (!sessionId || !mesh || !displayName || !pid) {\n respond(res, 400, { error: \"session_id, mesh, display_name, pid all required\" });\n return;\n }\n const cwd = typeof body.cwd === \"string\" ? body.cwd : undefined;\n const role = typeof body.role === \"string\" ? body.role : undefined;\n const groups = Array.isArray(body.groups)\n ? body.groups.filter((g): g is string => typeof g === \"string\")\n : undefined;\n\n // 1.30.0 — optional per-session presence material. Older CLIs\n // omit this; the daemon's session-broker subsystem just won't\n // open a per-session WS for those.\n let presence: SessionInfo[\"presence\"] | undefined;\n const rawPresence = body.presence;\n if (rawPresence && typeof rawPresence === \"object\") {\n const p = rawPresence as Record<string, unknown>;\n const sessionPubkey = typeof p.session_pubkey === \"string\" ? p.session_pubkey.toLowerCase() : \"\";\n const sessionSecretKey = typeof p.session_secret_key === \"string\" ? p.session_secret_key.toLowerCase() : \"\";\n const att = p.parent_attestation as Record<string, unknown> | undefined;\n if (\n /^[0-9a-f]{64}$/.test(sessionPubkey) &&\n /^[0-9a-f]{128}$/.test(sessionSecretKey) &&\n att && typeof att === \"object\" &&\n typeof att.session_pubkey === \"string\" &&\n typeof att.parent_member_pubkey === \"string\" &&\n typeof att.expires_at === \"number\" &&\n typeof att.signature === \"string\"\n ) {\n presence = {\n sessionPubkey,\n sessionSecretKey,\n parentAttestation: {\n sessionPubkey: (att.session_pubkey as string).toLowerCase(),\n parentMemberPubkey: (att.parent_member_pubkey as string).toLowerCase(),\n expiresAt: att.expires_at as number,\n signature: (att.signature as string).toLowerCase(),\n },\n };\n } else {\n opts.log(\"warn\", \"session_register_presence_malformed\", { mesh });\n }\n }\n\n const stored = registerSession({\n token: token.toLowerCase(),\n sessionId, mesh, displayName, pid, cwd, role, groups,\n ...(presence ? { presence } : {}),\n });\n opts.log(\"info\", \"session_registered\", {\n sessionId, mesh, pid,\n presence: presence ? \"yes\" : \"no\",\n });\n respond(res, 200, {\n ok: true,\n registered_at: stored.registeredAt,\n presence_accepted: !!presence,\n });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"DELETE\" && url.pathname.startsWith(\"/v1/sessions/\")) {\n const tail = url.pathname.slice(\"/v1/sessions/\".length);\n if (!/^[0-9a-f]{64}$/i.test(tail)) { respond(res, 400, { error: \"invalid token\" }); return; }\n const ok = deregisterByToken(tail.toLowerCase());\n respond(res, ok ? 200 : 404, { ok, token_prefix: tail.slice(0, 8) });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/sessions/me\") {\n if (!session) { respond(res, 401, { error: \"no session token\" }); return; }\n const { token, ...redacted } = session;\n respond(res, 200, { session: { ...redacted, token_prefix: token.slice(0, 8) } });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/sessions\") {\n const all = listSessions().map(({ token, ...rest }) => ({ ...rest, token_prefix: token.slice(0, 8) }));\n respond(res, 200, { sessions: all });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/events\") {\n if (!opts.bus) {\n respond(res, 503, { error: \"event bus not initialised\" });\n return;\n }\n bindSseStream(res, opts.bus);\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/peers\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n // Aggregate across all attached meshes; each peer record gets a\n // `mesh` field so the caller can scope client-side. A single\n // ?mesh=<slug> filter narrows the set server-side.\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n try {\n const peers = await b.listPeers();\n for (const p of peers) all.push({ ...(p as unknown as Record<string, unknown>), mesh: slug });\n } catch (e) {\n opts.log(\"warn\", \"ipc_peers_broker_failed\", { mesh: slug, err: String(e) });\n }\n }\n respond(res, 200, { peers: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/state\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n const key = url.searchParams.get(\"key\");\n try {\n if (key) {\n // Single key lookup. Walk attached meshes; first match wins\n // (or ?mesh=<slug> scopes the search).\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const row = await b.getState(key).catch(() => null);\n if (row) { respond(res, 200, { state: { ...row, mesh: slug } }); return; }\n }\n respond(res, 404, { error: \"state_not_found\", key });\n return;\n }\n // No key — list all entries across attached meshes.\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const rows = await b.listState().catch(() => []);\n for (const r of rows) all.push({ ...(r as unknown as Record<string, unknown>), mesh: slug });\n }\n respond(res, 200, { entries: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/state\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 256 * 1024) as Record<string, unknown> | null;\n if (!body || typeof body.key !== \"string\") {\n respond(res, 400, { error: \"missing 'key' (string)\" });\n return;\n }\n const requested = meshFromCtx(typeof body.mesh === \"string\" ? body.mesh : null);\n let chosen = requested;\n if (!chosen && opts.brokers.size === 1) chosen = opts.brokers.keys().next().value as string;\n if (!chosen) {\n respond(res, 400, { error: \"mesh_required\", attached: [...opts.brokers.keys()] });\n return;\n }\n const broker = opts.brokers.get(chosen);\n if (!broker) { respond(res, 404, { error: \"mesh_not_attached\", mesh: chosen }); return; }\n broker.setState(body.key, body.value);\n respond(res, 200, { ok: true, key: body.key, mesh: chosen });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/memory\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const query = url.searchParams.get(\"q\") ?? \"\";\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const rows = await b.recall(query).catch(() => []);\n for (const r of rows) all.push({ ...(r as unknown as Record<string, unknown>), mesh: slug });\n }\n respond(res, 200, { matches: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/memory\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 256 * 1024) as Record<string, unknown> | null;\n if (!body || typeof body.content !== \"string\") {\n respond(res, 400, { error: \"missing 'content' (string)\" });\n return;\n }\n const requested = meshFromCtx(typeof body.mesh === \"string\" ? body.mesh : null);\n let chosen = requested;\n if (!chosen && opts.brokers.size === 1) chosen = opts.brokers.keys().next().value as string;\n if (!chosen) {\n respond(res, 400, { error: \"mesh_required\", attached: [...opts.brokers.keys()] });\n return;\n }\n const broker = opts.brokers.get(chosen);\n if (!broker) { respond(res, 404, { error: \"mesh_not_attached\", mesh: chosen }); return; }\n const tags = Array.isArray(body.tags) ? body.tags.filter((t) => typeof t === \"string\") as string[] : undefined;\n const id = await broker.remember(body.content, tags);\n if (!id) { respond(res, 502, { error: \"remember_timeout\" }); return; }\n respond(res, 200, { id, mesh: chosen });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"DELETE\" && url.pathname.startsWith(\"/v1/memory/\")) {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const id = decodeURIComponent(url.pathname.slice(\"/v1/memory/\".length));\n if (!id) { respond(res, 400, { error: \"missing memory id\" }); return; }\n const requested = url.searchParams.get(\"mesh\");\n let chosen = requested;\n if (!chosen && opts.brokers.size === 1) chosen = opts.brokers.keys().next().value as string;\n if (!chosen) {\n respond(res, 400, { error: \"mesh_required\", attached: [...opts.brokers.keys()] });\n return;\n }\n const broker = opts.brokers.get(chosen);\n if (!broker) { respond(res, 404, { error: \"mesh_not_attached\", mesh: chosen }); return; }\n broker.forget(id);\n respond(res, 200, { ok: true, id, mesh: chosen });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/skills\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const query = url.searchParams.get(\"query\") ?? undefined;\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n try {\n const skills = await b.listSkills(query);\n for (const s of skills) all.push({ ...(s as unknown as Record<string, unknown>), mesh: slug });\n } catch (e) {\n opts.log(\"warn\", \"ipc_skills_broker_failed\", { mesh: slug, err: String(e) });\n }\n }\n respond(res, 200, { skills: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname.startsWith(\"/v1/skills/\")) {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const name = decodeURIComponent(url.pathname.slice(\"/v1/skills/\".length));\n if (!name) { respond(res, 400, { error: \"missing skill name\" }); return; }\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n // First mesh that has the skill wins. With ?mesh=<slug>, only that\n // mesh is queried.\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const skill = await b.getSkill(name).catch(() => null);\n if (skill) { respond(res, 200, { skill: { ...skill, mesh: slug } }); return; }\n }\n respond(res, 404, { error: \"skill_not_found\", name });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/profile\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 16 * 1024) as Record<string, unknown> | null;\n if (!body) { respond(res, 400, { error: \"expected JSON object\" }); return; }\n // v1.26.0: profile updates apply to a specific mesh if `mesh` is\n // present in the body or query, otherwise broadcast to all attached\n // meshes (presence is per-mesh, but most users want consistent\n // presence across all of theirs).\n const requested = meshFromCtx(typeof body.mesh === \"string\" ? body.mesh : url.searchParams.get(\"mesh\"));\n const targets = requested\n ? [opts.brokers.get(requested)].filter(Boolean) as DaemonBrokerClient[]\n : [...opts.brokers.values()];\n if (targets.length === 0) { respond(res, 404, { error: \"mesh_not_attached\", mesh: requested }); return; }\n const updates: Record<string, unknown> = {};\n for (const b of targets) {\n if (typeof body.summary === \"string\") b.setSummary(body.summary);\n if (body.status === \"idle\" || body.status === \"working\" || body.status === \"dnd\") b.setStatus(body.status);\n if (typeof body.visible === \"boolean\") b.setVisible(body.visible);\n const profile: { avatar?: string; title?: string; bio?: string; capabilities?: string[] } = {};\n if (typeof body.avatar === \"string\") profile.avatar = body.avatar;\n if (typeof body.title === \"string\") profile.title = body.title;\n if (typeof body.bio === \"string\") profile.bio = body.bio;\n if (Array.isArray(body.capabilities)) profile.capabilities = body.capabilities.filter((c) => typeof c === \"string\") as string[];\n if (Object.keys(profile).length > 0) b.setProfile(profile);\n }\n Object.assign(updates, body);\n respond(res, 200, { ok: true, applied: Object.keys(updates), meshes: requested ? [requested] : [...opts.brokers.keys()] });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/inbox\") {\n if (!opts.inboxDb) {\n respond(res, 503, { error: \"inbox not initialised\" });\n return;\n }\n const sinceRaw = url.searchParams.get(\"since\");\n const since = sinceRaw ? Date.parse(sinceRaw) : undefined;\n const topic = url.searchParams.get(\"topic\") ?? undefined;\n const fromPubkey = url.searchParams.get(\"from\") ?? undefined;\n const limitRaw = url.searchParams.get(\"limit\");\n const limit = limitRaw ? Number.parseInt(limitRaw, 10) : undefined;\n // 1.34.0: mesh filter. Falls back to session-default if header set.\n const meshFilter = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n const rows = listInbox(opts.inboxDb, {\n since: Number.isFinite(since) ? since : undefined,\n topic,\n fromPubkey,\n ...(meshFilter ? { mesh: meshFilter } : {}),\n limit: Number.isFinite(limit ?? NaN) ? limit : undefined,\n });\n respond(res, 200, {\n items: rows.map((r) => ({\n id: r.id,\n client_message_id: r.client_message_id,\n broker_message_id: r.broker_message_id,\n mesh: r.mesh,\n topic: r.topic,\n sender_pubkey: r.sender_pubkey,\n sender_name: r.sender_name,\n body: r.body,\n received_at: new Date(r.received_at).toISOString(),\n reply_to_id: r.reply_to_id,\n })),\n });\n return;\n }\n\n // 1.34.7: inbox flush + per-row delete. The inbox is the daemon's\n // local persisted SQLite store — there's no broker-side state to\n // coordinate, so these are simple local writes.\n if (req.method === \"DELETE\" && url.pathname === \"/v1/inbox\") {\n if (!opts.inboxDb) { respond(res, 503, { error: \"inbox not initialised\" }); return; }\n const meshFilter = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n const beforeRaw = url.searchParams.get(\"before\");\n const before = beforeRaw ? Date.parse(beforeRaw) : undefined;\n const removed = flushInbox(opts.inboxDb, {\n ...(meshFilter ? { mesh: meshFilter } : {}),\n ...(Number.isFinite(before) ? { before } : {}),\n });\n respond(res, 200, { removed });\n return;\n }\n if (req.method === \"DELETE\" && url.pathname.startsWith(\"/v1/inbox/\")) {\n if (!opts.inboxDb) { respond(res, 503, { error: \"inbox not initialised\" }); return; }\n const id = url.pathname.slice(\"/v1/inbox/\".length);\n if (!id) { respond(res, 400, { error: \"missing id\" }); return; }\n const ok = deleteInboxRow(opts.inboxDb, id);\n if (!ok) { respond(res, 404, { error: \"not found\", id }); return; }\n respond(res, 200, { removed: 1, id });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/outbox\") {\n if (!opts.outboxDb) { respond(res, 503, { error: \"outbox not initialised\" }); return; }\n const statusParam = url.searchParams.get(\"status\") ?? undefined;\n const allowed: OutboxStatus[] = [\"pending\",\"inflight\",\"done\",\"dead\",\"aborted\"];\n const status = (statusParam && (allowed as string[]).includes(statusParam))\n ? statusParam as OutboxStatus\n : undefined;\n const limitRaw = url.searchParams.get(\"limit\");\n const limit = limitRaw ? Number.parseInt(limitRaw, 10) : undefined;\n const rows = listOutbox(opts.outboxDb, {\n status,\n limit: Number.isFinite(limit ?? NaN) ? limit : undefined,\n });\n respond(res, 200, {\n items: rows.map((r) => ({\n id: r.id,\n client_message_id: r.client_message_id,\n status: r.status,\n attempts: r.attempts,\n enqueued_at: new Date(r.enqueued_at).toISOString(),\n next_attempt_at: new Date(r.next_attempt_at).toISOString(),\n delivered_at: r.delivered_at ? new Date(r.delivered_at).toISOString() : null,\n broker_message_id: r.broker_message_id,\n last_error: r.last_error,\n aborted_at: r.aborted_at ? new Date(r.aborted_at).toISOString() : null,\n aborted_by: r.aborted_by,\n superseded_by: r.superseded_by,\n payload_bytes: r.payload?.byteLength ?? 0,\n })),\n });\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/outbox/requeue\") {\n if (!opts.outboxDb) { respond(res, 503, { error: \"outbox not initialised\" }); return; }\n try {\n const body = await readJsonBody(req, 4 * 1024) as Record<string, unknown> | null;\n if (!body || typeof body.id !== \"string\") { respond(res, 400, { error: \"missing 'id'\" }); return; }\n const newId = typeof body.new_client_message_id === \"string\" && body.new_client_message_id.trim()\n ? body.new_client_message_id.trim()\n : randomUUID();\n const result = requeueDeadOrPending(opts.outboxDb, {\n id: body.id,\n newClientMessageId: newId,\n newRowId: randomUUID(),\n now: Date.now(),\n abortedBy: typeof body.aborted_by === \"string\" ? body.aborted_by : \"operator\",\n });\n if (!result) {\n respond(res, 409, { error: \"row not found, already aborted, or already done\" });\n return;\n }\n respond(res, 200, {\n aborted_row_id: result.abortedRowId,\n new_row_id: result.newRowId,\n new_client_message_id: result.newClientMessageId,\n });\n opts.onPendingInserted?.();\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/send\") {\n if (!opts.outboxDb) {\n respond(res, 503, { error: \"outbox not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 256 * 1024);\n const parsed = parseSendRequest(body, req.headers[\"idempotency-key\"]);\n if (\"error\" in parsed) {\n respond(res, 400, { error: parsed.error });\n return;\n }\n // v1.26.0: pick the mesh. Order of preference:\n // 1. Explicit `mesh` field in body\n // 2. Single attached mesh — auto-pick\n // 3. Bail with 400 — caller must disambiguate\n if (opts.brokers && opts.brokers.size > 0 && opts.meshConfigs) {\n let chosenSlug: string | null = parsed.req.mesh ?? null;\n if (!chosenSlug && opts.brokers.size === 1) {\n chosenSlug = opts.brokers.keys().next().value as string;\n }\n if (!chosenSlug) {\n respond(res, 400, {\n error: \"mesh_required\",\n detail: `daemon attached to ${opts.brokers.size} meshes; pass 'mesh' in request body`,\n attached: [...opts.brokers.keys()],\n });\n return;\n }\n const broker = opts.brokers.get(chosenSlug);\n const meshCfg = opts.meshConfigs.get(chosenSlug);\n if (!broker || !meshCfg) {\n respond(res, 404, { error: \"mesh_not_attached\", mesh: chosenSlug });\n return;\n }\n // 1.34.0: authenticated session sends encrypt with the session\n // secret key + carry the session pubkey through to the outbox\n // row, so the drain worker can route via SessionBrokerClient\n // and the broker fan-out attributes the push to the session\n // pubkey instead of the daemon's member pubkey. Cold-path\n // sends (no session token) keep the legacy member-key flow.\n const senderSessionPubkey = session?.presence?.sessionPubkey;\n const senderSecretKey = session?.presence?.sessionSecretKey ?? meshCfg.secretKey;\n try {\n const routed = await resolveAndEncrypt(parsed.req, broker, senderSecretKey, chosenSlug);\n parsed.req.target_spec = routed.target_spec;\n parsed.req.ciphertext = routed.ciphertext;\n parsed.req.nonce = routed.nonce;\n parsed.req.mesh = routed.mesh;\n if (senderSessionPubkey) {\n parsed.req.sender_session_pubkey = senderSessionPubkey;\n }\n } catch (e) {\n respond(res, 502, { error: \"route_failed\", detail: String(e) });\n return;\n }\n }\n const outcome = acceptSend(parsed.req, { db: opts.outboxDb });\n switch (outcome.kind) {\n case \"accepted_pending\":\n respond(res, outcome.status, {\n client_message_id: outcome.client_message_id,\n status: \"queued\",\n });\n opts.onPendingInserted?.();\n return;\n case \"accepted_inflight\":\n respond(res, outcome.status, {\n client_message_id: outcome.client_message_id,\n status: \"inflight\",\n });\n return;\n case \"accepted_done\":\n respond(res, outcome.status, {\n client_message_id: outcome.client_message_id,\n broker_message_id: outcome.broker_message_id,\n duplicate: true,\n });\n return;\n case \"conflict\":\n respond(res, outcome.status, {\n error: \"idempotency_key_reused\",\n conflict: outcome.reason,\n daemon_fingerprint_prefix: outcome.daemon_fingerprint_prefix,\n broker_message_id: outcome.broker_message_id ?? null,\n });\n return;\n }\n } catch (err) {\n opts.log(\"error\", \"ipc_send_failed\", { err: String(err) });\n respond(res, 500, { error: \"internal\" });\n return;\n }\n }\n\n respond(res, 404, { error: \"not found\" });\n };\n}\n\nasync function readJsonBody(req: IncomingMessage, maxBytes: number): Promise<unknown> {\n const chunks: Buffer[] = [];\n let total = 0;\n for await (const chunk of req) {\n const buf = chunk as Buffer;\n total += buf.length;\n if (total > maxBytes) throw new Error(\"payload_too_large\");\n chunks.push(buf);\n }\n if (total === 0) return null;\n const text = Buffer.concat(chunks).toString(\"utf8\");\n try { return JSON.parse(text); }\n catch { throw new Error(\"invalid_json\"); }\n}\n\ninterface ParsedSend { req: SendRequest }\ninterface ParseError { error: string }\n\nfunction parseSendRequest(body: unknown, idempotencyHeader: string | string[] | undefined): ParsedSend | ParseError {\n if (!body || typeof body !== \"object\") return { error: \"expected JSON object\" };\n const b = body as Record<string, unknown>;\n\n const to = typeof b.to === \"string\" ? b.to.trim() : \"\";\n const message = typeof b.message === \"string\" ? b.message : \"\";\n if (!to) return { error: \"missing 'to'\" };\n if (!message) return { error: \"missing 'message'\" };\n\n const priority = b.priority;\n if (priority !== undefined && priority !== \"now\" && priority !== \"next\" && priority !== \"low\") {\n return { error: \"priority must be 'now' | 'next' | 'low'\" };\n }\n\n const meta = b.meta;\n if (meta !== undefined && meta !== null && (typeof meta !== \"object\" || Array.isArray(meta))) {\n return { error: \"'meta' must be an object\" };\n }\n\n // Resolve destination_kind / destination_ref from the `to` shape.\n // For v0.9.0 we accept three forms:\n // \"@<topic>\" → topic\n // \"*\" → broadcast (modeled as topic *)\n // anything else → dm to peer name|pubkey (resolution happens later)\n let destination_kind: SendRequest[\"destination_kind\"];\n let destination_ref: string;\n if (to.startsWith(\"@\")) {\n destination_kind = \"topic\";\n destination_ref = to.slice(1);\n } else if (to === \"*\") {\n destination_kind = \"topic\";\n destination_ref = \"*\";\n } else {\n destination_kind = \"dm\";\n destination_ref = to;\n }\n\n const headerId = Array.isArray(idempotencyHeader) ? idempotencyHeader[0] : idempotencyHeader;\n const client_message_id = typeof b.client_message_id === \"string\" && b.client_message_id.trim()\n ? b.client_message_id.trim()\n : (typeof headerId === \"string\" && headerId.trim() ? headerId.trim() : undefined);\n\n const reply_to_id = typeof b.reply_to_id === \"string\" ? b.reply_to_id : undefined;\n\n const mesh = typeof b.mesh === \"string\" ? b.mesh.trim() : undefined;\n\n return {\n req: {\n to,\n message,\n priority: priority as SendRequest[\"priority\"] | undefined,\n meta: (meta as Record<string, unknown> | undefined) ?? undefined,\n reply_to_id,\n client_message_id,\n destination_kind,\n destination_ref,\n mesh,\n },\n };\n}\n\n/**\n * Sprint 4: resolve a user-friendly `to` (peer name, pubkey hex, @group, *,\n * topic name, \"#topicId\") into a broker-format target_spec, and encrypt\n * the plaintext payload appropriately for the destination kind.\n *\n * - DM by 64-char hex pubkey: target_spec = pubkey hex, ciphertext via\n * crypto_box (recipient pubkey + sender session secret).\n * - DM by display name: resolve via broker.listPeers, then same as above.\n * - Group / broadcast / topic: target_spec = `@<group>` / `*` / `#<topicId>`,\n * ciphertext = base64(plaintext) [matches the cold path's pre-encryption\n * convention until topic crypto lands].\n */\nasync function resolveAndEncrypt(\n req: SendRequest,\n broker: DaemonBrokerClient,\n meshSecretKey: string,\n meshSlug: string | null,\n): Promise<{ target_spec: string; ciphertext: string; nonce: string; mesh: string }> {\n const { encryptDirect } = await import(\"~/services/crypto/box.js\");\n const { randomBytes } = await import(\"node:crypto\");\n const to = req.to.trim();\n\n // Topic by id (\"#<topicId>\") — hex-like 20+ chars.\n if (to.startsWith(\"#\") && /^#[0-9a-z_-]{20,}$/i.test(to)) {\n const ciphertext = Buffer.from(req.message, \"utf8\").toString(\"base64\");\n const nonce = randomBytes(24).toString(\"base64\");\n return { target_spec: to, ciphertext, nonce, mesh: meshSlug ?? \"\" };\n }\n\n // Group, broadcast — pass through. (Topic-by-name resolution happens\n // when the daemon hooks topic_list later; not required for v1.25.0.)\n if (to.startsWith(\"@\") || to === \"*\") {\n const ciphertext = Buffer.from(req.message, \"utf8\").toString(\"base64\");\n const nonce = randomBytes(24).toString(\"base64\");\n return { target_spec: to, ciphertext, nonce, mesh: meshSlug ?? \"\" };\n }\n\n // 64-char hex pubkey → DM directly. Encrypt with the daemon's member\n // secret: recipient decrypts using THEIR session pubkey's matching\n // secret on their session-WS, so the sender side just needs any\n // private key whose public counterpart is known to the recipient as\n // \"the sender\". Member key is the stable choice and is what the\n // recipient already trusts via mesh membership.\n if (/^[0-9a-f]{64}$/i.test(to)) {\n const env = await encryptDirect(req.message, to, meshSecretKey);\n return { target_spec: to, ciphertext: env.ciphertext, nonce: env.nonce, mesh: meshSlug ?? \"\" };\n }\n\n // Hex prefix (16+ chars but <64) → resolve via peer list prefix match.\n // Matches the ergonomics of `claudemesh peer list` which shows 16-char\n // prefixes, so users naturally paste prefixes back.\n const peers = await broker.listPeers().catch(() => []);\n if (/^[0-9a-f]{16,63}$/i.test(to)) {\n const matches = peers.filter((p) =>\n p.pubkey.toLowerCase().startsWith(to.toLowerCase()) ||\n (p.memberPubkey ?? \"\").toLowerCase().startsWith(to.toLowerCase()),\n );\n if (matches.length === 0) throw new Error(`no peer matching prefix \"${to}\"`);\n if (matches.length > 1) throw new Error(`prefix \"${to}\" is ambiguous (${matches.length} matches)`);\n const recipient = matches[0]!.pubkey;\n const env = await encryptDirect(req.message, recipient, meshSecretKey);\n return { target_spec: recipient, ciphertext: env.ciphertext, nonce: env.nonce, mesh: meshSlug ?? \"\" };\n }\n\n // Otherwise — display name.\n const match = peers.find((p) => p.displayName.toLowerCase() === to.toLowerCase());\n if (!match) throw new Error(`peer \"${to}\" not found`);\n const recipient = match.pubkey;\n const env = await encryptDirect(req.message, recipient, meshSecretKey);\n return { target_spec: recipient, ciphertext: env.ciphertext, nonce: env.nonce, mesh: meshSlug ?? \"\" };\n}\n\nfunction respond(res: ServerResponse, status: number, body: unknown) {\n const json = JSON.stringify(body);\n res.statusCode = status;\n res.setHeader(\"Content-Type\", \"application/json\");\n res.setHeader(\"Content-Length\", Buffer.byteLength(json));\n res.end(json);\n}\n",
|
|
125
|
+
"import { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\nimport { chmodSync, existsSync, unlinkSync } from \"node:fs\";\nimport { timingSafeEqual } from \"node:crypto\";\n\nimport { DAEMON_PATHS, DAEMON_TCP_HOST, DAEMON_TCP_DEFAULT_PORT } from \"../paths.js\";\nimport type { SqliteDb } from \"../db/sqlite.js\";\nimport { acceptSend, type SendRequest } from \"./handlers/send.js\";\nimport { listInbox, deleteInboxRow, flushInbox, markInboxSeen } from \"../db/inbox.js\";\nimport { listOutbox, requeueDeadOrPending, type OutboxStatus } from \"../db/outbox.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { bindSseStream, type EventBus } from \"../events.js\";\nimport type { DaemonBrokerClient } from \"../broker.js\";\nimport {\n registerSession, deregisterByToken, resolveToken, listSessions, startReaper,\n type SessionInfo,\n} from \"../session-registry.js\";\nimport { VERSION } from \"~/constants/urls.js\";\n\n/**\n * Per spec §3.3:\n * - UDS reaches via filesystem perms (0600): no bearer required.\n * - TCP loopback + SSE require `Authorization: Bearer <local_token>`.\n * - Token in query string returns 400 + security log.\n * - Host header must be localhost / 127.0.0.1 / [::1] / empty.\n * - All endpoints auth-required by default; `/v1/health` opt-in public.\n *\n * v0.9.0 surface: /v1/version, /v1/health (auth-required), more added later.\n */\nexport interface IpcServerOptions {\n localToken: string;\n /** Bind a TCP loopback listener too (default true; container default is UDS-only). */\n tcpEnabled?: boolean;\n /** Override the default TCP port. */\n tcpPort?: number;\n /** Make /v1/health reachable without a token (k8s probe scenario). */\n publicHealthCheck?: boolean;\n /** Optional logger. Falls back to console.error for warnings/security events. */\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n /** Outbox database handle for /v1/send. */\n outboxDb?: SqliteDb;\n /** Inbox database handle for /v1/inbox. */\n inboxDb?: SqliteDb;\n /** Event bus backing /v1/events SSE stream. */\n bus?: EventBus;\n /** v1.26.0: per-mesh broker map for peers/skills/profile passthrough. */\n brokers?: Map<string, DaemonBrokerClient>;\n /** v1.26.0: per-mesh JoinedMesh entries (carry pubkey + secretKey for crypto). */\n meshConfigs?: Map<string, { slug: string; pubkey: string; secretKey: string }>;\n /** Notify when a new outbox row was inserted (drains can wake). */\n onPendingInserted?: () => void;\n}\n\nexport interface IpcServerHandle {\n uds: Server;\n tcp: Server | null;\n /** Resolves once both listeners are live. */\n ready: Promise<void>;\n close: () => Promise<void>;\n}\n\nexport function startIpcServer(opts: IpcServerOptions): IpcServerHandle {\n const log = opts.log ?? defaultLogger;\n\n const handler = makeHandler({\n localToken: opts.localToken,\n publicHealthCheck: !!opts.publicHealthCheck,\n log,\n outboxDb: opts.outboxDb,\n inboxDb: opts.inboxDb,\n bus: opts.bus,\n brokers: opts.brokers,\n meshConfigs: opts.meshConfigs,\n onPendingInserted: opts.onPendingInserted,\n });\n\n // --- UDS listener -------------------------------------------------------\n if (existsSync(DAEMON_PATHS.SOCK_FILE)) {\n // Possible stale socket from a previous crashed daemon. We hold the\n // singleton lock by the time we reach here, so it's safe to remove.\n try { unlinkSync(DAEMON_PATHS.SOCK_FILE); } catch { /* ignore */ }\n }\n const uds = createServer(handler);\n const udsReady = new Promise<void>((resolve, reject) => {\n uds.once(\"error\", reject);\n uds.listen(DAEMON_PATHS.SOCK_FILE, () => {\n // Restrict the socket file itself; node creates it 0755 by default.\n try { chmodSync(DAEMON_PATHS.SOCK_FILE, 0o600); }\n catch (err) { log(\"warn\", \"uds_chmod_failed\", { err: String(err) }); }\n resolve();\n });\n });\n\n // --- TCP listener (optional, off in container defaults) ----------------\n let tcp: Server | null = null;\n let tcpReady: Promise<void> = Promise.resolve();\n if (opts.tcpEnabled !== false) {\n tcp = createServer(handler);\n tcpReady = new Promise<void>((resolve, reject) => {\n tcp!.once(\"error\", reject);\n tcp!.listen(opts.tcpPort ?? DAEMON_TCP_DEFAULT_PORT, DAEMON_TCP_HOST, () => resolve());\n });\n }\n\n return {\n uds,\n tcp,\n ready: Promise.all([udsReady, tcpReady]).then(() => undefined),\n close: async () => {\n await Promise.allSettled([\n new Promise<void>((res) => uds.close(() => res())),\n tcp ? new Promise<void>((res) => tcp!.close(() => res())) : Promise.resolve(),\n ]);\n try { unlinkSync(DAEMON_PATHS.SOCK_FILE); } catch { /* ignore */ }\n },\n };\n}\n\nfunction defaultLogger(level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n}\n\nfunction makeHandler(opts: {\n localToken: string;\n publicHealthCheck: boolean;\n log: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n outboxDb?: SqliteDb;\n inboxDb?: SqliteDb;\n bus?: EventBus;\n brokers?: Map<string, DaemonBrokerClient>;\n meshConfigs?: Map<string, { slug: string; pubkey: string; secretKey: string }>;\n onPendingInserted?: () => void;\n}) {\n const tokenBytes = Buffer.from(opts.localToken, \"utf8\");\n\n return async (req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url ?? \"/\", \"http://daemon.local\");\n\n // Token in query string → security event + 400.\n if (url.searchParams.has(\"token\")) {\n opts.log(\"warn\", \"ipc_token_in_query_string_rejected\", { path: url.pathname });\n respond(res, 400, { error: \"token must be in Authorization header, not query string\" });\n return;\n }\n\n // Host header check — only the loopback names allowed.\n const host = (req.headers.host ?? \"\").toLowerCase().split(\":\")[0]?.trim() ?? \"\";\n if (host && host !== \"localhost\" && host !== \"127.0.0.1\" && host !== \"[::1]\" && host !== \"::1\") {\n respond(res, 403, { error: \"forbidden host\" });\n return;\n }\n\n // Origin allowlist — empty by default (no browsers should hit this).\n if (req.headers.origin) {\n respond(res, 403, { error: \"forbidden origin\" });\n return;\n }\n\n // Authentication. UDS connections (over unix socket) skip the bearer\n // check because filesystem perms gate access; TCP requires it.\n const isUds = (req.socket as { remoteAddress?: string }).remoteAddress === undefined;\n const isPublicHealth = opts.publicHealthCheck && url.pathname === \"/v1/health\";\n if (!isUds && !isPublicHealth) {\n const authz = req.headers.authorization ?? \"\";\n const m = /^Bearer\\s+(.+)$/.exec(authz.trim());\n if (!m || !m[1]) {\n respond(res, 401, { error: \"missing bearer token\" });\n return;\n }\n const provided = Buffer.from(m[1], \"utf8\");\n if (provided.length !== tokenBytes.length || !timingSafeEqual(provided, tokenBytes)) {\n opts.log(\"warn\", \"ipc_bearer_mismatch\", { path: url.pathname });\n respond(res, 401, { error: \"invalid bearer token\" });\n return;\n }\n }\n\n // Per-session token resolution. Layers on top of the machine-level\n // local-token auth above: callers from inside a `claudemesh launch`-\n // spawned session pass `Authorization: ClaudeMesh-Session <hex>`\n // (instead of, or in addition to, Bearer over TCP) and we resolve\n // it to a SessionInfo that downstream routes use for default-mesh\n // scoping and attribution.\n let session: SessionInfo | null = null;\n {\n const authz = req.headers.authorization ?? \"\";\n const sm = /^ClaudeMesh-Session\\s+([0-9a-f]{64})$/i.exec(authz.trim());\n if (sm && sm[1]) session = resolveToken(sm[1].toLowerCase());\n }\n /** Pick mesh from explicit body/query first, then session default. */\n const meshFromCtx = (explicit?: string | null): string | null =>\n (explicit && explicit.trim()) ? explicit : (session?.mesh ?? null);\n\n // Routing.\n if (req.method === \"GET\" && url.pathname === \"/v1/version\") {\n respond(res, 200, {\n daemon_version: VERSION,\n ipc_api: \"v1\",\n ipc_features: [\"version\", \"health\", \"send\", \"inbox\", \"events\", \"peers\", \"profile\", \"skills\", \"state\", \"memory\", \"sessions\"],\n schema_version: 1,\n });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/health\") {\n // 1.31.0: include per-mesh broker WS state so callers can verify\n // functional connectivity, not just that the daemon process is\n // running. Used by `claudemesh install` post-flight to wait for\n // at least one broker to be `open` before declaring success —\n // catches dead WS / DNS / TLS / outbound-blocked-port issues at\n // install time instead of when the user's first message fails.\n const brokers: Record<string, string> = {};\n if (opts.brokers) {\n for (const [slug, client] of opts.brokers) brokers[slug] = client.status;\n }\n respond(res, 200, { ok: true, pid: process.pid, brokers });\n return;\n }\n\n // Session registry routes (1.29.0)\n if (req.method === \"POST\" && url.pathname === \"/v1/sessions/register\") {\n try {\n const body = await readJsonBody(req, 64 * 1024) as Record<string, unknown> | null;\n if (!body) { respond(res, 400, { error: \"missing body\" }); return; }\n const token = typeof body.token === \"string\" ? body.token : \"\";\n if (!/^[0-9a-f]{64}$/i.test(token)) { respond(res, 400, { error: \"token must be 64 hex chars\" }); return; }\n const sessionId = typeof body.session_id === \"string\" ? body.session_id : \"\";\n const mesh = typeof body.mesh === \"string\" ? body.mesh : \"\";\n const displayName = typeof body.display_name === \"string\" ? body.display_name : \"\";\n const pid = typeof body.pid === \"number\" ? body.pid : 0;\n if (!sessionId || !mesh || !displayName || !pid) {\n respond(res, 400, { error: \"session_id, mesh, display_name, pid all required\" });\n return;\n }\n const cwd = typeof body.cwd === \"string\" ? body.cwd : undefined;\n const role = typeof body.role === \"string\" ? body.role : undefined;\n const groups = Array.isArray(body.groups)\n ? body.groups.filter((g): g is string => typeof g === \"string\")\n : undefined;\n\n // 1.30.0 — optional per-session presence material. Older CLIs\n // omit this; the daemon's session-broker subsystem just won't\n // open a per-session WS for those.\n let presence: SessionInfo[\"presence\"] | undefined;\n const rawPresence = body.presence;\n if (rawPresence && typeof rawPresence === \"object\") {\n const p = rawPresence as Record<string, unknown>;\n const sessionPubkey = typeof p.session_pubkey === \"string\" ? p.session_pubkey.toLowerCase() : \"\";\n const sessionSecretKey = typeof p.session_secret_key === \"string\" ? p.session_secret_key.toLowerCase() : \"\";\n const att = p.parent_attestation as Record<string, unknown> | undefined;\n if (\n /^[0-9a-f]{64}$/.test(sessionPubkey) &&\n /^[0-9a-f]{128}$/.test(sessionSecretKey) &&\n att && typeof att === \"object\" &&\n typeof att.session_pubkey === \"string\" &&\n typeof att.parent_member_pubkey === \"string\" &&\n typeof att.expires_at === \"number\" &&\n typeof att.signature === \"string\"\n ) {\n presence = {\n sessionPubkey,\n sessionSecretKey,\n parentAttestation: {\n sessionPubkey: (att.session_pubkey as string).toLowerCase(),\n parentMemberPubkey: (att.parent_member_pubkey as string).toLowerCase(),\n expiresAt: att.expires_at as number,\n signature: (att.signature as string).toLowerCase(),\n },\n };\n } else {\n opts.log(\"warn\", \"session_register_presence_malformed\", { mesh });\n }\n }\n\n const stored = registerSession({\n token: token.toLowerCase(),\n sessionId, mesh, displayName, pid, cwd, role, groups,\n ...(presence ? { presence } : {}),\n });\n opts.log(\"info\", \"session_registered\", {\n sessionId, mesh, pid,\n presence: presence ? \"yes\" : \"no\",\n });\n respond(res, 200, {\n ok: true,\n registered_at: stored.registeredAt,\n presence_accepted: !!presence,\n });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"DELETE\" && url.pathname.startsWith(\"/v1/sessions/\")) {\n const tail = url.pathname.slice(\"/v1/sessions/\".length);\n if (!/^[0-9a-f]{64}$/i.test(tail)) { respond(res, 400, { error: \"invalid token\" }); return; }\n const ok = deregisterByToken(tail.toLowerCase());\n respond(res, ok ? 200 : 404, { ok, token_prefix: tail.slice(0, 8) });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/sessions/me\") {\n if (!session) { respond(res, 401, { error: \"no session token\" }); return; }\n const { token, ...redacted } = session;\n respond(res, 200, { session: { ...redacted, token_prefix: token.slice(0, 8) } });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/sessions\") {\n const all = listSessions().map(({ token, ...rest }) => ({ ...rest, token_prefix: token.slice(0, 8) }));\n respond(res, 200, { sessions: all });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/events\") {\n if (!opts.bus) {\n respond(res, 503, { error: \"event bus not initialised\" });\n return;\n }\n bindSseStream(res, opts.bus);\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/peers\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n // Aggregate across all attached meshes; each peer record gets a\n // `mesh` field so the caller can scope client-side. A single\n // ?mesh=<slug> filter narrows the set server-side.\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n try {\n const peers = await b.listPeers();\n for (const p of peers) all.push({ ...(p as unknown as Record<string, unknown>), mesh: slug });\n } catch (e) {\n opts.log(\"warn\", \"ipc_peers_broker_failed\", { mesh: slug, err: String(e) });\n }\n }\n respond(res, 200, { peers: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/state\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n const key = url.searchParams.get(\"key\");\n try {\n if (key) {\n // Single key lookup. Walk attached meshes; first match wins\n // (or ?mesh=<slug> scopes the search).\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const row = await b.getState(key).catch(() => null);\n if (row) { respond(res, 200, { state: { ...row, mesh: slug } }); return; }\n }\n respond(res, 404, { error: \"state_not_found\", key });\n return;\n }\n // No key — list all entries across attached meshes.\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const rows = await b.listState().catch(() => []);\n for (const r of rows) all.push({ ...(r as unknown as Record<string, unknown>), mesh: slug });\n }\n respond(res, 200, { entries: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/state\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 256 * 1024) as Record<string, unknown> | null;\n if (!body || typeof body.key !== \"string\") {\n respond(res, 400, { error: \"missing 'key' (string)\" });\n return;\n }\n const requested = meshFromCtx(typeof body.mesh === \"string\" ? body.mesh : null);\n let chosen = requested;\n if (!chosen && opts.brokers.size === 1) chosen = opts.brokers.keys().next().value as string;\n if (!chosen) {\n respond(res, 400, { error: \"mesh_required\", attached: [...opts.brokers.keys()] });\n return;\n }\n const broker = opts.brokers.get(chosen);\n if (!broker) { respond(res, 404, { error: \"mesh_not_attached\", mesh: chosen }); return; }\n broker.setState(body.key, body.value);\n respond(res, 200, { ok: true, key: body.key, mesh: chosen });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/memory\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const query = url.searchParams.get(\"q\") ?? \"\";\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const rows = await b.recall(query).catch(() => []);\n for (const r of rows) all.push({ ...(r as unknown as Record<string, unknown>), mesh: slug });\n }\n respond(res, 200, { matches: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/memory\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 256 * 1024) as Record<string, unknown> | null;\n if (!body || typeof body.content !== \"string\") {\n respond(res, 400, { error: \"missing 'content' (string)\" });\n return;\n }\n const requested = meshFromCtx(typeof body.mesh === \"string\" ? body.mesh : null);\n let chosen = requested;\n if (!chosen && opts.brokers.size === 1) chosen = opts.brokers.keys().next().value as string;\n if (!chosen) {\n respond(res, 400, { error: \"mesh_required\", attached: [...opts.brokers.keys()] });\n return;\n }\n const broker = opts.brokers.get(chosen);\n if (!broker) { respond(res, 404, { error: \"mesh_not_attached\", mesh: chosen }); return; }\n const tags = Array.isArray(body.tags) ? body.tags.filter((t) => typeof t === \"string\") as string[] : undefined;\n const id = await broker.remember(body.content, tags);\n if (!id) { respond(res, 502, { error: \"remember_timeout\" }); return; }\n respond(res, 200, { id, mesh: chosen });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"DELETE\" && url.pathname.startsWith(\"/v1/memory/\")) {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const id = decodeURIComponent(url.pathname.slice(\"/v1/memory/\".length));\n if (!id) { respond(res, 400, { error: \"missing memory id\" }); return; }\n const requested = url.searchParams.get(\"mesh\");\n let chosen = requested;\n if (!chosen && opts.brokers.size === 1) chosen = opts.brokers.keys().next().value as string;\n if (!chosen) {\n respond(res, 400, { error: \"mesh_required\", attached: [...opts.brokers.keys()] });\n return;\n }\n const broker = opts.brokers.get(chosen);\n if (!broker) { respond(res, 404, { error: \"mesh_not_attached\", mesh: chosen }); return; }\n broker.forget(id);\n respond(res, 200, { ok: true, id, mesh: chosen });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/skills\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const query = url.searchParams.get(\"query\") ?? undefined;\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n const all: Array<Record<string, unknown> & { mesh: string }> = [];\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n try {\n const skills = await b.listSkills(query);\n for (const s of skills) all.push({ ...(s as unknown as Record<string, unknown>), mesh: slug });\n } catch (e) {\n opts.log(\"warn\", \"ipc_skills_broker_failed\", { mesh: slug, err: String(e) });\n }\n }\n respond(res, 200, { skills: all });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname.startsWith(\"/v1/skills/\")) {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n const name = decodeURIComponent(url.pathname.slice(\"/v1/skills/\".length));\n if (!name) { respond(res, 400, { error: \"missing skill name\" }); return; }\n const filterMesh = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n try {\n // First mesh that has the skill wins. With ?mesh=<slug>, only that\n // mesh is queried.\n for (const [slug, b] of opts.brokers.entries()) {\n if (filterMesh && filterMesh !== slug) continue;\n const skill = await b.getSkill(name).catch(() => null);\n if (skill) { respond(res, 200, { skill: { ...skill, mesh: slug } }); return; }\n }\n respond(res, 404, { error: \"skill_not_found\", name });\n } catch (e) {\n respond(res, 502, { error: \"broker_unreachable\", detail: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/profile\") {\n if (!opts.brokers || opts.brokers.size === 0) {\n respond(res, 503, { error: \"broker not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 16 * 1024) as Record<string, unknown> | null;\n if (!body) { respond(res, 400, { error: \"expected JSON object\" }); return; }\n // v1.26.0: profile updates apply to a specific mesh if `mesh` is\n // present in the body or query, otherwise broadcast to all attached\n // meshes (presence is per-mesh, but most users want consistent\n // presence across all of theirs).\n const requested = meshFromCtx(typeof body.mesh === \"string\" ? body.mesh : url.searchParams.get(\"mesh\"));\n const targets = requested\n ? [opts.brokers.get(requested)].filter(Boolean) as DaemonBrokerClient[]\n : [...opts.brokers.values()];\n if (targets.length === 0) { respond(res, 404, { error: \"mesh_not_attached\", mesh: requested }); return; }\n const updates: Record<string, unknown> = {};\n for (const b of targets) {\n if (typeof body.summary === \"string\") b.setSummary(body.summary);\n if (body.status === \"idle\" || body.status === \"working\" || body.status === \"dnd\") b.setStatus(body.status);\n if (typeof body.visible === \"boolean\") b.setVisible(body.visible);\n const profile: { avatar?: string; title?: string; bio?: string; capabilities?: string[] } = {};\n if (typeof body.avatar === \"string\") profile.avatar = body.avatar;\n if (typeof body.title === \"string\") profile.title = body.title;\n if (typeof body.bio === \"string\") profile.bio = body.bio;\n if (Array.isArray(body.capabilities)) profile.capabilities = body.capabilities.filter((c) => typeof c === \"string\") as string[];\n if (Object.keys(profile).length > 0) b.setProfile(profile);\n }\n Object.assign(updates, body);\n respond(res, 200, { ok: true, applied: Object.keys(updates), meshes: requested ? [requested] : [...opts.brokers.keys()] });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/inbox\") {\n if (!opts.inboxDb) {\n respond(res, 503, { error: \"inbox not initialised\" });\n return;\n }\n const sinceRaw = url.searchParams.get(\"since\");\n const since = sinceRaw ? Date.parse(sinceRaw) : undefined;\n const topic = url.searchParams.get(\"topic\") ?? undefined;\n const fromPubkey = url.searchParams.get(\"from\") ?? undefined;\n const limitRaw = url.searchParams.get(\"limit\");\n const limit = limitRaw ? Number.parseInt(limitRaw, 10) : undefined;\n // 1.34.0: mesh filter. Falls back to session-default if header set.\n const meshFilter = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n // 1.34.8: read-state filter. ?unread_only=true narrows to rows\n // whose seen_at is NULL — used by the welcome push so a freshly\n // launched session surfaces only what it actually missed.\n const unreadOnly = url.searchParams.get(\"unread_only\") === \"true\";\n // 1.34.8: ?mark_seen=false opts out of the auto-stamp behavior. By\n // default an interactive listing flips seen_at on the rows it just\n // returned (the user \"saw\" them), which is what we want for the\n // CLI but not for diagnostic tooling that wants to peek without\n // affecting state. The MCP server uses mark_seen=false on the\n // welcome path; it stamps explicitly via /v1/inbox/seen instead.\n const markSeen = url.searchParams.get(\"mark_seen\") !== \"false\";\n const rows = listInbox(opts.inboxDb, {\n since: Number.isFinite(since) ? since : undefined,\n topic,\n fromPubkey,\n ...(meshFilter ? { mesh: meshFilter } : {}),\n unreadOnly,\n limit: Number.isFinite(limit ?? NaN) ? limit : undefined,\n });\n let flippedCount = 0;\n if (markSeen) {\n const unreadIds = rows.filter((r) => r.seen_at == null).map((r) => r.id);\n if (unreadIds.length > 0) {\n flippedCount = markInboxSeen(opts.inboxDb, unreadIds);\n }\n }\n respond(res, 200, {\n items: rows.map((r) => ({\n id: r.id,\n client_message_id: r.client_message_id,\n broker_message_id: r.broker_message_id,\n mesh: r.mesh,\n topic: r.topic,\n sender_pubkey: r.sender_pubkey,\n sender_name: r.sender_name,\n body: r.body,\n received_at: new Date(r.received_at).toISOString(),\n reply_to_id: r.reply_to_id,\n // 1.34.8: surface read-state. `null` = never seen (welcome\n // candidate). Note that if mark_seen=true (default), we just\n // stamped these rows — but the snapshot reflects the value\n // BEFORE the stamp so callers can still tell which rows were\n // unread when they asked.\n seen_at: r.seen_at ? new Date(r.seen_at).toISOString() : null,\n })),\n // 1.34.8: how many rows just flipped from unread → seen. Useful\n // for telemetry and lets the CLI render \"marked N as read\".\n marked_seen: flippedCount,\n });\n return;\n }\n\n // 1.34.8: explicit mark-seen endpoint. Used by the MCP server after\n // it surfaces a live `<channel>` reminder for an inbox row — Claude\n // Code already saw the row inline, so welcome shouldn't re-surface\n // it on the next launch. Body: { ids: string[] }. Returns the\n // number of rows that flipped from unread → seen.\n if (req.method === \"POST\" && url.pathname === \"/v1/inbox/seen\") {\n if (!opts.inboxDb) { respond(res, 503, { error: \"inbox not initialised\" }); return; }\n try {\n const body = await readJsonBody(req, 64 * 1024) as Record<string, unknown> | null;\n const ids = Array.isArray(body?.ids)\n ? (body!.ids as unknown[]).filter((x): x is string => typeof x === \"string\")\n : [];\n if (ids.length === 0) { respond(res, 400, { error: \"missing 'ids' (string[])\" }); return; }\n const flipped = markInboxSeen(opts.inboxDb, ids);\n respond(res, 200, { marked_seen: flipped });\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n // 1.34.7: inbox flush + per-row delete. The inbox is the daemon's\n // local persisted SQLite store — there's no broker-side state to\n // coordinate, so these are simple local writes.\n if (req.method === \"DELETE\" && url.pathname === \"/v1/inbox\") {\n if (!opts.inboxDb) { respond(res, 503, { error: \"inbox not initialised\" }); return; }\n const meshFilter = meshFromCtx(url.searchParams.get(\"mesh\")) ?? undefined;\n const beforeRaw = url.searchParams.get(\"before\");\n const before = beforeRaw ? Date.parse(beforeRaw) : undefined;\n const removed = flushInbox(opts.inboxDb, {\n ...(meshFilter ? { mesh: meshFilter } : {}),\n ...(Number.isFinite(before) ? { before } : {}),\n });\n respond(res, 200, { removed });\n return;\n }\n if (req.method === \"DELETE\" && url.pathname.startsWith(\"/v1/inbox/\")) {\n if (!opts.inboxDb) { respond(res, 503, { error: \"inbox not initialised\" }); return; }\n const id = url.pathname.slice(\"/v1/inbox/\".length);\n if (!id) { respond(res, 400, { error: \"missing id\" }); return; }\n const ok = deleteInboxRow(opts.inboxDb, id);\n if (!ok) { respond(res, 404, { error: \"not found\", id }); return; }\n respond(res, 200, { removed: 1, id });\n return;\n }\n\n if (req.method === \"GET\" && url.pathname === \"/v1/outbox\") {\n if (!opts.outboxDb) { respond(res, 503, { error: \"outbox not initialised\" }); return; }\n const statusParam = url.searchParams.get(\"status\") ?? undefined;\n const allowed: OutboxStatus[] = [\"pending\",\"inflight\",\"done\",\"dead\",\"aborted\"];\n const status = (statusParam && (allowed as string[]).includes(statusParam))\n ? statusParam as OutboxStatus\n : undefined;\n const limitRaw = url.searchParams.get(\"limit\");\n const limit = limitRaw ? Number.parseInt(limitRaw, 10) : undefined;\n const rows = listOutbox(opts.outboxDb, {\n status,\n limit: Number.isFinite(limit ?? NaN) ? limit : undefined,\n });\n respond(res, 200, {\n items: rows.map((r) => ({\n id: r.id,\n client_message_id: r.client_message_id,\n status: r.status,\n attempts: r.attempts,\n enqueued_at: new Date(r.enqueued_at).toISOString(),\n next_attempt_at: new Date(r.next_attempt_at).toISOString(),\n delivered_at: r.delivered_at ? new Date(r.delivered_at).toISOString() : null,\n broker_message_id: r.broker_message_id,\n last_error: r.last_error,\n aborted_at: r.aborted_at ? new Date(r.aborted_at).toISOString() : null,\n aborted_by: r.aborted_by,\n superseded_by: r.superseded_by,\n payload_bytes: r.payload?.byteLength ?? 0,\n })),\n });\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/outbox/requeue\") {\n if (!opts.outboxDb) { respond(res, 503, { error: \"outbox not initialised\" }); return; }\n try {\n const body = await readJsonBody(req, 4 * 1024) as Record<string, unknown> | null;\n if (!body || typeof body.id !== \"string\") { respond(res, 400, { error: \"missing 'id'\" }); return; }\n const newId = typeof body.new_client_message_id === \"string\" && body.new_client_message_id.trim()\n ? body.new_client_message_id.trim()\n : randomUUID();\n const result = requeueDeadOrPending(opts.outboxDb, {\n id: body.id,\n newClientMessageId: newId,\n newRowId: randomUUID(),\n now: Date.now(),\n abortedBy: typeof body.aborted_by === \"string\" ? body.aborted_by : \"operator\",\n });\n if (!result) {\n respond(res, 409, { error: \"row not found, already aborted, or already done\" });\n return;\n }\n respond(res, 200, {\n aborted_row_id: result.abortedRowId,\n new_row_id: result.newRowId,\n new_client_message_id: result.newClientMessageId,\n });\n opts.onPendingInserted?.();\n } catch (e) {\n respond(res, 400, { error: String(e) });\n }\n return;\n }\n\n if (req.method === \"POST\" && url.pathname === \"/v1/send\") {\n if (!opts.outboxDb) {\n respond(res, 503, { error: \"outbox not initialised\" });\n return;\n }\n try {\n const body = await readJsonBody(req, 256 * 1024);\n const parsed = parseSendRequest(body, req.headers[\"idempotency-key\"]);\n if (\"error\" in parsed) {\n respond(res, 400, { error: parsed.error });\n return;\n }\n // v1.26.0: pick the mesh. Order of preference:\n // 1. Explicit `mesh` field in body\n // 2. Single attached mesh — auto-pick\n // 3. Bail with 400 — caller must disambiguate\n if (opts.brokers && opts.brokers.size > 0 && opts.meshConfigs) {\n let chosenSlug: string | null = parsed.req.mesh ?? null;\n if (!chosenSlug && opts.brokers.size === 1) {\n chosenSlug = opts.brokers.keys().next().value as string;\n }\n if (!chosenSlug) {\n respond(res, 400, {\n error: \"mesh_required\",\n detail: `daemon attached to ${opts.brokers.size} meshes; pass 'mesh' in request body`,\n attached: [...opts.brokers.keys()],\n });\n return;\n }\n const broker = opts.brokers.get(chosenSlug);\n const meshCfg = opts.meshConfigs.get(chosenSlug);\n if (!broker || !meshCfg) {\n respond(res, 404, { error: \"mesh_not_attached\", mesh: chosenSlug });\n return;\n }\n // 1.34.0: authenticated session sends encrypt with the session\n // secret key + carry the session pubkey through to the outbox\n // row, so the drain worker can route via SessionBrokerClient\n // and the broker fan-out attributes the push to the session\n // pubkey instead of the daemon's member pubkey. Cold-path\n // sends (no session token) keep the legacy member-key flow.\n const senderSessionPubkey = session?.presence?.sessionPubkey;\n const senderSecretKey = session?.presence?.sessionSecretKey ?? meshCfg.secretKey;\n try {\n const routed = await resolveAndEncrypt(parsed.req, broker, senderSecretKey, chosenSlug);\n parsed.req.target_spec = routed.target_spec;\n parsed.req.ciphertext = routed.ciphertext;\n parsed.req.nonce = routed.nonce;\n parsed.req.mesh = routed.mesh;\n if (senderSessionPubkey) {\n parsed.req.sender_session_pubkey = senderSessionPubkey;\n }\n } catch (e) {\n respond(res, 502, { error: \"route_failed\", detail: String(e) });\n return;\n }\n }\n const outcome = acceptSend(parsed.req, { db: opts.outboxDb });\n switch (outcome.kind) {\n case \"accepted_pending\":\n respond(res, outcome.status, {\n client_message_id: outcome.client_message_id,\n status: \"queued\",\n });\n opts.onPendingInserted?.();\n return;\n case \"accepted_inflight\":\n respond(res, outcome.status, {\n client_message_id: outcome.client_message_id,\n status: \"inflight\",\n });\n return;\n case \"accepted_done\":\n respond(res, outcome.status, {\n client_message_id: outcome.client_message_id,\n broker_message_id: outcome.broker_message_id,\n duplicate: true,\n });\n return;\n case \"conflict\":\n respond(res, outcome.status, {\n error: \"idempotency_key_reused\",\n conflict: outcome.reason,\n daemon_fingerprint_prefix: outcome.daemon_fingerprint_prefix,\n broker_message_id: outcome.broker_message_id ?? null,\n });\n return;\n }\n } catch (err) {\n opts.log(\"error\", \"ipc_send_failed\", { err: String(err) });\n respond(res, 500, { error: \"internal\" });\n return;\n }\n }\n\n respond(res, 404, { error: \"not found\" });\n };\n}\n\nasync function readJsonBody(req: IncomingMessage, maxBytes: number): Promise<unknown> {\n const chunks: Buffer[] = [];\n let total = 0;\n for await (const chunk of req) {\n const buf = chunk as Buffer;\n total += buf.length;\n if (total > maxBytes) throw new Error(\"payload_too_large\");\n chunks.push(buf);\n }\n if (total === 0) return null;\n const text = Buffer.concat(chunks).toString(\"utf8\");\n try { return JSON.parse(text); }\n catch { throw new Error(\"invalid_json\"); }\n}\n\ninterface ParsedSend { req: SendRequest }\ninterface ParseError { error: string }\n\nfunction parseSendRequest(body: unknown, idempotencyHeader: string | string[] | undefined): ParsedSend | ParseError {\n if (!body || typeof body !== \"object\") return { error: \"expected JSON object\" };\n const b = body as Record<string, unknown>;\n\n const to = typeof b.to === \"string\" ? b.to.trim() : \"\";\n const message = typeof b.message === \"string\" ? b.message : \"\";\n if (!to) return { error: \"missing 'to'\" };\n if (!message) return { error: \"missing 'message'\" };\n\n const priority = b.priority;\n if (priority !== undefined && priority !== \"now\" && priority !== \"next\" && priority !== \"low\") {\n return { error: \"priority must be 'now' | 'next' | 'low'\" };\n }\n\n const meta = b.meta;\n if (meta !== undefined && meta !== null && (typeof meta !== \"object\" || Array.isArray(meta))) {\n return { error: \"'meta' must be an object\" };\n }\n\n // Resolve destination_kind / destination_ref from the `to` shape.\n // For v0.9.0 we accept three forms:\n // \"@<topic>\" → topic\n // \"*\" → broadcast (modeled as topic *)\n // anything else → dm to peer name|pubkey (resolution happens later)\n let destination_kind: SendRequest[\"destination_kind\"];\n let destination_ref: string;\n if (to.startsWith(\"@\")) {\n destination_kind = \"topic\";\n destination_ref = to.slice(1);\n } else if (to === \"*\") {\n destination_kind = \"topic\";\n destination_ref = \"*\";\n } else {\n destination_kind = \"dm\";\n destination_ref = to;\n }\n\n const headerId = Array.isArray(idempotencyHeader) ? idempotencyHeader[0] : idempotencyHeader;\n const client_message_id = typeof b.client_message_id === \"string\" && b.client_message_id.trim()\n ? b.client_message_id.trim()\n : (typeof headerId === \"string\" && headerId.trim() ? headerId.trim() : undefined);\n\n const reply_to_id = typeof b.reply_to_id === \"string\" ? b.reply_to_id : undefined;\n\n const mesh = typeof b.mesh === \"string\" ? b.mesh.trim() : undefined;\n\n return {\n req: {\n to,\n message,\n priority: priority as SendRequest[\"priority\"] | undefined,\n meta: (meta as Record<string, unknown> | undefined) ?? undefined,\n reply_to_id,\n client_message_id,\n destination_kind,\n destination_ref,\n mesh,\n },\n };\n}\n\n/**\n * Sprint 4: resolve a user-friendly `to` (peer name, pubkey hex, @group, *,\n * topic name, \"#topicId\") into a broker-format target_spec, and encrypt\n * the plaintext payload appropriately for the destination kind.\n *\n * - DM by 64-char hex pubkey: target_spec = pubkey hex, ciphertext via\n * crypto_box (recipient pubkey + sender session secret).\n * - DM by display name: resolve via broker.listPeers, then same as above.\n * - Group / broadcast / topic: target_spec = `@<group>` / `*` / `#<topicId>`,\n * ciphertext = base64(plaintext) [matches the cold path's pre-encryption\n * convention until topic crypto lands].\n */\nasync function resolveAndEncrypt(\n req: SendRequest,\n broker: DaemonBrokerClient,\n meshSecretKey: string,\n meshSlug: string | null,\n): Promise<{ target_spec: string; ciphertext: string; nonce: string; mesh: string }> {\n const { encryptDirect } = await import(\"~/services/crypto/box.js\");\n const { randomBytes } = await import(\"node:crypto\");\n const to = req.to.trim();\n\n // Topic by id (\"#<topicId>\") — hex-like 20+ chars.\n if (to.startsWith(\"#\") && /^#[0-9a-z_-]{20,}$/i.test(to)) {\n const ciphertext = Buffer.from(req.message, \"utf8\").toString(\"base64\");\n const nonce = randomBytes(24).toString(\"base64\");\n return { target_spec: to, ciphertext, nonce, mesh: meshSlug ?? \"\" };\n }\n\n // Group, broadcast — pass through. (Topic-by-name resolution happens\n // when the daemon hooks topic_list later; not required for v1.25.0.)\n if (to.startsWith(\"@\") || to === \"*\") {\n const ciphertext = Buffer.from(req.message, \"utf8\").toString(\"base64\");\n const nonce = randomBytes(24).toString(\"base64\");\n return { target_spec: to, ciphertext, nonce, mesh: meshSlug ?? \"\" };\n }\n\n // 64-char hex pubkey → DM directly. Encrypt with the daemon's member\n // secret: recipient decrypts using THEIR session pubkey's matching\n // secret on their session-WS, so the sender side just needs any\n // private key whose public counterpart is known to the recipient as\n // \"the sender\". Member key is the stable choice and is what the\n // recipient already trusts via mesh membership.\n if (/^[0-9a-f]{64}$/i.test(to)) {\n const env = await encryptDirect(req.message, to, meshSecretKey);\n return { target_spec: to, ciphertext: env.ciphertext, nonce: env.nonce, mesh: meshSlug ?? \"\" };\n }\n\n // Hex prefix (16+ chars but <64) → resolve via peer list prefix match.\n // Matches the ergonomics of `claudemesh peer list` which shows 16-char\n // prefixes, so users naturally paste prefixes back.\n const peers = await broker.listPeers().catch(() => []);\n if (/^[0-9a-f]{16,63}$/i.test(to)) {\n const matches = peers.filter((p) =>\n p.pubkey.toLowerCase().startsWith(to.toLowerCase()) ||\n (p.memberPubkey ?? \"\").toLowerCase().startsWith(to.toLowerCase()),\n );\n if (matches.length === 0) throw new Error(`no peer matching prefix \"${to}\"`);\n if (matches.length > 1) throw new Error(`prefix \"${to}\" is ambiguous (${matches.length} matches)`);\n const recipient = matches[0]!.pubkey;\n const env = await encryptDirect(req.message, recipient, meshSecretKey);\n return { target_spec: recipient, ciphertext: env.ciphertext, nonce: env.nonce, mesh: meshSlug ?? \"\" };\n }\n\n // Otherwise — display name.\n const match = peers.find((p) => p.displayName.toLowerCase() === to.toLowerCase());\n if (!match) throw new Error(`peer \"${to}\" not found`);\n const recipient = match.pubkey;\n const env = await encryptDirect(req.message, recipient, meshSecretKey);\n return { target_spec: recipient, ciphertext: env.ciphertext, nonce: env.nonce, mesh: meshSlug ?? \"\" };\n}\n\nfunction respond(res: ServerResponse, status: number, body: unknown) {\n const json = JSON.stringify(body);\n res.statusCode = status;\n res.setHeader(\"Content-Type\", \"application/json\");\n res.setHeader(\"Content-Length\", Buffer.byteLength(json));\n res.end(json);\n}\n",
|
|
126
126
|
"/**\n * Shared WS lifecycle helper for the daemon's two broker clients.\n *\n * Both `DaemonBrokerClient` (member-keyed, one per joined mesh) and\n * `SessionBrokerClient` (session-keyed, one per launched session) used\n * to inline the same connect/hello/ack-timeout/close-reconnect logic.\n * They drifted apart subtly — different ack-timeout names, different\n * reconnect log messages, slightly different status flips — and that's\n * how 1.32.x bugs shipped (push handler attached to the wrong client,\n * etc).\n *\n * This helper owns ONLY the lifecycle:\n * - new WebSocket(url), wire up open/message/close/error\n * - on open → call buildHello() and send the result\n * - start an ack-timeout timer; if it fires before the hello ack\n * arrives, close the socket and reject the connect promise\n * - on message, gate on isHelloAck(); when true, flip status to\n * \"open\", clear the ack timer, resolve. All other messages are\n * forwarded to onMessage()\n * - on close, schedule a backoff reconnect (unless explicitly closed)\n *\n * Each client keeps its own concerns: DaemonBrokerClient still owns\n * pendingAcks / peerListResolvers / etc; SessionBrokerClient still owns\n * its onPush callback. The helper just hands them an open WS and a\n * stable status field, and reconnects under their feet on disconnect.\n *\n * Composition over inheritance — callers receive a `WsLifecycle` handle\n * with `send` / `close` / `status`, NOT a subclass.\n */\n\nimport WebSocket from \"ws\";\n\nexport type WsStatus = \"connecting\" | \"open\" | \"closed\" | \"reconnecting\";\n\nexport type WsLogLevel = \"info\" | \"warn\" | \"error\";\nexport type WsLog = (level: WsLogLevel, msg: string, meta?: Record<string, unknown>) => void;\n\nexport interface WsLifecycleOptions {\n /** Broker URL (e.g. wss://ic.claudemesh.com/ws). */\n url: string;\n /**\n * Build the hello frame to send right after the WS opens. Async because\n * signing the hello may need libsodium initialization. Whatever this\n * returns is JSON.stringified and sent verbatim — the helper does NOT\n * inspect or modify it.\n */\n buildHello: () => Promise<unknown>;\n /**\n * Returns true iff `msg` is the hello ack the helper should treat as\n * \"broker accepted us; flip status to open\". Both daemon-WS and\n * session-WS use `{ type: \"hello_ack\" }` today, but keeping this a\n * predicate lets either client narrow further (e.g. on a `code` field)\n * without leaking client-specific shape into the helper.\n */\n isHelloAck: (msg: Record<string, unknown>) => boolean;\n /**\n * Called for every parsed message that is NOT the hello ack. The\n * helper does NOT decide which messages are pushes vs RPCs vs errors;\n * that's the caller's concern.\n */\n onMessage: (msg: Record<string, unknown>) => void;\n onStatusChange?: (s: WsStatus) => void;\n /**\n * How long to wait for the broker's hello ack before giving up and\n * forcing a close. Defaults 5s — same as both pre-refactor clients.\n */\n helloAckTimeoutMs?: number;\n /**\n * Reconnect backoff schedule. Defaults [1s, 2s, 4s, 8s, 16s, 30s] —\n * matches both pre-refactor clients exactly.\n */\n backoffCapsMs?: readonly number[];\n log?: WsLog;\n /**\n * Hook for the close path BEFORE the helper schedules a reconnect.\n * Used by DaemonBrokerClient to fail its in-flight pendingAcks map\n * with a \"broker_disconnected_<code>\" reason. The helper passes the\n * raw close code so the caller can shape its rejection text.\n *\n * Returns nothing — close handling continues regardless.\n */\n onBeforeReconnect?: (code: number, reason: string) => void;\n}\n\nexport interface WsLifecycle {\n /** Current connection status. Updated synchronously before onStatusChange fires. */\n readonly status: WsStatus;\n /** Underlying socket. Exposed for callers that need OPEN-state checks\n * before sending (mirrors the pre-refactor `this.ws.readyState` checks). */\n readonly ws: WebSocket | null;\n /** Send a JSON payload over the open WS. Throws if not open — callers\n * that need queue-while-disconnected semantics should layer that\n * themselves (DaemonBrokerClient does, via its `opens` deferred-fn array). */\n send(payload: unknown): void;\n /** Close the WS and stop reconnecting. Idempotent. */\n close(): Promise<void>;\n}\n\nconst DEFAULT_HELLO_ACK_TIMEOUT_MS = 5_000;\nconst DEFAULT_BACKOFF_CAPS_MS: readonly number[] = [1_000, 2_000, 4_000, 8_000, 16_000, 30_000];\n\nconst defaultLog: WsLog = (level, msg, meta) => {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n};\n\n/**\n * Connect a WebSocket with hello-handshake, ack-timeout, and reconnect\n * with exponential backoff. Resolves once the broker accepts the hello;\n * rejects if the first connect closes before the ack lands.\n *\n * Subsequent automatic reconnects are silent — they fire on the close\n * handler's backoff timer and surface only via onStatusChange (and any\n * caller-installed log).\n */\nexport function connectWsWithBackoff(opts: WsLifecycleOptions): Promise<WsLifecycle> {\n const helloAckTimeoutMs = opts.helloAckTimeoutMs ?? DEFAULT_HELLO_ACK_TIMEOUT_MS;\n const backoffCapsMs = opts.backoffCapsMs ?? DEFAULT_BACKOFF_CAPS_MS;\n const log: WsLog = opts.log ?? defaultLog;\n\n let ws: WebSocket | null = null;\n let status: WsStatus = \"closed\";\n let closed = false;\n let reconnectAttempt = 0;\n let reconnectTimer: NodeJS.Timeout | null = null;\n let helloTimer: NodeJS.Timeout | null = null;\n\n const setStatus = (s: WsStatus) => {\n if (status === s) return;\n status = s;\n opts.onStatusChange?.(s);\n };\n\n /**\n * Open one WS attempt. Returns a promise that resolves on hello ack\n * or rejects if the socket closes before we get one. Used by both the\n * initial connect and the close-handler backoff timer (which awaits\n * but ignores the rejection — by then the close handler has already\n * scheduled its own reconnect).\n */\n const openOnce = (): Promise<void> => {\n if (closed) return Promise.reject(new Error(\"client_closed\"));\n setStatus(\"connecting\");\n\n log(\"info\", \"ws_open_attempt\", { url: opts.url });\n const sock = new WebSocket(opts.url);\n ws = sock;\n\n return new Promise<void>((resolve, reject) => {\n sock.on(\"open\", () => {\n log(\"info\", \"ws_open_ok\", { url: opts.url });\n // Build and send the hello inside a microtask so any sync\n // throws from buildHello() reject this connect attempt cleanly.\n (async () => {\n try {\n const hello = await opts.buildHello();\n sock.send(JSON.stringify(hello));\n log(\"info\", \"ws_hello_sent\", { url: opts.url });\n helloTimer = setTimeout(() => {\n log(\"warn\", \"hello_ack_timeout\", { url: opts.url });\n try { sock.close(); } catch { /* ignore */ }\n reject(new Error(\"hello_ack_timeout\"));\n }, helloAckTimeoutMs);\n } catch (e) {\n log(\"warn\", \"ws_build_hello_threw\", { err: String(e) });\n reject(e instanceof Error ? e : new Error(String(e)));\n }\n })();\n });\n\n sock.on(\"message\", (raw) => {\n let msg: Record<string, unknown>;\n try { msg = JSON.parse(raw.toString()) as Record<string, unknown>; }\n catch { return; }\n\n if (opts.isHelloAck(msg)) {\n if (helloTimer) { clearTimeout(helloTimer); helloTimer = null; }\n setStatus(\"open\");\n reconnectAttempt = 0;\n log(\"info\", \"ws_hello_acked\", { url: opts.url });\n resolve();\n return;\n }\n\n opts.onMessage(msg);\n });\n\n sock.on(\"close\", (code, reason) => {\n if (helloTimer) { clearTimeout(helloTimer); helloTimer = null; }\n const reasonStr = reason.toString(\"utf8\");\n log(\"warn\", \"ws_closed\", { url: opts.url, code, reason: reasonStr, status });\n opts.onBeforeReconnect?.(code, reasonStr);\n\n if (closed) {\n setStatus(\"closed\");\n return;\n }\n setStatus(\"reconnecting\");\n const wait = backoffCapsMs[Math.min(reconnectAttempt, backoffCapsMs.length - 1)] ?? 30_000;\n reconnectAttempt++;\n log(\"info\", \"ws_reconnect_scheduled\", { url: opts.url, wait_ms: wait, code, reason: reasonStr });\n reconnectTimer = setTimeout(\n () => openOnce().catch((err) => log(\"warn\", \"ws_reconnect_failed\", { url: opts.url, err: String(err) })),\n wait,\n );\n if (status === \"connecting\" || status === \"reconnecting\") {\n reject(new Error(`closed_before_hello_${code}`));\n }\n });\n\n sock.on(\"error\", (err) => log(\"warn\", \"ws_error\", { url: opts.url, err: err.message }));\n });\n };\n\n return openOnce().then(() => {\n const handle: WsLifecycle = {\n get status() { return status; },\n get ws() { return ws; },\n send(payload: unknown) {\n if (!ws || ws.readyState !== ws.OPEN) {\n throw new Error(\"ws_not_open\");\n }\n ws.send(JSON.stringify(payload));\n },\n async close() {\n closed = true;\n if (reconnectTimer) { clearTimeout(reconnectTimer); reconnectTimer = null; }\n if (helloTimer) { clearTimeout(helloTimer); helloTimer = null; }\n try { ws?.close(); } catch { /* ignore */ }\n setStatus(\"closed\");\n },\n };\n return handle;\n });\n}\n",
|
|
127
127
|
"// Minimal broker WS connector for the daemon. Reuses the existing CLI\n// hello-sign protocol so it speaks the wire current brokers understand.\n//\n// Differences from BrokerClient (services/broker/ws-client.ts):\n// - Slim: no in-memory pending-sends queue, no list_peers/state/topic\n// RPCs. The daemon's outbox is the source of truth.\n// - Wire envelope adds `client_message_id` (broker may ignore in legacy\n// mode; Sprint 7 promotes it to authoritative dedupe).\n// - Reconnect with exponential backoff, signaled to the drain worker.\n//\n// 2026-05-04: lifecycle (connect / hello-ack / close-reconnect) now\n// lives in `ws-lifecycle.ts`. This class supplies the daemon-WS hello\n// content and routes incoming RPC replies / pushes; the helper handles\n// the rest. The hello no longer carries an ephemeral `sessionPubkey` —\n// session-targeted DMs land on the per-session WS (SessionBrokerClient)\n// since 1.32.1, so this socket only needs the member identity.\n\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\nimport { signHello } from \"~/services/broker/hello-sig.js\";\nimport { connectWsWithBackoff, type WsLifecycle, type WsStatus } from \"./ws-lifecycle.js\";\n\nexport type ConnStatus = WsStatus;\n\nexport interface BrokerSendArgs {\n /** Target as the broker expects it: peer name | pubkey | @group | * | topic. */\n targetSpec: string;\n priority: \"now\" | \"next\" | \"low\";\n nonce: string;\n ciphertext: string;\n /** Daemon-issued idempotency id. Echoed back by the broker for dedupe. */\n client_message_id: string;\n /** Sha256-32 fingerprint of the request, hex. Forwarded for Sprint 7 dedupe. */\n request_fingerprint_hex: string;\n}\n\nexport type BrokerSendResult =\n | { ok: true; messageId: string }\n | { ok: false; error: string; permanent: boolean };\n\ninterface PendingAck {\n resolve: (r: BrokerSendResult) => void;\n timer: NodeJS.Timeout;\n}\n\nexport interface PeerSummary {\n pubkey: string;\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?: string;\n channel?: string;\n /** Broker-side classification, added 2026-05-04. Missing in older brokers. */\n role?: \"control-plane\" | \"session\" | \"service\";\n}\n\ninterface PendingPeerList {\n resolve: (peers: PeerSummary[]) => void;\n timer: NodeJS.Timeout;\n}\n\nexport interface SkillSummary {\n name: string;\n description: string;\n tags: string[];\n author: string;\n createdAt: string;\n}\n\nexport interface SkillFull extends SkillSummary {\n instructions: string;\n manifest?: unknown;\n}\n\nexport interface StateRow {\n key: string;\n value: unknown;\n updatedBy: string;\n updatedAt: string;\n}\n\nexport interface MemoryRow {\n id: string;\n content: string;\n tags: string[];\n rememberedBy: string;\n rememberedAt: string;\n}\n\nconst SEND_ACK_TIMEOUT_MS = 15_000;\n\nexport interface DaemonBrokerOptions {\n displayName?: string;\n onStatusChange?: (s: ConnStatus) => void;\n onPush?: (msg: Record<string, unknown>) => void;\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n}\n\nexport class DaemonBrokerClient {\n private lifecycle: WsLifecycle | null = null;\n private _status: ConnStatus = \"closed\";\n private closed = false;\n private pendingAcks = new Map<string, PendingAck>();\n private peerListResolvers = new Map<string, PendingPeerList>();\n private skillListResolvers = new Map<string, { resolve: (rows: SkillSummary[]) => void; timer: NodeJS.Timeout }>();\n private skillDataResolvers = new Map<string, { resolve: (row: SkillFull | null) => void; timer: NodeJS.Timeout }>();\n private stateGetResolvers = new Map<string, { resolve: (row: StateRow | null) => void; timer: NodeJS.Timeout }>();\n private stateListResolvers = new Map<string, { resolve: (rows: StateRow[]) => 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: (rows: MemoryRow[]) => void; timer: NodeJS.Timeout }>();\n private opens: Array<() => void> = [];\n private reqCounter = 0;\n\n constructor(private mesh: JoinedMesh, private opts: DaemonBrokerOptions = {}) {}\n\n get status(): ConnStatus { return this._status; }\n get meshSlug(): string { return this.mesh.slug; }\n get meshId(): string { return this.mesh.meshId; }\n\n private log = (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => {\n (this.opts.log ?? defaultLog)(level, msg, { mesh: this.mesh.slug, ...meta });\n };\n\n /** Open the WS, run the hello handshake, resolve once the broker accepts. */\n async connect(): Promise<void> {\n if (this.closed) throw new Error(\"client_closed\");\n if (this._status === \"connecting\" || this._status === \"open\") return;\n\n this.lifecycle = await connectWsWithBackoff({\n url: this.mesh.brokerUrl,\n buildHello: async () => {\n const { timestamp, signature } = await signHello(\n this.mesh.meshId, this.mesh.memberId, this.mesh.pubkey, this.mesh.secretKey,\n );\n return {\n type: \"hello\",\n meshId: this.mesh.meshId,\n memberId: this.mesh.memberId,\n pubkey: this.mesh.pubkey,\n // No `sessionPubkey` — daemon-WS is member-keyed only. The\n // per-session presence WS (SessionBrokerClient) carries the\n // ephemeral session pubkey. Spec §\"Layer 1: Identity → Member identity\".\n displayName: this.opts.displayName,\n sessionId: `daemon-${process.pid}`,\n pid: process.pid,\n cwd: process.cwd(),\n hostname: require(\"node:os\").hostname(),\n peerType: \"ai\" as const,\n channel: \"claudemesh-daemon\",\n timestamp,\n signature,\n };\n },\n isHelloAck: (msg) => msg.type === \"hello_ack\",\n onMessage: (msg) => this.handleMessage(msg),\n onStatusChange: (s) => {\n this._status = s;\n this.opts.onStatusChange?.(s);\n if (s === \"open\") {\n // Flush deferred openers (drain worker, etc.).\n const queued = this.opens.slice();\n this.opens.length = 0;\n for (const fn of queued) {\n try { fn(); } catch (e) { this.log(\"warn\", \"open_handler_failed\", { err: String(e) }); }\n }\n }\n },\n onBeforeReconnect: (code) => this.failPendingAcks(`broker_disconnected_${code}`),\n log: (level, msg, meta) => this.log(level, `broker_${msg}`, meta),\n });\n }\n\n private handleMessage(msg: Record<string, unknown>): void {\n if (msg.type === \"ack\") {\n // Broker shape: { type: \"ack\", id, messageId, queued, error? }\n const id = String(msg.id ?? \"\");\n const ack = this.pendingAcks.get(id);\n if (ack) {\n this.pendingAcks.delete(id);\n clearTimeout(ack.timer);\n if (typeof msg.error === \"string\" && msg.error.length > 0) {\n ack.resolve({ ok: false, error: msg.error, permanent: classifyPermanent(msg.error) });\n } else {\n ack.resolve({ ok: true, messageId: String(msg.messageId ?? id) });\n }\n }\n return;\n }\n\n if (msg.type === \"peers_list\") {\n const reqId = String(msg._reqId ?? \"\");\n const pending = this.peerListResolvers.get(reqId);\n if (pending) {\n this.peerListResolvers.delete(reqId);\n clearTimeout(pending.timer);\n pending.resolve(Array.isArray(msg.peers) ? (msg.peers as PeerSummary[]) : []);\n }\n return;\n }\n\n if (msg.type === \"skill_list\") {\n const reqId = String(msg._reqId ?? \"\");\n const pending = this.skillListResolvers.get(reqId);\n if (pending) {\n this.skillListResolvers.delete(reqId);\n clearTimeout(pending.timer);\n pending.resolve(Array.isArray(msg.skills) ? (msg.skills as SkillSummary[]) : []);\n }\n return;\n }\n\n if (msg.type === \"skill_data\") {\n const reqId = String(msg._reqId ?? \"\");\n const pending = this.skillDataResolvers.get(reqId);\n if (pending) {\n this.skillDataResolvers.delete(reqId);\n clearTimeout(pending.timer);\n pending.resolve((msg.skill as SkillFull) ?? null);\n }\n return;\n }\n\n if (msg.type === \"state_value\" || msg.type === \"state_data\") {\n const reqId = String(msg._reqId ?? \"\");\n const pending = this.stateGetResolvers.get(reqId);\n if (pending) {\n this.stateGetResolvers.delete(reqId);\n clearTimeout(pending.timer);\n pending.resolve((msg.state ?? msg.row ?? null) as StateRow | null);\n }\n return;\n }\n\n if (msg.type === \"state_list\") {\n const reqId = String(msg._reqId ?? \"\");\n const pending = this.stateListResolvers.get(reqId);\n if (pending) {\n this.stateListResolvers.delete(reqId);\n clearTimeout(pending.timer);\n pending.resolve(Array.isArray(msg.entries) ? (msg.entries as StateRow[]) : []);\n }\n return;\n }\n\n if (msg.type === \"memory_stored\") {\n const reqId = String(msg._reqId ?? \"\");\n const pending = this.memoryStoreResolvers.get(reqId);\n if (pending) {\n this.memoryStoreResolvers.delete(reqId);\n clearTimeout(pending.timer);\n pending.resolve(typeof msg.memoryId === \"string\" ? msg.memoryId : null);\n }\n return;\n }\n\n if (msg.type === \"memory_recall_result\") {\n const reqId = String(msg._reqId ?? \"\");\n const pending = this.memoryRecallResolvers.get(reqId);\n if (pending) {\n this.memoryRecallResolvers.delete(reqId);\n clearTimeout(pending.timer);\n pending.resolve(Array.isArray(msg.matches) ? (msg.matches as MemoryRow[]) : []);\n }\n return;\n }\n\n if (msg.type === \"push\" || msg.type === \"inbound\") {\n this.opts.onPush?.(msg);\n return;\n }\n }\n\n /** True when underlying socket is OPEN-ready for direct sends. */\n private isOpen(): boolean {\n const sock = this.lifecycle?.ws;\n return !!sock && sock.readyState === sock.OPEN;\n }\n\n /** v2 agentic-comms (M1): send `client_ack` back to the broker after\n * successfully landing an inbound push in inbox.db. Broker uses the\n * ack to set `delivered_at` (atomic at-least-once). Best-effort —\n * if the WS isn't open, drop the ack; broker's 30s lease will\n * re-deliver. */\n sendClientAck(clientMessageId: string, brokerMessageId: string | null): void {\n if (!this.isOpen()) return;\n try {\n this.lifecycle!.send({\n type: \"client_ack\",\n clientMessageId,\n ...(brokerMessageId ? { brokerMessageId } : {}),\n });\n } catch { /* drop; lease re-delivers */ }\n }\n\n /** Send one outbox row. Resolves on broker ack/timeout. */\n send(req: BrokerSendArgs): Promise<BrokerSendResult> {\n return new Promise<BrokerSendResult>((resolve) => {\n const dispatch = () => {\n if (!this.isOpen()) {\n resolve({ ok: false, error: \"broker_not_open\", permanent: false });\n return;\n }\n const id = req.client_message_id;\n const timer = setTimeout(() => {\n if (this.pendingAcks.delete(id)) {\n resolve({ ok: false, error: \"ack_timeout\", permanent: false });\n }\n }, SEND_ACK_TIMEOUT_MS);\n this.pendingAcks.set(id, { resolve, timer });\n try {\n this.lifecycle!.send({\n type: \"send\",\n id, // legacy correlation id\n client_message_id: id, // forward-compat per spec §4.2\n request_fingerprint: req.request_fingerprint_hex,\n targetSpec: req.targetSpec,\n priority: req.priority,\n nonce: req.nonce,\n ciphertext: req.ciphertext,\n });\n } catch (e) {\n this.pendingAcks.delete(id);\n clearTimeout(timer);\n resolve({ ok: false, error: `ws_write_failed: ${String(e)}`, permanent: false });\n }\n };\n\n if (this._status === \"open\") dispatch();\n else this.opens.push(dispatch);\n });\n }\n\n /** Ask the broker for the current peer list. */\n async listPeers(timeoutMs = 5_000): Promise<PeerSummary[]> {\n if (this._status !== \"open\" || !this.lifecycle) return [];\n return new Promise<PeerSummary[]>((resolve) => {\n const reqId = `pl-${++this.reqCounter}`;\n const timer = setTimeout(() => {\n if (this.peerListResolvers.delete(reqId)) resolve([]);\n }, timeoutMs);\n this.peerListResolvers.set(reqId, { resolve, timer });\n try { this.lifecycle!.send({ type: \"list_peers\", _reqId: reqId }); }\n catch { this.peerListResolvers.delete(reqId); clearTimeout(timer); resolve([]); }\n });\n }\n\n /** List mesh-published skills. Empty array on disconnect / timeout. */\n async listSkills(query?: string, timeoutMs = 5_000): Promise<SkillSummary[]> {\n if (this._status !== \"open\" || !this.lifecycle) return [];\n return new Promise<SkillSummary[]>((resolve) => {\n const reqId = `sl-${++this.reqCounter}`;\n const timer = setTimeout(() => {\n if (this.skillListResolvers.delete(reqId)) resolve([]);\n }, timeoutMs);\n this.skillListResolvers.set(reqId, { resolve, timer });\n try { this.lifecycle!.send({ type: \"list_skills\", query, _reqId: reqId }); }\n catch { this.skillListResolvers.delete(reqId); clearTimeout(timer); resolve([]); }\n });\n }\n\n /** Fetch one skill's full body. Null on not-found / disconnect / timeout. */\n async getSkill(name: string, timeoutMs = 5_000): Promise<SkillFull | null> {\n if (this._status !== \"open\" || !this.lifecycle) return null;\n return new Promise<SkillFull | null>((resolve) => {\n const reqId = `sg-${++this.reqCounter}`;\n const timer = setTimeout(() => {\n if (this.skillDataResolvers.delete(reqId)) resolve(null);\n }, timeoutMs);\n this.skillDataResolvers.set(reqId, { resolve, timer });\n try { this.lifecycle!.send({ type: \"get_skill\", name, _reqId: reqId }); }\n catch { this.skillDataResolvers.delete(reqId); clearTimeout(timer); resolve(null); }\n });\n }\n\n /** Read a single shared state row. Null on disconnect / timeout / not-found. */\n async getState(key: string, timeoutMs = 5_000): Promise<StateRow | null> {\n if (this._status !== \"open\" || !this.lifecycle) return null;\n return new Promise<StateRow | null>((resolve) => {\n const reqId = `sg-${++this.reqCounter}`;\n const timer = setTimeout(() => {\n if (this.stateGetResolvers.delete(reqId)) resolve(null);\n }, timeoutMs);\n this.stateGetResolvers.set(reqId, { resolve, timer });\n try { this.lifecycle!.send({ type: \"get_state\", key, _reqId: reqId }); }\n catch { this.stateGetResolvers.delete(reqId); clearTimeout(timer); resolve(null); }\n });\n }\n\n /** List all shared state rows in the mesh. */\n async listState(timeoutMs = 5_000): Promise<StateRow[]> {\n if (this._status !== \"open\" || !this.lifecycle) return [];\n return new Promise<StateRow[]>((resolve) => {\n const reqId = `sl-${++this.reqCounter}`;\n const timer = setTimeout(() => {\n if (this.stateListResolvers.delete(reqId)) resolve([]);\n }, timeoutMs);\n this.stateListResolvers.set(reqId, { resolve, timer });\n try { this.lifecycle!.send({ type: \"list_state\", _reqId: reqId }); }\n catch { this.stateListResolvers.delete(reqId); clearTimeout(timer); resolve([]); }\n });\n }\n\n /** Set a shared state value. Fire-and-forget. */\n setState(key: string, value: unknown): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try { this.lifecycle.send({ type: \"set_state\", key, value }); }\n catch { /* ignore */ }\n }\n\n /** Store a memory in the mesh. Returns the assigned id, or null on timeout. */\n async remember(content: string, tags?: string[], timeoutMs = 5_000): Promise<string | null> {\n if (this._status !== \"open\" || !this.lifecycle) return null;\n return new Promise<string | null>((resolve) => {\n const reqId = `mr-${++this.reqCounter}`;\n const timer = setTimeout(() => {\n if (this.memoryStoreResolvers.delete(reqId)) resolve(null);\n }, timeoutMs);\n this.memoryStoreResolvers.set(reqId, { resolve, timer });\n try { this.lifecycle!.send({ type: \"remember\", content, tags, _reqId: reqId }); }\n catch { this.memoryStoreResolvers.delete(reqId); clearTimeout(timer); resolve(null); }\n });\n }\n\n /** Search memories by relevance. */\n async recall(query: string, timeoutMs = 5_000): Promise<MemoryRow[]> {\n if (this._status !== \"open\" || !this.lifecycle) return [];\n return new Promise<MemoryRow[]>((resolve) => {\n const reqId = `mc-${++this.reqCounter}`;\n const timer = setTimeout(() => {\n if (this.memoryRecallResolvers.delete(reqId)) resolve([]);\n }, timeoutMs);\n this.memoryRecallResolvers.set(reqId, { resolve, timer });\n try { this.lifecycle!.send({ type: \"recall\", query, _reqId: reqId }); }\n catch { this.memoryRecallResolvers.delete(reqId); clearTimeout(timer); resolve([]); }\n });\n }\n\n /** Forget a memory by id. Fire-and-forget. */\n forget(memoryId: string): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try { this.lifecycle.send({ type: \"forget\", memoryId }); }\n catch { /* ignore */ }\n }\n\n /** Set the daemon's profile (avatar/title/bio/capabilities). Fire-and-forget. */\n setProfile(profile: { avatar?: string; title?: string; bio?: string; capabilities?: string[] }): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try { this.lifecycle.send({ type: \"set_profile\", ...profile }); }\n catch { /* ignore */ }\n }\n\n setSummary(summary: string): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try { this.lifecycle.send({ type: \"set_summary\", summary }); }\n catch { /* ignore */ }\n }\n\n setStatus(status: \"idle\" | \"working\" | \"dnd\"): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try { this.lifecycle.send({ type: \"set_status\", status }); }\n catch { /* ignore */ }\n }\n\n setVisible(visible: boolean): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try { this.lifecycle.send({ type: \"set_visible\", visible }); }\n catch { /* ignore */ }\n }\n\n async close(): Promise<void> {\n this.closed = true;\n this.failPendingAcks(\"daemon_shutdown\");\n if (this.lifecycle) {\n try { await this.lifecycle.close(); } catch { /* ignore */ }\n this.lifecycle = null;\n }\n this._status = \"closed\";\n }\n\n private failPendingAcks(reason: string) {\n for (const [id, ack] of this.pendingAcks) {\n clearTimeout(ack.timer);\n ack.resolve({ ok: false, error: reason, permanent: false });\n this.pendingAcks.delete(id);\n }\n }\n}\n\nfunction defaultLog(level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n}\n\n/** Heuristic: which broker errors are unrecoverable for this id. */\nfunction classifyPermanent(err: string): boolean {\n return /payload_too_large|forbidden|not_found|invalid|schema|auth|signature/i.test(err);\n}\n",
|
|
128
|
-
"/**\n * Per-launch session broker WebSocket.\n *\n * Owned by the daemon, one per registered session. Holds a long-lived\n * presence row on the broker keyed on the session's ephemeral pubkey\n * (rather than the parent member's stable pubkey). Sibling sessions —\n * two `claudemesh launch` runs in the same cwd — finally see each other\n * in `peer list` because their presence rows coexist instead of fighting\n * over the same memberPubkey snapshot.\n *\n * Differences from `DaemonBrokerClient`:\n * - Uses session_hello (1.30.0+ broker), with a parent-vouched\n * attestation provided at construction time.\n * - Does NOT carry list_peers / state / memory RPCs. This client is\n * presence + inbound DM delivery + (1.34.0) outbound send for\n * messages that originate from this session. Routing those through\n * here is what makes the broker fan-out attribute the push to the\n * session pubkey instead of the daemon's stable member pubkey.\n *\n * Outbox routing (1.34.0): the drain worker now consults\n * `outbox.sender_session_pubkey`. If a row was written by an\n * authenticated session and the matching session-WS is `open`, the\n * drain dispatches via `SessionBrokerClient.send()` — this\n * connection's `conn.sessionPubkey` server-side is the session pubkey,\n * so the broker's existing fan-out attribution\n * (`senderPubkey: conn.sessionPubkey ?? conn.memberPubkey`) just works.\n * Pre-1.34.0 every drain went through DaemonBrokerClient (member-WS),\n * so every push showed up as \"from <daemon-member-pubkey>\" regardless\n * of which session typed `claudemesh send`.\n *\n * Old brokers reply with `unknown_message_type` on session_hello — we\n * surface that as a one-shot `error` event and the daemon decides\n * whether to fall back. For 1.30.0 we just log + retry; the broker is\n * expected to be deployed first.\n *\n * Spec: .artifacts/specs/2026-05-04-per-session-presence.md.\n *\n * 2026-05-04: lifecycle (connect / hello-ack / close-reconnect) lives\n * in `ws-lifecycle.ts`. This class supplies session_hello content and\n * routes the inbound onPush; the helper handles the rest.\n */\n\nimport { hostname as osHostname } from \"node:os\";\n\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\nimport { signSessionHello } from \"~/services/broker/session-hello-sig.js\";\nimport { connectWsWithBackoff, type WsLifecycle, type WsStatus } from \"./ws-lifecycle.js\";\nimport type { BrokerSendArgs, BrokerSendResult } from \"./broker.js\";\n\nexport type SessionBrokerStatus = WsStatus;\n\n/** Ack-tracking shape, mirrors DaemonBrokerClient.PendingAck. Kept\n * internal — callers see only the resolved BrokerSendResult. */\ninterface PendingAck {\n resolve: (r: BrokerSendResult) => void;\n timer: NodeJS.Timeout;\n}\n\nconst SEND_ACK_TIMEOUT_MS = 15_000;\n\n/** Heuristic: which broker-reported send errors are permanent enough\n * that the drain worker should give up rather than retry. Mirrors the\n * daemon-WS classifier so behavior is identical regardless of which\n * socket the row went out on. */\nfunction classifyPermanent(error: string): boolean {\n return /unknown|invalid|forbidden|not_authorized|target_not_found/i.test(error);\n}\n\nexport interface ParentAttestation {\n sessionPubkey: string;\n parentMemberPubkey: string;\n /** Unix ms. Broker rejects > now+24h or already past. */\n expiresAt: number;\n signature: string;\n}\n\nexport interface SessionBrokerOptions {\n mesh: JoinedMesh;\n /** Per-launch ephemeral keypair. */\n sessionPubkey: string;\n sessionSecretKey: string;\n /** Parent-vouched attestation, signed by mesh.secretKey at launch time. */\n parentAttestation: ParentAttestation;\n /** Stable session_id from the launch (used for dedup on the broker). */\n sessionId: string;\n /** Display name override for this session. */\n displayName?: string;\n /** Initial groups. Format mirrors the regular hello. */\n groups?: Array<{ name: string; role?: string }>;\n /** Role tag (informational, not auth-bearing). */\n role?: string;\n /** Working directory (informational, surfaced in peer list). */\n cwd?: string;\n /** Pid of the launched session (NOT the daemon). */\n pid: number;\n onStatusChange?: (s: SessionBrokerStatus) => void;\n /**\n * Inbound push/inbound dispatch. The broker fans messages targeted at\n * a session pubkey out over the corresponding session WS — without\n * this callback they hit the floor and the daemon's inbox.db never\n * sees them. Wired in run.ts to a handleBrokerPush call that decrypts\n * with this session's secret key (member key as fallback).\n */\n onPush?: (msg: Record<string, unknown>) => void;\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n}\n\nexport class SessionBrokerClient {\n private lifecycle: WsLifecycle | null = null;\n private _status: SessionBrokerStatus = \"closed\";\n private closed = false;\n /** Set when the broker rejects session_hello with `unknown_message_type` —\n * older brokers without the 1.30.0 surface. We stop retrying. */\n private brokerUnsupported = false;\n /** 1.34.0: outbound send tracking. Keyed by client_message_id. The\n * drain worker registers an entry on dispatch; the WS message\n * handler resolves it on broker `ack`. Times out after 15s. */\n private pendingAcks = new Map<string, PendingAck>();\n /** 1.34.0: dispatchers queued while the WS is reconnecting — flushed\n * in onStatusChange when status flips to `open`. Mirrors the\n * daemon-WS `opens` array. */\n private opens: Array<() => void> = [];\n\n constructor(private opts: SessionBrokerOptions) {}\n\n get status(): SessionBrokerStatus { return this._status; }\n get meshSlug(): string { return this.opts.mesh.slug; }\n get sessionPubkey(): string { return this.opts.sessionPubkey; }\n\n private log = (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => {\n (this.opts.log ?? defaultLog)(level, msg, {\n mesh: this.opts.mesh.slug,\n session_pubkey: this.opts.sessionPubkey.slice(0, 12),\n ...meta,\n });\n };\n\n /** Open the WS, run session_hello, resolve once the broker accepts. */\n async connect(): Promise<void> {\n if (this.closed) throw new Error(\"client_closed\");\n if (this._status === \"connecting\" || this._status === \"open\") return;\n\n this.lifecycle = await connectWsWithBackoff({\n url: this.opts.mesh.brokerUrl,\n buildHello: async () => {\n const { timestamp, signature } = await signSessionHello({\n meshId: this.opts.mesh.meshId,\n parentMemberPubkey: this.opts.mesh.pubkey,\n sessionPubkey: this.opts.sessionPubkey,\n sessionSecretKey: this.opts.sessionSecretKey,\n });\n return {\n type: \"session_hello\",\n meshId: this.opts.mesh.meshId,\n parentMemberId: this.opts.mesh.memberId,\n parentMemberPubkey: this.opts.mesh.pubkey,\n sessionPubkey: this.opts.sessionPubkey,\n parentAttestation: this.opts.parentAttestation,\n displayName: this.opts.displayName,\n sessionId: this.opts.sessionId,\n pid: this.opts.pid,\n cwd: this.opts.cwd ?? process.cwd(),\n hostname: osHostname(),\n peerType: \"ai\" as const,\n channel: \"claudemesh-session\",\n ...(this.opts.groups && this.opts.groups.length > 0 ? { groups: this.opts.groups } : {}),\n ...(this.opts.role ? { role: this.opts.role } : {}),\n timestamp,\n signature,\n };\n },\n isHelloAck: (msg) => msg.type === \"hello_ack\",\n onMessage: (msg) => {\n if (msg.type === \"error\") {\n // Older brokers respond with `unknown_message_type` to session_hello;\n // surface that so the daemon can decide to skip per-session presence\n // rather than churn through reconnects. Setting `closed` halts the\n // helper's reconnect loop on the next close.\n this.log(\"warn\", \"broker_error\", { code: msg.code, message: msg.message });\n if (msg.code === \"unknown_message_type\") {\n this.brokerUnsupported = true;\n this.closed = true;\n void this.lifecycle?.close();\n }\n return;\n }\n\n // 1.34.0: outbox `send` ack arriving on the session-WS. Resolves\n // the Promise the drain worker is awaiting. Mirrors the\n // daemon-WS handler exactly.\n if (msg.type === \"ack\") {\n const id = String(msg.id ?? \"\");\n const ack = this.pendingAcks.get(id);\n if (ack) {\n this.pendingAcks.delete(id);\n clearTimeout(ack.timer);\n if (typeof msg.error === \"string\" && msg.error.length > 0) {\n ack.resolve({ ok: false, error: msg.error, permanent: classifyPermanent(msg.error) });\n } else {\n ack.resolve({ ok: true, messageId: String(msg.messageId ?? id) });\n }\n }\n return;\n }\n\n // 1.32.1 — DMs targeted at the launched session's pubkey arrive\n // here, NOT on the daemon's member-keyed WS. Forward to the\n // daemon-level push handler so they land in inbox.db.\n if (msg.type === \"push\" || msg.type === \"inbound\") {\n this.opts.onPush?.(msg);\n return;\n }\n },\n onStatusChange: (s) => {\n this._status = s;\n this.opts.onStatusChange?.(s);\n if (s === \"open\") {\n // 1.34.0: flush queued send dispatchers so any outbox row that\n // tried to dispatch while we were reconnecting goes out now.\n const queued = this.opens.slice();\n this.opens.length = 0;\n for (const fn of queued) {\n try { fn(); } catch (e) { this.log(\"warn\", \"session_open_handler_failed\", { err: String(e) }); }\n }\n } else if (s === \"closed\" || s === \"reconnecting\") {\n // Fail any in-flight acks so the drain worker can retry/backoff\n // instead of hanging on a dead promise. The daemon-WS does the\n // same thing via onBeforeReconnect; we centralize it here\n // because session-broker uses status transitions directly.\n this.failPendingAcks(`session_ws_${s}`);\n }\n },\n log: (level, msg, meta) => this.log(level, `session_broker_${msg}`, meta),\n });\n }\n\n /** v2 agentic-comms (M1): send `client_ack` back to the broker after\n * successfully landing an inbound push in inbox.db. Broker uses the\n * ack to set `delivered_at`. Best-effort. */\n sendClientAck(clientMessageId: string, brokerMessageId: string | null): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try {\n this.lifecycle.send({\n type: \"client_ack\",\n clientMessageId,\n ...(brokerMessageId ? { brokerMessageId } : {}),\n });\n } catch { /* drop; lease re-delivers */ }\n }\n\n /** True when underlying socket is OPEN-ready for direct sends. */\n isOpen(): boolean {\n const sock = this.lifecycle?.ws;\n return !!sock && sock.readyState === sock.OPEN;\n }\n\n /**\n * 1.34.0 — Send one outbox row over the session-WS. Same wire format\n * as DaemonBrokerClient.send, but routed via this connection so the\n * broker's fan-out attributes the push to the session pubkey.\n *\n * Used by the drain worker for rows whose `sender_session_pubkey`\n * matches this client's session pubkey. When the WS is reconnecting\n * the dispatcher is queued via `opens` and flushed on the next\n * status flip.\n */\n send(req: BrokerSendArgs): Promise<BrokerSendResult> {\n return new Promise<BrokerSendResult>((resolve) => {\n const dispatch = () => {\n if (!this.isOpen() || !this.lifecycle) {\n resolve({ ok: false, error: \"session_ws_not_open\", permanent: false });\n return;\n }\n const id = req.client_message_id;\n const timer = setTimeout(() => {\n if (this.pendingAcks.delete(id)) {\n resolve({ ok: false, error: \"ack_timeout\", permanent: false });\n }\n }, SEND_ACK_TIMEOUT_MS);\n this.pendingAcks.set(id, { resolve, timer });\n try {\n this.lifecycle.send({\n type: \"send\",\n id,\n client_message_id: id,\n request_fingerprint: req.request_fingerprint_hex,\n targetSpec: req.targetSpec,\n priority: req.priority,\n nonce: req.nonce,\n ciphertext: req.ciphertext,\n });\n } catch (e) {\n this.pendingAcks.delete(id);\n clearTimeout(timer);\n resolve({ ok: false, error: `ws_write_failed: ${String(e)}`, permanent: false });\n }\n };\n\n if (this._status === \"open\") dispatch();\n else this.opens.push(dispatch);\n });\n }\n\n /** Resolve every in-flight ack with a synthetic failure. Called on\n * WS close so the drain worker stops waiting and either retries or\n * reroutes via the daemon-WS. */\n private failPendingAcks(reason: string): void {\n if (this.pendingAcks.size === 0) return;\n const entries = [...this.pendingAcks.entries()];\n this.pendingAcks.clear();\n for (const [, ack] of entries) {\n clearTimeout(ack.timer);\n ack.resolve({ ok: false, error: reason, permanent: false });\n }\n }\n\n async close(): Promise<void> {\n this.closed = true;\n if (this.lifecycle) {\n try { await this.lifecycle.close(); } catch { /* ignore */ }\n this.lifecycle = null;\n }\n this._status = \"closed\";\n }\n\n /** True when the broker rejected our session_hello as unknown — caller\n * may want to skip per-session presence entirely on this mesh. */\n get isBrokerUnsupported(): boolean { return this.brokerUnsupported; }\n}\n\nfunction defaultLog(level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n}\n",
|
|
128
|
+
"/**\n * Per-launch session broker WebSocket.\n *\n * Owned by the daemon, one per registered session. Holds a long-lived\n * presence row on the broker keyed on the session's ephemeral pubkey\n * (rather than the parent member's stable pubkey). Sibling sessions —\n * two `claudemesh launch` runs in the same cwd — finally see each other\n * in `peer list` because their presence rows coexist instead of fighting\n * over the same memberPubkey snapshot.\n *\n * Differences from `DaemonBrokerClient`:\n * - Uses session_hello (1.30.0+ broker), with a parent-vouched\n * attestation provided at construction time.\n * - Does NOT carry list_peers / state / memory RPCs. This client is\n * presence + inbound DM delivery + (1.34.0) outbound send for\n * messages that originate from this session. Routing those through\n * here is what makes the broker fan-out attribute the push to the\n * session pubkey instead of the daemon's stable member pubkey.\n *\n * Outbox routing (1.34.0): the drain worker now consults\n * `outbox.sender_session_pubkey`. If a row was written by an\n * authenticated session and the matching session-WS is `open`, the\n * drain dispatches via `SessionBrokerClient.send()` — this\n * connection's `conn.sessionPubkey` server-side is the session pubkey,\n * so the broker's existing fan-out attribution\n * (`senderPubkey: conn.sessionPubkey ?? conn.memberPubkey`) just works.\n * Pre-1.34.0 every drain went through DaemonBrokerClient (member-WS),\n * so every push showed up as \"from <daemon-member-pubkey>\" regardless\n * of which session typed `claudemesh send`.\n *\n * Old brokers reply with `unknown_message_type` on session_hello — we\n * surface that as a one-shot `error` event and the daemon decides\n * whether to fall back. For 1.30.0 we just log + retry; the broker is\n * expected to be deployed first.\n *\n * Spec: .artifacts/specs/2026-05-04-per-session-presence.md.\n *\n * 2026-05-04: lifecycle (connect / hello-ack / close-reconnect) lives\n * in `ws-lifecycle.ts`. This class supplies session_hello content and\n * routes the inbound onPush; the helper handles the rest.\n */\n\nimport { hostname as osHostname } from \"node:os\";\n\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\nimport { signSessionHello } from \"~/services/broker/session-hello-sig.js\";\nimport { connectWsWithBackoff, type WsLifecycle, type WsStatus } from \"./ws-lifecycle.js\";\nimport type { BrokerSendArgs, BrokerSendResult } from \"./broker.js\";\n\nexport type SessionBrokerStatus = WsStatus;\n\n/** Ack-tracking shape, mirrors DaemonBrokerClient.PendingAck. Kept\n * internal — callers see only the resolved BrokerSendResult. */\ninterface PendingAck {\n resolve: (r: BrokerSendResult) => void;\n timer: NodeJS.Timeout;\n}\n\nconst SEND_ACK_TIMEOUT_MS = 15_000;\n\n/** Heuristic: which broker-reported send errors are permanent enough\n * that the drain worker should give up rather than retry. Mirrors the\n * daemon-WS classifier so behavior is identical regardless of which\n * socket the row went out on. */\nfunction classifyPermanent(error: string): boolean {\n return /unknown|invalid|forbidden|not_authorized|target_not_found/i.test(error);\n}\n\nexport interface ParentAttestation {\n sessionPubkey: string;\n parentMemberPubkey: string;\n /** Unix ms. Broker rejects > now+24h or already past. */\n expiresAt: number;\n signature: string;\n}\n\nexport interface SessionBrokerOptions {\n mesh: JoinedMesh;\n /** Per-launch ephemeral keypair. */\n sessionPubkey: string;\n sessionSecretKey: string;\n /** Parent-vouched attestation, signed by mesh.secretKey at launch time. */\n parentAttestation: ParentAttestation;\n /** Stable session_id from the launch (used for dedup on the broker). */\n sessionId: string;\n /** Display name override for this session. */\n displayName?: string;\n /** Initial groups. Format mirrors the regular hello. */\n groups?: Array<{ name: string; role?: string }>;\n /** Role tag (informational, not auth-bearing). */\n role?: string;\n /** Working directory (informational, surfaced in peer list). */\n cwd?: string;\n /** Pid of the launched session (NOT the daemon). */\n pid: number;\n onStatusChange?: (s: SessionBrokerStatus) => void;\n /**\n * Inbound push/inbound dispatch. The broker fans messages targeted at\n * a session pubkey out over the corresponding session WS — without\n * this callback they hit the floor and the daemon's inbox.db never\n * sees them. Wired in run.ts to a handleBrokerPush call that decrypts\n * with this session's secret key (member key as fallback).\n */\n onPush?: (msg: Record<string, unknown>) => void;\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n}\n\nexport class SessionBrokerClient {\n private lifecycle: WsLifecycle | null = null;\n private _status: SessionBrokerStatus = \"closed\";\n private closed = false;\n /** Set when the broker rejects session_hello with `unknown_message_type` —\n * older brokers without the 1.30.0 surface. We stop retrying. */\n private brokerUnsupported = false;\n /** 1.34.0: outbound send tracking. Keyed by client_message_id. The\n * drain worker registers an entry on dispatch; the WS message\n * handler resolves it on broker `ack`. Times out after 15s. */\n private pendingAcks = new Map<string, PendingAck>();\n /** 1.34.0: dispatchers queued while the WS is reconnecting — flushed\n * in onStatusChange when status flips to `open`. Mirrors the\n * daemon-WS `opens` array. */\n private opens: Array<() => void> = [];\n\n constructor(private opts: SessionBrokerOptions) {}\n\n get status(): SessionBrokerStatus { return this._status; }\n get meshSlug(): string { return this.opts.mesh.slug; }\n get sessionPubkey(): string { return this.opts.sessionPubkey; }\n\n private log = (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => {\n (this.opts.log ?? defaultLog)(level, msg, {\n mesh: this.opts.mesh.slug,\n session_pubkey: this.opts.sessionPubkey.slice(0, 12),\n ...meta,\n });\n };\n\n /** Open the WS, run session_hello, resolve once the broker accepts. */\n async connect(): Promise<void> {\n if (this.closed) throw new Error(\"client_closed\");\n if (this._status === \"connecting\" || this._status === \"open\") return;\n\n this.lifecycle = await connectWsWithBackoff({\n url: this.opts.mesh.brokerUrl,\n buildHello: async () => {\n const { timestamp, signature } = await signSessionHello({\n meshId: this.opts.mesh.meshId,\n parentMemberPubkey: this.opts.mesh.pubkey,\n sessionPubkey: this.opts.sessionPubkey,\n sessionSecretKey: this.opts.sessionSecretKey,\n });\n return {\n type: \"session_hello\",\n meshId: this.opts.mesh.meshId,\n parentMemberId: this.opts.mesh.memberId,\n parentMemberPubkey: this.opts.mesh.pubkey,\n sessionPubkey: this.opts.sessionPubkey,\n parentAttestation: this.opts.parentAttestation,\n displayName: this.opts.displayName,\n sessionId: this.opts.sessionId,\n pid: this.opts.pid,\n cwd: this.opts.cwd ?? process.cwd(),\n hostname: osHostname(),\n peerType: \"ai\" as const,\n channel: \"claudemesh-session\",\n ...(this.opts.groups && this.opts.groups.length > 0 ? { groups: this.opts.groups } : {}),\n ...(this.opts.role ? { role: this.opts.role } : {}),\n timestamp,\n signature,\n };\n },\n isHelloAck: (msg) => msg.type === \"hello_ack\",\n onMessage: (msg) => {\n if (msg.type === \"error\") {\n // Older brokers respond with `unknown_message_type` to session_hello;\n // surface that so the daemon can decide to skip per-session presence\n // rather than churn through reconnects. Setting `closed` halts the\n // helper's reconnect loop on the next close.\n this.log(\"warn\", \"broker_error\", { code: msg.code, message: msg.message });\n if (msg.code === \"unknown_message_type\") {\n this.brokerUnsupported = true;\n this.closed = true;\n void this.lifecycle?.close();\n }\n return;\n }\n\n // 1.34.0: outbox `send` ack arriving on the session-WS. Resolves\n // the Promise the drain worker is awaiting. Mirrors the\n // daemon-WS handler exactly.\n if (msg.type === \"ack\") {\n const id = String(msg.id ?? \"\");\n const ack = this.pendingAcks.get(id);\n if (ack) {\n this.pendingAcks.delete(id);\n clearTimeout(ack.timer);\n if (typeof msg.error === \"string\" && msg.error.length > 0) {\n ack.resolve({ ok: false, error: msg.error, permanent: classifyPermanent(msg.error) });\n } else {\n ack.resolve({ ok: true, messageId: String(msg.messageId ?? id) });\n }\n }\n return;\n }\n\n // 1.32.1 — DMs targeted at the launched session's pubkey arrive\n // here, NOT on the daemon's member-keyed WS. Forward to the\n // daemon-level push handler so they land in inbox.db.\n if (msg.type === \"push\" || msg.type === \"inbound\") {\n // 1.34.8: drop self-echoes. Some broker fan-out paths mirror an\n // outbound DM back to the originating session-WS; without this\n // guard the sender's own message lands in inbox.db, publishes a\n // `message` bus event, and Claude Code surfaces it as\n // `← claudemesh: <self>: <text>` immediately after the user\n // typed `claudemesh send`. Caught in the 2026-05-04 two-session\n // smoke. Match on session pubkey only — sibling sessions of the\n // same member share `senderMemberPubkey`, so a member-level\n // filter would wrongly drop legit sibling DMs.\n const senderPubkey = String((msg as Record<string, unknown>).senderPubkey ?? \"\").toLowerCase();\n if (senderPubkey && senderPubkey === this.opts.sessionPubkey.toLowerCase()) {\n this.log(\"info\", \"self_echo_dropped\", { sender: senderPubkey.slice(0, 12) });\n return;\n }\n this.opts.onPush?.(msg);\n return;\n }\n },\n onStatusChange: (s) => {\n this._status = s;\n this.opts.onStatusChange?.(s);\n if (s === \"open\") {\n // 1.34.0: flush queued send dispatchers so any outbox row that\n // tried to dispatch while we were reconnecting goes out now.\n const queued = this.opens.slice();\n this.opens.length = 0;\n for (const fn of queued) {\n try { fn(); } catch (e) { this.log(\"warn\", \"session_open_handler_failed\", { err: String(e) }); }\n }\n } else if (s === \"closed\" || s === \"reconnecting\") {\n // Fail any in-flight acks so the drain worker can retry/backoff\n // instead of hanging on a dead promise. The daemon-WS does the\n // same thing via onBeforeReconnect; we centralize it here\n // because session-broker uses status transitions directly.\n this.failPendingAcks(`session_ws_${s}`);\n }\n },\n log: (level, msg, meta) => this.log(level, `session_broker_${msg}`, meta),\n });\n }\n\n /** v2 agentic-comms (M1): send `client_ack` back to the broker after\n * successfully landing an inbound push in inbox.db. Broker uses the\n * ack to set `delivered_at`. Best-effort. */\n sendClientAck(clientMessageId: string, brokerMessageId: string | null): void {\n if (this._status !== \"open\" || !this.lifecycle) return;\n try {\n this.lifecycle.send({\n type: \"client_ack\",\n clientMessageId,\n ...(brokerMessageId ? { brokerMessageId } : {}),\n });\n } catch { /* drop; lease re-delivers */ }\n }\n\n /** True when underlying socket is OPEN-ready for direct sends. */\n isOpen(): boolean {\n const sock = this.lifecycle?.ws;\n return !!sock && sock.readyState === sock.OPEN;\n }\n\n /**\n * 1.34.0 — Send one outbox row over the session-WS. Same wire format\n * as DaemonBrokerClient.send, but routed via this connection so the\n * broker's fan-out attributes the push to the session pubkey.\n *\n * Used by the drain worker for rows whose `sender_session_pubkey`\n * matches this client's session pubkey. When the WS is reconnecting\n * the dispatcher is queued via `opens` and flushed on the next\n * status flip.\n */\n send(req: BrokerSendArgs): Promise<BrokerSendResult> {\n return new Promise<BrokerSendResult>((resolve) => {\n const dispatch = () => {\n if (!this.isOpen() || !this.lifecycle) {\n resolve({ ok: false, error: \"session_ws_not_open\", permanent: false });\n return;\n }\n const id = req.client_message_id;\n const timer = setTimeout(() => {\n if (this.pendingAcks.delete(id)) {\n resolve({ ok: false, error: \"ack_timeout\", permanent: false });\n }\n }, SEND_ACK_TIMEOUT_MS);\n this.pendingAcks.set(id, { resolve, timer });\n try {\n this.lifecycle.send({\n type: \"send\",\n id,\n client_message_id: id,\n request_fingerprint: req.request_fingerprint_hex,\n targetSpec: req.targetSpec,\n priority: req.priority,\n nonce: req.nonce,\n ciphertext: req.ciphertext,\n });\n } catch (e) {\n this.pendingAcks.delete(id);\n clearTimeout(timer);\n resolve({ ok: false, error: `ws_write_failed: ${String(e)}`, permanent: false });\n }\n };\n\n if (this._status === \"open\") dispatch();\n else this.opens.push(dispatch);\n });\n }\n\n /** Resolve every in-flight ack with a synthetic failure. Called on\n * WS close so the drain worker stops waiting and either retries or\n * reroutes via the daemon-WS. */\n private failPendingAcks(reason: string): void {\n if (this.pendingAcks.size === 0) return;\n const entries = [...this.pendingAcks.entries()];\n this.pendingAcks.clear();\n for (const [, ack] of entries) {\n clearTimeout(ack.timer);\n ack.resolve({ ok: false, error: reason, permanent: false });\n }\n }\n\n async close(): Promise<void> {\n this.closed = true;\n if (this.lifecycle) {\n try { await this.lifecycle.close(); } catch { /* ignore */ }\n this.lifecycle = null;\n }\n this._status = \"closed\";\n }\n\n /** True when the broker rejected our session_hello as unknown — caller\n * may want to skip per-session presence entirely on this mesh. */\n get isBrokerUnsupported(): boolean { return this.brokerUnsupported; }\n}\n\nfunction defaultLog(level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n}\n",
|
|
129
129
|
"// Outbox drain worker. Walks `outbox.pending` rows, sends them to the\n// broker via DaemonBrokerClient, and transitions row state per spec §4.6.1.\n//\n// Lifecycle per row:\n// pending → inflight → done (broker accepted)\n// → pending+backoff (transient broker error)\n// → dead (permanent broker error or\n// attempt cap reached)\n//\n// Wakeable: insertPending in the IPC handler can call wake() to skip the\n// idle interval. We use a simple promise-replacing pattern instead of a\n// pollable signal.\n\nimport type { SqliteDb } from \"./db/sqlite.js\";\nimport type { DaemonBrokerClient } from \"./broker.js\";\nimport type { SessionBrokerClient } from \"./session-broker.js\";\nimport type { OutboxStatus } from \"./db/outbox.js\";\n\nconst POLL_INTERVAL_MS = 500;\nconst MAX_ATTEMPTS_PER_ROW = 25;\nconst BACKOFF_BASE_MS = 500;\nconst BACKOFF_CAP_MS = 30_000;\n\ninterface PendingRow {\n id: string;\n client_message_id: string;\n request_fingerprint: Uint8Array;\n payload: Uint8Array;\n attempts: number;\n /** Sprint 4 routing fields. NULL on legacy v0.9.0 rows → broadcast fallback. */\n target_spec: string | null;\n nonce: string | null;\n ciphertext: string | null;\n priority: string | null;\n mesh: string | null;\n /** 1.34.0: hex pubkey of the originating session — drain prefers\n * routing via that session's WS so broker fan-out attributes the\n * push to the session pubkey. NULL on cold-path / pre-1.34.0 rows. */\n sender_session_pubkey: string | null;\n}\n\nexport interface DrainOptions {\n db: SqliteDb;\n /** v1.26.0: per-mesh broker map. Drain dispatches each row to the\n * broker keyed by its `mesh` column. Single-mesh daemons pass a\n * Map of size 1; multi-mesh daemons pass one entry per joined mesh. */\n brokers: Map<string, DaemonBrokerClient>;\n /**\n * 1.34.0: lookup for the per-session WS keyed by hex session pubkey.\n * When an outbox row has `sender_session_pubkey` set and this lookup\n * returns an open client, the drain routes via the session-WS so the\n * broker fan-out attributes the push to the session pubkey instead\n * of the daemon's stable member pubkey.\n *\n * Returning `undefined` (or an unopened client) signals \"no session\n * WS available\" — the drain backs off and retries; it does NOT fall\n * back to the daemon-WS, because the row was encrypted with the\n * session secret and would fail to decrypt on the recipient side\n * if attribution silently changed mid-flight.\n */\n getSessionBrokerByPubkey?: (sessionPubkey: string) => SessionBrokerClient | undefined;\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n}\n\nexport interface DrainHandle {\n wake(): void;\n close(): Promise<void>;\n}\n\nexport function startDrainWorker(opts: DrainOptions): DrainHandle {\n const log = opts.log ?? defaultLog;\n let stopped = false;\n let wakeResolve: (() => void) | null = null;\n let wakePromise = new Promise<void>((r) => { wakeResolve = r; });\n\n const wake = () => {\n if (wakeResolve) {\n const r = wakeResolve;\n wakeResolve = null;\n r();\n }\n };\n\n const tick = async () => {\n while (!stopped) {\n try { await drainOnce(opts, log); }\n catch (e) { log(\"warn\", \"drain_tick_failed\", { err: String(e) }); }\n // Sleep up to POLL_INTERVAL_MS, but wake immediately on signal.\n await Promise.race([\n wakePromise,\n new Promise<void>((r) => setTimeout(r, POLL_INTERVAL_MS)),\n ]);\n // Reset wake promise after each loop.\n wakePromise = new Promise<void>((r) => { wakeResolve = r; });\n }\n };\n\n void tick();\n\n return {\n wake,\n close: async () => { stopped = true; wake(); },\n };\n}\n\nasync function drainOnce(opts: DrainOptions, log: NonNullable<DrainOptions[\"log\"]>): Promise<void> {\n const now = Date.now();\n const rows = opts.db.prepare(`\n SELECT id, client_message_id, request_fingerprint, payload, attempts,\n target_spec, nonce, ciphertext, priority, mesh,\n sender_session_pubkey\n FROM outbox\n WHERE status = 'pending' AND next_attempt_at <= ?\n ORDER BY enqueued_at\n LIMIT 32\n `).all<PendingRow>(now);\n\n if (rows.length === 0) return;\n\n for (const row of rows) {\n if (markInflight(opts.db, row.id, now) === 0) continue; // raced with another drainer\n const fpHex = bufferToHex(row.request_fingerprint);\n\n // v1.26.0: pick the daemon-WS broker keyed by the row's mesh.\n // Legacy rows (mesh=NULL) fall back to the only broker if there's\n // exactly one; otherwise mark dead because we don't know where to\n // send them.\n let daemonBroker: DaemonBrokerClient | undefined;\n if (row.mesh) {\n daemonBroker = opts.brokers.get(row.mesh);\n } else if (opts.brokers.size === 1) {\n daemonBroker = opts.brokers.values().next().value;\n }\n if (!daemonBroker) {\n log(\"warn\", \"drain_no_broker_for_mesh\", { id: row.id, mesh: row.mesh ?? \"(null)\" });\n markDead(opts.db, row.id, `no_broker_for_mesh:${row.mesh ?? \"null\"}`);\n continue;\n }\n\n // 1.34.0: when the row was written by an authenticated session,\n // dispatch via the matching SessionBrokerClient so broker fan-out\n // attributes the push to the session pubkey. Encryption is\n // session-secret based on those rows, so we MUST NOT silently fall\n // back to the daemon-WS — the recipient's decrypt would fail. If\n // the session-WS is closed (reconnecting / session terminated), we\n // back off and retry.\n let sessionBroker: SessionBrokerClient | undefined;\n if (row.sender_session_pubkey && opts.getSessionBrokerByPubkey) {\n sessionBroker = opts.getSessionBrokerByPubkey(row.sender_session_pubkey);\n }\n\n // Sprint 4: use the row's resolved target/ciphertext if present.\n // Legacy v0.9.0 rows (NULL on these columns) fall back to the\n // broadcast smoke-test shape so existing in-flight rows still drain.\n let targetSpec: string;\n let nonce: string;\n let ciphertext: string;\n let priority: \"now\" | \"next\" | \"low\";\n if (row.target_spec && row.nonce && row.ciphertext) {\n targetSpec = row.target_spec;\n nonce = row.nonce;\n ciphertext = row.ciphertext;\n priority = (row.priority === \"now\" || row.priority === \"low\") ? row.priority : \"next\";\n } else {\n targetSpec = \"*\";\n nonce = await randomNonce();\n ciphertext = Buffer.from(row.payload).toString(\"base64\");\n priority = \"next\";\n }\n\n const sendArgs = {\n targetSpec,\n priority,\n nonce,\n ciphertext,\n client_message_id: row.client_message_id,\n request_fingerprint_hex: fpHex,\n };\n\n let res;\n try {\n if (row.sender_session_pubkey) {\n // Session-attributed row. Require an open session-WS — see comment\n // above on why we don't fall back to the daemon-WS.\n if (!sessionBroker || !sessionBroker.isOpen()) {\n log(\"info\", \"drain_session_ws_not_ready\", {\n id: row.id, session_pubkey: row.sender_session_pubkey.slice(0, 12),\n });\n backoffPending(opts.db, row.id, row.attempts + 1, \"session_ws_not_open\", \"session_ws_not_open\");\n continue;\n }\n res = await sessionBroker.send(sendArgs);\n } else {\n res = await daemonBroker.send(sendArgs);\n }\n } catch (e) {\n log(\"warn\", \"drain_send_threw\", { id: row.id, err: String(e) });\n backoffPending(opts.db, row.id, row.attempts + 1, \"exception\", String(e));\n continue;\n }\n\n if (res.ok) {\n markDone(opts.db, row.id, res.messageId, Date.now());\n } else if (res.permanent) {\n log(\"warn\", \"drain_permanent_failure\", { id: row.id, err: res.error });\n markDead(opts.db, row.id, res.error);\n } else if (row.attempts + 1 >= MAX_ATTEMPTS_PER_ROW) {\n log(\"warn\", \"drain_max_attempts\", { id: row.id, err: res.error });\n markDead(opts.db, row.id, `max_attempts: ${res.error}`);\n } else {\n backoffPending(opts.db, row.id, row.attempts + 1, \"retry\", res.error);\n }\n }\n}\n\nfunction markInflight(db: SqliteDb, id: string, now: number): number {\n return Number(db.prepare(`\n UPDATE outbox\n SET status = 'inflight', attempts = attempts + 1, next_attempt_at = ?\n WHERE id = ? AND status = 'pending'\n `).run(now + BACKOFF_CAP_MS, id).changes);\n}\n\nfunction markDone(db: SqliteDb, id: string, brokerMessageId: string, now: number) {\n db.prepare(`\n UPDATE outbox\n SET status = 'done', delivered_at = ?, broker_message_id = ?, last_error = NULL\n WHERE id = ?\n `).run(now, brokerMessageId, id);\n}\n\nfunction markDead(db: SqliteDb, id: string, err: string) {\n db.prepare(`UPDATE outbox SET status = 'dead', last_error = ? WHERE id = ?`).run(err, id);\n}\n\nfunction backoffPending(db: SqliteDb, id: string, attempts: number, _kind: string, err: string) {\n const wait = Math.min(BACKOFF_CAP_MS, BACKOFF_BASE_MS * (2 ** Math.min(attempts, 12)));\n const next = Date.now() + wait;\n db.prepare(`\n UPDATE outbox\n SET status = 'pending', attempts = ?, next_attempt_at = ?, last_error = ?\n WHERE id = ?\n `).run(attempts, next, err, id);\n}\n\nfunction bufferToHex(b: Uint8Array): string {\n let s = \"\";\n for (let i = 0; i < b.length; i++) s += b[i]!.toString(16).padStart(2, \"0\");\n return s;\n}\n\nasync function randomNonce(): Promise<string> {\n const { randomBytes } = await import(\"node:crypto\");\n return randomBytes(24).toString(\"base64\");\n}\n\nfunction defaultLog(level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n}\n\n// Suppress unused-status warning under strict tsc:\nconst _statuses: OutboxStatus[] = [\"pending\", \"inflight\", \"done\", \"dead\", \"aborted\"];\nvoid _statuses;\n",
|
|
130
|
+
"// 1.34.8: TTL prune for inbox.db.\n//\n// The inbox grows monotonically — every received DM lands as a row and\n// nothing removes it except an explicit `claudemesh inbox flush`. For\n// chatty meshes that's tens of thousands of rows over a few weeks.\n// SQLite handles that volume fine, but the rows are sitting there\n// forever and `claudemesh inbox` queries get slower as the table grows.\n//\n// The pruner runs hourly inside the daemon process and deletes rows\n// whose received_at is older than `retentionMs`. Default is 30 days,\n// which is generous for the \"I went on holiday and want to see what I\n// missed\" case but won't carry old rows into next year.\n//\n// Best-effort: a failure logs a warning and the pruner keeps trying on\n// the next interval. There's no shared state to corrupt — pruneInboxBefore\n// is a single DELETE statement.\n\nimport { pruneInboxBefore } from \"./db/inbox.js\";\nimport type { SqliteDb } from \"./db/sqlite.js\";\n\nexport interface InboxPrunerOptions {\n db: SqliteDb;\n /** Retention window in ms. Rows with received_at < (now - retentionMs)\n * are deleted. Default: 30 days. */\n retentionMs?: number;\n /** How often to run the prune. Default: 1 hour. */\n intervalMs?: number;\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n}\n\nexport interface InboxPrunerHandle {\n stop: () => void;\n}\n\nconst DEFAULT_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;\nconst DEFAULT_INTERVAL_MS = 60 * 60 * 1000;\n\nexport function startInboxPruner(opts: InboxPrunerOptions): InboxPrunerHandle {\n const retentionMs = opts.retentionMs ?? DEFAULT_RETENTION_MS;\n const intervalMs = opts.intervalMs ?? DEFAULT_INTERVAL_MS;\n const log = opts.log ?? defaultLog;\n\n const tick = (): void => {\n try {\n const cutoff = Date.now() - retentionMs;\n const removed = pruneInboxBefore(opts.db, cutoff);\n if (removed > 0) {\n log(\"info\", \"inbox_prune_completed\", {\n removed,\n retention_days: Math.round(retentionMs / (24 * 60 * 60 * 1000)),\n });\n }\n } catch (e) {\n log(\"warn\", \"inbox_prune_failed\", { err: String(e) });\n }\n };\n\n // Run once at startup so a daemon that's been down for weeks reaps\n // immediately rather than waiting an hour.\n tick();\n\n const handle = setInterval(tick, intervalMs);\n // Don't let the pruner block daemon shutdown.\n if (typeof handle.unref === \"function\") handle.unref();\n\n return { stop: () => clearInterval(handle) };\n}\n\nfunction defaultLog(level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) {\n const line = JSON.stringify({ level, msg, ...meta, ts: new Date().toISOString() });\n if (level === \"info\") process.stdout.write(line + \"\\n\");\n else process.stderr.write(line + \"\\n\");\n}\n",
|
|
130
131
|
"// Decode incoming broker pushes and dedupe-insert them into the daemon\n// inbox. Publishes a `message` event to the daemon's event bus on every\n// new row (idempotent receives suppress the event).\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { SqliteDb } from \"./db/sqlite.js\";\nimport { insertIfNew } from \"./db/inbox.js\";\nimport type { EventBus } from \"./events.js\";\nimport { decryptDirect } from \"~/services/crypto/facade.js\";\n\nexport interface InboundContext {\n db: SqliteDb;\n bus: EventBus;\n meshSlug: string;\n /** Daemon's mesh secret key hex, used to decrypt sealed DMs. */\n recipientSecretKeyHex?: string;\n /** Daemon's session secret key hex (rotates per connect). When the\n * sender encrypted to our session pubkey, decrypt with this instead. */\n sessionSecretKeyHex?: string;\n /** v2 agentic-comms (M1): emit `client_ack` back to the broker after\n * the message lands in inbox.db. Broker uses the ack to set\n * `delivered_at` (atomic at-least-once). Without it, the broker's\n * 30s lease expires and re-delivers — correct but noisy. The WS\n * client owns this callback because it's the one that owns the\n * socket; inbound.ts just signals \"I accepted this id.\" */\n ackClientMessage?: (clientMessageId: string, brokerMessageId: string | null) => void;\n log?: (level: \"info\" | \"warn\" | \"error\", msg: string, meta?: Record<string, unknown>) => void;\n}\n\n/**\n * Spec §4.5: dedupe by `client_message_id` (broker echoes it from the\n * sender's daemon). When the broker doesn't yet propagate the field\n * (Sprint 7 prereq), fall back to the broker's `messageId` as the\n * dedupe key — at-least-once still holds; we just lose the\n * sender-attested form.\n */\nexport async function handleBrokerPush(msg: Record<string, unknown>, ctx: InboundContext): Promise<void> {\n // System/topology pushes (peer_join, tick, …) — emit verbatim.\n if (msg.subtype === \"system\" && typeof msg.event === \"string\") {\n ctx.bus.publish(mapSystemEventKind(msg.event), {\n mesh: ctx.meshSlug,\n event: msg.event,\n ...(msg.eventData as Record<string, unknown> | undefined ?? {}),\n });\n return;\n }\n\n if (msg.type !== \"push\") return;\n\n const brokerMessageId = stringOrNull(msg.messageId);\n const senderPubkey = stringOrNull(msg.senderPubkey) ?? \"\";\n const senderName = stringOrNull(msg.senderName) ?? senderPubkey.slice(0, 8);\n const senderMemberPk = stringOrNull(msg.senderMemberPubkey);\n const topic = stringOrNull(msg.topic);\n const replyToId = stringOrNull(msg.replyToId);\n const ciphertext = stringOrNull(msg.ciphertext) ?? \"\";\n const nonce = stringOrNull(msg.nonce) ?? \"\";\n const createdAt = stringOrNull(msg.createdAt);\n const priority = stringOrNull(msg.priority) ?? \"next\";\n const subtype = stringOrNull(msg.subtype);\n // Forward-compat: Sprint 7 brokers will send client_message_id alongside.\n const clientMessageId = stringOrNull(msg.client_message_id) ?? brokerMessageId ?? randomUUID();\n const body = await decryptOrFallback({\n ciphertext, nonce, senderPubkey, ctx,\n });\n\n const id = randomUUID();\n const inserted = insertIfNew(ctx.db, {\n id,\n client_message_id: clientMessageId,\n broker_message_id: brokerMessageId,\n mesh: ctx.meshSlug,\n topic,\n sender_pubkey: senderPubkey,\n sender_name: senderName,\n body,\n meta: createdAt ? JSON.stringify({ created_at: createdAt }) : null,\n received_at: Date.now(),\n reply_to_id: replyToId,\n });\n\n // Whether the row was newly inserted or already existed (dedupe), the\n // broker still wants to know we received and processed this message —\n // ack regardless. Skipping ack on dedupe would leak: broker would\n // re-deliver after lease, and the receiver would re-dedupe forever.\n ctx.ackClientMessage?.(clientMessageId, brokerMessageId);\n\n if (!inserted) return; // already had this id; no event\n\n ctx.bus.publish(\"message\", {\n id,\n mesh: ctx.meshSlug,\n client_message_id: clientMessageId,\n broker_message_id: brokerMessageId,\n sender_pubkey: senderPubkey,\n sender_member_pubkey: senderMemberPk,\n sender_name: senderName,\n topic,\n reply_to_id: replyToId,\n priority,\n ...(subtype ? { subtype } : {}),\n body,\n created_at: createdAt,\n });\n}\n\nasync function decryptOrFallback(args: {\n ciphertext: string;\n nonce: string;\n senderPubkey: string;\n ctx: InboundContext;\n}): Promise<string | null> {\n const { ciphertext, nonce, senderPubkey, ctx } = args;\n if (!ciphertext) return null;\n\n // Try DM decrypt first (sender used crypto_box against our session/member key).\n if (nonce && senderPubkey) {\n const envelope = { nonce, ciphertext };\n // Try session key (sender encrypted to our session pubkey, the common case).\n if (ctx.sessionSecretKeyHex) {\n const pt = await decryptDirect(envelope, senderPubkey, ctx.sessionSecretKeyHex);\n if (pt !== null) return pt;\n }\n // Fall back to member key (sender encrypted to our stable mesh pubkey).\n if (ctx.recipientSecretKeyHex) {\n const pt = await decryptDirect(envelope, senderPubkey, ctx.recipientSecretKeyHex);\n if (pt !== null) return pt;\n }\n }\n\n // Fallback: broadcast/topic posts are base64 plaintext (existing CLI\n // pre-encryption convention for `*` and `@topic`). Sprint 7+ adds per-\n // topic symmetric keys.\n try { return Buffer.from(ciphertext, \"base64\").toString(\"utf8\"); }\n catch (e) { ctx.log?.(\"warn\", \"inbound_b64_decode_failed\", { err: String(e) }); return null; }\n}\n\nfunction stringOrNull(v: unknown): string | null {\n return typeof v === \"string\" && v.length > 0 ? v : null;\n}\n\nfunction mapSystemEventKind(event: string): \"peer_join\" | \"peer_leave\" | \"system\" {\n if (event === \"peer_joined\") return \"peer_join\";\n if (event === \"peer_left\") return \"peer_leave\";\n return \"system\";\n}\n",
|
|
131
132
|
"// Accidental-clone detection per spec §2.2. Catches restored backups\n// and copy-pasted homedirs by comparing a stable host fingerprint\n// against the one we wrote at first daemon start.\n//\n// NOT attacker-grade: anyone copying both the keypair AND the\n// host_fingerprint defeats this. Threat model §16 says so explicitly.\n\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { createHash, randomUUID } from \"node:crypto\";\nimport { networkInterfaces } from \"node:os\";\n\nimport { DAEMON_PATHS } from \"./paths.js\";\n\nexport type ClonePolicy = \"refuse\" | \"warn\" | \"allow\";\n\nexport interface FingerprintRecord {\n schema_version: 1;\n fingerprint: string; // sha256 hex\n host_id: string; // raw, for diagnostics\n stable_mac: string; // raw, for diagnostics\n written_at: string; // ISO date\n}\n\nexport interface FingerprintCheck {\n result: \"first_run\" | \"match\" | \"mismatch\" | \"unavailable\";\n current: FingerprintRecord;\n stored?: FingerprintRecord;\n}\n\nconst FILE_NAME = \"host_fingerprint.json\";\n\nfunction path(): string { return join(DAEMON_PATHS.DAEMON_DIR, FILE_NAME); }\n\n/** Compute (without writing) the current host fingerprint. */\nexport function computeCurrentFingerprint(): FingerprintRecord {\n // Per spec §2.2 / followups doc: when neither host_id nor a stable MAC\n // are readable we fall back to a persisted random UUID. We DO NOT mint\n // a fresh random per call (that would make every restart look like a\n // clone). Instead, leave host_id empty when unknown — the MAC alone\n // identifies the host for accidental-clone detection.\n const host_id = readHostId() ?? \"\";\n const stable_mac = pickStableMac() ?? \"\";\n const fp = createHash(\"sha256\").update(host_id, \"utf8\").update(\"\\0\").update(stable_mac, \"utf8\").digest(\"hex\");\n return {\n schema_version: 1,\n fingerprint: fp,\n host_id,\n stable_mac,\n written_at: new Date().toISOString(),\n };\n}\n\n// `randomUUID` is no longer used after the random-fallback fix; keep the\n// import only if other helpers need it.\nvoid randomUUID;\n\n/** Read or write the persisted fingerprint and report the result. */\nexport function checkFingerprint(): FingerprintCheck {\n const current = computeCurrentFingerprint();\n if (!existsSync(path())) {\n writeFileSync(path(), JSON.stringify(current, null, 2), { mode: 0o600 });\n return { result: \"first_run\", current };\n }\n let stored: FingerprintRecord;\n try { stored = JSON.parse(readFileSync(path(), \"utf8\")) as FingerprintRecord; }\n catch { return { result: \"unavailable\", current }; }\n if (stored.fingerprint === current.fingerprint) return { result: \"match\", current, stored };\n return { result: \"mismatch\", current, stored };\n}\n\n/** Re-write the fingerprint file. Used by `daemon accept-host`. */\nexport function acceptCurrentHost(): FingerprintRecord {\n const current = computeCurrentFingerprint();\n writeFileSync(path(), JSON.stringify(current, null, 2), { mode: 0o600 });\n return current;\n}\n\n// ── platform helpers ───────────────────────────────────────────────────\n\nfunction readHostId(): string | null {\n // Linux: /etc/machine-id (or /var/lib/dbus/machine-id).\n if (process.platform === \"linux\") {\n for (const p of [\"/etc/machine-id\", \"/var/lib/dbus/machine-id\"]) {\n try {\n const raw = readFileSync(p, \"utf8\").trim();\n if (raw) return `linux:${raw}`;\n } catch { /* try next */ }\n }\n return null;\n }\n // macOS: IOPlatformUUID via ioreg. We avoid spawning by checking ENV.\n if (process.platform === \"darwin\") {\n // No reliable file; fall back to MAC-only fingerprint.\n return null;\n }\n // Windows: HKLM\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid. Skip in v0.9.0.\n return null;\n}\n\nfunction pickStableMac(): string | null {\n const ifs = networkInterfaces();\n const candidates: string[] = [];\n for (const [name, addrs] of Object.entries(ifs)) {\n if (!addrs) continue;\n if (isIgnoredInterface(name)) continue;\n for (const a of addrs) {\n if (a.internal) continue;\n if (!a.mac || a.mac === \"00:00:00:00:00:00\") continue;\n candidates.push(`${name}::${a.mac}`);\n break;\n }\n }\n if (candidates.length === 0) return null;\n candidates.sort(); // lex by interface name\n const first = candidates[0]!;\n const idx = first.indexOf(\"::\");\n return idx >= 0 ? first.slice(idx + 2) : first;\n}\n\nfunction isIgnoredInterface(name: string): boolean {\n return /^(lo|docker|br-|veth|tap|tun|tailscale|wg|utun|ppp|vboxnet|vmnet|awdl|llw)/i.test(name);\n}\n",
|
|
132
|
-
"import { existsSync, mkdirSync, readFileSync } from \"node:fs\";\n\nimport { DAEMON_PATHS } from \"./paths.js\";\nimport { acquireSingletonLock, releaseSingletonLock } from \"./lock.js\";\nimport { ensureLocalToken } from \"./local-token.js\";\nimport { startIpcServer } from \"./ipc/server.js\";\nimport { setRegistryHooks, startReaper, type SessionInfo } from \"./session-registry.js\";\nimport { openSqlite, type SqliteDb } from \"./db/sqlite.js\";\nimport { migrateOutbox } from \"./db/outbox.js\";\nimport { migrateInbox } from \"./db/inbox.js\";\nimport { DaemonBrokerClient } from \"./broker.js\";\nimport { SessionBrokerClient } from \"./session-broker.js\";\nimport { startDrainWorker, type DrainHandle } from \"./drain.js\";\nimport { handleBrokerPush } from \"./inbound.js\";\nimport { EventBus } from \"./events.js\";\nimport { checkFingerprint, type ClonePolicy } from \"./identity.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\n\nexport interface RunDaemonOptions {\n /** Disable TCP loopback (UDS-only). Defaults true in container envs. */\n tcpEnabled?: boolean;\n publicHealthCheck?: boolean;\n /** Mesh slug to attach to. Required when the user has joined multiple meshes. */\n mesh?: string;\n /** Daemon's display name on the mesh. */\n displayName?: string;\n /** Behavior on host_fingerprint mismatch. Defaults 'refuse'. */\n clonePolicy?: ClonePolicy;\n}\n\n/** Detect a few common container environments to pick UDS-only by default. */\nfunction detectContainer(): boolean {\n if (process.env.KUBERNETES_SERVICE_HOST) return true;\n if (process.env.CONTAINER === \"1\") return true;\n try {\n if (existsSync(\"/.dockerenv\")) return true;\n const cg = readFileSync(\"/proc/1/cgroup\", \"utf8\");\n if (/(docker|kubepods|containerd)/.test(cg)) return true;\n } catch { /* not linux or no /proc */ }\n return false;\n}\n\nexport async function runDaemon(opts: RunDaemonOptions = {}): Promise<number> {\n mkdirSync(DAEMON_PATHS.DAEMON_DIR, { recursive: true, mode: 0o700 });\n\n const lock = acquireSingletonLock();\n if (lock.result === \"already-running\") {\n process.stderr.write(`daemon already running (pid ${lock.pid})\\n`);\n return 1;\n }\n if (lock.result === \"stale\") {\n process.stderr.write(`recovered stale pid file; starting fresh\\n`);\n }\n\n // Accidental-clone detection (spec §2.2). Default policy: refuse.\n const fpCheck = checkFingerprint();\n const policy: ClonePolicy = opts.clonePolicy ?? \"refuse\";\n if (fpCheck.result === \"mismatch\") {\n const msg = `host_fingerprint mismatch: this daemon dir was started on a different host.`;\n if (policy === \"refuse\") {\n process.stderr.write(`${msg}\\n`);\n process.stderr.write(` stored host_id: ${fpCheck.stored?.host_id}\\n`);\n process.stderr.write(` current host_id: ${fpCheck.current.host_id}\\n`);\n process.stderr.write(`Run \\`claudemesh daemon accept-host\\` to write a fresh fingerprint, or\\n`);\n process.stderr.write(`run \\`claudemesh daemon remint\\` to mint a new keypair (Sprint 7+).\\n`);\n releaseSingletonLock();\n return 4;\n }\n if (policy === \"warn\") {\n process.stderr.write(`WARN: ${msg} (continuing per [clone] policy=warn)\\n`);\n }\n // 'allow' is silent.\n }\n if (fpCheck.result === \"first_run\") {\n process.stdout.write(JSON.stringify({\n msg: \"host_fingerprint_written\", fingerprint_prefix: fpCheck.current.fingerprint.slice(0, 16), ts: new Date().toISOString(),\n }) + \"\\n\");\n }\n\n const localToken = ensureLocalToken();\n const tcpEnabled = opts.tcpEnabled ?? !detectContainer();\n\n let outboxDb: SqliteDb;\n let inboxDb: SqliteDb;\n try {\n outboxDb = await openSqlite(DAEMON_PATHS.OUTBOX_DB);\n migrateOutbox(outboxDb);\n inboxDb = await openSqlite(DAEMON_PATHS.INBOX_DB);\n migrateInbox(inboxDb);\n } catch (err) {\n process.stderr.write(`db open failed: ${String(err)}\\n`);\n releaseSingletonLock();\n return 1;\n }\n\n const bus = new EventBus();\n\n // 1.26.0 — multi-mesh by default. With --mesh <slug>, the daemon\n // scopes to one mesh (legacy mode). Without it, attaches to every\n // joined mesh simultaneously so ambient mode (raw `claude`) works\n // for all meshes with one daemon process.\n const cfg = readConfig();\n let meshes: Array<typeof cfg.meshes[number]>;\n if (opts.mesh) {\n const found = cfg.meshes.find((m) => m.slug === opts.mesh);\n if (!found) {\n process.stderr.write(`mesh not found: ${opts.mesh}\\n`);\n process.stderr.write(`joined meshes: ${cfg.meshes.map((m) => m.slug).join(\", \") || \"(none)\"}\\n`);\n releaseSingletonLock();\n try { outboxDb.close(); } catch { /* ignore */ }\n return 2;\n }\n meshes = [found];\n } else if (cfg.meshes.length === 0) {\n process.stderr.write(`no mesh joined; run \\`claudemesh join <invite-url>\\` first\\n`);\n releaseSingletonLock();\n try { outboxDb.close(); } catch { /* ignore */ }\n return 2;\n } else {\n meshes = cfg.meshes;\n }\n\n // Spin up one broker per mesh. Connection failures are non-fatal:\n // the outbox keeps queuing per-mesh and reconnect logic in\n // DaemonBrokerClient handles reattach.\n const brokers = new Map<string, DaemonBrokerClient>();\n const meshConfigs = new Map<string, typeof cfg.meshes[number]>();\n for (const mesh of meshes) {\n meshConfigs.set(mesh.slug, mesh);\n const broker: DaemonBrokerClient = new DaemonBrokerClient(mesh, {\n displayName: opts.displayName,\n onStatusChange: (s) => {\n process.stdout.write(JSON.stringify({\n msg: \"broker_status\", status: s, mesh: mesh.slug, ts: new Date().toISOString(),\n }) + \"\\n\");\n bus.publish(\"broker_status\", { mesh: mesh.slug, status: s });\n },\n onPush: (m) => {\n // Daemon-WS is member-keyed, not session-keyed. Session-targeted\n // DMs land on the per-session WS (SessionBrokerClient) since\n // 1.32.1 and decrypt with the session secret there. Anything that\n // arrives here can only be member-keyed (broadcasts, member DMs,\n // system events) — pass member secret only.\n void handleBrokerPush(m, {\n db: inboxDb,\n bus,\n meshSlug: mesh.slug,\n recipientSecretKeyHex: mesh.secretKey,\n // v2 agentic-comms (M1): client_ack closes the at-least-once\n // loop. Broker holds the row claimed (not delivered) until ack.\n ackClientMessage: (cmid, bmid) => broker.sendClientAck(cmid, bmid),\n });\n },\n });\n broker.connect().catch((err) => process.stderr.write(`broker connect failed for ${mesh.slug}: ${String(err)}\\n`));\n brokers.set(mesh.slug, broker);\n }\n\n // 1.30.0 — per-session broker presence. Always on. Older CLIs that\n // don't include `presence` material in the register body just won't\n // get a session WS; the daemon's own member-keyed broker still\n // covers them.\n //\n // Two indices: by token (used for register/deregister lifecycle,\n // since the registry hands us back the SessionInfo with its token)\n // and by session pubkey (used for outbox routing in the drain worker\n // — the outbox row only knows the pubkey, not the token).\n const sessionBrokers = new Map<string, SessionBrokerClient>();\n const sessionBrokersByPubkey = new Map<string, SessionBrokerClient>();\n\n // Start the drain worker. With multi-mesh, drain dispatches each\n // outbox row to its mesh's broker via the `mesh` column.\n // 1.34.0: drain also accepts a session-pubkey lookup so rows\n // written by authenticated sessions route via the matching session-WS\n // (broker fan-out then attributes the push to the session pubkey).\n let drain: DrainHandle | null = null;\n drain = startDrainWorker({\n db: outboxDb,\n brokers,\n getSessionBrokerByPubkey: (pubkey) => sessionBrokersByPubkey.get(pubkey),\n });\n setRegistryHooks({\n onRegister: (info) => {\n if (!info.presence) return;\n const meshConfig = meshConfigs.get(info.mesh);\n if (!meshConfig) {\n process.stderr.write(JSON.stringify({\n level: \"warn\", msg: \"session_broker_no_mesh_config\", mesh: info.mesh,\n ts: new Date().toISOString(),\n }) + \"\\n\");\n return;\n }\n // Drop any pre-existing session WS under this token (re-register).\n const prior = sessionBrokers.get(info.token);\n if (prior) {\n sessionBrokers.delete(info.token);\n // 1.34.0: keep both indices in sync.\n if (sessionBrokersByPubkey.get(prior.sessionPubkey) === prior) {\n sessionBrokersByPubkey.delete(prior.sessionPubkey);\n }\n prior.close().catch(() => { /* ignore */ });\n }\n // 1.32.1 — wire push delivery. Messages targeted at the launched\n // session's pubkey land on THIS WS, not on the member-keyed one,\n // so without this forward they'd silently disappear (the bug that\n // kept inbox.db at zero rows since 1.30.0). Decrypt prefers the\n // session secret key; member key remains the fallback for legacy\n // member-targeted traffic that happens to fan out here.\n const sessionSecretKeyHex = info.presence.sessionSecretKey;\n const client: SessionBrokerClient = new SessionBrokerClient({\n mesh: meshConfig,\n sessionPubkey: info.presence.sessionPubkey,\n sessionSecretKey: info.presence.sessionSecretKey,\n parentAttestation: info.presence.parentAttestation,\n sessionId: info.sessionId,\n displayName: info.displayName,\n ...(info.role ? { role: info.role } : {}),\n ...(info.cwd ? { cwd: info.cwd } : {}),\n pid: info.pid,\n onPush: (m) => {\n void handleBrokerPush(m, {\n db: inboxDb,\n bus,\n meshSlug: meshConfig.slug,\n recipientSecretKeyHex: meshConfig.secretKey,\n sessionSecretKeyHex,\n // v2 agentic-comms (M1): close the at-least-once loop.\n ackClientMessage: (cmid, bmid) => client.sendClientAck(cmid, bmid),\n });\n },\n });\n sessionBrokers.set(info.token, client);\n sessionBrokersByPubkey.set(info.presence.sessionPubkey, client);\n client.connect().catch((err) =>\n process.stderr.write(JSON.stringify({\n level: \"warn\", msg: \"session_broker_connect_failed\",\n mesh: info.mesh, err: String(err), ts: new Date().toISOString(),\n }) + \"\\n\"),\n );\n },\n onDeregister: (info: SessionInfo) => {\n const client = sessionBrokers.get(info.token);\n if (!client) return;\n sessionBrokers.delete(info.token);\n // 1.34.0: drop the pubkey index iff this client still owns it\n // (a re-register may have already swapped the entry).\n if (sessionBrokersByPubkey.get(client.sessionPubkey) === client) {\n sessionBrokersByPubkey.delete(client.sessionPubkey);\n }\n client.close().catch(() => { /* ignore */ });\n },\n });\n\n startReaper();\n\n const ipc = startIpcServer({\n localToken,\n tcpEnabled,\n publicHealthCheck: opts.publicHealthCheck,\n outboxDb,\n inboxDb,\n bus,\n brokers,\n meshConfigs,\n onPendingInserted: () => drain?.wake(),\n });\n\n try {\n await ipc.ready;\n } catch (err) {\n process.stderr.write(`ipc listen failed: ${String(err)}\\n`);\n releaseSingletonLock();\n return 1;\n }\n\n process.stdout.write(JSON.stringify({\n msg: \"daemon_started\",\n pid: process.pid,\n sock: DAEMON_PATHS.SOCK_FILE,\n tcp: tcpEnabled ? `127.0.0.1:47823` : null,\n meshes: meshes.map((m) => m.slug),\n ts: new Date().toISOString(),\n }) + \"\\n\");\n\n let shuttingDown = false;\n const shutdown = async (sig: string) => {\n if (shuttingDown) return;\n shuttingDown = true;\n process.stdout.write(JSON.stringify({ msg: \"daemon_shutdown\", signal: sig, ts: new Date().toISOString() }) + \"\\n\");\n if (drain) await drain.close();\n for (const b of brokers.values()) {\n try { await b.close(); } catch { /* ignore */ }\n }\n for (const b of sessionBrokers.values()) {\n try { await b.close(); } catch { /* ignore */ }\n }\n sessionBrokers.clear();\n await ipc.close();\n try { outboxDb.close(); } catch { /* ignore */ }\n try { inboxDb.close(); } catch { /* ignore */ }\n releaseSingletonLock();\n process.exit(0);\n };\n\n process.on(\"SIGINT\", () => shutdown(\"SIGINT\"));\n process.on(\"SIGTERM\", () => shutdown(\"SIGTERM\"));\n\n // Hold the event loop open until a signal arrives.\n return new Promise<number>(() => { /* never resolves; signals call process.exit */ });\n}\n",
|
|
133
|
+
"import { existsSync, mkdirSync, readFileSync } from \"node:fs\";\n\nimport { DAEMON_PATHS } from \"./paths.js\";\nimport { acquireSingletonLock, releaseSingletonLock } from \"./lock.js\";\nimport { ensureLocalToken } from \"./local-token.js\";\nimport { startIpcServer } from \"./ipc/server.js\";\nimport { setRegistryHooks, startReaper, type SessionInfo } from \"./session-registry.js\";\nimport { openSqlite, type SqliteDb } from \"./db/sqlite.js\";\nimport { migrateOutbox } from \"./db/outbox.js\";\nimport { migrateInbox } from \"./db/inbox.js\";\nimport { DaemonBrokerClient } from \"./broker.js\";\nimport { SessionBrokerClient } from \"./session-broker.js\";\nimport { startDrainWorker, type DrainHandle } from \"./drain.js\";\nimport { startInboxPruner, type InboxPrunerHandle } from \"./inbox-pruner.js\";\nimport { handleBrokerPush } from \"./inbound.js\";\nimport { EventBus } from \"./events.js\";\nimport { checkFingerprint, type ClonePolicy } from \"./identity.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\n\nexport interface RunDaemonOptions {\n /** Disable TCP loopback (UDS-only). Defaults true in container envs. */\n tcpEnabled?: boolean;\n publicHealthCheck?: boolean;\n /** Mesh slug to attach to. Required when the user has joined multiple meshes. */\n mesh?: string;\n /** Daemon's display name on the mesh. */\n displayName?: string;\n /** Behavior on host_fingerprint mismatch. Defaults 'refuse'. */\n clonePolicy?: ClonePolicy;\n}\n\n/** Detect a few common container environments to pick UDS-only by default. */\nfunction detectContainer(): boolean {\n if (process.env.KUBERNETES_SERVICE_HOST) return true;\n if (process.env.CONTAINER === \"1\") return true;\n try {\n if (existsSync(\"/.dockerenv\")) return true;\n const cg = readFileSync(\"/proc/1/cgroup\", \"utf8\");\n if (/(docker|kubepods|containerd)/.test(cg)) return true;\n } catch { /* not linux or no /proc */ }\n return false;\n}\n\nexport async function runDaemon(opts: RunDaemonOptions = {}): Promise<number> {\n mkdirSync(DAEMON_PATHS.DAEMON_DIR, { recursive: true, mode: 0o700 });\n\n const lock = acquireSingletonLock();\n if (lock.result === \"already-running\") {\n process.stderr.write(`daemon already running (pid ${lock.pid})\\n`);\n return 1;\n }\n if (lock.result === \"stale\") {\n process.stderr.write(`recovered stale pid file; starting fresh\\n`);\n }\n\n // Accidental-clone detection (spec §2.2). Default policy: refuse.\n const fpCheck = checkFingerprint();\n const policy: ClonePolicy = opts.clonePolicy ?? \"refuse\";\n if (fpCheck.result === \"mismatch\") {\n const msg = `host_fingerprint mismatch: this daemon dir was started on a different host.`;\n if (policy === \"refuse\") {\n process.stderr.write(`${msg}\\n`);\n process.stderr.write(` stored host_id: ${fpCheck.stored?.host_id}\\n`);\n process.stderr.write(` current host_id: ${fpCheck.current.host_id}\\n`);\n process.stderr.write(`Run \\`claudemesh daemon accept-host\\` to write a fresh fingerprint, or\\n`);\n process.stderr.write(`run \\`claudemesh daemon remint\\` to mint a new keypair (Sprint 7+).\\n`);\n releaseSingletonLock();\n return 4;\n }\n if (policy === \"warn\") {\n process.stderr.write(`WARN: ${msg} (continuing per [clone] policy=warn)\\n`);\n }\n // 'allow' is silent.\n }\n if (fpCheck.result === \"first_run\") {\n process.stdout.write(JSON.stringify({\n msg: \"host_fingerprint_written\", fingerprint_prefix: fpCheck.current.fingerprint.slice(0, 16), ts: new Date().toISOString(),\n }) + \"\\n\");\n }\n\n const localToken = ensureLocalToken();\n const tcpEnabled = opts.tcpEnabled ?? !detectContainer();\n\n let outboxDb: SqliteDb;\n let inboxDb: SqliteDb;\n try {\n outboxDb = await openSqlite(DAEMON_PATHS.OUTBOX_DB);\n migrateOutbox(outboxDb);\n inboxDb = await openSqlite(DAEMON_PATHS.INBOX_DB);\n migrateInbox(inboxDb);\n } catch (err) {\n process.stderr.write(`db open failed: ${String(err)}\\n`);\n releaseSingletonLock();\n return 1;\n }\n\n const bus = new EventBus();\n\n // 1.26.0 — multi-mesh by default. With --mesh <slug>, the daemon\n // scopes to one mesh (legacy mode). Without it, attaches to every\n // joined mesh simultaneously so ambient mode (raw `claude`) works\n // for all meshes with one daemon process.\n const cfg = readConfig();\n let meshes: Array<typeof cfg.meshes[number]>;\n if (opts.mesh) {\n const found = cfg.meshes.find((m) => m.slug === opts.mesh);\n if (!found) {\n process.stderr.write(`mesh not found: ${opts.mesh}\\n`);\n process.stderr.write(`joined meshes: ${cfg.meshes.map((m) => m.slug).join(\", \") || \"(none)\"}\\n`);\n releaseSingletonLock();\n try { outboxDb.close(); } catch { /* ignore */ }\n return 2;\n }\n meshes = [found];\n } else if (cfg.meshes.length === 0) {\n process.stderr.write(`no mesh joined; run \\`claudemesh join <invite-url>\\` first\\n`);\n releaseSingletonLock();\n try { outboxDb.close(); } catch { /* ignore */ }\n return 2;\n } else {\n meshes = cfg.meshes;\n }\n\n // Spin up one broker per mesh. Connection failures are non-fatal:\n // the outbox keeps queuing per-mesh and reconnect logic in\n // DaemonBrokerClient handles reattach.\n const brokers = new Map<string, DaemonBrokerClient>();\n const meshConfigs = new Map<string, typeof cfg.meshes[number]>();\n for (const mesh of meshes) {\n meshConfigs.set(mesh.slug, mesh);\n const broker: DaemonBrokerClient = new DaemonBrokerClient(mesh, {\n displayName: opts.displayName,\n onStatusChange: (s) => {\n process.stdout.write(JSON.stringify({\n msg: \"broker_status\", status: s, mesh: mesh.slug, ts: new Date().toISOString(),\n }) + \"\\n\");\n bus.publish(\"broker_status\", { mesh: mesh.slug, status: s });\n },\n onPush: (m) => {\n // Daemon-WS is member-keyed, not session-keyed. Session-targeted\n // DMs land on the per-session WS (SessionBrokerClient) since\n // 1.32.1 and decrypt with the session secret there. Anything that\n // arrives here can only be member-keyed (broadcasts, member DMs,\n // system events) — pass member secret only.\n // 1.34.8: drop self-echoes — broker fan-out paths sometimes mirror\n // an outbound back to the originating WS, which previously caused\n // the sender to see their own DM as a `← claudemesh: <self>: ...`\n // channel push. Match on senderMemberPubkey === our member pubkey\n // (member-WS only sees member-attributed traffic, so this is the\n // right axis here; session-WS uses senderPubkey === sessionPubkey).\n const senderMemberPk = String((m as Record<string, unknown>).senderMemberPubkey ?? \"\").toLowerCase();\n const senderPubkey = String((m as Record<string, unknown>).senderPubkey ?? \"\").toLowerCase();\n const ownMember = mesh.pubkey.toLowerCase();\n if (senderMemberPk && senderMemberPk === ownMember && senderPubkey === ownMember) {\n // Only drop when both axes line up: the DM was attributed to\n // OUR member key with no session pubkey overriding it. Sibling\n // sessions of the same member produce senderMemberPubkey ===\n // ownMember but senderPubkey === <session pubkey>, which we\n // want to keep.\n return;\n }\n void handleBrokerPush(m, {\n db: inboxDb,\n bus,\n meshSlug: mesh.slug,\n recipientSecretKeyHex: mesh.secretKey,\n // v2 agentic-comms (M1): client_ack closes the at-least-once\n // loop. Broker holds the row claimed (not delivered) until ack.\n ackClientMessage: (cmid, bmid) => broker.sendClientAck(cmid, bmid),\n });\n },\n });\n broker.connect().catch((err) => process.stderr.write(`broker connect failed for ${mesh.slug}: ${String(err)}\\n`));\n brokers.set(mesh.slug, broker);\n }\n\n // 1.30.0 — per-session broker presence. Always on. Older CLIs that\n // don't include `presence` material in the register body just won't\n // get a session WS; the daemon's own member-keyed broker still\n // covers them.\n //\n // Two indices: by token (used for register/deregister lifecycle,\n // since the registry hands us back the SessionInfo with its token)\n // and by session pubkey (used for outbox routing in the drain worker\n // — the outbox row only knows the pubkey, not the token).\n const sessionBrokers = new Map<string, SessionBrokerClient>();\n const sessionBrokersByPubkey = new Map<string, SessionBrokerClient>();\n\n // Start the drain worker. With multi-mesh, drain dispatches each\n // outbox row to its mesh's broker via the `mesh` column.\n // 1.34.0: drain also accepts a session-pubkey lookup so rows\n // written by authenticated sessions route via the matching session-WS\n // (broker fan-out then attributes the push to the session pubkey).\n let drain: DrainHandle | null = null;\n drain = startDrainWorker({\n db: outboxDb,\n brokers,\n getSessionBrokerByPubkey: (pubkey) => sessionBrokersByPubkey.get(pubkey),\n });\n\n // 1.34.8 — TTL prune for inbox.db. Runs hourly with a 30-day default\n // retention. Without this the inbox grows unbounded; even on a moderate\n // mesh that's tens of thousands of rows over a few weeks. Prune is a\n // single DELETE; failures are non-fatal and the next interval retries.\n const inboxPruner: InboxPrunerHandle = startInboxPruner({ db: inboxDb });\n setRegistryHooks({\n onRegister: (info) => {\n if (!info.presence) return;\n const meshConfig = meshConfigs.get(info.mesh);\n if (!meshConfig) {\n process.stderr.write(JSON.stringify({\n level: \"warn\", msg: \"session_broker_no_mesh_config\", mesh: info.mesh,\n ts: new Date().toISOString(),\n }) + \"\\n\");\n return;\n }\n // Drop any pre-existing session WS under this token (re-register).\n const prior = sessionBrokers.get(info.token);\n if (prior) {\n sessionBrokers.delete(info.token);\n // 1.34.0: keep both indices in sync.\n if (sessionBrokersByPubkey.get(prior.sessionPubkey) === prior) {\n sessionBrokersByPubkey.delete(prior.sessionPubkey);\n }\n prior.close().catch(() => { /* ignore */ });\n }\n // 1.32.1 — wire push delivery. Messages targeted at the launched\n // session's pubkey land on THIS WS, not on the member-keyed one,\n // so without this forward they'd silently disappear (the bug that\n // kept inbox.db at zero rows since 1.30.0). Decrypt prefers the\n // session secret key; member key remains the fallback for legacy\n // member-targeted traffic that happens to fan out here.\n const sessionSecretKeyHex = info.presence.sessionSecretKey;\n const client: SessionBrokerClient = new SessionBrokerClient({\n mesh: meshConfig,\n sessionPubkey: info.presence.sessionPubkey,\n sessionSecretKey: info.presence.sessionSecretKey,\n parentAttestation: info.presence.parentAttestation,\n sessionId: info.sessionId,\n displayName: info.displayName,\n ...(info.role ? { role: info.role } : {}),\n ...(info.cwd ? { cwd: info.cwd } : {}),\n pid: info.pid,\n onPush: (m) => {\n void handleBrokerPush(m, {\n db: inboxDb,\n bus,\n meshSlug: meshConfig.slug,\n recipientSecretKeyHex: meshConfig.secretKey,\n sessionSecretKeyHex,\n // v2 agentic-comms (M1): close the at-least-once loop.\n ackClientMessage: (cmid, bmid) => client.sendClientAck(cmid, bmid),\n });\n },\n });\n sessionBrokers.set(info.token, client);\n sessionBrokersByPubkey.set(info.presence.sessionPubkey, client);\n client.connect().catch((err) =>\n process.stderr.write(JSON.stringify({\n level: \"warn\", msg: \"session_broker_connect_failed\",\n mesh: info.mesh, err: String(err), ts: new Date().toISOString(),\n }) + \"\\n\"),\n );\n },\n onDeregister: (info: SessionInfo) => {\n const client = sessionBrokers.get(info.token);\n if (!client) return;\n sessionBrokers.delete(info.token);\n // 1.34.0: drop the pubkey index iff this client still owns it\n // (a re-register may have already swapped the entry).\n if (sessionBrokersByPubkey.get(client.sessionPubkey) === client) {\n sessionBrokersByPubkey.delete(client.sessionPubkey);\n }\n client.close().catch(() => { /* ignore */ });\n },\n });\n\n startReaper();\n\n const ipc = startIpcServer({\n localToken,\n tcpEnabled,\n publicHealthCheck: opts.publicHealthCheck,\n outboxDb,\n inboxDb,\n bus,\n brokers,\n meshConfigs,\n onPendingInserted: () => drain?.wake(),\n });\n\n try {\n await ipc.ready;\n } catch (err) {\n process.stderr.write(`ipc listen failed: ${String(err)}\\n`);\n releaseSingletonLock();\n return 1;\n }\n\n process.stdout.write(JSON.stringify({\n msg: \"daemon_started\",\n pid: process.pid,\n sock: DAEMON_PATHS.SOCK_FILE,\n tcp: tcpEnabled ? `127.0.0.1:47823` : null,\n meshes: meshes.map((m) => m.slug),\n ts: new Date().toISOString(),\n }) + \"\\n\");\n\n let shuttingDown = false;\n const shutdown = async (sig: string) => {\n if (shuttingDown) return;\n shuttingDown = true;\n process.stdout.write(JSON.stringify({ msg: \"daemon_shutdown\", signal: sig, ts: new Date().toISOString() }) + \"\\n\");\n inboxPruner.stop();\n if (drain) await drain.close();\n for (const b of brokers.values()) {\n try { await b.close(); } catch { /* ignore */ }\n }\n for (const b of sessionBrokers.values()) {\n try { await b.close(); } catch { /* ignore */ }\n }\n sessionBrokers.clear();\n await ipc.close();\n try { outboxDb.close(); } catch { /* ignore */ }\n try { inboxDb.close(); } catch { /* ignore */ }\n releaseSingletonLock();\n process.exit(0);\n };\n\n process.on(\"SIGINT\", () => shutdown(\"SIGINT\"));\n process.on(\"SIGTERM\", () => shutdown(\"SIGTERM\"));\n\n // Hold the event loop open until a signal arrives.\n return new Promise<number>(() => { /* never resolves; signals call process.exit */ });\n}\n",
|
|
133
134
|
"// Service-install for daemon mode (spec §9). Two platforms:\n// - macOS: ~/Library/LaunchAgents/com.claudemesh.daemon.plist (launchctl bootstrap)\n// - Linux: ~/.config/systemd/user/claudemesh-daemon.service (systemctl --user enable)\n//\n// Both run as the invoking user, redirect stdout/stderr to ~/.claudemesh/\n// daemon/daemon.log, restart on crash, and start at login. CI envs are\n// refused unless --allow-ci-persistent is passed (spec §9 / §16.3).\n\nimport { existsSync, mkdirSync, writeFileSync, unlinkSync, readFileSync } from \"node:fs\";\nimport { execSync } from \"node:child_process\";\nimport { homedir } from \"node:os\";\nimport { join, dirname } from \"node:path\";\n\nimport { DAEMON_PATHS } from \"./paths.js\";\n\nexport type ServicePlatform = \"darwin\" | \"linux\";\nexport interface InstallResult {\n platform: ServicePlatform;\n unitPath: string;\n /** Shell snippet that the operator can run to bring the service up now. */\n bootCommand: string;\n}\n\nconst SERVICE_LABEL = \"com.claudemesh.daemon\";\nconst SYSTEMD_UNIT = \"claudemesh-daemon.service\";\n\nexport function detectPlatform(): ServicePlatform | null {\n if (process.platform === \"darwin\") return \"darwin\";\n if (process.platform === \"linux\") return \"linux\";\n return null;\n}\n\nfunction isCi(): boolean {\n return !!(process.env.CI || process.env.GITHUB_ACTIONS || process.env.GITLAB_CI || process.env.BUILDKITE\n || process.env.CIRCLECI || process.env.JENKINS_URL);\n}\n\nexport interface InstallArgs {\n /** Path to the `claudemesh` binary, e.g. /opt/homebrew/bin/claudemesh */\n binaryPath: string;\n /**\n * Optional mesh slug to lock the daemon to. Omit (the new default) so\n * the daemon attaches to every joined mesh — matches the 1.26.0\n * multi-mesh design. Single-mesh lock is preserved for users who\n * explicitly want it (testing, CI, host with one mesh).\n */\n meshSlug?: string;\n /** Optional display name. */\n displayName?: string;\n /** Override the auto-detected CI refusal. */\n allowCi?: boolean;\n}\n\nexport function installService(args: InstallArgs): InstallResult {\n const platform = detectPlatform();\n if (!platform) throw new Error(`unsupported platform: ${process.platform}`);\n if (isCi() && !args.allowCi) {\n throw new Error(\"Refusing to install persistent service in CI; pass --allow-ci-persistent to override.\");\n }\n if (!existsSync(args.binaryPath)) {\n throw new Error(`binary not found at ${args.binaryPath}`);\n }\n // Make sure the daemon dir exists so the launchd/systemd log paths resolve.\n mkdirSync(DAEMON_PATHS.DAEMON_DIR, { recursive: true, mode: 0o700 });\n\n if (platform === \"darwin\") return installDarwin(args);\n return installLinux(args);\n}\n\nexport function uninstallService(): { platform: ServicePlatform | null; removed: string[] } {\n const platform = detectPlatform();\n const removed: string[] = [];\n if (platform === \"darwin\") {\n const p = darwinPlistPath();\n try { execSync(`launchctl bootout gui/$(id -u)/${SERVICE_LABEL}`, { stdio: \"ignore\" }); } catch { /* not loaded */ }\n if (existsSync(p)) { unlinkSync(p); removed.push(p); }\n } else if (platform === \"linux\") {\n const p = linuxUnitPath();\n try { execSync(`systemctl --user disable --now ${SYSTEMD_UNIT}`, { stdio: \"ignore\" }); } catch { /* not loaded */ }\n if (existsSync(p)) { unlinkSync(p); removed.push(p); }\n }\n return { platform, removed };\n}\n\n// ── macOS ──────────────────────────────────────────────────────────────\n\nfunction darwinPlistPath(): string {\n return join(homedir(), \"Library\", \"LaunchAgents\", `${SERVICE_LABEL}.plist`);\n}\n\nfunction installDarwin(args: InstallArgs): InstallResult {\n const plist = darwinPlistPath();\n mkdirSync(dirname(plist), { recursive: true });\n const log = DAEMON_PATHS.LOG_FILE;\n // Resolve `node` explicitly. The bin script in node_modules/.bin starts\n // with `#!/usr/bin/env node`; under launchd's restricted PATH that would\n // resolve `node` to a system Node (often the wrong major) instead of the\n // one that installed claudemesh-cli. Pinning process.execPath here means\n // the daemon always runs under the same Node that ran `claudemesh install`.\n const nodeBin = process.execPath;\n const meshArgs = [\n `<string>${escapeXml(args.binaryPath)}</string>`,\n \"<string>daemon</string>\",\n \"<string>up</string>\",\n ...(args.meshSlug\n ? [\"<string>--mesh</string>\", `<string>${escapeXml(args.meshSlug)}</string>`]\n : []),\n ...(args.displayName ? [\"<string>--name</string>\", `<string>${escapeXml(args.displayName)}</string>`] : []),\n ].join(\"\\n \");\n\n const xml = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>${SERVICE_LABEL}</string>\n <key>ProgramArguments</key>\n <array>\n <string>${escapeXml(nodeBin)}</string>\n ${meshArgs}\n </array>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <true/>\n <key>StandardOutPath</key>\n <string>${escapeXml(log)}</string>\n <key>StandardErrorPath</key>\n <string>${escapeXml(log)}</string>\n <key>WorkingDirectory</key>\n <string>${escapeXml(homedir())}</string>\n <key>EnvironmentVariables</key>\n <dict>\n <key>HOME</key>\n <string>${escapeXml(homedir())}</string>\n <key>PATH</key>\n <string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>\n </dict>\n</dict>\n</plist>\n`;\n writeFileSync(plist, xml, { mode: 0o644 });\n\n // Stop any prior incarnation BEFORE bootstrapping so an upgrade run\n // doesn't hit \"service already loaded\" → bootstrap exit-5 IO_ERROR.\n // Both calls are best-effort: launchctl prints to stderr if the unit\n // isn't loaded, and we don't want to fail install for that.\n try {\n execSync(`launchctl bootout gui/$(id -u)/${SERVICE_LABEL}`, { stdio: \"ignore\" });\n } catch { /* unit not loaded — fine */ }\n // Also kill any orphaned daemon process (started manually or by an\n // older script) so the new launchd-managed one can claim the singleton\n // lock on first start.\n try {\n const pidPath = DAEMON_PATHS.PID_FILE;\n if (existsSync(pidPath)) {\n const pid = parseInt(readFileSync(pidPath, \"utf8\").trim(), 10);\n if (Number.isFinite(pid) && pid > 0) {\n try { process.kill(pid, \"SIGTERM\"); } catch { /* already dead */ }\n }\n }\n } catch { /* pid file missing — fine */ }\n\n return {\n platform: \"darwin\",\n unitPath: plist,\n bootCommand: `launchctl bootstrap gui/$(id -u) ${shellQuote(plist)}`,\n };\n}\n\n// ── Linux ──────────────────────────────────────────────────────────────\n\nfunction linuxUnitPath(): string {\n return join(homedir(), \".config\", \"systemd\", \"user\", SYSTEMD_UNIT);\n}\n\nfunction installLinux(args: InstallArgs): InstallResult {\n const unit = linuxUnitPath();\n mkdirSync(dirname(unit), { recursive: true });\n // Same node-pinning rationale as macOS — systemd's User= environment is\n // similarly minimal; resolve node by absolute path.\n const nodeBin = process.execPath;\n const execArgs = [\n \"daemon\", \"up\",\n ...(args.meshSlug ? [\"--mesh\", args.meshSlug] : []),\n ...(args.displayName ? [\"--name\", args.displayName] : []),\n ].map(shellQuote).join(\" \");\n\n const content = `[Unit]\nDescription=claudemesh daemon (peer mesh runtime)\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nExecStart=${shellQuote(nodeBin)} ${shellQuote(args.binaryPath)} ${execArgs}\nRestart=always\nRestartSec=3\nStandardOutput=append:${DAEMON_PATHS.LOG_FILE}\nStandardError=append:${DAEMON_PATHS.LOG_FILE}\nEnvironment=PATH=/usr/local/bin:/usr/bin:/bin\n\n[Install]\nWantedBy=default.target\n`;\n writeFileSync(unit, content, { mode: 0o644 });\n\n // Mirror the darwin path: stop the previous unit (if any) so an\n // upgrade run replaces it cleanly, plus kill any orphaned manual\n // daemon process holding the singleton lock.\n try {\n execSync(`systemctl --user stop ${SYSTEMD_UNIT}`, { stdio: \"ignore\" });\n } catch { /* not loaded — fine */ }\n try {\n const pidPath = DAEMON_PATHS.PID_FILE;\n if (existsSync(pidPath)) {\n const pid = parseInt(readFileSync(pidPath, \"utf8\").trim(), 10);\n if (Number.isFinite(pid) && pid > 0) {\n try { process.kill(pid, \"SIGTERM\"); } catch { /* already dead */ }\n }\n }\n } catch { /* pid file missing — fine */ }\n\n return {\n platform: \"linux\",\n unitPath: unit,\n bootCommand: `systemctl --user daemon-reload && systemctl --user enable --now ${SYSTEMD_UNIT}`,\n };\n}\n\n// ── helpers ────────────────────────────────────────────────────────────\n\nfunction escapeXml(s: string): string {\n return s.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\n}\n\nfunction shellQuote(s: string): string {\n if (/^[\\w@%+=:,./-]+$/.test(s)) return s;\n return \"'\" + s.replace(/'/g, \"'\\\"'\\\"'\") + \"'\";\n}\n\n/** Diagnostic helper: dump current install status for `claudemesh daemon status --json`. */\nexport function readInstalledUnit(): { platform: ServicePlatform | null; path: string | null; content: string | null } {\n const platform = detectPlatform();\n if (!platform) return { platform: null, path: null, content: null };\n const path = platform === \"darwin\" ? darwinPlistPath() : linuxUnitPath();\n if (!existsSync(path)) return { platform, path: null, content: null };\n try { return { platform, path, content: readFileSync(path, \"utf8\") }; }\n catch { return { platform, path, content: null }; }\n}\n",
|
|
134
135
|
"import { runDaemon } from \"~/daemon/run.js\";\nimport { ipc, IpcError } from \"~/daemon/ipc/client.js\";\nimport { readRunningPid } from \"~/daemon/lock.js\";\nimport { DAEMON_PATHS } from \"~/daemon/paths.js\";\n\nexport interface DaemonOptions {\n json?: boolean;\n noTcp?: boolean;\n publicHealth?: boolean;\n mesh?: string;\n displayName?: string;\n /** outbox-list status filter, set from boolean flags --failed/--pending/etc. */\n outboxStatus?: \"pending\" | \"inflight\" | \"done\" | \"dead\" | \"aborted\";\n /** outbox requeue: optional id to mint a fresh client_message_id with. */\n newClientId?: string;\n}\n\nexport async function runDaemonCommand(\n sub: string | undefined,\n opts: DaemonOptions,\n rest: string[] = [],\n): Promise<number> {\n switch (sub) {\n case undefined:\n return printDaemonUsage();\n\n case \"up\":\n case \"start\":\n return runDaemon({\n tcpEnabled: !opts.noTcp,\n publicHealthCheck: opts.publicHealth,\n mesh: opts.mesh,\n displayName: opts.displayName,\n });\n\n case \"help\":\n case \"--help\":\n case \"-h\":\n return printDaemonUsage();\n\n case \"status\":\n return runStatus(opts);\n\n case \"version\":\n return runVersion(opts);\n\n case \"down\":\n case \"stop\":\n return runStop(opts);\n\n case \"accept-host\":\n return runAcceptHost(opts);\n\n case \"outbox\":\n return runOutbox(rest, opts);\n\n case \"install-service\":\n return runInstallService(opts);\n\n case \"uninstall-service\":\n return runUninstallService(opts);\n\n default:\n process.stderr.write(`unknown daemon subcommand: ${sub}\\n\\n`);\n printDaemonUsage(process.stderr);\n return 2;\n }\n}\n\nfunction printDaemonUsage(stream: NodeJS.WritableStream = process.stdout): number {\n stream.write(`claudemesh daemon — long-lived peer mesh runtime (v0.9.0)\n\nUSAGE\n claudemesh daemon <command> [options]\n\nCOMMANDS\n up | start start the daemon in the foreground\n status show running pid + IPC health\n version ipc + schema version of the running daemon\n down | stop stop the running daemon (SIGTERM, then wait)\n accept-host pin the current host fingerprint\n outbox list list local outbox rows (newest first)\n outbox requeue <id> re-enqueue an aborted / dead outbox row\n install-service --mesh <s> write launchd (macOS) / systemd-user (Linux) unit\n uninstall-service remove the platform service unit\n\nOPTIONS\n --mesh <slug> attach to / target this mesh\n --name <displayName> override CLAUDEMESH_DISPLAY_NAME\n --no-tcp disable the loopback TCP listener (UDS only)\n --public-health expose /v1/health unauthenticated on TCP\n --json machine-readable output where supported\n\nOUTBOX FLAGS (for 'daemon outbox list')\n --pending --inflight --done --failed --aborted filter by status\n\nOUTBOX FLAGS (for 'daemon outbox requeue')\n --new-client-id <id> mint the new row with this client_message_id\n\nSee ${\"https://claudemesh.com/docs\"} for the full daemon spec.\n`);\n return 0;\n}\n\ninterface OutboxRowResp {\n id: string;\n client_message_id: string;\n status: string;\n attempts: number;\n enqueued_at: string;\n next_attempt_at: string;\n delivered_at: string | null;\n broker_message_id: string | null;\n last_error: string | null;\n aborted_at: string | null;\n aborted_by: string | null;\n superseded_by: string | null;\n payload_bytes: number;\n}\n\nasync function runOutbox(rest: string[], opts: DaemonOptions): Promise<number> {\n const sub = rest[0];\n switch (sub) {\n case undefined:\n case \"list\": {\n const status = opts.outboxStatus;\n const path = `/v1/outbox${status ? `?status=${status}` : \"\"}`;\n try {\n const res = await ipc<{ items: OutboxRowResp[] }>({ path });\n if (opts.json) {\n process.stdout.write(JSON.stringify(res.body) + \"\\n\");\n return 0;\n }\n if (!res.body.items?.length) {\n process.stdout.write(\"(empty)\\n\");\n return 0;\n }\n for (const r of res.body.items) {\n const tag = r.status.padEnd(8);\n const bm = r.broker_message_id ? ` → ${r.broker_message_id}` : \"\";\n const err = r.last_error ? ` last_error=\"${r.last_error.slice(0, 60)}\"` : \"\";\n process.stdout.write(`${tag} ${r.id} cid=${r.client_message_id} attempts=${r.attempts}${bm}${err}\\n`);\n }\n return 0;\n } catch (err) {\n process.stderr.write(`daemon unreachable: ${String(err)}\\n`);\n return 1;\n }\n }\n\n case \"requeue\": {\n const id = rest[1];\n if (!id) { process.stderr.write(\"usage: claudemesh daemon outbox requeue <id> [--new-client-id <id>]\\n\"); return 2; }\n const newClientMessageId = opts.newClientId;\n try {\n const res = await ipc<{\n aborted_row_id: string; new_row_id: string; new_client_message_id: string; error?: string;\n }>({\n method: \"POST\",\n path: \"/v1/outbox/requeue\",\n body: { id, new_client_message_id: newClientMessageId },\n });\n if (res.status === 200) {\n if (opts.json) process.stdout.write(JSON.stringify(res.body) + \"\\n\");\n else process.stdout.write(\n `requeued: aborted ${res.body.aborted_row_id} → new ${res.body.new_row_id} ` +\n `(client_message_id=${res.body.new_client_message_id})\\n`,\n );\n return 0;\n }\n process.stderr.write(`requeue failed (${res.status}): ${res.body.error ?? \"unknown\"}\\n`);\n return 1;\n } catch (err) {\n process.stderr.write(`daemon unreachable: ${String(err)}\\n`);\n return 1;\n }\n }\n\n default:\n process.stderr.write(`unknown outbox subcommand: ${sub}\\n`);\n process.stderr.write(`usage: claudemesh daemon outbox [list|requeue <id>]\\n`);\n return 2;\n }\n}\n\nasync function runInstallService(opts: DaemonOptions): Promise<number> {\n const { installService, detectPlatform } = await import(\"~/daemon/service-install.js\");\n const platform = detectPlatform();\n if (!platform) {\n process.stderr.write(`unsupported platform: ${process.platform}\\n`);\n return 2;\n }\n // Resolve the binary path. Prefer the running argv[0] when it's an\n // installed claudemesh binary; fall back to whichever `claudemesh` is\n // first on PATH. --mesh is now optional: omit it to attach to every\n // joined mesh (the 1.26.0 multi-mesh default); pass it to lock the\n // unit to a single mesh for testing or single-mesh hosts.\n let binary = process.argv[1] ?? \"\";\n if (!binary || /\\.ts$/.test(binary) || /node_modules|src\\/entrypoints/.test(binary)) {\n try {\n const { execSync } = await import(\"node:child_process\");\n binary = execSync(\"which claudemesh\", { encoding: \"utf8\" }).trim();\n } catch {\n process.stderr.write(`couldn't resolve a 'claudemesh' binary on PATH; install via npm/homebrew first\\n`);\n return 1;\n }\n }\n try {\n const r = installService({\n binaryPath: binary,\n ...(opts.mesh ? { meshSlug: opts.mesh } : {}),\n ...(opts.displayName ? { displayName: opts.displayName } : {}),\n });\n if (opts.json) {\n process.stdout.write(JSON.stringify({ ok: true, ...r }) + \"\\n\");\n } else {\n process.stdout.write(`installed ${r.platform} service unit: ${r.unitPath}\\n`);\n process.stdout.write(`bring it up now: ${r.bootCommand}\\n`);\n }\n return 0;\n } catch (err) {\n process.stderr.write(`install-service failed: ${String(err)}\\n`);\n return 1;\n }\n}\n\nasync function runUninstallService(opts: DaemonOptions): Promise<number> {\n const { uninstallService } = await import(\"~/daemon/service-install.js\");\n const r = uninstallService();\n if (opts.json) process.stdout.write(JSON.stringify(r) + \"\\n\");\n else if (r.removed.length === 0) process.stdout.write(\"no service unit installed\\n\");\n else process.stdout.write(`removed: ${r.removed.join(\", \")}\\n`);\n return 0;\n}\n\nasync function runAcceptHost(opts: DaemonOptions): Promise<number> {\n const { acceptCurrentHost } = await import(\"~/daemon/identity.js\");\n const fp = acceptCurrentHost();\n if (opts.json) process.stdout.write(JSON.stringify({ ok: true, fingerprint_prefix: fp.fingerprint.slice(0, 16) }) + \"\\n\");\n else process.stdout.write(`host fingerprint accepted: ${fp.fingerprint.slice(0, 16)}…\\n`);\n return 0;\n}\n\nasync function runStatus(opts: DaemonOptions): Promise<number> {\n const pid = readRunningPid();\n if (!pid) {\n if (opts.json) process.stdout.write(JSON.stringify({ running: false }) + \"\\n\");\n else process.stdout.write(\"daemon: not running\\n\");\n return 1;\n }\n try {\n const res = await ipc<{ ok: boolean; pid: number }>({ path: \"/v1/health\" });\n if (opts.json) {\n process.stdout.write(JSON.stringify({ running: true, pid, health: res.body }) + \"\\n\");\n } else {\n process.stdout.write(`daemon: running (pid ${pid})\\n`);\n process.stdout.write(`socket: ${DAEMON_PATHS.SOCK_FILE}\\n`);\n }\n return 0;\n } catch (err) {\n if (opts.json) process.stdout.write(JSON.stringify({ running: true, pid, ipc_error: String(err) }) + \"\\n\");\n else process.stdout.write(`daemon: pid ${pid} alive but IPC unreachable (${String(err)})\\n`);\n return 1;\n }\n}\n\nasync function runVersion(opts: DaemonOptions): Promise<number> {\n try {\n const res = await ipc<Record<string, unknown>>({ path: \"/v1/version\" });\n if (opts.json) process.stdout.write(JSON.stringify(res.body) + \"\\n\");\n else {\n const v = res.body as { daemon_version?: string; ipc_api?: string; schema_version?: number };\n process.stdout.write(`daemon ${v.daemon_version ?? \"unknown\"} (ipc ${v.ipc_api ?? \"?\"}, schema ${v.schema_version ?? \"?\"})\\n`);\n }\n return 0;\n } catch (err) {\n if (err instanceof IpcError) {\n process.stderr.write(`${err.message}\\n`);\n return err.status === 401 ? 3 : 1;\n }\n process.stderr.write(`daemon unreachable: ${String(err)}\\n`);\n return 1;\n }\n}\n\nasync function runStop(opts: DaemonOptions): Promise<number> {\n const pid = readRunningPid();\n if (!pid) {\n if (opts.json) process.stdout.write(JSON.stringify({ stopped: false, reason: \"not_running\" }) + \"\\n\");\n else process.stdout.write(\"daemon: not running\\n\");\n return 0;\n }\n try {\n process.kill(pid, \"SIGTERM\");\n } catch (err) {\n process.stderr.write(`failed to signal pid ${pid}: ${String(err)}\\n`);\n return 1;\n }\n // Brief wait for the daemon to release its lock cleanly.\n for (let i = 0; i < 50; i++) {\n await new Promise<void>((r) => setTimeout(r, 100));\n if (!readRunningPid()) {\n if (opts.json) process.stdout.write(JSON.stringify({ stopped: true, pid }) + \"\\n\");\n else process.stdout.write(`daemon: stopped (was pid ${pid})\\n`);\n return 0;\n }\n }\n if (opts.json) process.stdout.write(JSON.stringify({ stopped: false, pid, reason: \"shutdown_timeout\" }) + \"\\n\");\n else process.stdout.write(`daemon: signaled but did not exit within 5s (pid ${pid})\\n`);\n return 1;\n}\n",
|
|
135
136
|
"/**\n * `claudemesh install` / `uninstall` — manage Claude Code MCP registration.\n *\n * install:\n * 1. Preflight: bun is on PATH, this package's MCP entry is on disk.\n * 2. Read ~/.claude.json (or empty object if absent).\n * 3. Add/update `mcpServers.claudemesh` with the resolved entry path.\n * 4. Write back with 0600 perms.\n * 5. Verify via read-back, print success.\n *\n * uninstall:\n * 1. Read ~/.claude.json (bail if missing).\n * 2. Delete `mcpServers.claudemesh` if present.\n * 3. Write back.\n *\n * Both are idempotent — re-running install is a no-op if the entry is\n * already correct, and uninstall is a no-op if no entry exists.\n */\n\nimport {\n chmodSync,\n copyFileSync,\n existsSync,\n mkdirSync,\n readFileSync,\n writeFileSync,\n} from \"node:fs\";\nimport { homedir, platform } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { spawnSync } from \"node:child_process\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim, yellow } from \"~/ui/styles.js\";\n\nconst MCP_NAME = \"claudemesh\";\nconst CLAUDE_CONFIG = join(homedir(), \".claude.json\");\nconst CLAUDE_SETTINGS = join(homedir(), \".claude\", \"settings.json\");\nconst HOOK_COMMAND_STOP = \"claudemesh hook idle\";\nconst HOOK_COMMAND_USER_PROMPT = \"claudemesh hook working\";\nconst HOOK_MARKER = \"claudemesh hook \";\n\ntype McpEntry = {\n command: string;\n args?: string[];\n env?: Record<string, string>;\n};\n\ninterface HookCommand {\n type: \"command\";\n command: string;\n}\ninterface HookMatcher {\n matcher?: string;\n hooks: HookCommand[];\n}\ntype HooksConfig = Record<string, HookMatcher[]>;\n\nfunction readClaudeConfig(): Record<string, unknown> {\n if (!existsSync(CLAUDE_CONFIG)) return {};\n const text = readFileSync(CLAUDE_CONFIG, \"utf-8\").trim();\n if (!text) return {};\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch (e) {\n throw new Error(\n `failed to parse ${CLAUDE_CONFIG}: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n}\n\n/**\n * Create a timestamped backup of ~/.claude.json before any write.\n */\nfunction backupClaudeConfig(): void {\n if (!existsSync(CLAUDE_CONFIG)) return;\n const backupDir = join(dirname(CLAUDE_CONFIG), \".claude\", \"backups\");\n mkdirSync(backupDir, { recursive: true });\n const ts = Date.now();\n const dest = join(backupDir, `.claude.json.pre-claudemesh.${ts}`);\n copyFileSync(CLAUDE_CONFIG, dest);\n}\n\n/**\n * Atomic read-merge-write: re-reads ~/.claude.json at write time and\n * patches ONLY the `claudemesh` MCP entry. Never touches other keys.\n * Returns the action taken (\"added\" | \"updated\" | \"unchanged\").\n */\nfunction patchMcpServer(entry: McpEntry): \"added\" | \"updated\" | \"unchanged\" {\n backupClaudeConfig();\n const cfg = readClaudeConfig();\n const servers =\n ((cfg.mcpServers as Record<string, McpEntry>) ?? {});\n if (!cfg.mcpServers) cfg.mcpServers = servers;\n\n const existing = servers[MCP_NAME];\n let action: \"added\" | \"updated\" | \"unchanged\";\n if (!existing) {\n servers[MCP_NAME] = entry;\n action = \"added\";\n } else if (entriesEqual(existing, entry)) {\n return \"unchanged\";\n } else {\n servers[MCP_NAME] = entry;\n action = \"updated\";\n }\n\n flushClaudeConfig(cfg);\n return action;\n}\n\n/**\n * Atomic read-merge-write: re-reads ~/.claude.json at write time and\n * removes ONLY the `claudemesh` MCP entry. Never touches other keys.\n * Returns true if an entry was removed.\n */\nfunction removeMcpServer(): boolean {\n if (!existsSync(CLAUDE_CONFIG)) return false;\n backupClaudeConfig();\n const cfg = readClaudeConfig();\n const servers = cfg.mcpServers as Record<string, McpEntry> | undefined;\n if (!servers || !(MCP_NAME in servers)) return false;\n delete servers[MCP_NAME];\n cfg.mcpServers = servers;\n flushClaudeConfig(cfg);\n return true;\n}\n\n/** Low-level write — callers must backup + merge first. */\nfunction flushClaudeConfig(obj: Record<string, unknown>): void {\n mkdirSync(dirname(CLAUDE_CONFIG), { recursive: true });\n writeFileSync(\n CLAUDE_CONFIG,\n JSON.stringify(obj, null, 2) + \"\\n\",\n \"utf-8\",\n );\n try {\n chmodSync(CLAUDE_CONFIG, 0o600);\n } catch {\n /* windows has no chmod */\n }\n}\n\n\n/** Check `bun` is on PATH — OS-agnostic, node:child_process. */\nfunction bunAvailable(): boolean {\n const res =\n platform() === \"win32\"\n ? spawnSync(\"where\", [\"bun\"])\n : spawnSync(\"sh\", [\"-c\", \"command -v bun\"]);\n return res.status === 0;\n}\n\n/** Is this file running from a bundled `dist/` directory? */\nfunction isBundledFile(p: string): boolean {\n // Match any file under dist/ — e.g. dist/index.js or dist/entrypoints/cli.js.\n return /[/\\\\]dist[/\\\\]/.test(p);\n}\n\n/** Absolute path to this CLI's entry file. */\nfunction resolveEntry(): string {\n const here = fileURLToPath(import.meta.url);\n // Bundled: this file IS reachable as the entry; return self.\n // Source: walk up to apps/cli/src/index.ts (legacy) or fall back.\n if (isBundledFile(here)) return here;\n return resolve(dirname(here), \"..\", \"index.ts\");\n}\n\n/** Find the bundled `skills/` directory at install time. Walks up from\n * the entry file: dist/entrypoints/cli.js → dist/ → package root → skills/. */\nfunction resolveBundledSkillsDir(): string | null {\n const here = fileURLToPath(import.meta.url);\n // Bundled: <pkg>/dist/entrypoints/cli.js → walk up two levels to <pkg>\n // Source: <pkg>/src/commands/install.ts → walk up two levels to <pkg>\n const pkgRoot = resolve(dirname(here), \"..\", \"..\");\n const skillsDir = join(pkgRoot, \"skills\");\n if (existsSync(skillsDir)) return skillsDir;\n return null;\n}\n\n/** ~/.claude/skills/ — where Claude Code looks for user-scoped skills. */\nconst CLAUDE_SKILLS_ROOT = join(homedir(), \".claude\", \"skills\");\n\n/**\n * Copy bundled skills into ~/.claude/skills/. Idempotent — overwrites\n * existing files (so updates flow through on `claudemesh install` re-run).\n * Returns the list of skill names installed.\n */\nfunction installSkills(): string[] {\n const src = resolveBundledSkillsDir();\n if (!src) return [];\n // Each subdirectory of skills/ is one skill (matches Claude Code convention).\n const fs = require(\"node:fs\") as typeof import(\"node:fs\");\n const installed: string[] = [];\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const srcDir = join(src, entry.name);\n const dstDir = join(CLAUDE_SKILLS_ROOT, entry.name);\n mkdirSync(dstDir, { recursive: true });\n for (const file of fs.readdirSync(srcDir, { withFileTypes: true })) {\n if (!file.isFile()) continue;\n copyFileSync(join(srcDir, file.name), join(dstDir, file.name));\n }\n installed.push(entry.name);\n }\n return installed;\n}\n\n/** Remove claudemesh-shipped skills from ~/.claude/skills/. Returns names removed. */\nfunction uninstallSkills(): string[] {\n const src = resolveBundledSkillsDir();\n if (!src) return [];\n const fs = require(\"node:fs\") as typeof import(\"node:fs\");\n const removed: string[] = [];\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const dstDir = join(CLAUDE_SKILLS_ROOT, entry.name);\n if (existsSync(dstDir)) {\n try {\n fs.rmSync(dstDir, { recursive: true, force: true });\n removed.push(entry.name);\n } catch { /* best effort */ }\n }\n }\n return removed;\n}\n\n/**\n * Build the MCP server entry for Claude Code's config.\n *\n * Two modes:\n * - Installed globally (npm i -g claudemesh-cli): use `claudemesh`\n * as the command, relies on it being on PATH.\n * - Local dev (bun apps/cli/src/index.ts): use `bun <absolute-path>`.\n */\nfunction buildMcpEntry(entryPath: string): McpEntry {\n if (isBundledFile(entryPath)) {\n return {\n command: \"claudemesh\",\n args: [\"mcp\"],\n };\n }\n return {\n command: \"bun\",\n args: [entryPath, \"mcp\"],\n };\n}\n\nfunction entriesEqual(a: McpEntry, b: McpEntry): boolean {\n return (\n a.command === b.command &&\n JSON.stringify(a.args ?? []) === JSON.stringify(b.args ?? [])\n );\n}\n\nfunction readClaudeSettings(): Record<string, unknown> {\n if (!existsSync(CLAUDE_SETTINGS)) return {};\n const text = readFileSync(CLAUDE_SETTINGS, \"utf-8\").trim();\n if (!text) return {};\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch (e) {\n throw new Error(\n `failed to parse ${CLAUDE_SETTINGS}: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n}\n\nfunction writeClaudeSettings(obj: Record<string, unknown>): void {\n mkdirSync(dirname(CLAUDE_SETTINGS), { recursive: true });\n writeFileSync(\n CLAUDE_SETTINGS,\n JSON.stringify(obj, null, 2) + \"\\n\",\n \"utf-8\",\n );\n}\n\n/**\n * All claudemesh MCP tool names, prefixed for allowedTools.\n * These let Claude Code use claudemesh tools without --dangerously-skip-permissions.\n */\nconst CLAUDEMESH_TOOLS = [\n \"mcp__claudemesh__cancel_scheduled\",\n \"mcp__claudemesh__check_messages\",\n \"mcp__claudemesh__claim_task\",\n \"mcp__claudemesh__complete_task\",\n \"mcp__claudemesh__create_stream\",\n \"mcp__claudemesh__create_task\",\n \"mcp__claudemesh__delete_file\",\n \"mcp__claudemesh__file_status\",\n \"mcp__claudemesh__forget\",\n \"mcp__claudemesh__get_context\",\n \"mcp__claudemesh__get_file\",\n \"mcp__claudemesh__get_state\",\n \"mcp__claudemesh__grant_file_access\",\n \"mcp__claudemesh__graph_execute\",\n \"mcp__claudemesh__graph_query\",\n \"mcp__claudemesh__join_group\",\n \"mcp__claudemesh__leave_group\",\n \"mcp__claudemesh__list_collections\",\n \"mcp__claudemesh__list_contexts\",\n \"mcp__claudemesh__list_files\",\n \"mcp__claudemesh__list_peers\",\n \"mcp__claudemesh__list_scheduled\",\n \"mcp__claudemesh__list_state\",\n \"mcp__claudemesh__list_streams\",\n \"mcp__claudemesh__list_tasks\",\n \"mcp__claudemesh__mesh_execute\",\n \"mcp__claudemesh__mesh_info\",\n \"mcp__claudemesh__mesh_query\",\n \"mcp__claudemesh__mesh_schema\",\n \"mcp__claudemesh__message_status\",\n \"mcp__claudemesh__ping_mesh\",\n \"mcp__claudemesh__publish\",\n \"mcp__claudemesh__recall\",\n \"mcp__claudemesh__remember\",\n \"mcp__claudemesh__schedule_reminder\",\n \"mcp__claudemesh__send_message\",\n \"mcp__claudemesh__set_state\",\n \"mcp__claudemesh__set_status\",\n \"mcp__claudemesh__set_summary\",\n \"mcp__claudemesh__share_context\",\n \"mcp__claudemesh__share_file\",\n \"mcp__claudemesh__subscribe\",\n \"mcp__claudemesh__vector_delete\",\n \"mcp__claudemesh__vector_search\",\n \"mcp__claudemesh__vector_store\",\n];\n\n/**\n * Pre-approve all claudemesh MCP tools in allowedTools.\n * Merges into any existing list — never overwrites other entries.\n * Returns which tools were added vs already present.\n */\nfunction installAllowedTools(): { added: string[]; unchanged: number } {\n const settings = readClaudeSettings();\n const existing = new Set<string>((settings.allowedTools as string[] | undefined) ?? []);\n const toAdd = CLAUDEMESH_TOOLS.filter((t) => !existing.has(t));\n if (toAdd.length > 0) {\n settings.allowedTools = [...Array.from(existing), ...toAdd];\n writeClaudeSettings(settings);\n }\n return { added: toAdd, unchanged: CLAUDEMESH_TOOLS.length - toAdd.length };\n}\n\n/**\n * Remove claudemesh tools from allowedTools.\n * Leaves all other entries intact. Returns count removed.\n */\nfunction uninstallAllowedTools(): number {\n if (!existsSync(CLAUDE_SETTINGS)) return 0;\n const settings = readClaudeSettings();\n const existing = (settings.allowedTools as string[] | undefined) ?? [];\n const toolSet = new Set(CLAUDEMESH_TOOLS);\n const kept = existing.filter((t) => !toolSet.has(t));\n const removed = existing.length - kept.length;\n if (removed > 0) {\n settings.allowedTools = kept;\n writeClaudeSettings(settings);\n }\n return removed;\n}\n\n/**\n * Add a Stop + UserPromptSubmit hook entry to ~/.claude/settings.json,\n * idempotent on the command string. Returns counts for reporting.\n */\nfunction installHooks(): { added: number; unchanged: number } {\n const settings = readClaudeSettings();\n const hooks = ((settings.hooks ??= {}) as HooksConfig) ?? {};\n let added = 0;\n let unchanged = 0;\n\n const ensure = (event: string, command: string): void => {\n const list = (hooks[event] ??= []);\n const alreadyPresent = list.some((entry) =>\n (entry.hooks ?? []).some((h) => h.command === command),\n );\n if (alreadyPresent) {\n unchanged += 1;\n return;\n }\n list.push({ hooks: [{ type: \"command\", command }] });\n added += 1;\n };\n ensure(\"Stop\", HOOK_COMMAND_STOP);\n ensure(\"UserPromptSubmit\", HOOK_COMMAND_USER_PROMPT);\n\n settings.hooks = hooks;\n writeClaudeSettings(settings);\n return { added, unchanged };\n}\n\n/**\n * Remove every hook entry whose command contains \"claudemesh hook \"\n * from ~/.claude/settings.json. Idempotent. Returns removed count.\n */\nfunction uninstallHooks(): number {\n if (!existsSync(CLAUDE_SETTINGS)) return 0;\n const settings = readClaudeSettings();\n const hooks = settings.hooks as HooksConfig | undefined;\n if (!hooks) return 0;\n let removed = 0;\n for (const event of Object.keys(hooks)) {\n const kept: HookMatcher[] = [];\n for (const entry of hooks[event] ?? []) {\n const filtered = (entry.hooks ?? []).filter(\n (h) => !(h.command ?? \"\").includes(HOOK_MARKER),\n );\n removed += (entry.hooks ?? []).length - filtered.length;\n if (filtered.length > 0) kept.push({ ...entry, hooks: filtered });\n }\n if (kept.length === 0) delete hooks[event];\n else hooks[event] = kept;\n }\n settings.hooks = hooks;\n writeClaudeSettings(settings);\n return removed;\n}\n\nfunction installStatusLine(): { installed: boolean } {\n const settings = readClaudeSettings();\n const cmd = `claudemesh status-line`;\n const current = (settings as { statusLine?: { command?: string } }).statusLine;\n // If the user has their own statusLine command, don't clobber it.\n if (current?.command && !current.command.includes(\"claudemesh status-line\")) {\n return { installed: false };\n }\n (settings as { statusLine?: { type: string; command: string } }).statusLine = {\n type: \"command\",\n command: cmd,\n };\n writeClaudeSettings(settings);\n return { installed: true };\n}\n\nexport async function runInstall(args: string[] = []): Promise<void> {\n const skipHooks = args.includes(\"--no-hooks\");\n const skipSkill = args.includes(\"--no-skill\");\n const skipService = args.includes(\"--no-service\");\n const wantStatusLine = args.includes(\"--status-line\");\n render.section(\"claudemesh install\");\n\n const entry = resolveEntry();\n const bundled = isBundledFile(entry);\n\n if (!bundled && !bunAvailable()) {\n render.err(\"`bun` is not on PATH.\", \"Install Bun first: https://bun.com\");\n process.exit(1);\n }\n if (!existsSync(entry)) {\n render.err(`MCP entry not found at ${entry}`);\n process.exit(1);\n }\n\n const desired = buildMcpEntry(entry);\n const action = patchMcpServer(desired);\n\n const verify = readClaudeConfig();\n const verifyServers = (verify.mcpServers ?? {}) as Record<string, McpEntry>;\n const stored = verifyServers[MCP_NAME];\n if (!stored || !entriesEqual(stored, desired)) {\n render.err(\"post-write verification failed\", `${CLAUDE_CONFIG} may be corrupt`);\n process.exit(1);\n }\n\n render.ok(`MCP server \"${bold(MCP_NAME)}\" ${action}`);\n render.kv([\n [\"config\", dim(CLAUDE_CONFIG)],\n [\"command\", dim(`${desired.command}${desired.args?.length ? \" \" + desired.args.join(\" \") : \"\"}`)],\n ]);\n\n try {\n const { added, unchanged } = installAllowedTools();\n if (added.length > 0) {\n render.ok(\n `allowedTools: ${added.length} claudemesh tools pre-approved`,\n unchanged > 0 ? `${unchanged} already present` : undefined,\n );\n render.info(dim(\"This lets claudemesh tools run without --dangerously-skip-permissions.\"));\n render.info(dim(\"Your existing allowedTools entries were preserved.\"));\n } else {\n render.ok(`allowedTools: all ${unchanged} claudemesh tools already pre-approved`);\n }\n render.info(dim(` config: ${CLAUDE_SETTINGS}`));\n } catch (e) {\n render.warn(`allowedTools update failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n if (!skipHooks) {\n try {\n const { added, unchanged } = installHooks();\n if (added > 0) {\n render.ok(\n `Hooks registered (Stop + UserPromptSubmit)`,\n `${added} added, ${unchanged} already present`,\n );\n } else {\n render.ok(`Hooks already registered`, `${unchanged} present`);\n }\n render.info(dim(` config: ${CLAUDE_SETTINGS}`));\n } catch (e) {\n render.warn(\n `hook registration failed: ${e instanceof Error ? e.message : String(e)}`,\n \"MCP is still installed — hooks just skip. Retry with --no-hooks to suppress.\",\n );\n }\n } else {\n render.info(dim(\"· Hooks skipped (--no-hooks)\"));\n }\n\n // Claude skill — discoverability replacement for the (now-empty) MCP\n // tool surface. Claude reads ~/.claude/skills/claudemesh/SKILL.md on\n // demand, learns every CLI verb, JSON shape, and gotcha. See spec\n // 2026-05-02 commitment #6.\n if (!skipSkill) {\n try {\n const installed = installSkills();\n if (installed.length > 0) {\n render.ok(\n `Claude skill${installed.length === 1 ? \"\" : \"s\"} installed`,\n installed.join(\", \"),\n );\n render.info(dim(` ${join(CLAUDE_SKILLS_ROOT, installed[0]!)}/SKILL.md`));\n }\n } catch (e) {\n render.warn(`skill install failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n } else {\n render.info(dim(\"· Skill install skipped (--no-skill)\"));\n }\n\n if (wantStatusLine) {\n try {\n const { installed } = installStatusLine();\n if (installed) {\n render.ok(`Claude Code statusLine → ${clay(\"claudemesh status-line\")}`);\n render.info(dim(\" Shows: ◇ <mesh> · <online>/<total> online · <you>\"));\n } else {\n render.info(dim(\"· statusLine already set to a custom command — left alone\"));\n }\n } catch (e) {\n render.warn(`statusLine install failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n let hasMeshes = false;\n try {\n const meshConfig = readConfig();\n hasMeshes = meshConfig.meshes.length > 0;\n } catch {}\n\n // Daemon service install — required for MCP integration as of 1.24.0.\n // The daemon owns the broker WS and feeds the MCP push-pipe via SSE;\n // skipping it leaves channel push, slash commands, and resources broken.\n // 1.30.2: install no longer locks the unit to a single mesh; the\n // daemon attaches to every joined mesh on boot (1.26.0 multi-mesh\n // design). Users who want single-mesh can pass `claudemesh daemon\n // install-service --mesh <slug>` explicitly.\n if (!skipService && hasMeshes) {\n try {\n await installDaemonService(entry);\n } catch (e) {\n render.warn(\n `daemon service install failed: ${e instanceof Error ? e.message : String(e)}`,\n \"Run `claudemesh daemon install-service` to retry.\",\n );\n }\n } else if (skipService) {\n render.info(dim(\"· Daemon service skipped (--no-service)\"));\n render.info(dim(\" MCP integration will fail at boot until you start the daemon manually:\"));\n render.info(dim(\" claudemesh daemon up --mesh <slug>\"));\n } else if (!hasMeshes) {\n render.info(dim(\"· Daemon service deferred — join a mesh first, then run install again.\"));\n }\n\n render.blank();\n render.warn(`${bold(\"RESTART CLAUDE CODE\")} ${yellow(\"for MCP tools to appear.\")}`);\n\n if (!hasMeshes) {\n render.blank();\n render.info(`${yellow(\"No meshes joined.\")} To connect with peers:`);\n render.info(` ${bold(\"claudemesh <invite-url>\")}${dim(\" — joins + launches in one step\")}`);\n render.info(` ${dim(\"Create one at\")} ${bold(\"https://claudemesh.com/dashboard\")}`);\n } else {\n render.blank();\n render.info(`Next: ${bold(\"claudemesh\")}${dim(\" — launch with your joined mesh\")}`);\n }\n\n render.blank();\n render.info(dim(\"Optional:\"));\n render.info(dim(` claudemesh url-handler install # click-to-launch from email`));\n render.info(dim(` claudemesh install --status-line # live peer count in Claude Code`));\n render.info(dim(` claudemesh completions zsh # shell completions`));\n}\n\n/**\n * Install + start the per-user daemon service for the primary mesh.\n *\n * Refuses on CI hosts (the service-install module guards this); falls\n * back to a friendly message and lets the install otherwise succeed.\n * The MCP push-pipe will fail loudly if the daemon isn't reachable, so\n * the user knows there's a problem before it shows up as \"no messages\n * arriving.\"\n */\nasync function installDaemonService(binaryEntry: string): Promise<void> {\n const {\n installService,\n detectPlatform,\n } = require(\"~/daemon/service-install.js\") as typeof import(\"../daemon/service-install.js\");\n\n const platform = detectPlatform();\n if (!platform) {\n render.info(dim(`· Daemon service skipped — unsupported platform: ${process.platform}`));\n return;\n }\n\n // Resolve the binary the service unit should launch. When invoked from a\n // bundled binary, argv[1] is correct. When invoked under tsx / dev, fall\n // back to whatever `claudemesh` resolves to on PATH so the unit launches\n // a shipped binary, not a dev script.\n let binary = process.argv[1] ?? binaryEntry;\n if (!binary || /\\.ts$/.test(binary) || /node_modules|src\\/entrypoints/.test(binary)) {\n try {\n const { execSync } = require(\"node:child_process\") as typeof import(\"node:child_process\");\n binary = execSync(\"which claudemesh\", { encoding: \"utf8\" }).trim();\n } catch {\n render.warn(\n \"couldn't resolve a 'claudemesh' binary on PATH; daemon service skipped\",\n \"Install via npm/homebrew, then run `claudemesh daemon install-service`\",\n );\n return;\n }\n }\n\n const r = installService({ binaryPath: binary });\n render.ok(`daemon service installed (${r.platform})`);\n render.kv([\n [\"unit\", dim(r.unitPath)],\n [\"mesh\", dim(\"(all joined meshes)\")],\n ]);\n\n // Boot the unit immediately so MCP has a daemon to attach to on next\n // Claude Code launch. Best-effort: if launchctl/systemctl errors out we\n // log and continue — the user can run the boot command manually.\n try {\n const { execSync } = require(\"node:child_process\") as typeof import(\"node:child_process\");\n execSync(r.bootCommand, { stdio: \"ignore\" });\n render.ok(\"daemon started\");\n } catch (e) {\n render.warn(\n `daemon service installed but failed to start: ${e instanceof Error ? e.message : String(e)}`,\n `Run manually: ${r.bootCommand}`,\n );\n return;\n }\n\n // 1.31.0 — post-flight: verify the daemon actually establishes a\n // broker WebSocket. Boots that fail silently here (DNS, expired TLS,\n // outbound :443 blocked, broker outage) used to surface only when\n // the user's first `peer list` or `send` failed half an hour later.\n // Polling /v1/health gives a clear, install-time signal.\n await verifyBrokerConnectivity();\n}\n\nasync function verifyBrokerConnectivity(): Promise<void> {\n const VERIFY_BUDGET_MS = 15_000;\n const POLL_INTERVAL_MS = 500;\n const { ipc } = await import(\"~/daemon/ipc/client.js\");\n const start = Date.now();\n let lastBrokers: Record<string, string> = {};\n\n while (Date.now() - start < VERIFY_BUDGET_MS) {\n try {\n const res = await ipc<{ ok: boolean; brokers?: Record<string, string> }>({\n path: \"/v1/health\",\n timeoutMs: 2_000,\n });\n lastBrokers = res.body?.brokers ?? {};\n const openMesh = Object.entries(lastBrokers).find(([, s]) => s === \"open\");\n if (openMesh) {\n const others = Object.entries(lastBrokers).filter(([slug]) => slug !== openMesh[0]);\n const tail = others.length > 0 ? `, ${others.length} other mesh${others.length === 1 ? \"\" : \"es\"} attaching` : \"\";\n render.ok(`broker connected (mesh=${openMesh[0]}${tail})`);\n return;\n }\n } catch { /* daemon may still be starting up; keep polling */ }\n await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));\n }\n\n // Timed out without a single broker reaching `open`. Surface what we\n // saw last so the user can act — this is exactly the bug class we\n // want to catch at install time, not at first send.\n const states = Object.keys(lastBrokers).length === 0\n ? \"no health response from daemon\"\n : Object.entries(lastBrokers).map(([m, s]) => `${m}=${s}`).join(\", \");\n render.warn(\n `broker did not reach open within ${Math.round(VERIFY_BUDGET_MS / 1000)}s (${states})`,\n \"Check ~/.claudemesh/daemon/daemon.log for connect errors. Common causes: outbound :443 blocked, expired TLS, DNS resolution.\",\n );\n}\n\nexport function runUninstall(): void {\n render.section(\"claudemesh uninstall\");\n\n if (removeMcpServer()) {\n render.ok(`MCP server \"${bold(MCP_NAME)}\" removed`);\n } else {\n render.info(dim(`· MCP server \"${MCP_NAME}\" not present`));\n }\n\n try {\n const removed = uninstallAllowedTools();\n if (removed > 0) {\n render.ok(`allowedTools: ${removed} claudemesh tools removed`);\n } else {\n render.info(dim(\"· No claudemesh allowedTools to remove\"));\n }\n } catch (e) {\n render.warn(`allowedTools removal failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n try {\n const removed = uninstallHooks();\n if (removed > 0) {\n render.ok(`Hooks removed`, `${removed} entries`);\n } else {\n render.info(dim(\"· No claudemesh hooks to remove\"));\n }\n } catch (e) {\n render.warn(`hook removal failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n try {\n const removed = uninstallSkills();\n if (removed.length > 0) {\n render.ok(`Skill${removed.length === 1 ? \"\" : \"s\"} removed`, removed.join(\", \"));\n } else {\n render.info(dim(\"· No claudemesh skills to remove\"));\n }\n } catch (e) {\n render.warn(`skill removal failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n render.blank();\n render.info(\"Restart Claude Code to drop the MCP connection + hooks.\");\n}\n",
|
|
@@ -168,22 +169,22 @@
|
|
|
168
169
|
"/**\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",
|
|
169
170
|
"/**\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",
|
|
170
171
|
"/**\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",
|
|
171
|
-
"/**\n * MCP server (stdio transport) for claudemesh-cli.\n *\n * As of 1.24.0 / daemon v1.0, the MCP server is a thin daemon-SSE\n * translator. It does NOT hold a broker WebSocket, decrypt messages, or\n * track mesh state — those are the daemon's job. MCP just:\n *\n * 1. probes ~/.claudemesh/daemon/daemon.sock at boot;\n * 2. fails loudly if the daemon isn't running (no fallback);\n * 3. subscribes to /v1/events SSE and translates each event into a\n * Claude Code `notifications/claude/channel` notification;\n * 4. surfaces mesh-published skills as MCP prompts and resources by\n * querying /v1/skills over IPC.\n *\n * The mesh-service proxy mode (claudemesh-cli --service <name>) lives at\n * the bottom of this file and is unrelated — it acts as a sub-MCP-server\n * for one deployed mesh-MCP service. Untouched by this rewrite.\n *\n * Spec: .artifacts/specs/2026-05-03-daemon-spec-v0.9.0.md plus the\n * 1.24.0 daemon-required addendum.\n */\n\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport {\n ListToolsRequestSchema,\n CallToolRequestSchema,\n ListPromptsRequestSchema,\n GetPromptRequestSchema,\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { existsSync, appendFileSync } from \"node:fs\";\nimport { request as httpRequest, type IncomingMessage } from \"node:http\";\nimport { join } from \"node:path\";\n\nimport { DAEMON_PATHS } from \"~/daemon/paths.js\";\nimport { VERSION } from \"~/constants/urls.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { BrokerClient } from \"~/services/broker/facade.js\";\n\n// ── daemon probe ───────────────────────────────────────────────────────\n\nconst DAEMON_BOOT_RETRIES = 4;\nconst DAEMON_BOOT_RETRY_MS = 500;\n\nasync function daemonReady(): Promise<boolean> {\n for (let i = 0; i < DAEMON_BOOT_RETRIES; i++) {\n if (existsSync(DAEMON_PATHS.SOCK_FILE)) return true;\n await new Promise((r) => setTimeout(r, DAEMON_BOOT_RETRY_MS));\n }\n return false;\n}\n\nfunction bailNoDaemon(): never {\n process.stderr.write(\n \"[claudemesh] daemon is not running.\\n\" +\n \" Start it: claudemesh daemon up --mesh <slug>\\n\" +\n \" Or install as service: claudemesh daemon install-service --mesh <slug>\\n\" +\n \" Diagnose: claudemesh doctor\\n\" +\n \"\\n\" +\n \" As of 1.24.0 the daemon is required for in-Claude-Code use of\\n\" +\n \" claudemesh. The CLI itself (claudemesh send/peer/inbox/...) still\\n\" +\n \" works without a daemon.\\n\",\n );\n process.exit(1);\n}\n\n// ── daemon IPC client (UDS) ────────────────────────────────────────────\n\ninterface DaemonGetResult { status: number; body: any }\n\nfunction daemonGet(path: string, opts: { sessionToken?: string | null } = {}): Promise<DaemonGetResult> {\n return new Promise((resolve, reject) => {\n const headers: Record<string, string> = {};\n // 1.34.2+: when the launched process gave us a session token, forward\n // it on every IPC. Routes like `/v1/sessions/me` 401 without it, and\n // routes like `/v1/peers` use it for default-mesh scoping.\n if (opts.sessionToken) headers.Authorization = `ClaudeMesh-Session ${opts.sessionToken}`;\n const req = httpRequest(\n { socketPath: DAEMON_PATHS.SOCK_FILE, path, method: \"GET\", timeout: 5_000, headers },\n (res: IncomingMessage) => {\n const chunks: Buffer[] = [];\n res.on(\"data\", (c) => chunks.push(c as Buffer));\n res.on(\"end\", () => {\n const text = Buffer.concat(chunks).toString(\"utf8\");\n let body: any = null;\n try { body = JSON.parse(text); } catch { body = text; }\n resolve({ status: res.statusCode ?? 0, body });\n });\n },\n );\n req.on(\"error\", reject);\n req.on(\"timeout\", () => req.destroy(new Error(\"daemon_ipc_timeout\")));\n req.end();\n });\n}\n\n// ── daemon SSE subscription ────────────────────────────────────────────\n\ninterface DaemonEvent { kind: string; ts: string; data: Record<string, any> }\n\nfunction subscribeEvents(onEvent: (e: DaemonEvent) => void): { close: () => void } {\n let active = true;\n let req: ReturnType<typeof httpRequest> | null = null;\n\n const connect = (): void => {\n if (!active) return;\n req = httpRequest({\n socketPath: DAEMON_PATHS.SOCK_FILE,\n path: \"/v1/events\",\n method: \"GET\",\n headers: { Accept: \"text/event-stream\" },\n });\n let buffer = \"\";\n req.on(\"response\", (res: IncomingMessage) => {\n res.setEncoding(\"utf8\");\n res.on(\"data\", (chunk: string) => {\n buffer += chunk;\n let idx;\n while ((idx = buffer.indexOf(\"\\n\\n\")) >= 0) {\n const block = buffer.slice(0, idx);\n buffer = buffer.slice(idx + 2);\n if (!block.trim()) continue;\n let kind = \"message\";\n let dataLine = \"\";\n for (const line of block.split(\"\\n\")) {\n if (line.startsWith(\":\")) continue;\n if (line.startsWith(\"event:\")) kind = line.slice(6).trim();\n else if (line.startsWith(\"data:\")) dataLine = line.slice(5).trim();\n }\n if (!dataLine) continue;\n try {\n const parsed = JSON.parse(dataLine) as Record<string, unknown>;\n onEvent({ kind, ts: String(parsed.ts ?? \"\"), data: parsed });\n } catch { /* malformed event; skip */ }\n }\n });\n res.on(\"end\", () => {\n if (active) {\n process.stderr.write(\"[claudemesh-mcp] sse stream ended; reconnecting in 1s\\n\");\n setTimeout(connect, 1_000);\n }\n });\n res.on(\"error\", (err) => process.stderr.write(`[claudemesh-mcp] sse error: ${err.message}\\n`));\n });\n req.on(\"error\", (err) => {\n process.stderr.write(`[claudemesh-mcp] sse connect error: ${err.message}\\n`);\n if (active) setTimeout(connect, 2_000);\n });\n req.end();\n };\n\n connect();\n return {\n close: () => { active = false; try { req?.destroy(); } catch { /* ignore */ } },\n };\n}\n\n// ── main MCP server (push-pipe + skills) ──────────────────────────────\n\nexport async function startMcpServer(): Promise<void> {\n // Mesh-service proxy mode: separate code path for proxying a deployed\n // mesh MCP service into Claude Code. Unrelated to the daemon push-pipe.\n const serviceIdx = process.argv.indexOf(\"--service\");\n if (serviceIdx !== -1 && process.argv[serviceIdx + 1]) {\n return startServiceProxy(process.argv[serviceIdx + 1]!);\n }\n\n const ok = await daemonReady();\n if (!ok) bailNoDaemon();\n\n const server = new Server(\n { name: \"claudemesh\", version: VERSION },\n {\n capabilities: {\n tools: {},\n prompts: {},\n resources: {},\n // 1.34.1 — declare the experimental `claude/channel` capability.\n // Claude Code v2.1.x gates `notifications/claude/channel` on this\n // exact key: its `xJ_(serverName, capabilities, pluginSource)` check\n // returns {action:\"skip\", kind:\"capability\"} when\n // `capabilities.experimental?.[\"claude/channel\"]` is missing, and\n // the notification handler is never registered → every channel\n // emit lands on the floor, regardless of the\n // `--dangerously-load-development-channels server:claudemesh` flag.\n // This was the silent regression: pre-2.1.x clients didn't gate on\n // this key, so the same MCP wire shape \"worked\" until Claude Code\n // tightened the check. Verified by reading the binary at the\n // offsets near `notifications/claude/channel` in the strings dump.\n experimental: { \"claude/channel\": {} },\n },\n },\n );\n\n // Tools: empty. The CLI is the API; the model invokes it via Bash.\n server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [] }));\n\n // Prompts: mesh-published skills surfaced as `/skill-name` slash commands.\n server.setRequestHandler(ListPromptsRequestSchema, async () => {\n try {\n const { status, body } = await daemonGet(\"/v1/skills\");\n if (status !== 200) return { prompts: [] };\n const skills = (body?.skills as Array<{ name: string; description: string }> | undefined) ?? [];\n return { prompts: skills.map((s) => ({ name: s.name, description: s.description, arguments: [] })) };\n } catch { return { prompts: [] }; }\n });\n\n server.setRequestHandler(GetPromptRequestSchema, async (req) => {\n const name = req.params.name;\n const { status, body } = await daemonGet(`/v1/skills/${encodeURIComponent(name)}`);\n if (status === 404) throw new Error(`Skill \"${name}\" not found in the mesh`);\n if (status !== 200) throw new Error(`daemon returned ${status} fetching skill`);\n const skill = body.skill as { name: string; description: string; instructions: string; manifest?: any };\n let content = skill.instructions;\n const m = skill.manifest;\n if (m && typeof m === \"object\") {\n const fm: string[] = [\"---\"];\n if (m.description) fm.push(`description: \"${m.description}\"`);\n if (m.when_to_use) fm.push(`when_to_use: \"${m.when_to_use}\"`);\n if (Array.isArray(m.allowed_tools) && m.allowed_tools.length) {\n fm.push(`allowed-tools:\\n${m.allowed_tools.map((t: string) => ` - ${t}`).join(\"\\n\")}`);\n }\n if (m.model) fm.push(`model: ${m.model}`);\n if (m.context) fm.push(`context: ${m.context}`);\n if (m.agent) fm.push(`agent: ${m.agent}`);\n if (m.user_invocable === false) fm.push(`user-invocable: false`);\n if (m.argument_hint) fm.push(`argument-hint: \"${m.argument_hint}\"`);\n fm.push(\"---\\n\");\n if (fm.length > 3) content = fm.join(\"\\n\") + content;\n if (m.context === \"fork\") {\n const agentType = m.agent || \"general-purpose\";\n const modelHint = m.model ? `, model: \"${m.model}\"` : \"\";\n const toolsHint = m.allowed_tools?.length\n ? `\\nOnly use these tools: ${m.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 return {\n description: skill.description,\n messages: [{ role: \"user\" as const, content: { type: \"text\" as const, text: content } }],\n };\n });\n\n // Resources: mesh skills as `skill://claudemesh/<name>` URIs.\n server.setRequestHandler(ListResourcesRequestSchema, async () => {\n try {\n const { body } = await daemonGet(\"/v1/skills\");\n const skills = (body?.skills as Array<{ name: string; description: string }> | undefined) ?? [];\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 } catch { return { resources: [] }; }\n });\n\n server.setRequestHandler(ReadResourceRequestSchema, async (req) => {\n const uri = req.params.uri;\n const m = uri.match(/^skill:\\/\\/claudemesh\\/(.+)$/);\n if (!m) throw new Error(`Unknown resource URI: ${uri}`);\n const name = decodeURIComponent(m[1]!);\n const { status, body } = await daemonGet(`/v1/skills/${encodeURIComponent(name)}`);\n if (status === 404) throw new Error(`Skill \"${name}\" not found`);\n if (status !== 200) throw new Error(`daemon returned ${status} fetching skill`);\n const skill = body.skill as {\n name: string; description: string; instructions: string;\n tags?: string[]; manifest?: any;\n };\n const fm: string[] = [\"---\"];\n fm.push(`name: ${skill.name}`);\n fm.push(`description: \"${skill.description}\"`);\n if (skill.tags?.length) fm.push(`tags: [${skill.tags.join(\", \")}]`);\n const mf = skill.manifest;\n if (mf && typeof mf === \"object\") {\n if (mf.when_to_use) fm.push(`when_to_use: \"${mf.when_to_use}\"`);\n if (Array.isArray(mf.allowed_tools) && mf.allowed_tools.length) {\n fm.push(`allowed-tools:\\n${mf.allowed_tools.map((t: string) => ` - ${t}`).join(\"\\n\")}`);\n }\n if (mf.model) fm.push(`model: ${mf.model}`);\n if (mf.context) fm.push(`context: ${mf.context}`);\n }\n fm.push(\"---\\n\");\n return { contents: [{ uri, mimeType: \"text/markdown\", text: fm.join(\"\\n\") + skill.instructions }] };\n });\n\n // 1.34.1: every channel emit (and SSE event arrival) writes to a\n // per-pid log file under ~/.claudemesh/daemon/. Stderr from a Claude\n // Code-spawned MCP server isn't surfaced anywhere visible to the\n // user; without an on-disk trace we can't tell whether the SSE\n // delivered the event, whether the bus reached the MCP, or whether\n // server.notification rejected. The file path is stable across MCP\n // restarts so users can `tail -f` to watch live.\n const mcpLogPath = join(DAEMON_PATHS.DAEMON_DIR, `mcp-${process.pid}.log`);\n const mcpLog = (msg: string, meta?: Record<string, unknown>): void => {\n const line = JSON.stringify({ ts: new Date().toISOString(), pid: process.pid, msg, ...meta }) + \"\\n\";\n try { appendFileSync(mcpLogPath, line); } catch { /* logging must never crash */ }\n };\n mcpLog(\"mcp_started\", { version: VERSION });\n\n // Subscribe to daemon events; translate to channel notifications.\n const sub = subscribeEvents(async (ev) => {\n mcpLog(\"sse_event_received\", { kind: ev.kind });\n if (ev.kind === \"message\") {\n const d = ev.data;\n const fromName = String(d.sender_name ?? \"unknown\");\n const fromMember = String(d.sender_member_pubkey ?? d.sender_pubkey ?? \"\");\n const body = String(d.body ?? \"(decrypt failed)\");\n const priority = String(d.priority ?? \"next\");\n const prioBadge = priority === \"now\" ? \"[URGENT] \" : priority === \"low\" ? \"[low] \" : \"\";\n const topicTag = d.topic ? ` (#${d.topic})` : \"\";\n const content = `${prioBadge}${fromName}${topicTag}: ${body}`;\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content,\n meta: {\n from_id: fromMember,\n from_pubkey: fromMember,\n from_session_pubkey: String(d.sender_pubkey ?? \"\"),\n from_name: fromName,\n mesh_slug: String(d.mesh ?? \"\"),\n priority,\n message_id: String(d.broker_message_id ?? d.id ?? \"\"),\n client_message_id: String(d.client_message_id ?? \"\"),\n ...(d.topic ? { topic: String(d.topic) } : {}),\n ...(d.reply_to_id ? { reply_to_id: String(d.reply_to_id) } : {}),\n ...(d.subtype ? { subtype: String(d.subtype) } : {}),\n },\n },\n });\n mcpLog(\"channel_emitted\", { content_preview: content.slice(0, 80), mesh: String(d.mesh ?? \"\") });\n } catch (err) {\n mcpLog(\"channel_emit_failed\", { err: String(err) });\n process.stderr.write(`[claudemesh-mcp] channel emit failed: ${err}\\n`);\n }\n } else if (ev.kind === \"peer_join\" || ev.kind === \"peer_leave\" || ev.kind === \"system\") {\n const d = ev.data;\n const eventName = String(d.event ?? ev.kind);\n let content: string;\n if (ev.kind === \"peer_join\") {\n content = `[system] Peer \"${String(d.name ?? \"unknown\")}\" joined the mesh`;\n } else if (ev.kind === \"peer_leave\") {\n content = `[system] Peer \"${String(d.name ?? \"unknown\")}\" left the mesh`;\n } else {\n content = `[system] ${eventName}: ${JSON.stringify(d).slice(0, 240)}`;\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: String(d.mesh ?? \"\"),\n },\n },\n });\n } catch { /* best effort */ }\n }\n });\n\n // 1.34.6 — Welcome: single emit on oninitialized + 3s grace.\n //\n // The earlier \"timing race\" theory was wrong. Reading Claude Code's\n // binary at the `notifications/claude/channel` Zod schema:\n //\n // IJ_ = y.object({\n // method: y.literal(\"notifications/claude/channel\"),\n // params: y.object({\n // content: y.string(),\n // meta: y.record(y.string(), y.string()).optional()\n // })\n // })\n //\n // `meta` MUST be a record of string-to-string. Pre-1.34.6 the\n // welcome shipped numbers (`peer_count`, `unread_count`) and arrays\n // (`peer_names`, `latest_message_ids`) — Zod rejected the entire\n // notification before it ever reached the channel handler.\n //\n // Live peer DMs always survived because their meta values all went\n // through `String(...)`. The welcome was the only notification\n // shape with non-string meta — uniquely affected, schema-rejected,\n // silently dropped.\n //\n // 1.34.6 fixes the meta values (see `emitMeshWelcome`) so the\n // notification passes validation; the dual-lane retry from 1.34.5\n // is no longer necessary and would now surface a duplicate. Back to\n // a single emit, with a 3s grace after `oninitialized` — enough for\n // the React effect that registers the channel handler to run, but\n // tight enough to feel like a launch handshake.\n const WELCOME_GRACE_MS = 3_000;\n let welcomeSent = false;\n server.oninitialized = () => {\n mcpLog(\"server_initialized\");\n if (welcomeSent) return;\n welcomeSent = true;\n setTimeout(() => { void emitMeshWelcome(server, mcpLog); }, WELCOME_GRACE_MS);\n };\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n // Keep event loop active so SSE callbacks flush stdout promptly.\n const keepalive = setInterval(() => { /* tick */ }, 1_000);\n void keepalive;\n\n const shutdown = (): void => {\n clearInterval(keepalive);\n sub.close();\n process.exit(0);\n };\n process.on(\"SIGTERM\", shutdown);\n process.on(\"SIGINT\", shutdown);\n}\n\n/**\n * Mesh-connected welcome. Runs once 5s after the MCP transport is up,\n * regardless of inbox state. The point isn't just to summarize unread —\n * an empty welcome still confirms to the user that the mesh pipe is\n * live, names the session, says how many peers are visible, and lists\n * the canonical CLI commands so the model can use them mid-turn.\n *\n * Composes from up to three best-effort daemon queries:\n * - `/v1/sessions/me` → display name + session pubkey + mesh\n * (requires session token; absent on bare `claudemesh mcp`)\n * - `/v1/peers?mesh=…` → live peer count, filtered to non-control-plane\n * - `/v1/inbox?…` → recent message count + up to 3 previews\n *\n * Each query degrades silently — a missing field becomes \"unknown\" or\n * is omitted. The welcome ALWAYS emits unless the IPC socket is\n * unreachable; that's the design contract: \"you launched into the\n * mesh, here's what you've got.\"\n */\nasync function emitMeshWelcome(\n server: import(\"@modelcontextprotocol/sdk/server/index.js\").Server,\n mcpLog: (msg: string, meta?: Record<string, unknown>) => void,\n): Promise<void> {\n const { readSessionTokenFromEnv } = await import(\"~/services/session/token.js\");\n const sessionToken = readSessionTokenFromEnv();\n\n // 1) Self identity. Token-less path (bare `claudemesh mcp` outside a\n // launch) just leaves these undefined; the welcome still goes out.\n let selfDisplayName: string | undefined;\n let selfSessionPubkey: string | undefined;\n let selfMeshSlug: string | undefined;\n let selfRole: string | undefined;\n if (sessionToken) {\n try {\n const { status, body } = await daemonGet(\"/v1/sessions/me\", { sessionToken });\n if (status === 200 && body?.session) {\n selfDisplayName = body.session.displayName;\n selfMeshSlug = body.session.mesh;\n selfRole = body.session.role;\n selfSessionPubkey = body.session.presence?.sessionPubkey;\n }\n } catch (e) { mcpLog(\"welcome_self_lookup_failed\", { err: String(e) }); }\n }\n\n // 2) Live peer count. Match the same filter the launch banner uses\n // (`channel !== \"claudemesh-daemon\"`) so the welcome's number agrees\n // with the \"N peers online\" line that just printed in the terminal.\n // We also fall back to `peerRole !== \"control-plane\"` for newer\n // brokers that emit the role taxonomy. Excluding self uses both\n // session pubkey AND session id (older brokers may not surface\n // peerRole, so name-only matching would fail).\n let peerCount = -1;\n let peerNames: string[] = [];\n try {\n const path = selfMeshSlug ? `/v1/peers?mesh=${encodeURIComponent(selfMeshSlug)}` : \"/v1/peers\";\n const { status, body } = await daemonGet(path, { sessionToken });\n if (status === 200 && Array.isArray(body?.peers)) {\n const peers = body.peers as Array<Record<string, unknown>>;\n const real = peers.filter((p) => {\n const channel = String(p.channel ?? \"\");\n const peerRole = String(p.peerRole ?? \"\");\n const isInfra = channel === \"claudemesh-daemon\" || peerRole === \"control-plane\";\n if (isInfra) return false;\n if (selfSessionPubkey && p.pubkey === selfSessionPubkey) return false;\n return true;\n });\n peerCount = real.length;\n peerNames = real\n .map((p) => String(p.displayName ?? \"unknown\"))\n .filter((n, i, arr) => arr.indexOf(n) === i)\n .slice(0, 5);\n mcpLog(\"welcome_peers_resolved\", { total: peers.length, real: real.length });\n } else {\n mcpLog(\"welcome_peers_status\", { status });\n }\n } catch (e) { mcpLog(\"welcome_peers_lookup_failed\", { err: String(e) }); }\n\n // 3) Recent inbox (last 24h, capped). Empty is fine — we surface \"0\n // messages\" explicitly so the user knows the inbox is clean rather\n // than wondering whether the query failed.\n const sinceIso = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();\n const inboxPath = selfMeshSlug\n ? `/v1/inbox?mesh=${encodeURIComponent(selfMeshSlug)}&since=${encodeURIComponent(sinceIso)}&limit=20`\n : `/v1/inbox?since=${encodeURIComponent(sinceIso)}&limit=20`;\n let inboxItems: Array<Record<string, unknown>> = [];\n try {\n const { status, body } = await daemonGet(inboxPath, { sessionToken });\n if (status === 200 && Array.isArray(body?.items)) {\n inboxItems = body.items as Array<Record<string, unknown>>;\n }\n } catch (e) { mcpLog(\"welcome_inbox_lookup_failed\", { err: String(e) }); }\n\n // Compose the body. Markdown-friendly so it renders cleanly in the\n // Claude Code channel reminder block.\n const lines: string[] = [];\n const idTag = selfDisplayName\n ? `${selfDisplayName}${selfSessionPubkey ? ` (${selfSessionPubkey.slice(0, 8)})` : \"\"}${selfRole ? ` [${selfRole}]` : \"\"}`\n : \"session\";\n const meshTag = selfMeshSlug ? ` on mesh \\`${selfMeshSlug}\\`` : \"\";\n lines.push(`🌐 [welcome] claudemesh connected — you are **${idTag}**${meshTag}.`);\n\n if (peerCount === 0) {\n lines.push(`👥 No other peers online right now.`);\n } else if (peerCount > 0) {\n const namesPreview = peerNames.join(\", \");\n const more = peerCount > peerNames.length ? ` …and ${peerCount - peerNames.length} more` : \"\";\n lines.push(`👥 ${peerCount} peer${peerCount === 1 ? \"\" : \"s\"} online: ${namesPreview}${more}`);\n } else {\n lines.push(`👥 Peer list unavailable (daemon query failed).`);\n }\n\n if (inboxItems.length === 0) {\n lines.push(`📥 Inbox is empty (last 24h).`);\n } else {\n lines.push(`📥 ${inboxItems.length} message${inboxItems.length === 1 ? \"\" : \"s\"} in inbox (last 24h):`);\n for (const it of inboxItems.slice(0, 3)) {\n const sender = String(it.sender_name ?? \"unknown\");\n const senderPub = String(it.sender_pubkey ?? \"\").slice(0, 8);\n const tag = sender !== senderPub ? `${sender} (${senderPub})` : senderPub;\n const bodyText = (typeof it.body === \"string\" ? it.body : \"(encrypted)\").slice(0, 60);\n const time = it.received_at ? new Date(String(it.received_at)).toLocaleTimeString() : \"\";\n lines.push(` ${tag} ${time}: ${bodyText}`);\n }\n if (inboxItems.length > 3) lines.push(` …and ${inboxItems.length - 3} more`);\n }\n\n // CLI hints — what the model should call when the user asks. Listed\n // here as a one-liner so the welcome stays compact.\n lines.push(`💡 Use: \\`claudemesh peer list\\` · \\`claudemesh send <peer> <msg>\\` · \\`claudemesh inbox\\``);\n // Skill pointer — the `claudemesh` skill in the user's Claude install\n // documents every CLI verb, JSON shapes, channel attributes, and\n // common patterns. If the model isn't already loaded with it, this is\n // the cue to read it once before acting on the mesh.\n lines.push(`📚 Read the \\`claudemesh\\` skill (SKILL.md) for full CLI / channel / inbox reference if not yet in context.`);\n\n const content = lines.join(\"\\n\");\n try {\n // Claude Code's `notifications/claude/channel` schema is\n // `meta: y.record(y.string(), y.string())` — string values only.\n // Pre-1.34.6 we sent numbers / arrays in `peer_count`, `unread_count`,\n // `peer_names`, `latest_message_ids`; Zod silently rejected the\n // whole notification before it reached the channel handler. Live\n // peer DMs survived because their meta values all went through\n // `String(...)`. Coerce everything here too — arrays stringify as\n // JSON so downstream consumers can re-parse if they want, and the\n // counts become digit strings (parseable on the receiving side).\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content,\n meta: {\n kind: \"welcome\",\n self_display_name: selfDisplayName ?? \"\",\n self_session_pubkey: selfSessionPubkey ?? \"\",\n self_role: selfRole ?? \"\",\n mesh_slug: selfMeshSlug ?? \"\",\n peer_count: peerCount >= 0 ? String(peerCount) : \"\",\n peer_names: JSON.stringify(peerNames),\n unread_count: String(inboxItems.length),\n latest_message_ids: JSON.stringify(\n inboxItems.slice(0, 10).map((it) => String(it.id ?? \"\")),\n ),\n },\n },\n });\n mcpLog(\"welcome_emitted\", {\n mesh: selfMeshSlug ?? \"\",\n peer_count: peerCount,\n unread_count: inboxItems.length,\n });\n } catch (err) {\n mcpLog(\"welcome_emit_failed\", { err: String(err) });\n }\n}\n\n// ── mesh-service proxy mode (unchanged from prior versions) ────────────\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 let tools: Array<{ name: string; description: string; inputSchema: Record<string, unknown> }> = [];\n try {\n const fetched = await client.getServiceTools(serviceName);\n tools = fetched as typeof tools;\n } catch {\n const cached = client.serviceCatalog.find((s) => s.name === serviceName);\n if (cached) tools = cached.tools as typeof tools;\n }\n\n if (tools.length === 0) {\n process.stderr.write(`[mesh:${serviceName}] no tools found — service may not be running\\n`);\n }\n\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 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: [{ type: \"text\" as const, text: \"Service temporarily unavailable — broker reconnecting. Retry in a few seconds.\" }],\n isError: true,\n };\n }\n }\n\n try {\n const result = await client.mcpCall(serviceName, toolName, args as Record<string, unknown>);\n if (result.error) {\n return { content: [{ type: \"text\" as const, text: `Error: ${result.error}` }], isError: true };\n }\n const resultText = typeof result.result === \"string\"\n ? result.result\n : JSON.stringify(result.result, null, 2);\n return { content: [{ type: \"text\" as const, text: resultText }] };\n } catch (e) {\n return {\n content: [{ type: \"text\" as const, text: `Call failed: ${e instanceof Error ? e.message : String(e)}` }],\n isError: true,\n };\n }\n });\n\n client.onPush((push) => {\n if (push.event === \"mcp_undeployed\" && (push.eventData as any)?.name === serviceName) {\n process.stderr.write(`[mesh:${serviceName}] service undeployed — exiting\\n`);\n client.close();\n process.exit(0);\n }\n if (push.event === \"mcp_updated\" && (push.eventData as any)?.name === serviceName) {\n const newTools = (push.eventData as any)?.tools;\n if (Array.isArray(newTools)) {\n tools = newTools as typeof tools;\n server.notification({ method: \"notifications/tools/list_changed\" }).catch(() => { /* ignore */ });\n }\n }\n });\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const keepalive = setInterval(() => { /* tick */ }, 1_000);\n void keepalive;\n\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",
|
|
172
|
+
"/**\n * MCP server (stdio transport) for claudemesh-cli.\n *\n * As of 1.24.0 / daemon v1.0, the MCP server is a thin daemon-SSE\n * translator. It does NOT hold a broker WebSocket, decrypt messages, or\n * track mesh state — those are the daemon's job. MCP just:\n *\n * 1. probes ~/.claudemesh/daemon/daemon.sock at boot;\n * 2. fails loudly if the daemon isn't running (no fallback);\n * 3. subscribes to /v1/events SSE and translates each event into a\n * Claude Code `notifications/claude/channel` notification;\n * 4. surfaces mesh-published skills as MCP prompts and resources by\n * querying /v1/skills over IPC.\n *\n * The mesh-service proxy mode (claudemesh-cli --service <name>) lives at\n * the bottom of this file and is unrelated — it acts as a sub-MCP-server\n * for one deployed mesh-MCP service. Untouched by this rewrite.\n *\n * Spec: .artifacts/specs/2026-05-03-daemon-spec-v0.9.0.md plus the\n * 1.24.0 daemon-required addendum.\n */\n\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport {\n ListToolsRequestSchema,\n CallToolRequestSchema,\n ListPromptsRequestSchema,\n GetPromptRequestSchema,\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { existsSync, appendFileSync } from \"node:fs\";\nimport { request as httpRequest, type IncomingMessage } from \"node:http\";\nimport { join } from \"node:path\";\n\nimport { DAEMON_PATHS } from \"~/daemon/paths.js\";\nimport { VERSION } from \"~/constants/urls.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { BrokerClient } from \"~/services/broker/facade.js\";\n\n// ── daemon probe ───────────────────────────────────────────────────────\n\nconst DAEMON_BOOT_RETRIES = 4;\nconst DAEMON_BOOT_RETRY_MS = 500;\n\nasync function daemonReady(): Promise<boolean> {\n for (let i = 0; i < DAEMON_BOOT_RETRIES; i++) {\n if (existsSync(DAEMON_PATHS.SOCK_FILE)) return true;\n await new Promise((r) => setTimeout(r, DAEMON_BOOT_RETRY_MS));\n }\n return false;\n}\n\nfunction bailNoDaemon(): never {\n process.stderr.write(\n \"[claudemesh] daemon is not running.\\n\" +\n \" Start it: claudemesh daemon up --mesh <slug>\\n\" +\n \" Or install as service: claudemesh daemon install-service --mesh <slug>\\n\" +\n \" Diagnose: claudemesh doctor\\n\" +\n \"\\n\" +\n \" As of 1.24.0 the daemon is required for in-Claude-Code use of\\n\" +\n \" claudemesh. The CLI itself (claudemesh send/peer/inbox/...) still\\n\" +\n \" works without a daemon.\\n\",\n );\n process.exit(1);\n}\n\n// ── daemon IPC client (UDS) ────────────────────────────────────────────\n\ninterface DaemonGetResult { status: number; body: any }\n\nfunction daemonGet(path: string, opts: { sessionToken?: string | null } = {}): Promise<DaemonGetResult> {\n return new Promise((resolve, reject) => {\n const headers: Record<string, string> = {};\n // 1.34.2+: when the launched process gave us a session token, forward\n // it on every IPC. Routes like `/v1/sessions/me` 401 without it, and\n // routes like `/v1/peers` use it for default-mesh scoping.\n if (opts.sessionToken) headers.Authorization = `ClaudeMesh-Session ${opts.sessionToken}`;\n const req = httpRequest(\n { socketPath: DAEMON_PATHS.SOCK_FILE, path, method: \"GET\", timeout: 5_000, headers },\n (res: IncomingMessage) => {\n const chunks: Buffer[] = [];\n res.on(\"data\", (c) => chunks.push(c as Buffer));\n res.on(\"end\", () => {\n const text = Buffer.concat(chunks).toString(\"utf8\");\n let body: any = null;\n try { body = JSON.parse(text); } catch { body = text; }\n resolve({ status: res.statusCode ?? 0, body });\n });\n },\n );\n req.on(\"error\", reject);\n req.on(\"timeout\", () => req.destroy(new Error(\"daemon_ipc_timeout\")));\n req.end();\n });\n}\n\n/** 1.34.8: best-effort POST /v1/inbox/seen so the MCP can stamp rows it\n * just surfaced via a `<channel>` reminder. Failures are swallowed —\n * read-state is a UX optimization, not a correctness gate. */\nfunction daemonMarkSeen(ids: string[], sessionToken?: string | null): Promise<void> {\n return new Promise((resolve) => {\n if (ids.length === 0) { resolve(); return; }\n const body = JSON.stringify({ ids });\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": String(Buffer.byteLength(body)),\n };\n if (sessionToken) headers.Authorization = `ClaudeMesh-Session ${sessionToken}`;\n const req = httpRequest(\n { socketPath: DAEMON_PATHS.SOCK_FILE, path: \"/v1/inbox/seen\", method: \"POST\", timeout: 3_000, headers },\n (res: IncomingMessage) => { res.on(\"data\", () => { /* drain */ }); res.on(\"end\", () => resolve()); },\n );\n req.on(\"error\", () => resolve());\n req.on(\"timeout\", () => { req.destroy(); resolve(); });\n req.write(body);\n req.end();\n });\n}\n\n// ── daemon SSE subscription ────────────────────────────────────────────\n\ninterface DaemonEvent { kind: string; ts: string; data: Record<string, any> }\n\nfunction subscribeEvents(onEvent: (e: DaemonEvent) => void): { close: () => void } {\n let active = true;\n let req: ReturnType<typeof httpRequest> | null = null;\n\n const connect = (): void => {\n if (!active) return;\n req = httpRequest({\n socketPath: DAEMON_PATHS.SOCK_FILE,\n path: \"/v1/events\",\n method: \"GET\",\n headers: { Accept: \"text/event-stream\" },\n });\n let buffer = \"\";\n req.on(\"response\", (res: IncomingMessage) => {\n res.setEncoding(\"utf8\");\n res.on(\"data\", (chunk: string) => {\n buffer += chunk;\n let idx;\n while ((idx = buffer.indexOf(\"\\n\\n\")) >= 0) {\n const block = buffer.slice(0, idx);\n buffer = buffer.slice(idx + 2);\n if (!block.trim()) continue;\n let kind = \"message\";\n let dataLine = \"\";\n for (const line of block.split(\"\\n\")) {\n if (line.startsWith(\":\")) continue;\n if (line.startsWith(\"event:\")) kind = line.slice(6).trim();\n else if (line.startsWith(\"data:\")) dataLine = line.slice(5).trim();\n }\n if (!dataLine) continue;\n try {\n const parsed = JSON.parse(dataLine) as Record<string, unknown>;\n onEvent({ kind, ts: String(parsed.ts ?? \"\"), data: parsed });\n } catch { /* malformed event; skip */ }\n }\n });\n res.on(\"end\", () => {\n if (active) {\n process.stderr.write(\"[claudemesh-mcp] sse stream ended; reconnecting in 1s\\n\");\n setTimeout(connect, 1_000);\n }\n });\n res.on(\"error\", (err) => process.stderr.write(`[claudemesh-mcp] sse error: ${err.message}\\n`));\n });\n req.on(\"error\", (err) => {\n process.stderr.write(`[claudemesh-mcp] sse connect error: ${err.message}\\n`);\n if (active) setTimeout(connect, 2_000);\n });\n req.end();\n };\n\n connect();\n return {\n close: () => { active = false; try { req?.destroy(); } catch { /* ignore */ } },\n };\n}\n\n// ── main MCP server (push-pipe + skills) ──────────────────────────────\n\nexport async function startMcpServer(): Promise<void> {\n // Mesh-service proxy mode: separate code path for proxying a deployed\n // mesh MCP service into Claude Code. Unrelated to the daemon push-pipe.\n const serviceIdx = process.argv.indexOf(\"--service\");\n if (serviceIdx !== -1 && process.argv[serviceIdx + 1]) {\n return startServiceProxy(process.argv[serviceIdx + 1]!);\n }\n\n const ok = await daemonReady();\n if (!ok) bailNoDaemon();\n\n const server = new Server(\n { name: \"claudemesh\", version: VERSION },\n {\n capabilities: {\n tools: {},\n prompts: {},\n resources: {},\n // 1.34.1 — declare the experimental `claude/channel` capability.\n // Claude Code v2.1.x gates `notifications/claude/channel` on this\n // exact key: its `xJ_(serverName, capabilities, pluginSource)` check\n // returns {action:\"skip\", kind:\"capability\"} when\n // `capabilities.experimental?.[\"claude/channel\"]` is missing, and\n // the notification handler is never registered → every channel\n // emit lands on the floor, regardless of the\n // `--dangerously-load-development-channels server:claudemesh` flag.\n // This was the silent regression: pre-2.1.x clients didn't gate on\n // this key, so the same MCP wire shape \"worked\" until Claude Code\n // tightened the check. Verified by reading the binary at the\n // offsets near `notifications/claude/channel` in the strings dump.\n experimental: { \"claude/channel\": {} },\n },\n },\n );\n\n // Tools: empty. The CLI is the API; the model invokes it via Bash.\n server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [] }));\n\n // Prompts: mesh-published skills surfaced as `/skill-name` slash commands.\n server.setRequestHandler(ListPromptsRequestSchema, async () => {\n try {\n const { status, body } = await daemonGet(\"/v1/skills\");\n if (status !== 200) return { prompts: [] };\n const skills = (body?.skills as Array<{ name: string; description: string }> | undefined) ?? [];\n return { prompts: skills.map((s) => ({ name: s.name, description: s.description, arguments: [] })) };\n } catch { return { prompts: [] }; }\n });\n\n server.setRequestHandler(GetPromptRequestSchema, async (req) => {\n const name = req.params.name;\n const { status, body } = await daemonGet(`/v1/skills/${encodeURIComponent(name)}`);\n if (status === 404) throw new Error(`Skill \"${name}\" not found in the mesh`);\n if (status !== 200) throw new Error(`daemon returned ${status} fetching skill`);\n const skill = body.skill as { name: string; description: string; instructions: string; manifest?: any };\n let content = skill.instructions;\n const m = skill.manifest;\n if (m && typeof m === \"object\") {\n const fm: string[] = [\"---\"];\n if (m.description) fm.push(`description: \"${m.description}\"`);\n if (m.when_to_use) fm.push(`when_to_use: \"${m.when_to_use}\"`);\n if (Array.isArray(m.allowed_tools) && m.allowed_tools.length) {\n fm.push(`allowed-tools:\\n${m.allowed_tools.map((t: string) => ` - ${t}`).join(\"\\n\")}`);\n }\n if (m.model) fm.push(`model: ${m.model}`);\n if (m.context) fm.push(`context: ${m.context}`);\n if (m.agent) fm.push(`agent: ${m.agent}`);\n if (m.user_invocable === false) fm.push(`user-invocable: false`);\n if (m.argument_hint) fm.push(`argument-hint: \"${m.argument_hint}\"`);\n fm.push(\"---\\n\");\n if (fm.length > 3) content = fm.join(\"\\n\") + content;\n if (m.context === \"fork\") {\n const agentType = m.agent || \"general-purpose\";\n const modelHint = m.model ? `, model: \"${m.model}\"` : \"\";\n const toolsHint = m.allowed_tools?.length\n ? `\\nOnly use these tools: ${m.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 return {\n description: skill.description,\n messages: [{ role: \"user\" as const, content: { type: \"text\" as const, text: content } }],\n };\n });\n\n // Resources: mesh skills as `skill://claudemesh/<name>` URIs.\n server.setRequestHandler(ListResourcesRequestSchema, async () => {\n try {\n const { body } = await daemonGet(\"/v1/skills\");\n const skills = (body?.skills as Array<{ name: string; description: string }> | undefined) ?? [];\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 } catch { return { resources: [] }; }\n });\n\n server.setRequestHandler(ReadResourceRequestSchema, async (req) => {\n const uri = req.params.uri;\n const m = uri.match(/^skill:\\/\\/claudemesh\\/(.+)$/);\n if (!m) throw new Error(`Unknown resource URI: ${uri}`);\n const name = decodeURIComponent(m[1]!);\n const { status, body } = await daemonGet(`/v1/skills/${encodeURIComponent(name)}`);\n if (status === 404) throw new Error(`Skill \"${name}\" not found`);\n if (status !== 200) throw new Error(`daemon returned ${status} fetching skill`);\n const skill = body.skill as {\n name: string; description: string; instructions: string;\n tags?: string[]; manifest?: any;\n };\n const fm: string[] = [\"---\"];\n fm.push(`name: ${skill.name}`);\n fm.push(`description: \"${skill.description}\"`);\n if (skill.tags?.length) fm.push(`tags: [${skill.tags.join(\", \")}]`);\n const mf = skill.manifest;\n if (mf && typeof mf === \"object\") {\n if (mf.when_to_use) fm.push(`when_to_use: \"${mf.when_to_use}\"`);\n if (Array.isArray(mf.allowed_tools) && mf.allowed_tools.length) {\n fm.push(`allowed-tools:\\n${mf.allowed_tools.map((t: string) => ` - ${t}`).join(\"\\n\")}`);\n }\n if (mf.model) fm.push(`model: ${mf.model}`);\n if (mf.context) fm.push(`context: ${mf.context}`);\n }\n fm.push(\"---\\n\");\n return { contents: [{ uri, mimeType: \"text/markdown\", text: fm.join(\"\\n\") + skill.instructions }] };\n });\n\n // 1.34.1: every channel emit (and SSE event arrival) writes to a\n // per-pid log file under ~/.claudemesh/daemon/. Stderr from a Claude\n // Code-spawned MCP server isn't surfaced anywhere visible to the\n // user; without an on-disk trace we can't tell whether the SSE\n // delivered the event, whether the bus reached the MCP, or whether\n // server.notification rejected. The file path is stable across MCP\n // restarts so users can `tail -f` to watch live.\n const mcpLogPath = join(DAEMON_PATHS.DAEMON_DIR, `mcp-${process.pid}.log`);\n const mcpLog = (msg: string, meta?: Record<string, unknown>): void => {\n const line = JSON.stringify({ ts: new Date().toISOString(), pid: process.pid, msg, ...meta }) + \"\\n\";\n try { appendFileSync(mcpLogPath, line); } catch { /* logging must never crash */ }\n };\n mcpLog(\"mcp_started\", { version: VERSION });\n\n // 1.34.8: forward session token on /v1/inbox/seen so the daemon can\n // resolve mesh scoping if it ever needs to. We read it once here and\n // capture it in the closure since the MCP runs for the lifetime of\n // the session; the env var doesn't rotate mid-process.\n const { readSessionTokenFromEnv } = await import(\"~/services/session/token.js\");\n const sessionTokenForSeen = readSessionTokenFromEnv();\n\n // Subscribe to daemon events; translate to channel notifications.\n const sub = subscribeEvents(async (ev) => {\n mcpLog(\"sse_event_received\", { kind: ev.kind });\n if (ev.kind === \"message\") {\n const d = ev.data;\n const fromName = String(d.sender_name ?? \"unknown\");\n const fromMember = String(d.sender_member_pubkey ?? d.sender_pubkey ?? \"\");\n const body = String(d.body ?? \"(decrypt failed)\");\n const priority = String(d.priority ?? \"next\");\n const prioBadge = priority === \"now\" ? \"[URGENT] \" : priority === \"low\" ? \"[low] \" : \"\";\n const topicTag = d.topic ? ` (#${d.topic})` : \"\";\n const content = `${prioBadge}${fromName}${topicTag}: ${body}`;\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content,\n meta: {\n from_id: fromMember,\n from_pubkey: fromMember,\n from_session_pubkey: String(d.sender_pubkey ?? \"\"),\n from_name: fromName,\n mesh_slug: String(d.mesh ?? \"\"),\n priority,\n message_id: String(d.broker_message_id ?? d.id ?? \"\"),\n client_message_id: String(d.client_message_id ?? \"\"),\n ...(d.topic ? { topic: String(d.topic) } : {}),\n ...(d.reply_to_id ? { reply_to_id: String(d.reply_to_id) } : {}),\n ...(d.subtype ? { subtype: String(d.subtype) } : {}),\n },\n },\n });\n mcpLog(\"channel_emitted\", { content_preview: content.slice(0, 80), mesh: String(d.mesh ?? \"\") });\n // 1.34.8: this row was just surfaced inline as a channel\n // reminder; mark it seen so the next launch's welcome doesn't\n // re-surface it as \"unread.\" Best-effort: a failure here just\n // means the welcome will list one extra row, not data loss.\n const inboxRowId = String(d.id ?? \"\");\n if (inboxRowId) {\n void daemonMarkSeen([inboxRowId], sessionTokenForSeen).catch(() => { /* swallow */ });\n }\n } catch (err) {\n mcpLog(\"channel_emit_failed\", { err: String(err) });\n process.stderr.write(`[claudemesh-mcp] channel emit failed: ${err}\\n`);\n }\n } else if (ev.kind === \"peer_join\" || ev.kind === \"peer_leave\" || ev.kind === \"system\") {\n const d = ev.data;\n const eventName = String(d.event ?? ev.kind);\n let content: string;\n if (ev.kind === \"peer_join\") {\n content = `[system] Peer \"${String(d.name ?? \"unknown\")}\" joined the mesh`;\n } else if (ev.kind === \"peer_leave\") {\n content = `[system] Peer \"${String(d.name ?? \"unknown\")}\" left the mesh`;\n } else {\n content = `[system] ${eventName}: ${JSON.stringify(d).slice(0, 240)}`;\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: String(d.mesh ?? \"\"),\n },\n },\n });\n } catch { /* best effort */ }\n }\n });\n\n // 1.34.6 — Welcome: single emit on oninitialized + 3s grace.\n //\n // The earlier \"timing race\" theory was wrong. Reading Claude Code's\n // binary at the `notifications/claude/channel` Zod schema:\n //\n // IJ_ = y.object({\n // method: y.literal(\"notifications/claude/channel\"),\n // params: y.object({\n // content: y.string(),\n // meta: y.record(y.string(), y.string()).optional()\n // })\n // })\n //\n // `meta` MUST be a record of string-to-string. Pre-1.34.6 the\n // welcome shipped numbers (`peer_count`, `unread_count`) and arrays\n // (`peer_names`, `latest_message_ids`) — Zod rejected the entire\n // notification before it ever reached the channel handler.\n //\n // Live peer DMs always survived because their meta values all went\n // through `String(...)`. The welcome was the only notification\n // shape with non-string meta — uniquely affected, schema-rejected,\n // silently dropped.\n //\n // 1.34.6 fixes the meta values (see `emitMeshWelcome`) so the\n // notification passes validation; the dual-lane retry from 1.34.5\n // is no longer necessary and would now surface a duplicate. Back to\n // a single emit, with a 3s grace after `oninitialized` — enough for\n // the React effect that registers the channel handler to run, but\n // tight enough to feel like a launch handshake.\n const WELCOME_GRACE_MS = 3_000;\n let welcomeSent = false;\n server.oninitialized = () => {\n mcpLog(\"server_initialized\");\n if (welcomeSent) return;\n welcomeSent = true;\n setTimeout(() => { void emitMeshWelcome(server, mcpLog); }, WELCOME_GRACE_MS);\n };\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n // Keep event loop active so SSE callbacks flush stdout promptly.\n const keepalive = setInterval(() => { /* tick */ }, 1_000);\n void keepalive;\n\n const shutdown = (): void => {\n clearInterval(keepalive);\n sub.close();\n process.exit(0);\n };\n process.on(\"SIGTERM\", shutdown);\n process.on(\"SIGINT\", shutdown);\n}\n\n/**\n * Mesh-connected welcome. Runs once 5s after the MCP transport is up,\n * regardless of inbox state. The point isn't just to summarize unread —\n * an empty welcome still confirms to the user that the mesh pipe is\n * live, names the session, says how many peers are visible, and lists\n * the canonical CLI commands so the model can use them mid-turn.\n *\n * Composes from up to three best-effort daemon queries:\n * - `/v1/sessions/me` → display name + session pubkey + mesh\n * (requires session token; absent on bare `claudemesh mcp`)\n * - `/v1/peers?mesh=…` → live peer count, filtered to non-control-plane\n * - `/v1/inbox?…` → recent message count + up to 3 previews\n *\n * Each query degrades silently — a missing field becomes \"unknown\" or\n * is omitted. The welcome ALWAYS emits unless the IPC socket is\n * unreachable; that's the design contract: \"you launched into the\n * mesh, here's what you've got.\"\n */\nasync function emitMeshWelcome(\n server: import(\"@modelcontextprotocol/sdk/server/index.js\").Server,\n mcpLog: (msg: string, meta?: Record<string, unknown>) => void,\n): Promise<void> {\n const { readSessionTokenFromEnv } = await import(\"~/services/session/token.js\");\n const sessionToken = readSessionTokenFromEnv();\n\n // 1) Self identity. Token-less path (bare `claudemesh mcp` outside a\n // launch) just leaves these undefined; the welcome still goes out.\n let selfDisplayName: string | undefined;\n let selfSessionPubkey: string | undefined;\n let selfMeshSlug: string | undefined;\n let selfRole: string | undefined;\n if (sessionToken) {\n try {\n const { status, body } = await daemonGet(\"/v1/sessions/me\", { sessionToken });\n if (status === 200 && body?.session) {\n selfDisplayName = body.session.displayName;\n selfMeshSlug = body.session.mesh;\n selfRole = body.session.role;\n selfSessionPubkey = body.session.presence?.sessionPubkey;\n }\n } catch (e) { mcpLog(\"welcome_self_lookup_failed\", { err: String(e) }); }\n }\n\n // 2) Live peer count. Match the same filter the launch banner uses\n // (`channel !== \"claudemesh-daemon\"`) so the welcome's number agrees\n // with the \"N peers online\" line that just printed in the terminal.\n // We also fall back to `peerRole !== \"control-plane\"` for newer\n // brokers that emit the role taxonomy. Excluding self uses both\n // session pubkey AND session id (older brokers may not surface\n // peerRole, so name-only matching would fail).\n let peerCount = -1;\n let peerNames: string[] = [];\n try {\n const path = selfMeshSlug ? `/v1/peers?mesh=${encodeURIComponent(selfMeshSlug)}` : \"/v1/peers\";\n const { status, body } = await daemonGet(path, { sessionToken });\n if (status === 200 && Array.isArray(body?.peers)) {\n const peers = body.peers as Array<Record<string, unknown>>;\n const real = peers.filter((p) => {\n const channel = String(p.channel ?? \"\");\n const peerRole = String(p.peerRole ?? \"\");\n const isInfra = channel === \"claudemesh-daemon\" || peerRole === \"control-plane\";\n if (isInfra) return false;\n if (selfSessionPubkey && p.pubkey === selfSessionPubkey) return false;\n return true;\n });\n peerCount = real.length;\n peerNames = real\n .map((p) => String(p.displayName ?? \"unknown\"))\n .filter((n, i, arr) => arr.indexOf(n) === i)\n .slice(0, 5);\n mcpLog(\"welcome_peers_resolved\", { total: peers.length, real: real.length });\n } else {\n mcpLog(\"welcome_peers_status\", { status });\n }\n } catch (e) { mcpLog(\"welcome_peers_lookup_failed\", { err: String(e) }); }\n\n // 3) Unread inbox. 1.34.8 replaced the \"last 24h\" window with the\n // proper read-state filter — `?unread_only=true` returns rows whose\n // `seen_at` is NULL. The list call uses `mark_seen=false` so the\n // welcome doesn't auto-stamp; we stamp explicitly via /v1/inbox/seen\n // *after* we know the channel notification went out (otherwise a\n // schema rejection would silently mark rows seen that the user\n // never actually saw — the original 1.34.6 bug shape).\n const inboxPath = selfMeshSlug\n ? `/v1/inbox?mesh=${encodeURIComponent(selfMeshSlug)}&unread_only=true&mark_seen=false&limit=50`\n : `/v1/inbox?unread_only=true&mark_seen=false&limit=50`;\n let inboxItems: Array<Record<string, unknown>> = [];\n try {\n const { status, body } = await daemonGet(inboxPath, { sessionToken });\n if (status === 200 && Array.isArray(body?.items)) {\n inboxItems = body.items as Array<Record<string, unknown>>;\n }\n } catch (e) { mcpLog(\"welcome_inbox_lookup_failed\", { err: String(e) }); }\n\n // Compose the body. Markdown-friendly so it renders cleanly in the\n // Claude Code channel reminder block.\n const lines: string[] = [];\n const idTag = selfDisplayName\n ? `${selfDisplayName}${selfSessionPubkey ? ` (${selfSessionPubkey.slice(0, 8)})` : \"\"}${selfRole ? ` [${selfRole}]` : \"\"}`\n : \"session\";\n const meshTag = selfMeshSlug ? ` on mesh \\`${selfMeshSlug}\\`` : \"\";\n lines.push(`🌐 [welcome] claudemesh connected — you are **${idTag}**${meshTag}.`);\n\n if (peerCount === 0) {\n lines.push(`👥 No other peers online right now.`);\n } else if (peerCount > 0) {\n const namesPreview = peerNames.join(\", \");\n const more = peerCount > peerNames.length ? ` …and ${peerCount - peerNames.length} more` : \"\";\n lines.push(`👥 ${peerCount} peer${peerCount === 1 ? \"\" : \"s\"} online: ${namesPreview}${more}`);\n } else {\n lines.push(`👥 Peer list unavailable (daemon query failed).`);\n }\n\n if (inboxItems.length === 0) {\n lines.push(`📥 No unread messages.`);\n } else {\n lines.push(`📥 ${inboxItems.length} unread message${inboxItems.length === 1 ? \"\" : \"s\"}:`);\n for (const it of inboxItems.slice(0, 3)) {\n const sender = String(it.sender_name ?? \"unknown\");\n const senderPub = String(it.sender_pubkey ?? \"\").slice(0, 8);\n const tag = sender !== senderPub ? `${sender} (${senderPub})` : senderPub;\n const bodyText = (typeof it.body === \"string\" ? it.body : \"(encrypted)\").slice(0, 60);\n const time = it.received_at ? new Date(String(it.received_at)).toLocaleTimeString() : \"\";\n lines.push(` ${tag} ${time}: ${bodyText}`);\n }\n if (inboxItems.length > 3) lines.push(` …and ${inboxItems.length - 3} more`);\n }\n\n // CLI hints — what the model should call when the user asks. Listed\n // here as a one-liner so the welcome stays compact.\n lines.push(`💡 Use: \\`claudemesh peer list\\` · \\`claudemesh send <peer> <msg>\\` · \\`claudemesh inbox\\``);\n // Skill pointer — the `claudemesh` skill in the user's Claude install\n // documents every CLI verb, JSON shapes, channel attributes, and\n // common patterns. If the model isn't already loaded with it, this is\n // the cue to read it once before acting on the mesh.\n lines.push(`📚 Read the \\`claudemesh\\` skill (SKILL.md) for full CLI / channel / inbox reference if not yet in context.`);\n\n const content = lines.join(\"\\n\");\n try {\n // Claude Code's `notifications/claude/channel` schema is\n // `meta: y.record(y.string(), y.string())` — string values only.\n // Pre-1.34.6 we sent numbers / arrays in `peer_count`, `unread_count`,\n // `peer_names`, `latest_message_ids`; Zod silently rejected the\n // whole notification before it reached the channel handler. Live\n // peer DMs survived because their meta values all went through\n // `String(...)`. Coerce everything here too — arrays stringify as\n // JSON so downstream consumers can re-parse if they want, and the\n // counts become digit strings (parseable on the receiving side).\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content,\n meta: {\n kind: \"welcome\",\n self_display_name: selfDisplayName ?? \"\",\n self_session_pubkey: selfSessionPubkey ?? \"\",\n self_role: selfRole ?? \"\",\n mesh_slug: selfMeshSlug ?? \"\",\n peer_count: peerCount >= 0 ? String(peerCount) : \"\",\n peer_names: JSON.stringify(peerNames),\n unread_count: String(inboxItems.length),\n latest_message_ids: JSON.stringify(\n inboxItems.slice(0, 10).map((it) => String(it.id ?? \"\")),\n ),\n },\n },\n });\n mcpLog(\"welcome_emitted\", {\n mesh: selfMeshSlug ?? \"\",\n peer_count: peerCount,\n unread_count: inboxItems.length,\n });\n // 1.34.8: stamp the rows we just surfaced. Done AFTER the\n // notification succeeds so a Zod-rejected welcome (the 1.34.6 bug\n // shape) doesn't silently mark rows seen that the user never\n // actually saw. Best-effort.\n if (inboxItems.length > 0) {\n const ids = inboxItems.map((it) => String(it.id ?? \"\")).filter(Boolean);\n if (ids.length > 0) {\n void daemonMarkSeen(ids, sessionToken).catch(() => { /* swallow */ });\n }\n }\n } catch (err) {\n mcpLog(\"welcome_emit_failed\", { err: String(err) });\n }\n}\n\n// ── mesh-service proxy mode (unchanged from prior versions) ────────────\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 let tools: Array<{ name: string; description: string; inputSchema: Record<string, unknown> }> = [];\n try {\n const fetched = await client.getServiceTools(serviceName);\n tools = fetched as typeof tools;\n } catch {\n const cached = client.serviceCatalog.find((s) => s.name === serviceName);\n if (cached) tools = cached.tools as typeof tools;\n }\n\n if (tools.length === 0) {\n process.stderr.write(`[mesh:${serviceName}] no tools found — service may not be running\\n`);\n }\n\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 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: [{ type: \"text\" as const, text: \"Service temporarily unavailable — broker reconnecting. Retry in a few seconds.\" }],\n isError: true,\n };\n }\n }\n\n try {\n const result = await client.mcpCall(serviceName, toolName, args as Record<string, unknown>);\n if (result.error) {\n return { content: [{ type: \"text\" as const, text: `Error: ${result.error}` }], isError: true };\n }\n const resultText = typeof result.result === \"string\"\n ? result.result\n : JSON.stringify(result.result, null, 2);\n return { content: [{ type: \"text\" as const, text: resultText }] };\n } catch (e) {\n return {\n content: [{ type: \"text\" as const, text: `Call failed: ${e instanceof Error ? e.message : String(e)}` }],\n isError: true,\n };\n }\n });\n\n client.onPush((push) => {\n if (push.event === \"mcp_undeployed\" && (push.eventData as any)?.name === serviceName) {\n process.stderr.write(`[mesh:${serviceName}] service undeployed — exiting\\n`);\n client.close();\n process.exit(0);\n }\n if (push.event === \"mcp_updated\" && (push.eventData as any)?.name === serviceName) {\n const newTools = (push.eventData as any)?.tools;\n if (Array.isArray(newTools)) {\n tools = newTools as typeof tools;\n server.notification({ method: \"notifications/tools/list_changed\" }).catch(() => { /* ignore */ });\n }\n }\n });\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const keepalive = setInterval(() => { /* tick */ }, 1_000);\n void keepalive;\n\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",
|
|
172
173
|
"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",
|
|
173
174
|
"/**\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",
|
|
174
175
|
"/**\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",
|
|
175
|
-
"import { defineCommand, runMain } from \"citty\";\n\nexport interface ParsedArgs { command: string; positionals: string[]; flags: Record<string, string | boolean | undefined>; }\n\n/**\n * Flags that NEVER take a value. The parser's default behavior is greedy\n * (any `--flag` consumes the next non-`-` arg as its value), which is\n * fine for `--mesh foo` and `--priority now` but breaks for booleans:\n * `claudemesh send --self <pubkey> \"msg\"` was eating the pubkey as the\n * value of --self, leaving zero positionals and triggering Usage errors.\n *\n * Adding to this set: any new boolean / no-arg switch.\n */\nconst BOOLEAN_FLAGS = new Set([\n \"self\",\n \"json\", // also accepts --json=a,b,c form below\n \"all\",\n \"yes\", \"y\",\n \"help\", \"h\",\n \"version\", \"v\",\n \"quiet\",\n \"strict\",\n \"continue\",\n \"no-daemon\",\n \"no-color\",\n \"debug\",\n \"allow-ci-persistent\",\n \"force\",\n \"dry-run\",\n \"verbose\",\n \"skip-service\",\n]);\n\nexport function parseArgv(argv: string[]): ParsedArgs {\n const args = argv.slice(2);\n const flags: Record<string, string | boolean | undefined> = {};\n const positionals: string[] = [];\n let command = \"\";\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]!;\n // --flag=value (always parsed as a value, regardless of boolean set)\n if (arg.startsWith(\"--\") && arg.includes(\"=\")) {\n const eq = arg.indexOf(\"=\");\n const key = arg.slice(2, eq);\n flags[key] = arg.slice(eq + 1);\n continue;\n }\n if (arg.startsWith(\"--\")) {\n const key = arg.slice(2);\n // Known boolean → never consume the next token as a value.\n if (BOOLEAN_FLAGS.has(key)) { flags[key] = true; continue; }\n const next = args[i + 1];\n if (next !== undefined && !next.startsWith(\"-\")) { flags[key] = next; i++; }\n else flags[key] = true;\n } else if (arg.startsWith(\"-\") && arg.length === 2) {\n const key = arg.slice(1);\n if (BOOLEAN_FLAGS.has(key)) { flags[key] = true; continue; }\n const next = args[i + 1];\n if (next !== undefined && !next.startsWith(\"-\")) { flags[key] = next; i++; }\n else flags[key] = true;\n } else if (!command) {\n command = arg;\n } else {\n positionals.push(arg);\n }\n }\n return { command, positionals, flags };\n}\n\nexport { defineCommand, runMain };\n",
|
|
176
|
+
"import { defineCommand, runMain } from \"citty\";\n\nexport interface ParsedArgs { command: string; positionals: string[]; flags: Record<string, string | boolean | undefined>; }\n\n/**\n * Flags that NEVER take a value. The parser's default behavior is greedy\n * (any `--flag` consumes the next non-`-` arg as its value), which is\n * fine for `--mesh foo` and `--priority now` but breaks for booleans:\n * `claudemesh send --self <pubkey> \"msg\"` was eating the pubkey as the\n * value of --self, leaving zero positionals and triggering Usage errors.\n *\n * Adding to this set: any new boolean / no-arg switch.\n */\nconst BOOLEAN_FLAGS = new Set([\n \"self\",\n \"json\", // also accepts --json=a,b,c form below\n \"all\",\n \"yes\", \"y\",\n \"help\", \"h\",\n \"version\", \"v\",\n \"quiet\",\n \"strict\",\n \"continue\",\n \"no-daemon\",\n \"no-color\",\n \"debug\",\n \"allow-ci-persistent\",\n \"force\",\n \"dry-run\",\n \"verbose\",\n \"skip-service\",\n // 1.34.8: `--unread` filters `claudemesh inbox` to rows whose\n // seen_at is NULL. No value — pure switch.\n \"unread\",\n]);\n\nexport function parseArgv(argv: string[]): ParsedArgs {\n const args = argv.slice(2);\n const flags: Record<string, string | boolean | undefined> = {};\n const positionals: string[] = [];\n let command = \"\";\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]!;\n // --flag=value (always parsed as a value, regardless of boolean set)\n if (arg.startsWith(\"--\") && arg.includes(\"=\")) {\n const eq = arg.indexOf(\"=\");\n const key = arg.slice(2, eq);\n flags[key] = arg.slice(eq + 1);\n continue;\n }\n if (arg.startsWith(\"--\")) {\n const key = arg.slice(2);\n // Known boolean → never consume the next token as a value.\n if (BOOLEAN_FLAGS.has(key)) { flags[key] = true; continue; }\n const next = args[i + 1];\n if (next !== undefined && !next.startsWith(\"-\")) { flags[key] = next; i++; }\n else flags[key] = true;\n } else if (arg.startsWith(\"-\") && arg.length === 2) {\n const key = arg.slice(1);\n if (BOOLEAN_FLAGS.has(key)) { flags[key] = true; continue; }\n const next = args[i + 1];\n if (next !== undefined && !next.startsWith(\"-\")) { flags[key] = next; i++; }\n else flags[key] = true;\n } else if (!command) {\n command = arg;\n } else {\n positionals.push(arg);\n }\n }\n return { command, positionals, flags };\n}\n\nexport { defineCommand, runMain };\n",
|
|
176
177
|
"import { SHOW_CURSOR } from \"~/ui/styles.js\";\nexport function installSignalHandlers(): void {\n const cleanup = () => { process.stdout.write(SHOW_CURSOR); };\n process.on(\"SIGINT\", () => { cleanup(); process.exit(1); });\n process.on(\"SIGTERM\", () => { cleanup(); process.exit(0); });\n}\n",
|
|
177
178
|
"import { EXIT } from \"~/constants/exit-codes.js\";\nimport { red } from \"~/ui/styles.js\";\nexport function handleUncaughtError(err: unknown): never {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(red(\"\\n Fatal: \" + msg + \"\\n\"));\n if (process.env.CLAUDEMESH_DEBUG === \"1\" && err instanceof Error && err.stack) console.error(err.stack);\n process.exit(EXIT.INTERNAL_ERROR);\n}\nexport function installErrorHandlers(): void {\n process.on(\"uncaughtException\", handleUncaughtError);\n process.on(\"unhandledRejection\", (reason) => handleUncaughtError(reason));\n}\n",
|
|
178
179
|
"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",
|
|
179
180
|
"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",
|
|
180
181
|
"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",
|
|
181
|
-
"#!/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\";\nimport { setDaemonPolicy, policyFromFlags } from \"~/services/daemon/policy.js\";\nimport { bold, clay, cyan, dim, orange } from \"~/ui/styles.js\";\n\ninstallSignalHandlers();\ninstallErrorHandlers();\n\nconst { command, positionals, flags } = parseArgv(process.argv);\n\n// Resolve daemon policy once at boot — daemon-routing helpers read this\n// instead of inspecting flags themselves. --no-daemon and --strict are\n// mutually exclusive (--no-daemon wins if both are passed).\nsetDaemonPolicy(policyFromFlags(flags));\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 (alias: \"workspace\" — claudemesh workspace <verb> mirrors each)\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 <old> <new> change a mesh's slug (the identifier you see and type)\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 flags: [--priority now|next|low] [--mesh <slug>]\n [--self] (allow targeting your own member/session pubkey;\n fans out to every sibling session of your member)\n [--json] (machine-readable result)\n claudemesh message inbox read persisted inbox (alias: inbox)\n flags: [--mesh <slug>] [--limit N] [--json]\n reads ~/.claudemesh/daemon/inbox.db via daemon\n claudemesh inbox flush bulk-delete inbox rows\n flags: [--mesh <slug>] [--before <iso-timestamp>] [--all]\n --all required when neither --mesh nor --before is set\n claudemesh inbox delete <id> delete one inbox row by id (alias: rm)\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 across all meshes (or --mesh <slug>)\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 skill print the bundled SKILL.md to stdout\n claudemesh me cross-mesh workspace overview (v0.4.0)\n claudemesh me topics cross-mesh topic list [--unread]\n claudemesh me notifications cross-mesh @-mentions [--all] [--since=ISO]\n claudemesh me activity cross-mesh recent messages [--since=ISO]\n claudemesh me search <q> cross-mesh search (topics + messages)\n claudemesh member list mesh roster with online state [--online]\n claudemesh notification list @-mentions across all meshes (or --mesh <slug>)\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 set|list|delete encrypted secrets (set: --type env|file --mount /p)\n claudemesh watch add|list|remove URL change watchers (add: --label --interval --extract)\n claudemesh webhook create|list|delete outbound HTTP triggers\n claudemesh file share <path> [--to peer] upload (or local-host fast path if --to matches)\n claudemesh file get <id> [--out path] download by id\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\nDaemon (long-lived peer mesh runtime, v0.9.0)\n claudemesh daemon up start daemon (alias: start) [--mesh <slug>] [--no-tcp]\n claudemesh daemon status show running pid + IPC health [--json]\n claudemesh daemon down stop daemon (alias: stop)\n claudemesh daemon version ipc + schema version of running daemon\n claudemesh daemon outbox list list local outbox rows [--failed|--pending|--inflight|--done]\n claudemesh daemon outbox requeue <id> re-enqueue an aborted/dead row [--new-client-id <id>]\n claudemesh daemon accept-host pin current host fingerprint\n claudemesh daemon install-service --mesh <slug> write launchd / systemd-user unit\n claudemesh daemon uninstall-service remove the unit\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 --strict require daemon for broker-touching verbs (no cold-path fallback)\n --no-daemon skip daemon entirely; open broker WS directly (CI / sandboxed scripts)\n`;\n\n/**\n * Apply color treatment to the HELP block for terminal readability.\n *\n * Strategy is line-based and intentionally conservative:\n * - Section header lines (the title-case categories like `Mesh`,\n * `Topic`, `Auth`, `USAGE`) get bold + accent.\n * - Each verb row (` claudemesh <verb> ...`) gets the command tinted\n * cyan up to the second whitespace gap (separating the syntax from\n * the description), and any trailing `(alias: ...)` parenthetical\n * dimmed so it reads as secondary metadata.\n * - The header (program name + version) gets the brand orange.\n *\n * Falls through to plain output when stdout is not a TTY or NO_COLOR\n * is set — the underlying style helpers already gate on that.\n */\nfunction colorizeHelp(raw: string): string {\n const lines = raw.split(\"\\n\");\n const SECTION_HEADER_RE = /^([A-Z][A-Za-z0-9 /+-]*?)(\\s*\\(.*\\))?$/;\n const VERB_ROW_RE = /^(\\s{2})(claudemesh[^\\s]*(?:\\s+[^\\s]+)*?)(\\s{2,})(.*)$/;\n const ALIAS_RE = /(\\(alias[^)]*\\))/g;\n const out: string[] = [];\n for (const line of lines) {\n if (line.startsWith(\"claudemesh —\")) {\n out.push(orange(line));\n continue;\n }\n if (line.trim() === \"\") {\n out.push(line);\n continue;\n }\n // Section header: a line with no leading spaces that isn't a verb.\n if (!line.startsWith(\" \") && SECTION_HEADER_RE.test(line)) {\n const m = line.match(SECTION_HEADER_RE)!;\n const head = bold(clay(m[1]!));\n const meta = m[2] ? dim(m[2]) : \"\";\n out.push(head + meta);\n continue;\n }\n // Verb row: tint the syntax, dim the alias parenthetical.\n const verbMatch = line.match(VERB_ROW_RE);\n if (verbMatch) {\n const [, indent, syntax, gap, rest] = verbMatch;\n const dimmedRest = rest!.replace(ALIAS_RE, (m) => dim(m));\n out.push(`${indent}${cyan(syntax!)}${gap}${dimmedRest}`);\n continue;\n }\n out.push(line);\n }\n return out.join(\"\\n\");\n}\n\nasync function main(): Promise<void> {\n if (flags.help || flags.h) { console.log(colorizeHelp(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 role: flags.role as string | undefined,\n groups: flags.groups as string | undefined,\n \"message-mode\": flags[\"message-mode\"] as string | undefined,\n \"system-prompt\": flags[\"system-prompt\"] as string | undefined,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\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 role: flags.role as string | undefined,\n groups: flags.groups as string | undefined,\n \"message-mode\": flags[\"message-mode\"] as string | undefined,\n \"system-prompt\": flags[\"system-prompt\"] as string | undefined,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\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 role: flags.role as string,\n groups: flags.groups as string,\n \"message-mode\": flags[\"message-mode\"] as string,\n \"system-prompt\": flags[\"system-prompt\"] as string,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\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 // workspace — alias surface for mesh-management verbs (v1.27.0 teaser; full\n // rename arrives in 1.28.0). Each sub mirrors an existing top-level verb.\n case \"workspace\": {\n const sub = positionals[0];\n if (!sub || sub === \"launch\" || sub === \"connect\" || sub === \"open\") {\n const { runLaunch } = await import(\"~/commands/launch.js\");\n await runLaunch({\n mesh: positionals[1] ?? 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 role: flags.role as string,\n groups: flags.groups as string,\n \"message-mode\": flags[\"message-mode\"] as string,\n \"system-prompt\": flags[\"system-prompt\"] as string,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\n }, process.argv.slice(2));\n }\n else if (sub === \"list\" || sub === \"ls\") { const { runList } = await import(\"~/commands/list.js\"); await runList(); }\n else if (sub === \"info\") { const { runInfo } = await import(\"~/commands/info.js\"); await runInfo({}); }\n else if (sub === \"create\" || sub === \"new\") { const { newMesh } = await import(\"~/commands/new.js\"); process.exit(await newMesh(positionals[1] ?? \"\", { json: !!flags.json })); }\n else if (sub === \"join\" || sub === \"add\") { const { runJoin } = await import(\"~/commands/join.js\"); await runJoin(positionals.slice(1)); }\n else if (sub === \"delete\" || sub === \"rm\") { const { deleteMesh } = await import(\"~/commands/delete-mesh.js\"); process.exit(await deleteMesh(positionals[1] ?? \"\", { yes: !!flags.y || !!flags.yes })); }\n else if (sub === \"rename\") { const { rename } = await import(\"~/commands/rename.js\"); process.exit(await rename(positionals[1] ?? \"\", positionals[2] ?? \"\")); }\n else if (sub === \"share\" || sub === \"invite\") { const { invite } = await import(\"~/commands/invite.js\"); process.exit(await invite(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"overview\") { const { runMe } = await import(\"~/commands/me.js\"); process.exit(await runMe({ mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh workspace <list|info|create|join|delete|rename|share|launch|overview>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\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, all: !!flags.all }); 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, self: !!flags.self }, positionals[0] ?? \"\", positionals.slice(1).join(\" \")); break; }\n case \"inbox\": {\n const sub = positionals[0];\n if (sub === \"flush\") {\n const { runInboxFlush } = await import(\"~/commands/inbox-actions.js\");\n await runInboxFlush({\n mesh: flags.mesh as string | undefined,\n before: flags.before as string | undefined,\n all: !!flags.all,\n json: !!flags.json,\n });\n } else if (sub === \"delete\" || sub === \"rm\") {\n const { runInboxDelete } = await import(\"~/commands/inbox-actions.js\");\n await runInboxDelete(positionals[1] ?? \"\", { json: !!flags.json });\n } else {\n const { runInbox } = await import(\"~/commands/inbox.js\");\n await runInbox({\n mesh: flags.mesh as string | undefined,\n json: !!flags.json,\n limit: typeof flags.limit === \"number\" ? flags.limit : (typeof flags.limit === \"string\" ? Number.parseInt(flags.limit, 10) : undefined),\n });\n }\n break;\n }\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\") {\n // v0.5.0 phase 2: aggregate across every mesh when --mesh is omitted.\n if (!flags.mesh) {\n const { runMeState } = await import(\"~/commands/me.js\");\n process.exit(await runMeState({ json: !!flags.json, key: flags.key as string | undefined }));\n }\n const { runStateList } = await import(\"~/commands/state.js\");\n await runStateList({});\n }\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\": {\n // v0.5.0 phase 2: aggregate across every mesh when --mesh is omitted.\n if (!flags.mesh) {\n const { runMeMemory } = await import(\"~/commands/me.js\");\n process.exit(await runMeMemory({ json: !!flags.json, query: positionals.join(\" \") }));\n }\n const { recall } = await import(\"~/commands/recall.js\");\n process.exit(await recall(positionals.join(\" \"), { mesh: flags.mesh as string, json: !!flags.json }));\n break;\n }\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 // Daemon (v0.9.0)\n case \"daemon\": {\n const { runDaemonCommand } = await import(\"~/commands/daemon.js\");\n const sub = positionals[0];\n const rest = positionals.slice(1);\n const outboxStatus =\n flags.failed ? \"dead\" :\n flags.pending ? \"pending\" :\n flags.inflight ? \"inflight\" :\n flags.done ? \"done\" :\n flags.aborted ? \"aborted\" : undefined;\n const code = await runDaemonCommand(sub, {\n json: !!flags.json,\n noTcp: !!flags[\"no-tcp\"],\n publicHealth: !!flags[\"public-health\"],\n mesh: flags.mesh as string | undefined,\n displayName: flags.name as string | undefined,\n outboxStatus,\n newClientId: flags[\"new-client-id\"] as string | undefined,\n }, rest);\n process.exit(code);\n break;\n }\n\n // Setup\n case \"install\": { const { runInstall } = await import(\"~/commands/install.js\"); await 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, all: !!flags.all };\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, self: !!flags.self }, positionals[1] ?? \"\", positionals.slice(2).join(\" \")); }\n else if (sub === \"inbox\") {\n const sub2 = positionals[1];\n if (sub2 === \"flush\") {\n const { runInboxFlush } = await import(\"~/commands/inbox-actions.js\");\n await runInboxFlush({\n mesh: flags.mesh as string | undefined,\n before: flags.before as string | undefined,\n all: !!flags.all,\n json: !!flags.json,\n });\n } else if (sub2 === \"delete\" || sub2 === \"rm\") {\n const { runInboxDelete } = await import(\"~/commands/inbox-actions.js\");\n await runInboxDelete(positionals[2] ?? \"\", { json: !!flags.json });\n } else {\n const { runInbox } = await import(\"~/commands/inbox.js\");\n await runInbox({\n mesh: flags.mesh as string | undefined,\n json: !!flags.json,\n limit: typeof flags.limit === \"number\" ? flags.limit : (typeof flags.limit === \"string\" ? Number.parseInt(flags.limit, 10) : undefined),\n });\n }\n }\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 // No subcommand → print the bundled SKILL.md to stdout. Lets a\n // fresh user pipe `claudemesh skill | claude --skill-add -`\n // without copying anything into ~/.claude/skills (v1.18.0).\n if (!sub) { const { runSkill } = await import(\"~/commands/skill.js\"); process.exit(await runSkill()); }\n else 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 (print bundled SKILL.md)\\n 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 if (sub === \"set\") {\n const { runVaultSet } = await import(\"~/commands/platform-actions.js\");\n process.exit(await runVaultSet(positionals[1] ?? \"\", positionals[2] ?? \"\", {\n ...f,\n entryType: (flags.type as \"env\" | \"file\" | undefined),\n mountPath: flags.mount as string | undefined,\n description: flags.description as string | undefined,\n }));\n }\n else { console.error(\"Usage: claudemesh vault <list|set|delete>\"); 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 if (sub === \"add\") {\n const { runWatchAdd } = await import(\"~/commands/platform-actions.js\");\n process.exit(await runWatchAdd(positionals[1] ?? \"\", {\n ...f,\n label: flags.label as string | undefined,\n interval: flags.interval ? Number(flags.interval) : undefined,\n mode: flags.mode as string | undefined,\n extract: flags.extract as string | undefined,\n notifyOn: flags[\"notify-on\"] as string | undefined,\n }));\n }\n else { console.error(\"Usage: claudemesh watch <list|add|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 if (sub === \"create\") { const { runWebhookCreate } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWebhookCreate(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh webhook <list|create|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 === \"share\") {\n const { runFileShare } = await import(\"~/commands/file.js\");\n process.exit(await runFileShare(positionals[1] ?? \"\", {\n ...f,\n to: flags.to as string | undefined,\n tags: flags.tags as string | undefined,\n message: flags.message as string | undefined,\n upload: !!flags.upload,\n }));\n }\n else if (sub === \"get\") {\n const { runFileGet } = await import(\"~/commands/file.js\");\n process.exit(await runFileGet(positionals[1] ?? \"\", { ...f, out: flags.out as string | undefined }));\n }\n else 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 <share|get|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\") {\n // v0.5.0: aggregate across every joined mesh when --mesh is omitted.\n // The per-mesh runTopicList prompts for a mesh; me topics doesn't\n // need one and surfaces last-activity + unread per topic.\n if (!f.mesh) {\n const { runMeTopics } = await import(\"~/commands/me.js\");\n process.exit(await runMeTopics({ mesh: undefined, json: f.json, unread: !!flags.unread }));\n }\n const { runTopicList } = await import(\"~/commands/topic.js\");\n process.exit(await runTopicList(f));\n }\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 // v0.5.0: aggregate across every joined mesh when --mesh is omitted.\n if (!f.mesh) {\n const { runMeNotifications } = await import(\"~/commands/me.js\");\n process.exit(\n await runMeNotifications({\n mesh: undefined,\n json: f.json,\n all: !!flags.all,\n since: f.since,\n }),\n );\n }\n const { runNotificationList } = await import(\"~/commands/notification.js\");\n process.exit(await runNotificationList(f));\n } else {\n console.error(\"Usage: claudemesh notification list [--mesh <slug>] [--since <ISO>] [--all]\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // me — cross-mesh workspace overview (v0.4.0)\n case \"me\": {\n const sub = positionals[0];\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n };\n if (!sub || sub === \"workspace\" || sub === \"overview\") {\n const { runMe } = await import(\"~/commands/me.js\");\n process.exit(await runMe(f));\n } else if (sub === \"topics\") {\n const { runMeTopics } = await import(\"~/commands/me.js\");\n process.exit(await runMeTopics({ ...f, unread: !!flags.unread }));\n } else if (sub === \"notifications\" || sub === \"notifs\") {\n const { runMeNotifications } = await import(\"~/commands/me.js\");\n process.exit(\n await runMeNotifications({\n ...f,\n all: !!flags.all,\n since: flags.since as string | undefined,\n }),\n );\n } else if (sub === \"activity\") {\n const { runMeActivity } = await import(\"~/commands/me.js\");\n process.exit(\n await runMeActivity({\n ...f,\n since: flags.since as string | undefined,\n }),\n );\n } else if (sub === \"search\") {\n const { runMeSearch } = await import(\"~/commands/me.js\");\n const query = positionals.slice(1).join(\" \").trim();\n process.exit(await runMeSearch({ ...f, query }));\n } else {\n console.error(\n \"Usage: claudemesh me (cross-mesh overview)\\n\" +\n \" claudemesh me topics (cross-mesh topic list)\\n\" +\n \" claudemesh me topics --unread (only unread topics)\\n\" +\n \" claudemesh me notifications (unread @-mentions, last 7d)\\n\" +\n \" claudemesh me notifications --all (include already-read)\\n\" +\n \" claudemesh me notifications --since=ISO (custom window)\\n\" +\n \" claudemesh me activity (recent messages, last 24h)\\n\" +\n \" claudemesh me activity --since=ISO (custom window)\\n\" +\n \" claudemesh me search <query> (cross-mesh search)\",\n );\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\") {\n // v0.5.0 phase 2: aggregate across every mesh when --mesh is omitted.\n if (!f.mesh) {\n const { runMeTasks } = await import(\"~/commands/me.js\");\n process.exit(await runMeTasks({ json: f.json, status: flags.status as string | undefined }));\n }\n const { runTaskList } = await import(\"~/commands/platform-actions.js\");\n process.exit(await runTaskList({ ...f, status: flags.status as string, assignee: flags.assignee as string }));\n }\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",
|
|
182
|
+
"#!/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\";\nimport { setDaemonPolicy, policyFromFlags } from \"~/services/daemon/policy.js\";\nimport { bold, clay, cyan, dim, orange } from \"~/ui/styles.js\";\n\ninstallSignalHandlers();\ninstallErrorHandlers();\n\nconst { command, positionals, flags } = parseArgv(process.argv);\n\n// Resolve daemon policy once at boot — daemon-routing helpers read this\n// instead of inspecting flags themselves. --no-daemon and --strict are\n// mutually exclusive (--no-daemon wins if both are passed).\nsetDaemonPolicy(policyFromFlags(flags));\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 (alias: \"workspace\" — claudemesh workspace <verb> mirrors each)\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 <old> <new> change a mesh's slug (the identifier you see and type)\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 flags: [--priority now|next|low] [--mesh <slug>]\n [--self] (allow targeting your own member/session pubkey;\n fans out to every sibling session of your member)\n [--json] (machine-readable result)\n claudemesh message inbox read persisted inbox (alias: inbox)\n flags: [--mesh <slug>] [--limit N] [--unread] [--json]\n reads ~/.claudemesh/daemon/inbox.db via daemon\n --unread → only rows never surfaced before (seen_at IS NULL);\n listing stamps returned rows seen as a side effect\n claudemesh inbox flush bulk-delete inbox rows\n flags: [--mesh <slug>] [--before <iso-timestamp>] [--all]\n --all required when neither --mesh nor --before is set\n claudemesh inbox delete <id> delete one inbox row by id (alias: rm)\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 across all meshes (or --mesh <slug>)\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 skill print the bundled SKILL.md to stdout\n claudemesh me cross-mesh workspace overview (v0.4.0)\n claudemesh me topics cross-mesh topic list [--unread]\n claudemesh me notifications cross-mesh @-mentions [--all] [--since=ISO]\n claudemesh me activity cross-mesh recent messages [--since=ISO]\n claudemesh me search <q> cross-mesh search (topics + messages)\n claudemesh member list mesh roster with online state [--online]\n claudemesh notification list @-mentions across all meshes (or --mesh <slug>)\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 set|list|delete encrypted secrets (set: --type env|file --mount /p)\n claudemesh watch add|list|remove URL change watchers (add: --label --interval --extract)\n claudemesh webhook create|list|delete outbound HTTP triggers\n claudemesh file share <path> [--to peer] upload (or local-host fast path if --to matches)\n claudemesh file get <id> [--out path] download by id\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\nDaemon (long-lived peer mesh runtime, v0.9.0)\n claudemesh daemon up start daemon (alias: start) [--mesh <slug>] [--no-tcp]\n claudemesh daemon status show running pid + IPC health [--json]\n claudemesh daemon down stop daemon (alias: stop)\n claudemesh daemon version ipc + schema version of running daemon\n claudemesh daemon outbox list list local outbox rows [--failed|--pending|--inflight|--done]\n claudemesh daemon outbox requeue <id> re-enqueue an aborted/dead row [--new-client-id <id>]\n claudemesh daemon accept-host pin current host fingerprint\n claudemesh daemon install-service --mesh <slug> write launchd / systemd-user unit\n claudemesh daemon uninstall-service remove the unit\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 --strict require daemon for broker-touching verbs (no cold-path fallback)\n --no-daemon skip daemon entirely; open broker WS directly (CI / sandboxed scripts)\n`;\n\n/**\n * Apply color treatment to the HELP block for terminal readability.\n *\n * Strategy is line-based and intentionally conservative:\n * - Section header lines (the title-case categories like `Mesh`,\n * `Topic`, `Auth`, `USAGE`) get bold + accent.\n * - Each verb row (` claudemesh <verb> ...`) gets the command tinted\n * cyan up to the second whitespace gap (separating the syntax from\n * the description), and any trailing `(alias: ...)` parenthetical\n * dimmed so it reads as secondary metadata.\n * - The header (program name + version) gets the brand orange.\n *\n * Falls through to plain output when stdout is not a TTY or NO_COLOR\n * is set — the underlying style helpers already gate on that.\n */\nfunction colorizeHelp(raw: string): string {\n const lines = raw.split(\"\\n\");\n const SECTION_HEADER_RE = /^([A-Z][A-Za-z0-9 /+-]*?)(\\s*\\(.*\\))?$/;\n const VERB_ROW_RE = /^(\\s{2})(claudemesh[^\\s]*(?:\\s+[^\\s]+)*?)(\\s{2,})(.*)$/;\n const ALIAS_RE = /(\\(alias[^)]*\\))/g;\n const out: string[] = [];\n for (const line of lines) {\n if (line.startsWith(\"claudemesh —\")) {\n out.push(orange(line));\n continue;\n }\n if (line.trim() === \"\") {\n out.push(line);\n continue;\n }\n // Section header: a line with no leading spaces that isn't a verb.\n if (!line.startsWith(\" \") && SECTION_HEADER_RE.test(line)) {\n const m = line.match(SECTION_HEADER_RE)!;\n const head = bold(clay(m[1]!));\n const meta = m[2] ? dim(m[2]) : \"\";\n out.push(head + meta);\n continue;\n }\n // Verb row: tint the syntax, dim the alias parenthetical.\n const verbMatch = line.match(VERB_ROW_RE);\n if (verbMatch) {\n const [, indent, syntax, gap, rest] = verbMatch;\n const dimmedRest = rest!.replace(ALIAS_RE, (m) => dim(m));\n out.push(`${indent}${cyan(syntax!)}${gap}${dimmedRest}`);\n continue;\n }\n out.push(line);\n }\n return out.join(\"\\n\");\n}\n\nasync function main(): Promise<void> {\n if (flags.help || flags.h) { console.log(colorizeHelp(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 role: flags.role as string | undefined,\n groups: flags.groups as string | undefined,\n \"message-mode\": flags[\"message-mode\"] as string | undefined,\n \"system-prompt\": flags[\"system-prompt\"] as string | undefined,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\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 role: flags.role as string | undefined,\n groups: flags.groups as string | undefined,\n \"message-mode\": flags[\"message-mode\"] as string | undefined,\n \"system-prompt\": flags[\"system-prompt\"] as string | undefined,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\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 role: flags.role as string,\n groups: flags.groups as string,\n \"message-mode\": flags[\"message-mode\"] as string,\n \"system-prompt\": flags[\"system-prompt\"] as string,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\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 // workspace — alias surface for mesh-management verbs (v1.27.0 teaser; full\n // rename arrives in 1.28.0). Each sub mirrors an existing top-level verb.\n case \"workspace\": {\n const sub = positionals[0];\n if (!sub || sub === \"launch\" || sub === \"connect\" || sub === \"open\") {\n const { runLaunch } = await import(\"~/commands/launch.js\");\n await runLaunch({\n mesh: positionals[1] ?? 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 role: flags.role as string,\n groups: flags.groups as string,\n \"message-mode\": flags[\"message-mode\"] as string,\n \"system-prompt\": flags[\"system-prompt\"] as string,\n continue: !!flags.continue,\n quiet: !!flags.quiet,\n }, process.argv.slice(2));\n }\n else if (sub === \"list\" || sub === \"ls\") { const { runList } = await import(\"~/commands/list.js\"); await runList(); }\n else if (sub === \"info\") { const { runInfo } = await import(\"~/commands/info.js\"); await runInfo({}); }\n else if (sub === \"create\" || sub === \"new\") { const { newMesh } = await import(\"~/commands/new.js\"); process.exit(await newMesh(positionals[1] ?? \"\", { json: !!flags.json })); }\n else if (sub === \"join\" || sub === \"add\") { const { runJoin } = await import(\"~/commands/join.js\"); await runJoin(positionals.slice(1)); }\n else if (sub === \"delete\" || sub === \"rm\") { const { deleteMesh } = await import(\"~/commands/delete-mesh.js\"); process.exit(await deleteMesh(positionals[1] ?? \"\", { yes: !!flags.y || !!flags.yes })); }\n else if (sub === \"rename\") { const { rename } = await import(\"~/commands/rename.js\"); process.exit(await rename(positionals[1] ?? \"\", positionals[2] ?? \"\")); }\n else if (sub === \"share\" || sub === \"invite\") { const { invite } = await import(\"~/commands/invite.js\"); process.exit(await invite(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"overview\") { const { runMe } = await import(\"~/commands/me.js\"); process.exit(await runMe({ mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh workspace <list|info|create|join|delete|rename|share|launch|overview>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\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, all: !!flags.all }); 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, self: !!flags.self }, positionals[0] ?? \"\", positionals.slice(1).join(\" \")); break; }\n case \"inbox\": {\n const sub = positionals[0];\n if (sub === \"flush\") {\n const { runInboxFlush } = await import(\"~/commands/inbox-actions.js\");\n await runInboxFlush({\n mesh: flags.mesh as string | undefined,\n before: flags.before as string | undefined,\n all: !!flags.all,\n json: !!flags.json,\n });\n } else if (sub === \"delete\" || sub === \"rm\") {\n const { runInboxDelete } = await import(\"~/commands/inbox-actions.js\");\n await runInboxDelete(positionals[1] ?? \"\", { json: !!flags.json });\n } else {\n const { runInbox } = await import(\"~/commands/inbox.js\");\n await runInbox({\n mesh: flags.mesh as string | undefined,\n json: !!flags.json,\n limit: typeof flags.limit === \"number\" ? flags.limit : (typeof flags.limit === \"string\" ? Number.parseInt(flags.limit, 10) : undefined),\n unread: !!flags.unread,\n });\n }\n break;\n }\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\") {\n // v0.5.0 phase 2: aggregate across every mesh when --mesh is omitted.\n if (!flags.mesh) {\n const { runMeState } = await import(\"~/commands/me.js\");\n process.exit(await runMeState({ json: !!flags.json, key: flags.key as string | undefined }));\n }\n const { runStateList } = await import(\"~/commands/state.js\");\n await runStateList({});\n }\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\": {\n // v0.5.0 phase 2: aggregate across every mesh when --mesh is omitted.\n if (!flags.mesh) {\n const { runMeMemory } = await import(\"~/commands/me.js\");\n process.exit(await runMeMemory({ json: !!flags.json, query: positionals.join(\" \") }));\n }\n const { recall } = await import(\"~/commands/recall.js\");\n process.exit(await recall(positionals.join(\" \"), { mesh: flags.mesh as string, json: !!flags.json }));\n break;\n }\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 // Daemon (v0.9.0)\n case \"daemon\": {\n const { runDaemonCommand } = await import(\"~/commands/daemon.js\");\n const sub = positionals[0];\n const rest = positionals.slice(1);\n const outboxStatus =\n flags.failed ? \"dead\" :\n flags.pending ? \"pending\" :\n flags.inflight ? \"inflight\" :\n flags.done ? \"done\" :\n flags.aborted ? \"aborted\" : undefined;\n const code = await runDaemonCommand(sub, {\n json: !!flags.json,\n noTcp: !!flags[\"no-tcp\"],\n publicHealth: !!flags[\"public-health\"],\n mesh: flags.mesh as string | undefined,\n displayName: flags.name as string | undefined,\n outboxStatus,\n newClientId: flags[\"new-client-id\"] as string | undefined,\n }, rest);\n process.exit(code);\n break;\n }\n\n // Setup\n case \"install\": { const { runInstall } = await import(\"~/commands/install.js\"); await 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, all: !!flags.all };\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, self: !!flags.self }, positionals[1] ?? \"\", positionals.slice(2).join(\" \")); }\n else if (sub === \"inbox\") {\n const sub2 = positionals[1];\n if (sub2 === \"flush\") {\n const { runInboxFlush } = await import(\"~/commands/inbox-actions.js\");\n await runInboxFlush({\n mesh: flags.mesh as string | undefined,\n before: flags.before as string | undefined,\n all: !!flags.all,\n json: !!flags.json,\n });\n } else if (sub2 === \"delete\" || sub2 === \"rm\") {\n const { runInboxDelete } = await import(\"~/commands/inbox-actions.js\");\n await runInboxDelete(positionals[2] ?? \"\", { json: !!flags.json });\n } else {\n const { runInbox } = await import(\"~/commands/inbox.js\");\n await runInbox({\n mesh: flags.mesh as string | undefined,\n json: !!flags.json,\n limit: typeof flags.limit === \"number\" ? flags.limit : (typeof flags.limit === \"string\" ? Number.parseInt(flags.limit, 10) : undefined),\n unread: !!flags.unread,\n });\n }\n }\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 // No subcommand → print the bundled SKILL.md to stdout. Lets a\n // fresh user pipe `claudemesh skill | claude --skill-add -`\n // without copying anything into ~/.claude/skills (v1.18.0).\n if (!sub) { const { runSkill } = await import(\"~/commands/skill.js\"); process.exit(await runSkill()); }\n else 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 (print bundled SKILL.md)\\n 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 if (sub === \"set\") {\n const { runVaultSet } = await import(\"~/commands/platform-actions.js\");\n process.exit(await runVaultSet(positionals[1] ?? \"\", positionals[2] ?? \"\", {\n ...f,\n entryType: (flags.type as \"env\" | \"file\" | undefined),\n mountPath: flags.mount as string | undefined,\n description: flags.description as string | undefined,\n }));\n }\n else { console.error(\"Usage: claudemesh vault <list|set|delete>\"); 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 if (sub === \"add\") {\n const { runWatchAdd } = await import(\"~/commands/platform-actions.js\");\n process.exit(await runWatchAdd(positionals[1] ?? \"\", {\n ...f,\n label: flags.label as string | undefined,\n interval: flags.interval ? Number(flags.interval) : undefined,\n mode: flags.mode as string | undefined,\n extract: flags.extract as string | undefined,\n notifyOn: flags[\"notify-on\"] as string | undefined,\n }));\n }\n else { console.error(\"Usage: claudemesh watch <list|add|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 if (sub === \"create\") { const { runWebhookCreate } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWebhookCreate(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh webhook <list|create|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 === \"share\") {\n const { runFileShare } = await import(\"~/commands/file.js\");\n process.exit(await runFileShare(positionals[1] ?? \"\", {\n ...f,\n to: flags.to as string | undefined,\n tags: flags.tags as string | undefined,\n message: flags.message as string | undefined,\n upload: !!flags.upload,\n }));\n }\n else if (sub === \"get\") {\n const { runFileGet } = await import(\"~/commands/file.js\");\n process.exit(await runFileGet(positionals[1] ?? \"\", { ...f, out: flags.out as string | undefined }));\n }\n else 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 <share|get|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\") {\n // v0.5.0: aggregate across every joined mesh when --mesh is omitted.\n // The per-mesh runTopicList prompts for a mesh; me topics doesn't\n // need one and surfaces last-activity + unread per topic.\n if (!f.mesh) {\n const { runMeTopics } = await import(\"~/commands/me.js\");\n process.exit(await runMeTopics({ mesh: undefined, json: f.json, unread: !!flags.unread }));\n }\n const { runTopicList } = await import(\"~/commands/topic.js\");\n process.exit(await runTopicList(f));\n }\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 // v0.5.0: aggregate across every joined mesh when --mesh is omitted.\n if (!f.mesh) {\n const { runMeNotifications } = await import(\"~/commands/me.js\");\n process.exit(\n await runMeNotifications({\n mesh: undefined,\n json: f.json,\n all: !!flags.all,\n since: f.since,\n }),\n );\n }\n const { runNotificationList } = await import(\"~/commands/notification.js\");\n process.exit(await runNotificationList(f));\n } else {\n console.error(\"Usage: claudemesh notification list [--mesh <slug>] [--since <ISO>] [--all]\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // me — cross-mesh workspace overview (v0.4.0)\n case \"me\": {\n const sub = positionals[0];\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n };\n if (!sub || sub === \"workspace\" || sub === \"overview\") {\n const { runMe } = await import(\"~/commands/me.js\");\n process.exit(await runMe(f));\n } else if (sub === \"topics\") {\n const { runMeTopics } = await import(\"~/commands/me.js\");\n process.exit(await runMeTopics({ ...f, unread: !!flags.unread }));\n } else if (sub === \"notifications\" || sub === \"notifs\") {\n const { runMeNotifications } = await import(\"~/commands/me.js\");\n process.exit(\n await runMeNotifications({\n ...f,\n all: !!flags.all,\n since: flags.since as string | undefined,\n }),\n );\n } else if (sub === \"activity\") {\n const { runMeActivity } = await import(\"~/commands/me.js\");\n process.exit(\n await runMeActivity({\n ...f,\n since: flags.since as string | undefined,\n }),\n );\n } else if (sub === \"search\") {\n const { runMeSearch } = await import(\"~/commands/me.js\");\n const query = positionals.slice(1).join(\" \").trim();\n process.exit(await runMeSearch({ ...f, query }));\n } else {\n console.error(\n \"Usage: claudemesh me (cross-mesh overview)\\n\" +\n \" claudemesh me topics (cross-mesh topic list)\\n\" +\n \" claudemesh me topics --unread (only unread topics)\\n\" +\n \" claudemesh me notifications (unread @-mentions, last 7d)\\n\" +\n \" claudemesh me notifications --all (include already-read)\\n\" +\n \" claudemesh me notifications --since=ISO (custom window)\\n\" +\n \" claudemesh me activity (recent messages, last 24h)\\n\" +\n \" claudemesh me activity --since=ISO (custom window)\\n\" +\n \" claudemesh me search <query> (cross-mesh search)\",\n );\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\") {\n // v0.5.0 phase 2: aggregate across every mesh when --mesh is omitted.\n if (!f.mesh) {\n const { runMeTasks } = await import(\"~/commands/me.js\");\n process.exit(await runMeTasks({ json: f.json, status: flags.status as string | undefined }));\n }\n const { runTaskList } = await import(\"~/commands/platform-actions.js\");\n process.exit(await runTaskList({ ...f, status: flags.status as string, assignee: flags.assignee as string }));\n }\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",
|
|
182
183
|
"import { VERSION } from \"~/constants/urls.js\";\nimport { boldOrange } from \"~/ui/styles.js\";\nexport function renderVersion(): string { return \" \" + boldOrange(\"claudemesh\") + \" v\" + VERSION; }\n",
|
|
183
184
|
"/**\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",
|
|
184
185
|
"/**\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"
|
|
185
186
|
],
|
|
186
|
-
"mappings": "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",
|
|
187
|
-
"debugId": "
|
|
187
|
+
"mappings": "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",
|
|
188
|
+
"debugId": "99681AB539B313DF64756E2164756E21",
|
|
188
189
|
"names": []
|
|
189
190
|
}
|