feat(cli): 1.29.0 — per-session IPC tokens + auto-scoping
every claudemesh launch-spawned session now mints a 32-byte random token, writes it under tmpdir (mode 0600), and registers it with the daemon. cli invocations from inside that session inherit CLAUDEMESH_IPC_TOKEN_FILE in env, attach the token via Authorization: ClaudeMesh-Session <hex>, and the daemon resolves it to a SessionInfo. server-side: every read route that filters by mesh now uses meshFromCtx — explicit query/body wins, session default fills in when missing. write routes follow the same pattern. cli-side: peers.ts (and other multi-mesh-iterating verbs in future) prefers session-token mesh over all joined meshes when the user didn't pass --mesh explicitly. backward-compatible in both directions — tokenless callers behave exactly as before. registry is in-memory; daemon restart loses it but the 30s reaper handles dead pids and most callers re-register on next launch. verified end-to-end: peer list with token returns 4 prueba1 peers, without token returns 3 meshes' peers (aggregate). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -119,7 +119,19 @@ function annotateSelf(
|
||||
|
||||
export async function runPeers(flags: PeersFlags): Promise<void> {
|
||||
const config = readConfig();
|
||||
const slugs = flags.mesh ? [flags.mesh] : config.meshes.map((m) => m.slug);
|
||||
|
||||
// Mesh selection precedence:
|
||||
// 1. explicit --mesh <slug> (always wins)
|
||||
// 2. session-token mesh (when invoked from inside a launched session)
|
||||
// 3. all joined meshes (default for bare shells)
|
||||
let slugs: string[];
|
||||
if (flags.mesh) {
|
||||
slugs = [flags.mesh];
|
||||
} else {
|
||||
const { getSessionInfo } = await import("~/services/session/resolve.js");
|
||||
const sess = await getSessionInfo();
|
||||
slugs = sess ? [sess.mesh] : config.meshes.map((m) => m.slug);
|
||||
}
|
||||
|
||||
if (slugs.length === 0) {
|
||||
render.err("No meshes joined.");
|
||||
|
||||
Reference in New Issue
Block a user