agent-embassy 4.5.2 → 4.6.0

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/CHANGELOG.md CHANGED
@@ -4,6 +4,15 @@ All notable changes to this project are documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
6
 
7
+ ## [4.6.0] - 2026-09-08
8
+
9
+ ### Fixed
10
+ - Claude session restarts select the newest reachable duplicate process and revalidate it before each write. `CLAUDE_SESSION_DUPLICATE` reports the selected, newest and other PIDs plus whether the newest or none of the sockets answered, so an uncertain probe never tells the operator to exit the new process.
11
+ - A retired Claude session can reappear with a fresh endpoint ID immediately; old deliveries and replies remain fenced. Codex retirement is unchanged.
12
+
13
+ ### Changed
14
+ - Private control protocol 7 adds bounded duplicate-session warnings; update the CLI and broker together. Private state and federation protocols are unchanged.
15
+
7
16
  ## [4.5.2] - 2026-09-07
8
17
 
9
18
  ### Changed
package/SECURITY.md CHANGED
@@ -102,13 +102,30 @@ which must be an absolute path. The path may become an in-memory `uds:`
102
102
  capability only; it is never a CLI argument, public output, or persisted field.
103
103
  Claude native session UUIDs are stored only in closed private route state.
104
104
  Discovery accepts only compatible interactive/background same-user records and
105
- checks the exact record and socket again before use.
105
+ checks the exact record and socket again before use. If a restart leaves multiple
106
+ live records for one session UUID, zero-byte socket probes select the newest
107
+ reachable process (OS start time, then registry start time and PID for ties).
108
+ Every write rechecks that choice and the prepared process/socket generation;
109
+ a changed choice refuses before writing. Duplicate PIDs are operator diagnostics,
110
+ not additional session identities.
111
+ Prepared writes check the exact registry path even when the bounded discovery
112
+ window is full; unrelated stale records do not block that check. After connection,
113
+ a session-specific check reads up to 4096 registry entries independently of the
114
+ 256-entry default display window, attesting only matching UUIDs. It re-attests
115
+ the held process/socket generation without probing that socket again. Duplicates
116
+ beyond this bounded metadata check remain unobserved; truncation alone never
117
+ turns a single-record session into a generation-change retry loop.
118
+ Discovery shares one connect timeout across at most 16 concurrent zero-byte
119
+ socket probes. Probe preparation consumes the ordinary delivery deadline; it
120
+ never grants more time or authorizes replay after an uncertain write.
106
121
 
107
122
  Aliases may collide in discovered Claude state. In that case name lookup
108
123
  refuses; user-supplied exact UUID selection can identify a Claude target, but
109
124
  Embassy never publishes a UUID. A retired or replaced endpoint remains fenced
110
- while its bounded retirement evidence is retained. Re-enrollment after that
111
- evidence expires receives a fresh opaque ID, never the retired ID. Public
125
+ while its bounded retirement evidence is retained. A live Claude session may
126
+ re-enroll immediately with a fresh opaque ID, even with the same native UUID;
127
+ old deliveries and reply references remain fenced to the retired ID. Codex's
128
+ native-identity retirement fence is unchanged. Public
112
129
  endpoint IDs can select exact local operator retirement without exposing a
113
130
  native ID or authorizing remote mutation.
114
131
 
@@ -212,6 +229,11 @@ recent retirement times, and bounded remote catalog rows and observation times.
212
229
  Codex rows may additionally contain the observed busy, waiting, idle, dormant,
213
230
  systemError or unknown state. The explicit-registration retention marker
214
231
  remains private.
232
+ Duplicate Claude session warnings may expose the selected, newest and other
233
+ process PIDs with the normalized public alias and whether the newest or none of
234
+ the sockets answered, bounded to 128 warnings and 4096 PIDs. Only routable
235
+ interactive/background sessions produce these warnings. They disclose no native
236
+ session UUID or socket path; partial scans retain prior warning evidence.
215
237
  It must never contain native IDs or handles, socket paths, message bodies,
216
238
  delivery/conversation secrets, credentials, exceptions, raw diagnostics, or
217
239
  provider histories. Human output is derived from the same validated shape.
@@ -22,6 +22,16 @@ const endpoints = (x, accepts = endpoint) => rows(x, 128, accepts) &&
22
22
  new Set(x.map((row) => JSON.stringify([row.host, row.id]))).size === x.length;
