agent-embassy 1.9.5 → 2.0.1
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 +31 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +28 -21
- package/README.zh-CN.md +26 -20
- package/dist/src/gateway/claude-helper-protocol.d.ts +1 -1
- package/dist/src/gateway/claude-helper-protocol.js +3 -2
- package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
- package/dist/src/gateway/claude-helper-supervisor.d.ts +1 -1
- package/dist/src/gateway/claude-helper-supervisor.js +1 -1
- package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
- package/dist/src/gateway/claude-helper.js +12 -4
- package/dist/src/gateway/claude-helper.js.map +1 -1
- package/dist/src/gateway/cli-copy.d.ts +1 -1
- package/dist/src/gateway/cli-copy.en.d.ts +9 -4
- package/dist/src/gateway/cli-copy.en.js +10 -6
- package/dist/src/gateway/cli-copy.en.js.map +1 -1
- package/dist/src/gateway/cli-copy.js +5 -0
- package/dist/src/gateway/cli-copy.js.map +1 -1
- package/dist/src/gateway/cli-copy.zh-CN.d.ts +9 -4
- package/dist/src/gateway/cli-copy.zh-CN.js +10 -6
- package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/cli.d.ts +3 -9
- package/dist/src/gateway/cli.js +56 -63
- package/dist/src/gateway/cli.js.map +1 -1
- package/dist/src/gateway/codex-local-transport.d.ts +1 -1
- package/dist/src/gateway/codex-local-transport.js +2 -2
- package/dist/src/gateway/codex-local-transport.js.map +1 -1
- package/dist/src/gateway/config.d.ts +4 -3
- package/dist/src/gateway/config.js +5 -11
- package/dist/src/gateway/config.js.map +1 -1
- package/dist/src/gateway/control.d.ts +20 -41
- package/dist/src/gateway/control.js +54 -96
- package/dist/src/gateway/control.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.en.js +2 -2
- package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.zh-CN.js +2 -2
- package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/federation-nodes.d.ts +1 -2
- package/dist/src/gateway/federation-nodes.js +29 -14
- package/dist/src/gateway/federation-nodes.js.map +1 -1
- package/dist/src/gateway/live-dashboard-app/app.js +2 -2
- package/dist/src/gateway/live-dashboard-command.d.ts +3 -1
- package/dist/src/gateway/live-dashboard-command.js +1 -1
- package/dist/src/gateway/live-dashboard-command.js.map +1 -1
- package/dist/src/gateway/providers.d.ts +3 -3
- package/dist/src/gateway/providers.js +7 -10
- package/dist/src/gateway/providers.js.map +1 -1
- package/dist/src/gateway/server.d.ts +1 -2
- package/dist/src/gateway/server.js +6 -13
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/service.d.ts +3 -1
- package/dist/src/gateway/service.js +89 -35
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/store.d.ts +1 -1
- package/dist/src/gateway/store.js +27 -26
- package/dist/src/gateway/store.js.map +1 -1
- package/dist/src/gateway/types.d.ts +4 -4
- package/docs/CONFIGURATION.md +27 -21
- package/docs/CONFIGURATION.zh-CN.md +19 -15
- package/docs/DASHBOARD.md +1 -1
- package/docs/DASHBOARD.zh-CN.md +1 -1
- package/docs/DELIVERY.md +2 -2
- package/docs/DELIVERY.zh-CN.md +2 -2
- package/docs/GATEWAY-ARCHITECTURE.md +48 -58
- package/package.json +1 -1
- package/skills/embassy-peer/SKILL.md +20 -15
- package/dist/src/gateway/state-v2-to-v3.d.ts +0 -24
- package/dist/src/gateway/state-v2-to-v3.js +0 -1034
- package/dist/src/gateway/state-v2-to-v3.js.map +0 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { userInfo } from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
2
3
|
import { BridgeError } from "../errors.js";
|
|
3
4
|
import { createAcpGatewayProvider } from "./acp-provider.js";
|
|
4
5
|
import { attestClaudePeerRuntime } from "./claude-runtime.js";
|
|
5
6
|
import { createLocalCodexTransportFactory, resolveManagedLocalCodexInstallation, LocalCodexTransportError, managedCodexControlSocketPath } from "./codex-local-transport.js";
|
|
6
7
|
import { createStatelessCodexOperationTransport } from "./codex-stateless-transport.js";
|
|
7
8
|
import { createSystemCodexDoctorInspector, diagnoseCodexAttachment, diagnoseMissingManagedCodexLayout } from "./codex-doctor.js";
|
|
8
|
-
import { loadGatewayConfig } from "./config.js";
|
|
9
|
+
import { defaultGatewayStateDir, loadGatewayConfig } from "./config.js";
|
|
9
10
|
import { DASHBOARD_FILE_NAME } from "./dashboard.js";
|
|
10
11
|
import { loadGatewayNodeInventory } from "./federation-nodes.js";
|
|
11
12
|
import { resolveDeepSeekAcpLaunch } from "./deepseek-detect.js";
|
|
@@ -15,7 +16,6 @@ import { createLocalClaudeGatewayProvider, createLocalCodexGatewayProvider } fro
|
|
|
15
16
|
import { GatewayService } from "./service.js";
|
|
16
17
|
import { GatewayStore } from "./store.js";
|
|
17
18
|
import { gatewayInboundModes } from "./types.js";
|
|
18
|
-
export const GATEWAY_LOCAL_HOST_ID = "this-mac";
|
|
19
19
|
const GROK_ACP_LAUNCH = Object.freeze({
|
|
20
20
|
kind: "npx", package: "@xai-official/grok@1.0.5", args: ["agent", "stdio"],
|
|
21
21
|
});
|
|
@@ -102,21 +102,14 @@ export async function runGatewayServer(options, dependencies = {}) {
|
|
|
102
102
|
return { kind: "shutdown" };
|
|
103
103
|
});
|
|
104
104
|
try {
|
|
105
|
-
const
|
|
106
|
-
const
|
|
107
|
-
if (inventory.configured && env.EMBASSY_HOSTS !== undefined) {
|
|
108
|
-
throw serverError("INVALID_GATEWAY_CONFIGURATION", "nodes.json and EMBASSY_HOSTS cannot both define gateway hosts.");
|
|
109
|
-
}
|
|
105
|
+
const inventory = await d.loadNodeInventory(path.resolve(defaultGatewayStateDir(env)));
|
|
106
|
+
const loaded = d.loadConfig(env, inventory);
|
|
110
107
|
const inboundMode = options.inboundMode ?? loaded.inboundMode;
|
|
111
108
|
if (!gatewayInboundModes.includes(inboundMode)) {
|
|
112
109
|
throw serverError("INVALID_GATEWAY_CONFIGURATION", "The gateway inbound mode must be paired or open.");
|
|
113
110
|
}
|
|
114
|
-
const localHost =
|
|
115
|
-
const config = { ...loaded, inboundMode
|
|
116
|
-
allowedHosts: Object.freeze([localHost, ...inventory.nodes]),
|
|
117
|
-
...(loaded.acpProviders === undefined ? {} : { acpProviders: loaded.acpProviders.map((definition) => ({ ...definition,
|
|
118
|
-
alias: definition.alias.endsWith(`@${GATEWAY_LOCAL_HOST_ID}`)
|
|
119
|
-
? `${definition.alias.slice(0, -GATEWAY_LOCAL_HOST_ID.length)}${localHost}` : definition.alias })) }) };
|
|
111
|
+
const localHost = loaded.hostId;
|
|
112
|
+
const config = { ...loaded, inboundMode };
|
|
120
113
|
const home = d.loginHome();
|
|
121
114
|
const acquiring = d.acquireInstanceLease(home).then((value) => ({ kind: "lease", value }), (error) => ({ kind: "error", error }));
|
|
122
115
|
const acquired = await Promise.race([acquiring, stop]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/gateway/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/gateway/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export type GatewayAdapterRouteObservationState = GatewayAdapterRouteState | "un
|
|
|
10
10
|
export type GatewayAdapterDiscovery = Readonly<{
|
|
11
11
|
alias: string;
|
|
12
12
|
routeHandle: string;
|
|
13
|
-
kind: "interactive";
|
|
13
|
+
kind: "interactive" | "bg";
|
|
14
14
|
state: GatewayAdapterRouteState;
|
|
15
15
|
}>;
|
|
16
16
|
export type GatewayAdapterRegistryObservation = Readonly<{
|
|
@@ -172,6 +172,7 @@ export declare class GatewayService {
|
|
|
172
172
|
private readonly connectors;
|
|
173
173
|
private readonly routeObservations;
|
|
174
174
|
private readonly candidates;
|
|
175
|
+
private readonly collidingClaudeAliases;
|
|
175
176
|
private readonly conversations;
|
|
176
177
|
private readonly messageContexts;
|
|
177
178
|
private readonly activeAttempts;
|
|
@@ -234,6 +235,7 @@ export declare class GatewayService {
|
|
|
234
235
|
private unpair;
|
|
235
236
|
private resolvePairEndpoints;
|
|
236
237
|
private assertThread;
|
|
238
|
+
private send;
|
|
237
239
|
private sendToClaude;
|
|
238
240
|
private sendToCodex;
|
|
239
241
|
private reply;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
|
|
2
2
|
import { BridgeError } from "../errors.js";
|
|
3
|
-
import { createGatewayConversationId, startGatewayControlServer,
|
|
3
|
+
import { createGatewayConversationId, startGatewayControlServer, } from "./control.js";
|
|
4
4
|
import { publishGatewayDashboard } from "./dashboard.js";
|
|
5
5
|
import { spawnPeerClient } from "./peer-client.js";
|
|
6
6
|
import { peerEdgeRef, peerRouteRef } from "./peer-protocol.js";
|
|
@@ -76,9 +76,13 @@ function connectorKey(identity) {
|
|
|
76
76
|
return `${identity.provider}\0${identity.hostId}`;
|
|
77
77
|
}
|
|
78
78
|
function publicRegistry(value, previouslyParseable) {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
.
|
|
79
|
+
const counts = new Map();
|
|
80
|
+
for (const row of value.rejected)
|
|
81
|
+
if (SAFE_CODE.test(row.safeErrorCode) && Number.isSafeInteger(row.count) && row.count > 0)
|
|
82
|
+
counts.set(row.safeErrorCode, (counts.get(row.safeErrorCode) ?? 0) + row.count);
|
|
83
|
+
const rejected = [...counts].map(([safeErrorCode, count]) => ({ safeErrorCode, count }))
|
|
84
|
+
.sort((left, right) => left.safeErrorCode < right.safeErrorCode ? -1 :
|
|
85
|
+
left.safeErrorCode > right.safeErrorCode ? 1 : 0);
|
|
82
86
|
const retained = rejected.slice(0, gatewayPublicSnapshotLimits.registryRejectionCodes);
|
|
83
87
|
return {
|
|
84
88
|
entriesScanned: Math.max(0, value.entriesScanned),
|
|
@@ -133,6 +137,7 @@ export class GatewayService {
|
|
|
133
137
|
connectors = new Map();
|
|
134
138
|
routeObservations = new Map();
|
|
135
139
|
candidates = new Map();
|
|
140
|
+
collidingClaudeAliases = new Set();
|
|
136
141
|
conversations = new Map();
|
|
137
142
|
messageContexts = new Map();
|
|
138
143
|
activeAttempts = new Map();
|
|
@@ -231,7 +236,7 @@ export class GatewayService {
|
|
|
231
236
|
const now = this.now().getTime();
|
|
232
237
|
this.nextDiscoveryAt = now + DISCOVERY_INTERVAL_MS;
|
|
233
238
|
this.nextDoctorAt = now + CODEX_DOCTOR_INTERVAL_MS;
|
|
234
|
-
this.nextPeerRefreshAt =
|
|
239
|
+
this.nextPeerRefreshAt = this.config.peerNodes.length > 0 ? now : 0;
|
|
235
240
|
for (const target of await this.store.inspectDispatchableTargets())
|
|
236
241
|
this.kick(target);
|
|
237
242
|
await this.publish();
|
|
@@ -342,8 +347,7 @@ export class GatewayService {
|
|
|
342
347
|
observeSnapshot: () => this.observeSnapshot(),
|
|
343
348
|
deliveryStatus: (params) => this.deliveryStatus(params.token),
|
|
344
349
|
untrack: (params) => decide(async () => this.untrack(params.conversationId)),
|
|
345
|
-
|
|
346
|
-
sendToCodex: (params) => this.sendToCodex(params),
|
|
350
|
+
send: (params) => this.send(params),
|
|
347
351
|
reply: (params) => this.reply(params),
|
|
348
352
|
refreshDashboard: async () => {
|
|
349
353
|
if (this.closing) {
|
|
@@ -359,8 +363,8 @@ export class GatewayService {
|
|
|
359
363
|
};
|
|
360
364
|
}
|
|
361
365
|
async buildPeerCatalog(peerHost) {
|
|
362
|
-
const localHost = this.config.hostId
|
|
363
|
-
if (!
|
|
366
|
+
const localHost = this.config.hostId;
|
|
367
|
+
if (!this.config.peerNodes.includes(peerHost))
|
|
364
368
|
throw new BridgeError("PEER_NOT_CONFIGURED", "The requested peer host is not configured.");
|
|
365
369
|
const [snapshot, privateRoutes, privateEdges] = await Promise.all([
|
|
366
370
|
this.snapshot(), this.store.inspectPrivateRoutes(), this.store.inspectPrivateConsentEdges(),
|
|
@@ -400,7 +404,7 @@ export class GatewayService {
|
|
|
400
404
|
})), routes, consentEdges, alerts: snapshot.alerts.filter((alert) => (alert.host === undefined || alert.host === localHost) && (alert.alias === undefined || aliasHost(alert.alias) === localHost)), };
|
|
401
405
|
}
|
|
402
406
|
async receivePeerHandoff(peerHost, handoff) {
|
|
403
|
-
if (!
|
|
407
|
+
if (!this.config.peerNodes.includes(peerHost))
|
|
404
408
|
throw new BridgeError("PEER_NOT_CONFIGURED", "The sending peer host is not configured.");
|
|
405
409
|
const enqueued = await this.store.enqueuePeerHandoff(peerHost, handoff);
|
|
406
410
|
if (enqueued.messageId !== undefined) {
|
|
@@ -474,6 +478,7 @@ export class GatewayService {
|
|
|
474
478
|
};
|
|
475
479
|
});
|
|
476
480
|
const availablePeers = [...this.candidates.values()]
|
|
481
|
+
.filter((candidate) => !this.collidingClaudeAliases.has(candidate.alias))
|
|
477
482
|
.slice(0, gatewayPublicSnapshotLimits.availablePeers)
|
|
478
483
|
.map((candidate) => ({
|
|
479
484
|
alias: candidate.alias,
|
|
@@ -594,7 +599,7 @@ export class GatewayService {
|
|
|
594
599
|
}
|
|
595
600
|
async advertise(route) {
|
|
596
601
|
const hostId = route.registrationMode === "federated_peer"
|
|
597
|
-
?
|
|
602
|
+
? this.config.hostId : route.binding.hostId;
|
|
598
603
|
await this.claudeAdapter(hostId)?.advertiseNativeSourcePeer?.({
|
|
599
604
|
alias: route.alias,
|
|
600
605
|
sourceProvider: route.binding.provider,
|
|
@@ -603,7 +608,7 @@ export class GatewayService {
|
|
|
603
608
|
}
|
|
604
609
|
async unadvertise(route) {
|
|
605
610
|
const hostId = route.registrationMode === "federated_peer"
|
|
606
|
-
?
|
|
611
|
+
? this.config.hostId : route.binding.hostId;
|
|
607
612
|
await this.claudeAdapter(hostId)?.unadvertiseNativeSourcePeer?.(route.alias);
|
|
608
613
|
}
|
|
609
614
|
reconcileAdvertisement(route) {
|
|
@@ -714,12 +719,12 @@ export class GatewayService {
|
|
|
714
719
|
this.kick(existing.alias, existing.binding.registrationId);
|
|
715
720
|
return undefined;
|
|
716
721
|
}
|
|
717
|
-
if (params.token !== undefined || !params.alias.endsWith(`@${this.config.hostId
|
|
722
|
+
if (params.token !== undefined || !params.alias.endsWith(`@${this.config.hostId}`)) {
|
|
718
723
|
throw new BridgeError("ROUTE_UNREGISTERED", "The route binding does not match.");
|
|
719
724
|
}
|
|
720
725
|
const token = `peer_${randomBytes(24).toString("base64url")}`;
|
|
721
726
|
await this.store.registerRoute({ alias: params.alias, binding: {
|
|
722
|
-
provider: "peer", hostId: this.config.hostId
|
|
727
|
+
provider: "peer", hostId: this.config.hostId,
|
|
723
728
|
routeHandle: peerHandle(process.getuid(), params.alias, token), registrationId: registrationId(),
|
|
724
729
|
}, registrationMode: "explicit_opt_in" });
|
|
725
730
|
const installed = (await this.store.inspectPrivateRoute(params.alias));
|
|
@@ -846,11 +851,8 @@ export class GatewayService {
|
|
|
846
851
|
const endpoints = await this.resolvePairEndpoints(params, true);
|
|
847
852
|
const aliases = endpoints.aliases;
|
|
848
853
|
const ownerHost = aliases.map(aliasHost).sort()[0];
|
|
849
|
-
if (
|
|
854
|
+
if (this.config.hostId !== ownerHost)
|
|
850
855
|
throw new ConsentOwnerError(ownerHost);
|
|
851
|
-
const attestation = pairParamThreadAttestation(params);
|
|
852
|
-
if (attestation !== undefined)
|
|
853
|
-
await this.assertThread(attestation.alias, attestation.threadId);
|
|
854
856
|
this.assertWritable();
|
|
855
857
|
const existed = await this.store.hasConsentEdge(endpoints);
|
|
856
858
|
await this.store.addConsentEdge(endpoints);
|
|
@@ -861,11 +863,8 @@ export class GatewayService {
|
|
|
861
863
|
const endpoints = await this.resolvePairEndpoints(params, false);
|
|
862
864
|
const aliases = endpoints.aliases;
|
|
863
865
|
const ownerHost = aliases.map(aliasHost).sort()[0];
|
|
864
|
-
if (
|
|
866
|
+
if (this.config.hostId !== ownerHost)
|
|
865
867
|
throw new ConsentOwnerError(ownerHost);
|
|
866
|
-
const attestation = pairParamThreadAttestation(params);
|
|
867
|
-
if (attestation !== undefined)
|
|
868
|
-
await this.assertThread(attestation.alias, attestation.threadId);
|
|
869
868
|
this.assertWritable();
|
|
870
869
|
const existed = await this.store.hasConsentEdge(endpoints);
|
|
871
870
|
const result = await this.store.removeConsentEdge(endpoints);
|
|
@@ -878,9 +877,13 @@ export class GatewayService {
|
|
|
878
877
|
this.kick(alias);
|
|
879
878
|
}
|
|
880
879
|
async resolvePairEndpoints(params, maySelect) {
|
|
881
|
-
const raw =
|
|
880
|
+
const raw = params.aliases;
|
|
882
881
|
const aliases = [raw[0], raw[1]];
|
|
882
|
+
if (maySelect && aliases.some((alias) => PUBLIC_ALIAS.test(alias)))
|
|
883
|
+
await this.refreshClaudeDiscovery().catch(() => undefined);
|
|
883
884
|
for (let index = 0; index < aliases.length; index += 1) {
|
|
885
|
+
if (maySelect && this.collidingClaudeAliases.has(aliases[index]))
|
|
886
|
+
throw new BridgeError("PEER_ALIAS_COLLISION", "The Claude alias is ambiguous.");
|
|
884
887
|
if (PUBLIC_ALIAS.test(aliases[index]))
|
|
885
888
|
continue;
|
|
886
889
|
const selected = await this.resolveClaudeSelector(aliases[index], maySelect);
|
|
@@ -910,12 +913,31 @@ export class GatewayService {
|
|
|
910
913
|
}
|
|
911
914
|
return route;
|
|
912
915
|
}
|
|
916
|
+
async send(params) {
|
|
917
|
+
const source = await this.store.inspectPrivateRoute(params.fromAlias);
|
|
918
|
+
const directTarget = await this.store.inspectPrivateRoute(params.toAlias);
|
|
919
|
+
const target = directTarget ?? await this.resolveSelectedClaudeRoute(params.toAlias);
|
|
920
|
+
if (source?.binding.provider === "codex" && (target?.binding.provider === "claude" || target?.binding.provider === "peer") && "threadId" in params) {
|
|
921
|
+
return this.sendToClaude(params);
|
|
922
|
+
}
|
|
923
|
+
if (source?.binding.provider === "claude" && (target?.binding.provider === "codex" || target?.binding.provider === "peer") && "replyAddress" in params) {
|
|
924
|
+
return this.sendToCodex(params);
|
|
925
|
+
}
|
|
926
|
+
if (source?.binding.provider === "peer" && "peerToken" in params) {
|
|
927
|
+
return target?.binding.provider === "claude" ? this.sendToClaude(params) : this.sendToCodex(params);
|
|
928
|
+
}
|
|
929
|
+
return { accepted: false, code: "route_mismatch" };
|
|
930
|
+
}
|
|
913
931
|
async sendToClaude(params) {
|
|
914
932
|
try {
|
|
915
933
|
this.assertWritable();
|
|
916
934
|
const source = "peerToken" in params && params.peerToken !== undefined
|
|
917
935
|
? await this.assertPeer({ alias: params.fromAlias, token: params.peerToken })
|
|
918
|
-
:
|
|
936
|
+
: params.threadId === undefined
|
|
937
|
+
? undefined
|
|
938
|
+
: await this.assertThread(params.fromAlias, params.threadId);
|
|
939
|
+
if (source === undefined)
|
|
940
|
+
throw new BridgeError("ROUTE_NOT_AVAILABLE", "The source route is absent.");
|
|
919
941
|
const direct = await this.store.inspectPrivateRoute(params.toAlias);
|
|
920
942
|
const target = direct?.binding.provider === "peer" ? direct : await this.resolveSelectedClaudeRoute(params.toAlias);
|
|
921
943
|
if (target === undefined)
|
|
@@ -1641,7 +1663,7 @@ export class GatewayService {
|
|
|
1641
1663
|
}
|
|
1642
1664
|
async onClaudeMessage(event) {
|
|
1643
1665
|
const target = await this.store.inspectPrivateRoute(event.targetAlias);
|
|
1644
|
-
const localHost = this.config.hostId
|
|
1666
|
+
const localHost = this.config.hostId;
|
|
1645
1667
|
if (target === undefined || (target.binding.hostId !== event.endpoint.hostId &&
|
|
1646
1668
|
!(target.registrationMode === "federated_peer" && event.endpoint.hostId === localHost))) {
|
|
1647
1669
|
throw new BridgeError("ROUTE_NOT_AVAILABLE", "The native target is absent.");
|
|
@@ -2119,7 +2141,7 @@ export class GatewayService {
|
|
|
2119
2141
|
const due = [
|
|
2120
2142
|
this.nextDiscoveryAt || now + DISCOVERY_INTERVAL_MS,
|
|
2121
2143
|
this.nextDoctorAt || now + CODEX_DOCTOR_INTERVAL_MS,
|
|
2122
|
-
...(
|
|
2144
|
+
...(this.config.peerNodes.length > 0
|
|
2123
2145
|
? [this.nextPeerRefreshAt || now + PEER_REFRESH_INTERVAL_MS]
|
|
2124
2146
|
: []),
|
|
2125
2147
|
...(deadlineAt === undefined ? [] : [Date.parse(deadlineAt)]),
|
|
@@ -2167,8 +2189,8 @@ export class GatewayService {
|
|
|
2167
2189
|
this.scheduleWake();
|
|
2168
2190
|
}
|
|
2169
2191
|
async refreshPeers() {
|
|
2170
|
-
const localHost = this.config.hostId
|
|
2171
|
-
await Promise.all(
|
|
2192
|
+
const localHost = this.config.hostId;
|
|
2193
|
+
await Promise.all(this.config.peerNodes.map(async (peerHost) => {
|
|
2172
2194
|
let failureCode = "PEER_TUNNEL_UNAVAILABLE";
|
|
2173
2195
|
try {
|
|
2174
2196
|
let client = this.peerClients.get(peerHost);
|
|
@@ -2244,16 +2266,30 @@ export class GatewayService {
|
|
|
2244
2266
|
}
|
|
2245
2267
|
async refreshClaudeDiscovery() {
|
|
2246
2268
|
const seen = new Set();
|
|
2269
|
+
const nextCollisions = new Set();
|
|
2270
|
+
const refreshedHosts = new Set();
|
|
2247
2271
|
for (const adapter of this.adapters) {
|
|
2248
2272
|
if (adapter.identity.provider !== "claude" || adapter.discoverClaudePeers === undefined)
|
|
2249
2273
|
continue;
|
|
2250
2274
|
const snapshot = await adapter.discoverClaudePeers();
|
|
2251
2275
|
const observedAt = this.now().toISOString();
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2276
|
+
const peers = snapshot.peers.filter((peer) => PUBLIC_ALIAS.test(peer.alias) &&
|
|
2277
|
+
peer.alias.endsWith(`@${adapter.identity.hostId}`) && PRIVATE_HANDLE.test(peer.routeHandle));
|
|
2278
|
+
const aliasHandles = new Map();
|
|
2279
|
+
for (const peer of peers) {
|
|
2280
|
+
const handles = aliasHandles.get(peer.alias) ?? new Set();
|
|
2281
|
+
handles.add(peer.routeHandle);
|
|
2282
|
+
aliasHandles.set(peer.alias, handles);
|
|
2283
|
+
}
|
|
2284
|
+
const collidingAliases = new Set([...aliasHandles].filter(([, handles]) => handles.size > 1).map(([alias]) => alias));
|
|
2285
|
+
refreshedHosts.add(adapter.identity.hostId);
|
|
2286
|
+
if (!snapshot.complete)
|
|
2287
|
+
for (const alias of this.collidingClaudeAliases)
|
|
2288
|
+
if (alias.endsWith(`@${adapter.identity.hostId}`))
|
|
2289
|
+
collidingAliases.add(alias);
|
|
2290
|
+
for (const alias of collidingAliases)
|
|
2291
|
+
nextCollisions.add(alias);
|
|
2292
|
+
for (const peer of peers) {
|
|
2257
2293
|
const key = `${adapter.identity.hostId}\0${peer.routeHandle}`;
|
|
2258
2294
|
seen.add(key);
|
|
2259
2295
|
this.candidates.set(key, { ...peer, adapter, observedAt });
|
|
@@ -2264,13 +2300,28 @@ export class GatewayService {
|
|
|
2264
2300
|
runtime.health = snapshot.complete ? "healthy" : "degraded";
|
|
2265
2301
|
const registry = snapshot.registry ?? adapter.latestRegistryObservation?.();
|
|
2266
2302
|
if (registry !== undefined) {
|
|
2267
|
-
runtime.registry = publicRegistry(registry,
|
|
2303
|
+
runtime.registry = publicRegistry({ ...registry, rejected: [
|
|
2304
|
+
...registry.rejected,
|
|
2305
|
+
...(collidingAliases.size === 0 ? [] : [{ safeErrorCode: "PEER_ALIAS_COLLISION",
|
|
2306
|
+
count: collidingAliases.size }]),
|
|
2307
|
+
] }, runtime.registry?.parseableRecordSeenSinceBoot ?? false);
|
|
2268
2308
|
}
|
|
2269
2309
|
}
|
|
2270
2310
|
}
|
|
2271
2311
|
for (const [key] of this.candidates)
|
|
2272
2312
|
if (!seen.has(key))
|
|
2273
2313
|
this.candidates.delete(key);
|
|
2314
|
+
for (const alias of this.collidingClaudeAliases)
|
|
2315
|
+
if (refreshedHosts.has(aliasHost(alias)))
|
|
2316
|
+
this.collidingClaudeAliases.delete(alias);
|
|
2317
|
+
const retainedCollisions = new Set([...nextCollisions].slice(0, gatewayPublicSnapshotLimits.availablePeers));
|
|
2318
|
+
// Discovery currently caps rows such that collisions cannot overflow this independent public bound.
|
|
2319
|
+
// If those constants diverge, discard overflow candidates rather than expose an unfenced alias.
|
|
2320
|
+
for (const [key, candidate] of this.candidates)
|
|
2321
|
+
if (nextCollisions.has(candidate.alias) && !retainedCollisions.has(candidate.alias))
|
|
2322
|
+
this.candidates.delete(key);
|
|
2323
|
+
for (const alias of retainedCollisions)
|
|
2324
|
+
this.collidingClaudeAliases.add(alias);
|
|
2274
2325
|
}
|
|
2275
2326
|
async refreshCodexDoctor() {
|
|
2276
2327
|
if (this.codexDoctor === undefined)
|
|
@@ -2285,7 +2336,10 @@ export class GatewayService {
|
|
|
2285
2336
|
async resolveClaudeSelector(selector, refresh) {
|
|
2286
2337
|
if (refresh)
|
|
2287
2338
|
await this.refreshClaudeDiscovery().catch(() => undefined);
|
|
2288
|
-
|
|
2339
|
+
if (this.collidingClaudeAliases.has(selector))
|
|
2340
|
+
throw new BridgeError("PEER_ALIAS_COLLISION", "The Claude alias is ambiguous.");
|
|
2341
|
+
return [...this.candidates.values()].find((candidate) => candidate.routeHandle === selector ||
|
|
2342
|
+
candidate.alias === selector);
|
|
2289
2343
|
}
|
|
2290
2344
|
async resolveSelectedClaudeRoute(selector) {
|
|
2291
2345
|
return (await this.store.listLogicalRoutes()).find((route) => route.binding.provider === "claude" &&
|