agent-embassy 1.0.0 → 1.3.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 +68 -0
- package/CONTRIBUTING.md +25 -7
- package/README.md +66 -13
- package/README.zh-CN.md +41 -13
- package/SECURITY.md +80 -42
- package/assets/live-dashboard/app.css +14 -5
- package/dist/src/gateway/claude-helper-protocol.d.ts +3 -0
- package/dist/src/gateway/claude-helper-protocol.js +15 -1
- package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
- package/dist/src/gateway/claude-helper-supervisor.d.ts +2 -0
- package/dist/src/gateway/claude-helper-supervisor.js +24 -1
- package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
- package/dist/src/gateway/claude-runtime.d.ts +0 -2
- package/dist/src/gateway/claude-runtime.js +6 -17
- package/dist/src/gateway/claude-runtime.js.map +1 -1
- package/dist/src/gateway/cli-copy.d.ts +1 -1
- package/dist/src/gateway/cli-copy.en.d.ts +4 -1
- package/dist/src/gateway/cli-copy.en.js +6 -3
- package/dist/src/gateway/cli-copy.en.js.map +1 -1
- package/dist/src/gateway/cli-copy.js +2 -0
- package/dist/src/gateway/cli-copy.js.map +1 -1
- package/dist/src/gateway/cli-copy.zh-CN.d.ts +4 -1
- package/dist/src/gateway/cli-copy.zh-CN.js +6 -3
- package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/cli.d.ts +2 -5
- package/dist/src/gateway/cli.js +49 -73
- package/dist/src/gateway/cli.js.map +1 -1
- package/dist/src/gateway/codex-app-server.d.ts +1 -7
- package/dist/src/gateway/codex-app-server.js +10 -53
- package/dist/src/gateway/codex-app-server.js.map +1 -1
- package/dist/src/gateway/codex-local-transport.d.ts +10 -3
- package/dist/src/gateway/codex-local-transport.js +25 -9
- package/dist/src/gateway/codex-local-transport.js.map +1 -1
- package/dist/src/gateway/compatibility.d.ts +0 -27
- package/dist/src/gateway/compatibility.js +1 -101
- package/dist/src/gateway/compatibility.js.map +1 -1
- package/dist/src/gateway/config.d.ts +0 -3
- package/dist/src/gateway/config.js +4 -12
- package/dist/src/gateway/config.js.map +1 -1
- package/dist/src/gateway/control.d.ts +11 -20
- package/dist/src/gateway/control.js +50 -47
- package/dist/src/gateway/control.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.d.ts +1 -1
- package/dist/src/gateway/dashboard-copy.en.d.ts +12 -7
- package/dist/src/gateway/dashboard-copy.en.js +26 -21
- package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.js +12 -7
- package/dist/src/gateway/dashboard-copy.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +12 -7
- package/dist/src/gateway/dashboard-copy.zh-CN.js +26 -21
- package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/dashboard-model.d.ts +7 -9
- package/dist/src/gateway/dashboard-model.js +47 -16
- package/dist/src/gateway/dashboard-model.js.map +1 -1
- package/dist/src/gateway/dashboard.js +10 -10
- package/dist/src/gateway/dashboard.js.map +1 -1
- package/dist/src/gateway/live-dashboard-app/app.js +65 -55
- package/dist/src/gateway/live-dashboard-command.d.ts +5 -1
- package/dist/src/gateway/live-dashboard-command.js +18 -6
- package/dist/src/gateway/live-dashboard-command.js.map +1 -1
- package/dist/src/gateway/live-dashboard-http.d.ts +3 -4
- package/dist/src/gateway/live-dashboard-http.js +32 -93
- package/dist/src/gateway/live-dashboard-http.js.map +1 -1
- package/dist/src/gateway/live-dashboard-protocol.d.ts +1 -5
- package/dist/src/gateway/live-dashboard-protocol.js +0 -42
- package/dist/src/gateway/live-dashboard-protocol.js.map +1 -1
- package/dist/src/gateway/live-dashboard-server.d.ts +2 -2
- package/dist/src/gateway/live-dashboard-server.js +18 -4
- package/dist/src/gateway/live-dashboard-server.js.map +1 -1
- package/dist/src/gateway/live-dashboard-stream.js +26 -25
- package/dist/src/gateway/live-dashboard-stream.js.map +1 -1
- package/dist/src/gateway/live-dashboard.d.ts +3 -6
- package/dist/src/gateway/live-dashboard.js +6 -42
- package/dist/src/gateway/live-dashboard.js.map +1 -1
- package/dist/src/gateway/provenance-envelope.d.ts +16 -0
- package/dist/src/gateway/provenance-envelope.js +80 -0
- package/dist/src/gateway/provenance-envelope.js.map +1 -0
- package/dist/src/gateway/providers.d.ts +40 -33
- package/dist/src/gateway/providers.js +683 -302
- package/dist/src/gateway/providers.js.map +1 -1
- package/dist/src/gateway/server.d.ts +2 -0
- package/dist/src/gateway/server.js +8 -5
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/service.d.ts +103 -23
- package/dist/src/gateway/service.js +1346 -272
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/store.d.ts +39 -3
- package/dist/src/gateway/store.js +604 -44
- package/dist/src/gateway/store.js.map +1 -1
- package/dist/src/gateway/types.d.ts +90 -9
- package/dist/src/gateway/types.js +6 -0
- package/dist/src/gateway/types.js.map +1 -1
- package/docs/GATEWAY-ARCHITECTURE.md +155 -56
- package/package.json +3 -2
- package/skills/embassy-peer/SKILL.md +36 -7
- package/dist/src/gateway/claude-compatibility-scratch.d.ts +0 -18
- package/dist/src/gateway/claude-compatibility-scratch.js +0 -158
- package/dist/src/gateway/claude-compatibility-scratch.js.map +0 -1
- package/dist/src/gateway/live-dashboard-bootstrap.d.ts +0 -36
- package/dist/src/gateway/live-dashboard-bootstrap.js +0 -176
- package/dist/src/gateway/live-dashboard-bootstrap.js.map +0 -1
- package/docs/DESIGN.md +0 -134
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { BridgeError } from "../errors.js";
|
|
3
|
+
export const PROVENANCE_RAW_BODY_MAX_BYTES = 16 * 1024;
|
|
4
|
+
export const PROVENANCE_ENVELOPE_MAX_BYTES = 64 * 1024;
|
|
5
|
+
const ALIAS_PATTERN = /^[a-z][a-z0-9_-]{0,31}@[a-z0-9](?:[a-z0-9.-]{0,61}[a-z0-9])?$/;
|
|
6
|
+
const CONVERSATION_ID_PATTERN = /^conv_[A-Za-z0-9_-]{16,64}$/;
|
|
7
|
+
const RESERVED_TAG_PATTERN = /<(?=\/?(?:cross-session-message|embassy-reply-hint)(?:[>\s/]|$))/giu;
|
|
8
|
+
const CLAUDE_FROM_NAME_MAX_CODEPOINTS = 64;
|
|
9
|
+
const LONG_ALIAS_PREFIX_CODEPOINTS = 47;
|
|
10
|
+
const LONG_ALIAS_HASH_HEX_LENGTH = 16;
|
|
11
|
+
function invalidEnvelope() {
|
|
12
|
+
throw new BridgeError("PROVENANCE_ENVELOPE_INVALID", "The provenance envelope metadata is invalid.");
|
|
13
|
+
}
|
|
14
|
+
function envelopeTooLarge() {
|
|
15
|
+
throw new BridgeError("PROVENANCE_ENVELOPE_TOO_LARGE", "The provenance envelope exceeds its byte limit.");
|
|
16
|
+
}
|
|
17
|
+
function validateInput(input) {
|
|
18
|
+
if (typeof input !== "object" ||
|
|
19
|
+
input === null ||
|
|
20
|
+
(input.direction !== "codex" && input.direction !== "claude") ||
|
|
21
|
+
typeof input.sourceAlias !== "string" ||
|
|
22
|
+
!ALIAS_PATTERN.test(input.sourceAlias) ||
|
|
23
|
+
typeof input.targetAlias !== "string" ||
|
|
24
|
+
!ALIAS_PATTERN.test(input.targetAlias) ||
|
|
25
|
+
typeof input.conversationId !== "string" ||
|
|
26
|
+
!CONVERSATION_ID_PATTERN.test(input.conversationId) ||
|
|
27
|
+
typeof input.body !== "string") {
|
|
28
|
+
invalidEnvelope();
|
|
29
|
+
}
|
|
30
|
+
if (Buffer.byteLength(input.body, "utf8") > PROVENANCE_RAW_BODY_MAX_BYTES) {
|
|
31
|
+
envelopeTooLarge();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function claudeDisplayAlias(alias) {
|
|
35
|
+
const codepoints = [...alias];
|
|
36
|
+
if (codepoints.length <= CLAUDE_FROM_NAME_MAX_CODEPOINTS) {
|
|
37
|
+
return { displayAlias: alias, shortened: false };
|
|
38
|
+
}
|
|
39
|
+
const digest = createHash("sha256")
|
|
40
|
+
.update(alias, "utf8")
|
|
41
|
+
.digest("hex")
|
|
42
|
+
.slice(0, LONG_ALIAS_HASH_HEX_LENGTH);
|
|
43
|
+
return {
|
|
44
|
+
displayAlias: `${codepoints.slice(0, LONG_ALIAS_PREFIX_CODEPOINTS).join("")}~${digest}`,
|
|
45
|
+
shortened: true,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function neutralizeReservedTags(body) {
|
|
49
|
+
return body.replace(RESERVED_TAG_PATTERN, "<\\");
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Adds broker-owned, Claude-compatible textual framing at the provider write
|
|
53
|
+
* boundary. The result is not general XML and does not provide a cryptographic
|
|
54
|
+
* signature; the wrapper is a structural provenance marker for the recipient.
|
|
55
|
+
*/
|
|
56
|
+
export function composeProvenanceEnvelope(input) {
|
|
57
|
+
validateInput(input);
|
|
58
|
+
const display = claudeDisplayAlias(input.sourceAlias);
|
|
59
|
+
const fromName = input.direction === "codex" ? input.sourceAlias : display.displayAlias;
|
|
60
|
+
const conversationAttribute = input.direction === "codex"
|
|
61
|
+
? ` conversation="${input.conversationId}"`
|
|
62
|
+
: "";
|
|
63
|
+
const exactSourceAttribute = input.direction === "claude" && display.shortened
|
|
64
|
+
? ` from-alias="${input.sourceAlias}"`
|
|
65
|
+
: "";
|
|
66
|
+
const replyCommand = `embassy reply --conversation ${input.conversationId}` +
|
|
67
|
+
` --alias ${input.targetAlias}`;
|
|
68
|
+
const hint = `<embassy-reply-hint conversation="${input.conversationId}"` +
|
|
69
|
+
` reply-as="${input.targetAlias}"${exactSourceAttribute}>` +
|
|
70
|
+
`Reply by running \`${replyCommand}\` with the reply body on stdin. ` +
|
|
71
|
+
"Caller, conversation, and route policy are rechecked.</embassy-reply-hint>";
|
|
72
|
+
const body = neutralizeReservedTags(input.body);
|
|
73
|
+
const envelope = `<cross-session-message from-name="${fromName}"${conversationAttribute}>\n` +
|
|
74
|
+
`${hint}\n${body}\n</cross-session-message>`;
|
|
75
|
+
if (Buffer.byteLength(envelope, "utf8") > PROVENANCE_ENVELOPE_MAX_BYTES) {
|
|
76
|
+
envelopeTooLarge();
|
|
77
|
+
}
|
|
78
|
+
return envelope;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=provenance-envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance-envelope.js","sourceRoot":"","sources":["../../../src/gateway/provenance-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { ClaudePeerAdapter, type ClaudePeerInboundProgress, type ClaudePeerRegistryPublicationOutcome } from "./claude-peer.js";
|
|
2
2
|
import type { AttestedClaudePeerRuntime } from "./claude-runtime.js";
|
|
3
|
-
import { type
|
|
4
|
-
import { type CompatibilityAttestation, type CompatibilityCertification, type CompatibilityProbeResult, type CompatibilitySurfaceObservation } from "./compatibility.js";
|
|
3
|
+
import { type CompatibilityAttestation, type CompatibilityProbeResult, type CompatibilitySurfaceObservation } from "./compatibility.js";
|
|
5
4
|
import { type CodexConnectorObservation } from "./codex-app-server.js";
|
|
6
5
|
import type { LocalCodexTransportFactory } from "./codex-local-transport.js";
|
|
7
6
|
import type { GatewayDeliveryNoticeMode } from "./config.js";
|
|
8
7
|
import type { ClaudeNativeHelperFactory } from "./claude-helper-client.js";
|
|
9
8
|
import { type DashboardLocale } from "./locale.js";
|
|
10
|
-
import type { GatewayAdapterCallbacks, GatewayAdapterDiscoverySnapshot, GatewayAdapterDispatchResult, GatewayAdapterRouteState, GatewayAdapterStart, GatewayProviderAdapter } from "./service.js";
|
|
9
|
+
import type { GatewayAdapterCallbacks, GatewayAdapterDiscoverySnapshot, GatewayAdapterDispatchResult, GatewayAdapterEndpointRefresh, GatewayAdapterDispatchInput, GatewayAdapterRouteState, GatewayAdapterStart, GatewayProviderAdapter } from "./service.js";
|
|
11
10
|
import type { PrivateEndpointIdentity, PrivateRouteBinding } from "./types.js";
|
|
12
11
|
type ClaudePeerFactory = (runtime: AttestedClaudePeerRuntime, locale: DashboardLocale, deliveryNotices: GatewayDeliveryNoticeMode) => ClaudePeerAdapter;
|
|
13
12
|
export type LocalClaudeGatewayProviderOptions = {
|
|
@@ -28,8 +27,6 @@ export type LocalClaudeGatewayProviderOptions = {
|
|
|
28
27
|
}>;
|
|
29
28
|
/** Deterministic test seam. Production callers must omit this. */
|
|
30
29
|
peerFactory?: ClaudePeerFactory;
|
|
31
|
-
/** Deterministic test seam. Production starts one bounded local scratch. */
|
|
32
|
-
compatibilityScratchFactory?: ClaudeCompatibilityScratchFactory;
|
|
33
30
|
};
|
|
34
31
|
export type ClaudeNativeCodexSuccessionBarrier = Readonly<{
|
|
35
32
|
generation: string;
|
|
@@ -66,7 +63,6 @@ export declare class LocalClaudeGatewayProvider implements GatewayProviderAdapte
|
|
|
66
63
|
private readonly now;
|
|
67
64
|
private readonly selectedStateRoots;
|
|
68
65
|
private readonly nativeHelpers;
|
|
69
|
-
private readonly compatibilityScratchFactory;
|
|
70
66
|
private readonly discovered;
|
|
71
67
|
private readonly selected;
|
|
72
68
|
/** Exact live same-UID sessions observed through native inbound frames. */
|
|
@@ -99,17 +95,11 @@ export declare class LocalClaudeGatewayProvider implements GatewayProviderAdapte
|
|
|
99
95
|
private retiredNativeCodexListener;
|
|
100
96
|
/** Fences discovery callbacks and monitor restarts across listener rotation. */
|
|
101
97
|
private nativeCodexSuccessionFreeze;
|
|
102
|
-
private compatibilityCertificationInFlight;
|
|
103
98
|
private initialized;
|
|
104
99
|
private closed;
|
|
105
100
|
constructor(options: LocalClaudeGatewayProviderOptions);
|
|
106
101
|
compatibilitySurface(): CompatibilitySurfaceObservation;
|
|
107
102
|
runCompatibilityProbes(): Promise<readonly CompatibilityProbeResult[]>;
|
|
108
|
-
runCompatibilityCertification(input: Readonly<{
|
|
109
|
-
controllerStateRoot: string;
|
|
110
|
-
routeHandle?: string;
|
|
111
|
-
withTurn: boolean;
|
|
112
|
-
}>): Promise<CompatibilityCertification>;
|
|
113
103
|
initialize(callbacks: GatewayAdapterCallbacks): Promise<GatewayAdapterStart>;
|
|
114
104
|
discoverClaudePeers(): Promise<GatewayAdapterDiscoverySnapshot>;
|
|
115
105
|
assertWorkspaceDisjoint(routeHandle: string, stateRoot: string): Promise<void>;
|
|
@@ -161,7 +151,9 @@ export declare class LocalClaudeGatewayProvider implements GatewayProviderAdapte
|
|
|
161
151
|
releaseNativeInboundReceipt(receiptHandle: string): Promise<boolean>;
|
|
162
152
|
quiesceNativeInbound(): Promise<void>;
|
|
163
153
|
dispatch(input: {
|
|
164
|
-
sourceAlias
|
|
154
|
+
sourceAlias: string;
|
|
155
|
+
targetAlias: string;
|
|
156
|
+
conversationId: string;
|
|
165
157
|
binding: PrivateRouteBinding;
|
|
166
158
|
authorization: "selected_route" | "native_reply";
|
|
167
159
|
messageId: string;
|
|
@@ -199,6 +191,8 @@ export declare class LocalClaudeGatewayProvider implements GatewayProviderAdapte
|
|
|
199
191
|
export declare function createLocalClaudeGatewayProvider(options: LocalClaudeGatewayProviderOptions): LocalClaudeGatewayProvider;
|
|
200
192
|
export type LocalCodexGatewayProviderOptions = {
|
|
201
193
|
factory: LocalCodexTransportFactory;
|
|
194
|
+
/** Re-resolves the exact pinned managed install after its generation moves. */
|
|
195
|
+
refreshFactory?: () => Promise<LocalCodexTransportFactory>;
|
|
202
196
|
cleanupPollMs?: number;
|
|
203
197
|
cleanupTimeoutMs?: number;
|
|
204
198
|
recoveryInitialMs?: number;
|
|
@@ -209,10 +203,8 @@ export type LocalCodexGatewayProviderOptions = {
|
|
|
209
203
|
now?: () => Date;
|
|
210
204
|
};
|
|
211
205
|
export declare class LocalCodexGatewayProvider implements GatewayProviderAdapter {
|
|
212
|
-
|
|
213
|
-
readonly
|
|
214
|
-
readonly protocolVersion: string;
|
|
215
|
-
private readonly factory;
|
|
206
|
+
private factory;
|
|
207
|
+
private readonly refreshFactory;
|
|
216
208
|
private readonly maxCallbacks;
|
|
217
209
|
private readonly maxRoutes;
|
|
218
210
|
private readonly maxReplyBytes;
|
|
@@ -222,31 +214,40 @@ export declare class LocalCodexGatewayProvider implements GatewayProviderAdapter
|
|
|
222
214
|
private readonly recoveryMaxMs;
|
|
223
215
|
private readonly now;
|
|
224
216
|
private readonly routes;
|
|
217
|
+
/** Exact public alias authority retained across internal route recovery. */
|
|
218
|
+
private readonly routeAliases;
|
|
225
219
|
private readonly routeCreations;
|
|
226
220
|
private readonly routeReleases;
|
|
227
221
|
private readonly routeRecoveryAttempts;
|
|
228
222
|
private readonly routeRecoveryTimers;
|
|
229
223
|
private readonly routeRecoveries;
|
|
230
224
|
private readonly routesRequiringRecovery;
|
|
225
|
+
private readonly trackedRoutes;
|
|
226
|
+
private retiredEndpointGeneration;
|
|
231
227
|
private readonly expectsReply;
|
|
232
|
-
private readonly compatibilityCertifyingRoutes;
|
|
233
|
-
private readonly compatibilityTurns;
|
|
234
228
|
private readonly callbackQueue;
|
|
235
229
|
private callbackScheduled;
|
|
236
230
|
private callbacks;
|
|
231
|
+
private endpointRefresh;
|
|
232
|
+
private endpointRefreshDelivery;
|
|
233
|
+
private endpointActivationRetry;
|
|
234
|
+
private endpointActivationRetryTimer;
|
|
235
|
+
private callbackDrainFrozen;
|
|
237
236
|
private compatibilityAttested;
|
|
237
|
+
private endpointUnavailable;
|
|
238
|
+
private pendingEndpointAttestation;
|
|
239
|
+
private pendingEndpointRefreshEvent;
|
|
238
240
|
private initialized;
|
|
239
241
|
private closing;
|
|
240
242
|
private closed;
|
|
241
243
|
constructor(options: LocalCodexGatewayProviderOptions);
|
|
244
|
+
get identity(): PrivateEndpointIdentity;
|
|
245
|
+
get protocol(): string;
|
|
246
|
+
get protocolVersion(): string;
|
|
242
247
|
compatibilitySurface(): CompatibilitySurfaceObservation;
|
|
243
248
|
acceptCompatibilityAttestation(attestation: CompatibilityAttestation): void;
|
|
244
249
|
runCompatibilityProbes(): Promise<readonly CompatibilityProbeResult[]>;
|
|
245
|
-
|
|
246
|
-
controllerStateRoot: string;
|
|
247
|
-
routeHandle?: string;
|
|
248
|
-
withTurn: boolean;
|
|
249
|
-
}>): Promise<CompatibilityCertification>;
|
|
250
|
+
private runCompatibilityProbesFor;
|
|
250
251
|
initialize(callbacks: GatewayAdapterCallbacks): Promise<GatewayAdapterStart>;
|
|
251
252
|
selectRoute(input: {
|
|
252
253
|
alias: string;
|
|
@@ -254,17 +255,10 @@ export declare class LocalCodexGatewayProvider implements GatewayProviderAdapter
|
|
|
254
255
|
}): Promise<{
|
|
255
256
|
routeHandle: string;
|
|
256
257
|
state: GatewayAdapterRouteState;
|
|
258
|
+
endpointRefresh?: GatewayAdapterEndpointRefresh;
|
|
257
259
|
}>;
|
|
258
260
|
observeRouteSuccessionBarrier(routeHandle: string): CodexRouteSuccessionBarrier;
|
|
259
|
-
dispatch(input:
|
|
260
|
-
binding: PrivateRouteBinding;
|
|
261
|
-
authorization: "selected_route" | "native_reply";
|
|
262
|
-
messageId: string;
|
|
263
|
-
text: string;
|
|
264
|
-
expectsReply: boolean;
|
|
265
|
-
deadlineAt: string;
|
|
266
|
-
steer?: true;
|
|
267
|
-
}): Promise<GatewayAdapterDispatchResult>;
|
|
261
|
+
dispatch(input: GatewayAdapterDispatchInput): Promise<GatewayAdapterDispatchResult>;
|
|
268
262
|
releaseRoute(routeHandle: string): Promise<void>;
|
|
269
263
|
private releaseRouteInternal;
|
|
270
264
|
close(): Promise<void>;
|
|
@@ -275,6 +269,19 @@ export declare class LocalCodexGatewayProvider implements GatewayProviderAdapter
|
|
|
275
269
|
private scheduleRouteRecovery;
|
|
276
270
|
private recoverRoute;
|
|
277
271
|
private cancelRouteRecovery;
|
|
272
|
+
private isEndpointGenerationChanged;
|
|
273
|
+
private pendingEndpointActivationClaims;
|
|
274
|
+
private refreshEndpoint;
|
|
275
|
+
private performEndpointRefresh;
|
|
276
|
+
private resolveEndpointRefreshCandidate;
|
|
277
|
+
private retireEndpointGeneration;
|
|
278
|
+
private reserveSelectorRefresh;
|
|
279
|
+
private emitSelectorRefreshFallback;
|
|
280
|
+
private publishEndpointRefresh;
|
|
281
|
+
private armEndpointActivationRetry;
|
|
282
|
+
private scheduleEndpointActivationRetry;
|
|
283
|
+
private clearEndpointActivationRetry;
|
|
284
|
+
private emitEndpointRefresh;
|
|
278
285
|
private onTurnResult;
|
|
279
286
|
private queueRouteObservation;
|
|
280
287
|
private enqueueCodexCallback;
|