23
23
  const codexMetadata = (x) => exact(x, ["state"]) &&
24
24
  ["dormant", "idle", "busy", "waiting", "systemError", "unknown"].includes(String(x.state));
25
+ const pid = (x) => Number.isSafeInteger(x) && x > 0 && x <= 2_147_483_647;
26
+ const warnings = (x) => x === undefined || rows(x, 128, (row) => exact(row, ["code", "alias", "selectedPid", "newestPid", "otherPids", "reason"]) &&
27
+ row.code === "CLAUDE_SESSION_DUPLICATE" && alias(row.alias) && pid(row.selectedPid) && pid(row.newestPid) &&
28
+ rows(row.otherPids, 4095, pid) && row.otherPids.length > 0 &&
29
+ !row.otherPids.includes(row.selectedPid) &&
30
+ new Set(row.otherPids).size === row.otherPids.length &&
31
+ (row.reason === "stale_older" && row.selectedPid === row.newestPid ||
32
+ row.reason === "unreachable_newest" && row.selectedPid !== row.newestPid && row.otherPids.includes(row.newestPid) ||
33
+ row.reason === "all_unreachable" && row.selectedPid === row.newestPid)) &&
34
+ x.reduce((sum, row) => sum + 1 + row.otherPids.length, 0) <= 4096;
25
35
  /** One public projection contract, used before emission and after transport. Native
26
36
  * handles and arbitrary adapter fields can never hitchhike in a valid result. */
27
37
  export function isBrokerResult(method, value) {
@@ -29,10 +39,10 @@ export function isBrokerResult(method, value) {
29
39
  case "health": return exact(value, ["status"]) && ["healthy", "degraded"].includes(String(value.status));
30
40
  case "check": return exact(value, ["status", "scope"]) && value.status === "ok" && value.scope === "broker-loopback";
31
41
  case "register_codex": return endpoint(value);
32
- case "send": return exact(value, ["accepted", "conversationId", "deliveryToken"]) && value.accepted === true &&
42
+ case "send": return exact(value, ["accepted", "conversationId", "deliveryToken"], ["warnings"]) && warnings(value.warnings) && value.accepted === true &&
33
43
  token(value.conversationId, "conv_", "16,64") && token(value.deliveryToken, "dlv_", "24");
34
44
  case "retire_route": return exact(value, ["cancelled", "ambiguous", "unconfirmed"]) && Object.values(value).every(count);
35
- case "refresh_discovery": return exact(value, ["routes"]) && endpoints(value.routes);
45
+ case "refresh_discovery": return exact(value, ["routes"], ["warnings"]) && warnings(value.warnings) && endpoints(value.routes);
36
46
  case "peer_catalog": return endpoints(value);
37
47
  case "peer_resolve": return value === null || endpoint(value);
38
48
  case "peer_handoff": return exact(value, ["accepted"]) && value.accepted === true ||
@@ -41,7 +51,7 @@ export function isBrokerResult(method, value) {
41
51
  exact(value, ["found", "state", "terminal", "deadlineAt"], ["pendingForMs", "safeErrorCode"]) && value.found === true && date(value.deadlineAt) &&
42
52
  (value.terminal === true ? outcomes.includes(String(value.state)) && code(value.safeErrorCode) && value.pendingForMs === undefined
43
53
  : value.terminal === false && ["queued", "reserved", "armed", "accepted"].includes(String(value.state)) && count(value.pendingForMs) && value.safeErrorCode === undefined);
44
- case "list_snapshot": return exact(value, ["health", "revision", "routes", "messages", "retirements"], ["safeErrorCode", "federation", "codex"]) &&
54
+ case "list_snapshot": return exact(value, ["health", "revision", "routes", "messages", "retirements"], ["safeErrorCode", "federation", "codex", "warnings"]) && warnings(value.warnings) &&
45
55
  ["healthy", "degraded"].includes(String(value.health)) && count(value.revision) &&
46
56
  (value.safeErrorCode === undefined || code(value.safeErrorCode)) &&
47
57
  (value.codex === undefined || exact(value.codex, ["truncated", "complete"], ["observedAt", "safeErrorCode"]) &&
@@ -1 +1 @@
1
- {"version":3,"file":"broker-control.js","sourceRoot":"","sources":["../../../src/gateway/broker-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker-control.js","sourceRoot":"","sources":["../../../src/gateway/broker-control.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,14 @@ export declare class MessagingBroker {
43
43
  } | {
44
44
  conversation: string;
45
45
  }, body: string): Promise<{
46
+ warnings?: readonly Readonly<{
47
+ code: "CLAUDE_SESSION_DUPLICATE";
48
+ alias: string;
49
+ selectedPid: number;
50
+ newestPid: number;
51
+ otherPids: readonly number[];
52
+ reason: "stale_older" | "unreachable_newest" | "all_unreachable";
53
+ }>[];
46
54
  accepted: true;
47
55
  conversationId: string;
48
56
  deliveryToken: string;
@@ -77,6 +85,14 @@ export declare class MessagingBroker {
77
85
  deadlineAt: string;
78
86
  }>;
79
87
  refresh(): Promise<{
88
+ warnings?: readonly Readonly<{
89
+ code: "CLAUDE_SESSION_DUPLICATE";
90
+ alias: string;
91
+ selectedPid: number;
92
+ newestPid: number;
93
+ otherPids: readonly number[];
94
+ reason: "stale_older" | "unreachable_newest" | "all_unreachable";
95
+ }>[];
80
96
  routes: {
81
97
  id: string;
82
98
  alias: string;
@@ -121,6 +137,14 @@ export declare class MessagingBroker {
121
137
  truncated: boolean;
122
138
  complete: boolean;
123
139
  }>;
140
+ warnings?: readonly Readonly<{
141
+ code: "CLAUDE_SESSION_DUPLICATE";
142
+ alias: string;
143
+ selectedPid: number;
144
+ newestPid: number;
145
+ otherPids: readonly number[];
146
+ reason: "stale_older" | "unreachable_newest" | "all_unreachable";
147
+ }>[];
124
148
  revision: number;
125
149
  safeErrorCode?: string;
126
150
  health: string;
@@ -55,7 +55,9 @@ export class MessagingBroker {
55
55
  steer: this.options.steeringEnabled !== false && source.provider === "claude" && target.provider === "codex" && body.startsWith("STEER:"),
56
56
  }));
57
57
  this.kick();
58
- return { accepted: true, conversationId: admitted.delivery.reply, deliveryToken: admitted.delivery.token };
58
+ const warnings = this.options.directory.claudeWarnings([source, target]);
59
+ return { accepted: true, conversationId: admitted.delivery.reply, deliveryToken: admitted.delivery.token,
60
+ ...(warnings.length ? { warnings } : {}) };
59
61
  }
60
62
  async retire(selector) {
61
63
  if (typeof selector === "string" && !selector.endsWith(`@${this.options.host}`))
@@ -120,15 +122,19 @@ export class MessagingBroker {
120
122
  ]);
121
123
  this.kick();
122
124
  const codex = (await this.options.store.snapshot()).endpoints.filter((row) => row.provider === "codex");
123
- return { routes: this.options.directory.listed([...codex, ...endpoints.filter((row) => row.provider !== "codex")]).map(publicEndpoint) };
125
+ const warnings = this.options.directory.claudeWarnings();
126
+ return { routes: this.options.directory.listed([...codex, ...endpoints.filter((row) => row.provider !== "codex")]).map(publicEndpoint),
127
+ ...(warnings.length ? { warnings } : {}) };
124
128
  }
125
129
  async status() {
126
130
  await this.change((ledger) => ledger.expire());
127
131
  const state = await this.options.store.snapshot();
128
132
  const alias = (ref) => state.endpoints.find((e) => e.id === ref.id && e.host === ref.host)?.alias;
133
+ const warnings = this.options.directory.claudeWarnings();
129
134
  return {
130
135
  health: this.fault ? "degraded" : "healthy", ...(this.fault ? { safeErrorCode: this.fault } : {}),
131
136
  revision: state.commit.sequence,
137
+ ...(warnings.length ? { warnings } : {}),
132
138
  ...(this.options.codexDiscovery ? { codex: this.options.codexDiscovery.observation() } : {}),
133
139
  ...(this.options.federation ? { federation: this.options.federation.snapshot() } : {}),
134
140
  routes: this.options.directory.listed(state.endpoints).map((e) => ({ ...publicEndpoint(e),
@@ -1 +1 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../src/gateway/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../src/gateway/broker.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare const claudePeerStatuses: readonly ["busy", "shell", "idle", "wai
6
6
  export type ClaudePeerStatus = (typeof claudePeerStatuses)[number];
7
7
  export declare const claudePeerKinds: readonly ["interactive", "bg", "daemon", "daemon-worker"];
8
8
  export type ClaudePeerKind = (typeof claudePeerKinds)[number];
9
- export declare const claudePeerRejectionCodes: readonly ["ENTRY_LIMIT_EXCEEDED", "INVALID_FILE_NAME", "REGISTRY_NOT_REGULAR", "REGISTRY_TOO_LARGE", "REGISTRY_RACED", "REGISTRY_INVALID_JSON", "REGISTRY_INVALID_SCHEMA", "PID_MISMATCH", "PID_NOT_LIVE", "PID_OWNER_MISMATCH", "SOCKET_OUTSIDE_ROOT", "SOCKET_NOT_SOCKET", "SELF_TARGET", "SESSION_ID_COLLISION"];
9
+ export declare const claudePeerRejectionCodes: readonly ["ENTRY_LIMIT_EXCEEDED", "INVALID_FILE_NAME", "REGISTRY_NOT_REGULAR", "REGISTRY_TOO_LARGE", "REGISTRY_RACED", "REGISTRY_INVALID_JSON", "REGISTRY_INVALID_SCHEMA", "PID_MISMATCH", "PID_NOT_LIVE", "PID_OWNER_MISMATCH", "SOCKET_OUTSIDE_ROOT", "SOCKET_NOT_SOCKET", "SELF_TARGET", "CLAUDE_SESSION_DUPLICATE"];
10
10
  export type ClaudePeerRejectionCode = (typeof claudePeerRejectionCodes)[number];
11
11
  export type ClaudePeerDescriptor = {
12
12
  targetId: string;
@@ -14,6 +14,12 @@ export type ClaudePeerDescriptor = {
14
14
  kind: ClaudePeerKind;
15
15
  status: ClaudePeerStatus;
16
16
  compatibility: "compatible";
17
+ duplicate?: Readonly<{
18
+ selectedPid: number;
19
+ newestPid: number;
20
+ otherPids: readonly number[];
21
+ reason: "stale_older" | "unreachable_newest" | "all_unreachable";
22
+ }>;
17
23
  };
18
24
  export type ClaudePeerDiscovery = {
19
25
  peers: ClaudePeerDescriptor[];
@@ -28,6 +34,8 @@ export type ClaudeProcessIdentity = {
28
34
  };
29
35
  export type ClaudeProcessInspector = (pid: number) => Promise<ClaudeProcessIdentity | undefined>;
30
36
  export type ClaudePeerConnect = (socketPath: string) => Socket;
37
+ /** Same public spelling for directory rows, warnings and destination checks. */
38
+ export declare function normalizeClaudeAlias(name: string): string;
31
39
  export type ClaudePeerAdapterOptions = {
32
40
  sessionsDir: string;
33
41
  socketDir: string;
@@ -78,6 +86,7 @@ export declare class ClaudePeerAdapter {
78
86
  resolveReplyAddress(address: string): Promise<ClaudePeerDescriptor>;
79
87
  prepareSend(targetId: string, content: string, options: Readonly<{
80
88
  deadlineAt: number;
89
+ selection?: ClaudePeerDescriptor;
81
90
  }>): Promise<ClaudePeerPreparedSend>;
82
91
  close(): Promise<void>;
83
92
  }
@@ -28,8 +28,13 @@ export const claudePeerRejectionCodes = [
28
28
  "SOCKET_OUTSIDE_ROOT",
29
29
  "SOCKET_NOT_SOCKET",
30
30
  "SELF_TARGET",
31
- "SESSION_ID_COLLISION",
31
+ "CLAUDE_SESSION_DUPLICATE",
32
32
  ];
33
+ /** Same public spelling for directory rows, warnings and destination checks. */
34
+ export function normalizeClaudeAlias(name) {
35
+ const normalized = name.toLowerCase().replace(/[^a-z0-9_-]/g, "-");
36
+ return (/^[a-z]/.test(normalized) ? normalized : `claude-${normalized}`).slice(0, 32);
37
+ }
33
38
  function isObject(value) {
34
39
  return typeof value === "object" && value !== null && !Array.isArray(value);
35
40
  }
@@ -151,6 +156,7 @@ function parseRegistryRecord(value, expectedPid) {
151
156
  }
152
157
  return {
153
158
  pid: expectedPid,
159
+ startedAt: value.startedAt,
154
160
  sessionId: value.sessionId.toLowerCase(),
155
161
  cwd: value.cwd,
156
162
  kind: value.kind,
@@ -239,6 +245,7 @@ function writeSocketPayload(connect, socketPath, payload, timeoutMs, beforeWrite
239
245
  });
240
246
  }
241
247
  export class ClaudePeerAdapter {
248
+ #selections = new WeakMap();
242
249
  #sessionsDir;
243
250
  #socketDir;
244
251
  #expectedUid;
@@ -388,9 +395,16 @@ export class ClaudePeerAdapter {
388
395
  socketGeneration,
389
396
  };
390
397
  }
391
- async #revalidatePreparedBinding(expected, stateRoot) {
398
+ async #revalidatePreparedBinding(expected, stateRoot, checkDuplicates = true) {
392
399
  try {
393
- await this.#validateRoots();
400
+ if (checkDuplicates) {
401
+ const { targets } = await this.#scan(expected);
402
+ const selected = targets.get(expected.targetId);
403
+ if (!selected || selected.registryPath !== expected.registryPath)
404
+ throw new Error("selected Claude process changed");
405
+ }
406
+ else
407
+ await this.#validateRoots();
394
408
  const current = await this.#bindingFromRegistry(expected.registryPath, expected.record.pid);
395
409
  if (current.targetId !== expected.targetId ||
396
410
  current.record.cwd !== expected.record.cwd ||
@@ -406,19 +420,51 @@ export class ClaudePeerAdapter {
406
420
  throw new BridgeError("CLAUDE_PEER_TARGET_CHANGED", "The prepared Claude peer generation changed before the write.", true);
407
421
  }
408
422
  }
409
- async discover() {
423
+ // A duplicate is the only discovery case that needs a connection probe.
424
+ // It sends zero bytes, has the ordinary connect deadline, and always closes.
425
+ async #socketLive(binding, timeoutMs) {
426
+ return new Promise((resolve) => {
427
+ let socket;
428
+ try {
429
+ socket = this.#connect(binding.record.messagingSocketPath);
430
+ }
431
+ catch {
432
+ resolve(false);
433
+ return;
434
+ }
435
+ let settled = false;
436
+ const finish = (live) => {
437
+ if (settled)
438
+ return;
439
+ settled = true;
440
+ clearTimeout(timer);
441
+ socket.destroy();
442
+ resolve(live);
443
+ };
444
+ const timer = setTimeout(() => finish(false), timeoutMs);
445
+ timer.unref();
446
+ socket.once("connect", () => finish(true));
447
+ socket.once("error", () => finish(false));
448
+ socket.once("close", () => finish(false));
449
+ });
450
+ }
451
+ async #scan(prepared) {
410
452
  await this.#validateRoots();
411
453
  const nextTargets = new Map();
412
- const collidedSessionIds = new Set();
454
+ const candidates = new Map();
413
455
  const rejected = {};
414
456
  const reject = (code) => {
415
457
  rejected[code] = (rejected[code] ?? 0) + 1;
416
458
  };
417
459
  const entries = [];
418
460
  let truncated = false;
461
+ // The display window must not hide a sibling from a prepared session's
462
+ // targeted check. Use the registry's hard ceiling for cheap UUID metadata;
463
+ // only matching records incur process/socket attestation.
464
+ const entryLimit = prepared ? 4096 : this.#limits.maxRegistryEntries;
419
465
  const directory = await opendir(this.#sessionsDir);
420
466
  for await (const entry of directory) {
421
- if (entries.length >= this.#limits.maxRegistryEntries) {
467
+ if (entries.length >= entryLimit) {
422
468
  truncated = true;
423
469
  break;
424
470
  }
@@ -428,7 +474,7 @@ export class ClaudePeerAdapter {
428
474
  reject("ENTRY_LIMIT_EXCEEDED");
429
475
  const bounded = entries
430
476
  .sort((left, right) => left.name.localeCompare(right.name))
431
- .slice(0, this.#limits.maxRegistryEntries);
477
+ .slice(0, entryLimit);
432
478
  const peers = [];
433
479
  let parseableRecords = 0;
434
480
  for (const entry of bounded) {
@@ -444,27 +490,19 @@ export class ClaudePeerAdapter {
444
490
  }
445
491
  const registryPath = path.join(this.#sessionsDir, entry.name);
446
492
  try {
493
+ // Revalidation reads bounded registry metadata, but runs ps only for
494
+ // THIS UUID. Unrelated stale files never gate an exact prepared write.
495
+ if (prepared) {
496
+ const value = await this.#readRegistryFile(registryPath);
497
+ if (!isObject(value) || typeof value.sessionId !== "string" || value.sessionId.toLowerCase() !== prepared.targetId)
498
+ continue;
499
+ }
447
500
  const binding = await this.#bindingFromRegistry(registryPath, pid, () => {
448
501
  parseableRecords += 1;
449
502
  });
450
- if (collidedSessionIds.has(binding.targetId) ||
451
- nextTargets.has(binding.targetId)) {
452
- nextTargets.delete(binding.targetId);
453
- collidedSessionIds.add(binding.targetId);
454
- const prior = peers.findIndex((candidate) => candidate.targetId === binding.targetId);
455
- if (prior >= 0)
456
- peers.splice(prior, 1);
457
- reject("SESSION_ID_COLLISION");
458
- continue;
459
- }
460
- nextTargets.set(binding.targetId, binding);
461
- peers.push({
462
- targetId: binding.targetId,
463
- alias: binding.alias,
464
- kind: binding.record.kind,
465
- status: binding.record.status,
466
- compatibility: "compatible",
467
- });
503
+ const group = candidates.get(binding.targetId) ?? [];
504
+ group.push(binding);
505
+ candidates.set(binding.targetId, group);
468
506
  }
469
507
  catch (error) {
470
508
  const code = error instanceof BridgeError
@@ -480,17 +518,69 @@ export class ClaudePeerAdapter {
480
518
  }
481
519
  }
482
520
  }
521
+ if (prepared && !candidates.get(prepared.targetId)?.some((row) => row.registryPath === prepared.registryPath)) {
522
+ const current = await this.#bindingFromRegistry(prepared.registryPath, prepared.record.pid);
523
+ const group = candidates.get(current.targetId) ?? [];
524
+ group.push(current);
525
+ candidates.set(current.targetId, group);
526
+ }
527
+ const groups = [...candidates.values()].map((observed) => {
528
+ // A daemon record cannot hide a routable interactive/background session.
529
+ const routable = observed.filter((row) => row.record.kind === "interactive" || row.record.kind === "bg");
530
+ const group = routable.length ? routable : observed;
531
+ // OS start time is primary; the same-user registry resolves sub-second
532
+ // ties. PID is only a deterministic final tie-break, never a start clock.
533
+ const start = (binding) => Date.parse(binding.processGeneration) || binding.record.startedAt;
534
+ group.sort((a, b) => start(b) - start(a) || b.record.startedAt - a.record.startedAt || b.record.pid - a.record.pid);
535
+ return group;
536
+ });
537
+ const reachable = new Set();
538
+ const duplicated = (group) => group.length > 1 && (group[0].record.kind === "interactive" || group[0].record.kind === "bg");
539
+ const probes = groups.filter(duplicated).flat();
540
+ const probeDeadline = Date.now() + this.#limits.connectTimeoutMs;
541
+ let nextProbe = 0;
542
+ // One total connect budget across all groups, at most 16 sockets in flight.
543
+ await Promise.all(Array.from({ length: Math.min(16, probes.length) }, async () => {
544
+ while (nextProbe < probes.length) {
545
+ const binding = probes[nextProbe++];
546
+ if (prepared?.registryPath === binding.registryPath) {
547
+ reachable.add(binding);
548
+ continue;
549
+ }
550
+ const remaining = probeDeadline - Date.now();
551
+ if (remaining > 0 && await this.#socketLive(binding, remaining))
552
+ reachable.add(binding);
553
+ }
554
+ }));
555
+ for (const group of groups) {
556
+ const newest = group[0];
557
+ const confirmed = !duplicated(group) ? newest : group.find((binding) => reachable.has(binding));
558
+ // ps proved these processes live. A socket probe miss is not PID_NOT_LIVE.
559
+ // Retain the newest candidate when none answers; a send may try its socket.
560
+ const binding = confirmed ?? newest;
561
+ nextTargets.set(binding.targetId, binding);
562
+ if (duplicated(group))
563
+ reject("CLAUDE_SESSION_DUPLICATE");
564
+ const peer = { targetId: binding.targetId, alias: binding.alias, kind: binding.record.kind,
565
+ status: binding.record.status, compatibility: "compatible",
566
+ ...(duplicated(group) ? { duplicate: { selectedPid: binding.record.pid,
567
+ newestPid: newest.record.pid, reason: !confirmed ? "all_unreachable"
568
+ : binding === newest ? "stale_older" : "unreachable_newest",
569
+ otherPids: group.filter((row) => row !== binding).map((row) => row.record.pid) } } : {}),
570
+ };
571
+ this.#selections.set(peer, binding);
572
+ peers.push(peer);
573
+ }
574
+ return { targets: nextTargets, discovery: { peers, rejected, truncated,
575
+ entriesScanned: bounded.length, parseableRecords } };
576
+ }
577
+ async discover() {
578
+ const { targets: nextTargets, discovery } = await this.#scan();
483
579
  this.#targets.clear();
484
580
  for (const [targetId, binding] of nextTargets) {
485
581
  this.#targets.set(targetId, binding);
486
582
  }
487
- return {
488
- peers,
489
- rejected,
490
- truncated,
491
- entriesScanned: bounded.length,
492
- parseableRecords,
493
- };
583
+ return discovery;
494
584
  }
495
585
  async #attestOwnedDirectory(candidate, exactPrivate, code) {
496
586
  try {
@@ -579,13 +669,12 @@ export class ClaudePeerAdapter {
579
669
  */
580
670
  async resolveReplyAddress(address) {
581
671
  const binding = await this.#resolveReplyAddress(address);
582
- return {
583
- targetId: binding.targetId,
584
- alias: binding.alias,
585
- kind: binding.record.kind,
586
- status: binding.record.status,
587
- compatibility: "compatible",
588
- };
672
+ if (binding.record.kind !== "interactive" && binding.record.kind !== "bg")
673
+ throw new BridgeError("CLAUDE_REPLY_ROUTE_MISMATCH", "Only interactive/background Claude sessions may send.");
674
+ const peer = (await this.discover()).peers.find((row) => row.targetId === binding.targetId);
675
+ if (!peer)
676
+ throw new BridgeError("CLAUDE_PEER_TARGET_UNKNOWN", "The Claude session has no live binding.", true);
677
+ return peer;
589
678
  }
590
679
  async prepareSend(targetId, content, options) {
591
680
  if (!Number.isSafeInteger(options.deadlineAt) ||
@@ -597,11 +686,12 @@ export class ClaudePeerAdapter {
597
686
  }
598
687
  // Preparation positively resolves every replaceable coordinate and exact
599
688
  // workspace generation. The resulting operation owns only immutable wire
600
- // bytes and the already-validated socket path; it performs no connection
601
- // or write until its one-shot perform function is invoked.
602
- await this.discover();
603
- const target = this.#targets.get(targetId);
604
- if (target === undefined) {
689
+ // bytes and the already-validated socket path. Duplicate liveness probes
690
+ // send no bytes; the only message write is the one-shot perform function.
691
+ if (!options.selection)
692
+ await this.discover();
693
+ const target = options.selection ? this.#selections.get(options.selection) : this.#targets.get(targetId);
694
+ if (target === undefined || target.targetId !== targetId) {
605
695
  throw new BridgeError("CLAUDE_PEER_TARGET_UNKNOWN", "The Claude peer target is unknown; discover it first.", true);
606
696
  }
607
697
  const stateRoot = this.#selectedStateRoots.get(targetId);
@@ -645,7 +735,7 @@ export class ClaudePeerAdapter {
645
735
  }
646
736
  let writeStarted = false;
647
737
  let authorizationStarted = false;
648
- await this.#revalidatePreparedBinding(target, stateRoot);
738
+ await this.#revalidatePreparedBinding(target, stateRoot, false);
649
739
  const write = writeSocketPayload(this.#connect, socketPath, frame, Math.max(1, Math.min(this.#limits.connectTimeoutMs, options.deadlineAt - this.#now())), async () => {
650
740
  await this.#revalidatePreparedBinding(target, stateRoot);
651
741
  authorizationStarted = true;