agent-embassy 1.0.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.
Files changed (145) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/CONTRIBUTING.md +122 -0
  3. package/LICENSE +21 -0
  4. package/README.md +185 -0
  5. package/README.zh-CN.md +185 -0
  6. package/SECURITY.md +224 -0
  7. package/assets/live-dashboard/app.css +1610 -0
  8. package/assets/mark-seal.svg +7 -0
  9. package/assets/mark.svg +7 -0
  10. package/assets/social-preview.png +0 -0
  11. package/assets/vendor/react/LICENSE +21 -0
  12. package/assets/vendor/react/react-dom.production.min.js +267 -0
  13. package/assets/vendor/react/react.production.min.js +31 -0
  14. package/dist/src/errors.d.ts +5 -0
  15. package/dist/src/errors.js +11 -0
  16. package/dist/src/errors.js.map +1 -0
  17. package/dist/src/gateway/claude-compatibility-scratch.d.ts +18 -0
  18. package/dist/src/gateway/claude-compatibility-scratch.js +158 -0
  19. package/dist/src/gateway/claude-compatibility-scratch.js.map +1 -0
  20. package/dist/src/gateway/claude-helper-client.d.ts +43 -0
  21. package/dist/src/gateway/claude-helper-client.js +212 -0
  22. package/dist/src/gateway/claude-helper-client.js.map +1 -0
  23. package/dist/src/gateway/claude-helper-protocol.d.ts +172 -0
  24. package/dist/src/gateway/claude-helper-protocol.js +373 -0
  25. package/dist/src/gateway/claude-helper-protocol.js.map +1 -0
  26. package/dist/src/gateway/claude-helper-supervisor.d.ts +74 -0
  27. package/dist/src/gateway/claude-helper-supervisor.js +497 -0
  28. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -0
  29. package/dist/src/gateway/claude-helper.d.ts +1 -0
  30. package/dist/src/gateway/claude-helper.js +269 -0
  31. package/dist/src/gateway/claude-helper.js.map +1 -0
  32. package/dist/src/gateway/claude-peer.d.ts +273 -0
  33. package/dist/src/gateway/claude-peer.js +2359 -0
  34. package/dist/src/gateway/claude-peer.js.map +1 -0
  35. package/dist/src/gateway/claude-runtime.d.ts +40 -0
  36. package/dist/src/gateway/claude-runtime.js +302 -0
  37. package/dist/src/gateway/claude-runtime.js.map +1 -0
  38. package/dist/src/gateway/cli-copy.d.ts +8 -0
  39. package/dist/src/gateway/cli-copy.en.d.ts +13 -0
  40. package/dist/src/gateway/cli-copy.en.js +43 -0
  41. package/dist/src/gateway/cli-copy.en.js.map +1 -0
  42. package/dist/src/gateway/cli-copy.js +19 -0
  43. package/dist/src/gateway/cli-copy.js.map +1 -0
  44. package/dist/src/gateway/cli-copy.zh-CN.d.ts +13 -0
  45. package/dist/src/gateway/cli-copy.zh-CN.js +43 -0
  46. package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -0
  47. package/dist/src/gateway/cli.d.ts +44 -0
  48. package/dist/src/gateway/cli.js +969 -0
  49. package/dist/src/gateway/cli.js.map +1 -0
  50. package/dist/src/gateway/codex-app-server.d.ts +310 -0
  51. package/dist/src/gateway/codex-app-server.js +1746 -0
  52. package/dist/src/gateway/codex-app-server.js.map +1 -0
  53. package/dist/src/gateway/codex-local-transport.d.ts +81 -0
  54. package/dist/src/gateway/codex-local-transport.js +617 -0
  55. package/dist/src/gateway/codex-local-transport.js.map +1 -0
  56. package/dist/src/gateway/codex-registration-generation.d.ts +5 -0
  57. package/dist/src/gateway/codex-registration-generation.js +19 -0
  58. package/dist/src/gateway/codex-registration-generation.js.map +1 -0
  59. package/dist/src/gateway/codex-registration-succession.d.ts +209 -0
  60. package/dist/src/gateway/codex-registration-succession.js +588 -0
  61. package/dist/src/gateway/codex-registration-succession.js.map +1 -0
  62. package/dist/src/gateway/compatibility.d.ts +70 -0
  63. package/dist/src/gateway/compatibility.js +252 -0
  64. package/dist/src/gateway/compatibility.js.map +1 -0
  65. package/dist/src/gateway/config.d.ts +24 -0
  66. package/dist/src/gateway/config.js +130 -0
  67. package/dist/src/gateway/config.js.map +1 -0
  68. package/dist/src/gateway/control.d.ts +308 -0
  69. package/dist/src/gateway/control.js +1573 -0
  70. package/dist/src/gateway/control.js.map +1 -0
  71. package/dist/src/gateway/dashboard-copy.d.ts +7 -0
  72. package/dist/src/gateway/dashboard-copy.en.d.ts +506 -0
  73. package/dist/src/gateway/dashboard-copy.en.js +507 -0
  74. package/dist/src/gateway/dashboard-copy.en.js.map +1 -0
  75. package/dist/src/gateway/dashboard-copy.js +516 -0
  76. package/dist/src/gateway/dashboard-copy.js.map +1 -0
  77. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +506 -0
  78. package/dist/src/gateway/dashboard-copy.zh-CN.js +507 -0
  79. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -0
  80. package/dist/src/gateway/dashboard-model.d.ts +207 -0
  81. package/dist/src/gateway/dashboard-model.js +720 -0
  82. package/dist/src/gateway/dashboard-model.js.map +1 -0
  83. package/dist/src/gateway/dashboard.d.ts +26 -0
  84. package/dist/src/gateway/dashboard.js +941 -0
  85. package/dist/src/gateway/dashboard.js.map +1 -0
  86. package/dist/src/gateway/delivery-machine.d.ts +235 -0
  87. package/dist/src/gateway/delivery-machine.js +540 -0
  88. package/dist/src/gateway/delivery-machine.js.map +1 -0
  89. package/dist/src/gateway/instance-lease.d.ts +21 -0
  90. package/dist/src/gateway/instance-lease.js +549 -0
  91. package/dist/src/gateway/instance-lease.js.map +1 -0
  92. package/dist/src/gateway/live-dashboard-app/app.js +2914 -0
  93. package/dist/src/gateway/live-dashboard-assets.d.ts +10 -0
  94. package/dist/src/gateway/live-dashboard-assets.js +73 -0
  95. package/dist/src/gateway/live-dashboard-assets.js.map +1 -0
  96. package/dist/src/gateway/live-dashboard-bootstrap.d.ts +36 -0
  97. package/dist/src/gateway/live-dashboard-bootstrap.js +176 -0
  98. package/dist/src/gateway/live-dashboard-bootstrap.js.map +1 -0
  99. package/dist/src/gateway/live-dashboard-command.d.ts +54 -0
  100. package/dist/src/gateway/live-dashboard-command.js +324 -0
  101. package/dist/src/gateway/live-dashboard-command.js.map +1 -0
  102. package/dist/src/gateway/live-dashboard-http.d.ts +41 -0
  103. package/dist/src/gateway/live-dashboard-http.js +445 -0
  104. package/dist/src/gateway/live-dashboard-http.js.map +1 -0
  105. package/dist/src/gateway/live-dashboard-protocol.d.ts +38 -0
  106. package/dist/src/gateway/live-dashboard-protocol.js +156 -0
  107. package/dist/src/gateway/live-dashboard-protocol.js.map +1 -0
  108. package/dist/src/gateway/live-dashboard-server.d.ts +33 -0
  109. package/dist/src/gateway/live-dashboard-server.js +130 -0
  110. package/dist/src/gateway/live-dashboard-server.js.map +1 -0
  111. package/dist/src/gateway/live-dashboard-stream.d.ts +46 -0
  112. package/dist/src/gateway/live-dashboard-stream.js +233 -0
  113. package/dist/src/gateway/live-dashboard-stream.js.map +1 -0
  114. package/dist/src/gateway/live-dashboard.d.ts +31 -0
  115. package/dist/src/gateway/live-dashboard.js +190 -0
  116. package/dist/src/gateway/live-dashboard.js.map +1 -0
  117. package/dist/src/gateway/locale.d.ts +4 -0
  118. package/dist/src/gateway/locale.js +10 -0
  119. package/dist/src/gateway/locale.js.map +1 -0
  120. package/dist/src/gateway/progress-watch-machine.d.ts +97 -0
  121. package/dist/src/gateway/progress-watch-machine.js +172 -0
  122. package/dist/src/gateway/progress-watch-machine.js.map +1 -0
  123. package/dist/src/gateway/providers.d.ts +287 -0
  124. package/dist/src/gateway/providers.js +2451 -0
  125. package/dist/src/gateway/providers.js.map +1 -0
  126. package/dist/src/gateway/server.d.ts +57 -0
  127. package/dist/src/gateway/server.js +264 -0
  128. package/dist/src/gateway/server.js.map +1 -0
  129. package/dist/src/gateway/service.d.ts +449 -0
  130. package/dist/src/gateway/service.js +4831 -0
  131. package/dist/src/gateway/service.js.map +1 -0
  132. package/dist/src/gateway/store.d.ts +340 -0
  133. package/dist/src/gateway/store.js +4047 -0
  134. package/dist/src/gateway/store.js.map +1 -0
  135. package/dist/src/gateway/types.d.ts +514 -0
  136. package/dist/src/gateway/types.js +414 -0
  137. package/dist/src/gateway/types.js.map +1 -0
  138. package/dist/src/mutex.d.ts +4 -0
  139. package/dist/src/mutex.js +23 -0
  140. package/dist/src/mutex.js.map +1 -0
  141. package/docs/DESIGN.md +134 -0
  142. package/docs/GATEWAY-ARCHITECTURE.md +858 -0
  143. package/package.json +80 -0
  144. package/skills/embassy-peer/SKILL.md +198 -0
  145. package/skills/embassy-peer/agents/openai.yaml +4 -0
@@ -0,0 +1,449 @@
1
+ import type { GatewayConfig } from "./config.js";
2
+ import { type CompatibilityAttestation, type CompatibilityCertification, type CompatibilityCertificationReport, type CompatibilityCheckReport, type CompatibilityProbeResult, type CompatibilitySurfaceObservation } from "./compatibility.js";
3
+ import { type GatewayControlHandlers, type GatewaySnapshotObservation } from "./control.js";
4
+ import { publishGatewayDashboard } from "./dashboard.js";
5
+ import { GatewayStore } from "./store.js";
6
+ import { type CompatibilityState, type GatewayPublicSnapshot, type PrivateEndpointIdentity, type PrivateRouteBinding, type RouteState } from "./types.js";
7
+ export type GatewayAdapterRouteState = Extract<RouteState, "idle" | "busy" | "awaiting_approval">;
8
+ export type GatewayAdapterRouteObservationState = GatewayAdapterRouteState | "stale";
9
+ export type GatewayAdapterDiscovery = {
10
+ /** Canonical public alias. The service never lowercases or truncates it. */
11
+ alias: string;
12
+ /** Stable provider identity; for Claude this is its native session UUID. */
13
+ routeHandle: string;
14
+ kind: "interactive";
15
+ state: GatewayAdapterRouteState;
16
+ compatibility: "compatible";
17
+ };
18
+ /**
19
+ * One bounded discovery pass. `complete` is false when the provider stopped
20
+ * before it could inspect the full registry; such a pass may be displayed but
21
+ * cannot authorize selection restoration.
22
+ */
23
+ export type GatewayAdapterDiscoverySnapshot = {
24
+ peers: readonly GatewayAdapterDiscovery[];
25
+ complete: boolean;
26
+ };
27
+ export type GatewayAdapterDeliveryState = "transport_uncertain" | "transport_written" | "held" | "released" | "unconfirmed" | "denied" | "expired" | "ambiguous" | "completed" | "failed" | "cancelled";
28
+ export type GatewayAdapterDelivery = {
29
+ messageId: string;
30
+ state: GatewayAdapterDeliveryState;
31
+ safeErrorCode?: string;
32
+ /** Transient, bounded by the adapter. Never copied into normalized state. */
33
+ replyText?: string;
34
+ };
35
+ export type GatewayAdapterCallbacks = {
36
+ onDelivery: (event: GatewayAdapterDelivery) => void;
37
+ onRouteState: (event: {
38
+ endpoint: PrivateEndpointIdentity & {
39
+ routeHandle: string;
40
+ };
41
+ state: GatewayAdapterRouteObservationState;
42
+ safeErrorCode?: string;
43
+ }) => void;
44
+ /** A callback user frame has no conversation ID; correlation is service-owned. */
45
+ onClaudeReply: (event: {
46
+ endpoint: PrivateEndpointIdentity & {
47
+ routeHandle: string;
48
+ };
49
+ text: string;
50
+ }) => void;
51
+ onClaudeMessage?: (event: {
52
+ endpoint: PrivateEndpointIdentity & {
53
+ routeHandle: string;
54
+ };
55
+ sourceAlias: string;
56
+ targetAlias: string;
57
+ text: string;
58
+ receiptHandle?: string;
59
+ }) => void;
60
+ /** Bounded provider protocol diagnostics; never includes raw frame data. */
61
+ onProtocolNotice?: (event: {
62
+ code: string;
63
+ }) => void;
64
+ };
65
+ export type GatewayAdapterStart = {
66
+ health: "healthy" | "degraded";
67
+ compatibility: CompatibilityState;
68
+ safeErrorCode?: string;
69
+ };
70
+ export type GatewayAdapterDispatchResult = {
71
+ state: "pending";
72
+ }
73
+ /** Provider accepted the turn, but its final result/reply remains pending. */
74
+ | {
75
+ state: "accepted";
76
+ } | {
77
+ state: "deferred";
78
+ safeErrorCode?: string;
79
+ } | {
80
+ state: "delivered" | "failed" | "ambiguous" | "cancelled";
81
+ safeErrorCode?: string;
82
+ replyText?: string;
83
+ };
84
+ /**
85
+ * Narrow provider boundary. Production adapters wrap ClaudePeerAdapter or one
86
+ * exact CodexAppServerConnector; tests use in-memory fakes. Implementations
87
+ * must never retry a dispatch after a write may have occurred.
88
+ */
89
+ export interface GatewayProviderAdapter {
90
+ readonly identity: PrivateEndpointIdentity;
91
+ readonly protocol: string;
92
+ readonly protocolVersion: string;
93
+ /** Version identity is cheap; probes are invoked only on a cache miss. */
94
+ compatibilitySurface?(): CompatibilitySurfaceObservation;
95
+ runCompatibilityProbes?(): Promise<readonly CompatibilityProbeResult[]>;
96
+ acceptCompatibilityAttestation?(attestation: CompatibilityAttestation): void;
97
+ runCompatibilityCertification?(input: Readonly<{
98
+ controllerStateRoot: string;
99
+ routeHandle?: string;
100
+ withTurn: boolean;
101
+ }>): Promise<CompatibilityCertification>;
102
+ initialize(callbacks: GatewayAdapterCallbacks): Promise<GatewayAdapterStart>;
103
+ discoverClaudePeers?(): Promise<GatewayAdapterDiscoverySnapshot>;
104
+ selectRoute(input: {
105
+ alias: string;
106
+ routeHandle: string;
107
+ }): Promise<{
108
+ routeHandle: string;
109
+ state: GatewayAdapterRouteState;
110
+ }>;
111
+ /** Claude-only workspace guard. Codex registration has no workspace gate. */
112
+ assertWorkspaceDisjoint?(routeHandle: string, stateRoot: string): Promise<void>;
113
+ /** Converts a UDS connect-back capability to an exact already-observed handle. */
114
+ resolveReplyAddress?(address: string): Promise<{
115
+ routeHandle: string;
116
+ }>;
117
+ advertiseNativeCodexPeer?(input: {
118
+ alias: string;
119
+ cwd: string;
120
+ }): Promise<void>;
121
+ unadvertiseNativeCodexPeer?(alias: string): Promise<void>;
122
+ updateNativeCodexPeerStatus?(alias: string, status: "idle" | "busy" | "waiting"): Promise<void>;
123
+ updateNativeInboundStatus?(receiptHandle: string, status: "held" | "delivered" | "denied" | "expired", diagnosticCode?: string): Promise<void>;
124
+ notifyNativeInboundProgress?(receiptHandle: string, progress: {
125
+ kind: "stall";
126
+ reason: "ROUTE_BUSY" | "ROUTE_UNAVAILABLE" | "CODEX_ROUTE_STALE" | "AWAITING_EXTERNAL_APPROVAL";
127
+ queuedForMs: number;
128
+ }): Promise<void>;
129
+ releaseNativeInboundReceipt?(receiptHandle: string): boolean | Promise<boolean>;
130
+ /** Fence new native ingress while keeping receipt writes available. */
131
+ quiesceNativeInbound?(): Promise<void>;
132
+ /** Claude-only exact listener-generation succession controls. */
133
+ currentNativeCodexPeerGeneration?(alias: string): string;
134
+ prepareNativeCodexPeerGeneration?(input: {
135
+ alias: string;
136
+ cwd: string;
137
+ generation: string;
138
+ currentGeneration?: string;
139
+ }): Promise<void>;
140
+ quiesceNativeCodexPeerGeneration?(generation: string): Promise<void>;
141
+ observeNativeCodexSuccessionBarrier?(generation: string): Readonly<{
142
+ generation: string;
143
+ activeGenerationMatched: boolean;
144
+ ingressQuiesced: boolean;
145
+ monitorFrozen: boolean;
146
+ discoveryInFlight: boolean;
147
+ pendingOutboundReceipts: number;
148
+ pendingInboundReceipts: number;
149
+ rejectedInboundSettlements: number;
150
+ clean: boolean;
151
+ }> | Promise<Readonly<{
152
+ generation: string;
153
+ activeGenerationMatched: boolean;
154
+ ingressQuiesced: boolean;
155
+ monitorFrozen: boolean;
156
+ discoveryInFlight: boolean;
157
+ pendingOutboundReceipts: number;
158
+ pendingInboundReceipts: number;
159
+ rejectedInboundSettlements: number;
160
+ clean: boolean;
161
+ }>>;
162
+ publishPreparedNativeCodexPeer?(input: {
163
+ currentGeneration: string;
164
+ preparedGeneration: string;
165
+ }): Promise<"published" | "not_published" | "unknown">;
166
+ activatePreparedNativeCodexPeerGeneration?(generation: string): void | Promise<void>;
167
+ cleanupPreparedNativeCodexPeerGeneration?(generation: string): Promise<void>;
168
+ resumeNativeCodexPeerGeneration?(generation: string): void | Promise<void>;
169
+ rollbackPreparedNativeCodexPeerGeneration?(input: {
170
+ preparedGeneration: string;
171
+ resumeGeneration: string;
172
+ }): Promise<void>;
173
+ retireNativeCodexPeerGeneration?(input: {
174
+ retiredGeneration: string;
175
+ protectedActiveGeneration: string;
176
+ }): Promise<void>;
177
+ purgeNativeCodexPeerGenerationReplyCapabilities?(generation: string): number | Promise<number>;
178
+ /** Codex-only private provider-work barrier for one exact task route. */
179
+ observeRouteSuccessionBarrier?(routeHandle: string): Readonly<{
180
+ routePresent: boolean;
181
+ connection: string;
182
+ routeStatus: string;
183
+ queueDepth: number;
184
+ hasActiveTurn: boolean;
185
+ requestInFlight: boolean;
186
+ routeCreationInFlight: boolean;
187
+ routeReleaseInFlight: boolean;
188
+ pendingReplyCorrelations: number;
189
+ pendingCallbacks: number;
190
+ clean: boolean;
191
+ }>;
192
+ dispatch(input: {
193
+ sourceAlias: string;
194
+ binding: PrivateRouteBinding;
195
+ authorization: "selected_route" | "native_reply";
196
+ messageId: string;
197
+ text: string;
198
+ expectsReply: boolean;
199
+ deadlineAt: string;
200
+ steer?: true;
201
+ }): Promise<GatewayAdapterDispatchResult>;
202
+ releaseRoute?(routeHandle: string): Promise<void>;
203
+ close(): Promise<void>;
204
+ }
205
+ type GatewayServiceTimer = ReturnType<typeof setTimeout>;
206
+ type GatewayServiceTimers = {
207
+ setTimeout: (callback: () => void, delayMs: number) => GatewayServiceTimer;
208
+ clearTimeout: (timer: GatewayServiceTimer) => void;
209
+ };
210
+ export type GatewayServiceOptions = {
211
+ config: GatewayConfig;
212
+ adapters?: readonly GatewayProviderAdapter[];
213
+ store?: GatewayStore;
214
+ publishDashboard?: typeof publishGatewayDashboard;
215
+ now?: () => Date;
216
+ nativePeerCwd?: string;
217
+ timers?: GatewayServiceTimers;
218
+ /** Test seam for opaque listener generations; production remains random. */
219
+ successionGeneration?: () => string;
220
+ };
221
+ export declare class GatewayService {
222
+ readonly config: GatewayConfig;
223
+ readonly store: GatewayStore;
224
+ private readonly adapters;
225
+ private readonly publishDashboard;
226
+ private readonly now;
227
+ private readonly timers;
228
+ private readonly nativePeerCwd;
229
+ private readonly successionGeneration;
230
+ private readonly mutex;
231
+ private readonly routeBindings;
232
+ private readonly routeStates;
233
+ private readonly bindingAliases;
234
+ private readonly candidates;
235
+ private availablePeers;
236
+ private readonly conversations;
237
+ private readonly messageContexts;
238
+ private readonly providerTurnContinuations;
239
+ private readonly activeDispatchByTarget;
240
+ private readonly scheduledDispatchTargets;
241
+ private readonly dispatchRunnerTargets;
242
+ private readonly heldRedispatchTimers;
243
+ private readonly pendingClaudeReplies;
244
+ private readonly deliveryTrackers;
245
+ private readonly deliveryTokens;
246
+ private readonly runtimeAlerts;
247
+ private readonly activityEvents;
248
+ private activitySequence;
249
+ private readonly detachedReceiptWrites;
250
+ private readonly nativeIngressByConversation;
251
+ private readonly callbackQueue;
252
+ private callbackWorker;
253
+ private callbackScheduled;
254
+ private readonly callbackCapacity;
255
+ private readonly deliveryCallbackReserve;
256
+ private readonly deliveryTokenCapacity;
257
+ private lifecycleTimer;
258
+ private nextDashboardRefreshAt;
259
+ private nextProgressWatchAt;
260
+ private control;
261
+ /** Coarse controller mutation revision exposed by `health`. */
262
+ private revision;
263
+ /**
264
+ * Process-local semantic public-snapshot clock. The first observation
265
+ * establishes revision zero; a new GatewayService process resets it.
266
+ */
267
+ private snapshotRevision;
268
+ private snapshotFingerprint;
269
+ private running;
270
+ private closing;
271
+ private closeInFlight;
272
+ private acceptingCallbacks;
273
+ private dashboardHealthy;
274
+ /** Route-scoped fences; unrelated Codex registrations remain dispatchable. */
275
+ private readonly codexSuccessionDispatchFrozen;
276
+ private readonly codexSuccessionPoisoned;
277
+ private codexSuccessionState;
278
+ private pendingCodexSuccessionRecovery;
279
+ /**
280
+ * Exact active identity. It changes only through the journaled succession
281
+ * machine; ordinary unregister/register cannot repurpose one listener.
282
+ */
283
+ private readonly codexRegistrationLocks;
284
+ constructor(options: GatewayServiceOptions);
285
+ start(signal?: AbortSignal): Promise<void>;
286
+ close(): Promise<void>;
287
+ private closeOnce;
288
+ handlers(): GatewayControlHandlers;
289
+ snapshot(): Promise<GatewayPublicSnapshot>;
290
+ compatibilityCheck(): Promise<CompatibilityCheckReport>;
291
+ compatibilityCertify(params: Readonly<{
292
+ codexAlias?: string;
293
+ withTurn: boolean;
294
+ }>): Promise<CompatibilityCertificationReport>;
295
+ private compatibilityCheckLocked;
296
+ observeSnapshot(): Promise<GatewaySnapshotObservation>;
297
+ private fingerprintSnapshot;
298
+ private callbacksFor;
299
+ private enqueueCallback;
300
+ private enqueueCallbackWorkerOnly;
301
+ private drainCallbackQueueLocked;
302
+ private isTerminalAdapterDelivery;
303
+ /**
304
+ * Delivery evidence observed strictly before the deadline must reach the
305
+ * reducer before its deadline event, even when callback scheduling is late.
306
+ * Evidence observed at/after the cutoff cannot reopen the terminal machine.
307
+ */
308
+ private drainPreDeadlineDeliveryCallbacksLocked;
309
+ /**
310
+ * A provider may synchronously emit a terminal callback before its dispatch
311
+ * promise resolves to `pending`. Consume those already-retained callbacks
312
+ * before interpreting `pending` as successful provider acceptance, otherwise
313
+ * the sender can observe a false delivered result that wins the terminal
314
+ * race against the queued failure.
315
+ */
316
+ private drainDeliveryCallbacksForMessageLocked;
317
+ private adapter;
318
+ private assertClaudeWorkspaceDisjoint;
319
+ private contextTargetBinding;
320
+ private recoverCodexSuccessionAfterRestartLocked;
321
+ private completePendingCodexSuccessionRecoveryLocked;
322
+ private assertPendingCodexSuccessionRecoveryMatch;
323
+ private requireCurrentNativeCodexGeneration;
324
+ private nextCodexSuccessionGeneration;
325
+ private successionStoreIdentity;
326
+ private sameSuccessionStoreIdentity;
327
+ private reconcilePreparedCodexSuccessionAfterUnknownCommit;
328
+ private requireSuccessionMethod;
329
+ private succeedCodexRegistration;
330
+ private driveCodexSuccessionLocked;
331
+ private recoverCodexSuccessionLocked;
332
+ private successionNewRegistration;
333
+ private codexSuccessionFailurePhase;
334
+ private executeCodexSuccessionEffectLocked;
335
+ private successionOldRegistration;
336
+ private quiesceAndDrainPoisonedSuccessionLocked;
337
+ private codexRouteSuccessionQuiet;
338
+ private conversationTouchesAliases;
339
+ private successionServiceStateClean;
340
+ private purgeSuccessionTransientState;
341
+ private codexSuccessionPoisonBarrierCleanLocked;
342
+ private codexSuccessionBarrierCleanLocked;
343
+ private rescheduleIdleRoutesLocked;
344
+ private registerCodex;
345
+ private lockCodexRegistration;
346
+ private rollbackCodexRegistration;
347
+ private unregisterCodex;
348
+ private discoveryPublicFingerprint;
349
+ private refreshClaudeDiscovery;
350
+ private renameClaudeRoute;
351
+ private claudeCandidate;
352
+ private activatePersistedClaudeCandidate;
353
+ private selectClaudeCandidate;
354
+ private replaceClaudeSelectionCandidate;
355
+ private resolveSelectedClaudeDestination;
356
+ private inferCodexAlias;
357
+ private assertCodexPairCaller;
358
+ private pairRoutes;
359
+ private unpairRoutes;
360
+ private unpairClaudeRoute;
361
+ private selectClaude;
362
+ private selectAndPairClaude;
363
+ private rollbackFreshClaudeSelection;
364
+ private unselectClaude;
365
+ private selectedClaudeRoute;
366
+ private registerOrRebind;
367
+ private rememberBinding;
368
+ private forgetBinding;
369
+ private verifyCodex;
370
+ private verifyClaude;
371
+ private acceptedControlResult;
372
+ private reserveDeliveryToken;
373
+ private armDeliveryTracker;
374
+ private isTerminalDeliveryState;
375
+ private settlementDeliveryState;
376
+ private pruneDeliveryTrackers;
377
+ private addRuntimeAlert;
378
+ private releaseNativeReceiptLocked;
379
+ /**
380
+ * Native `held` is progress, not terminal delivery or approval. Emit it
381
+ * only after this exact message is known to be waiting, or after its prompt
382
+ * dispatch threshold elapses. A clean pre-write may retry; an ambiguous
383
+ * write is never replayed, and neither path consumes the terminal receipt.
384
+ */
385
+ private publishNativeHeldLocked;
386
+ private nativeReceiptNotificationFor;
387
+ private sendNativeReceiptLocked;
388
+ private deliveryCorrelation;
389
+ private eventTime;
390
+ private normalizeDeliverySafeCode;
391
+ private planRouteInFlightSettlementsLocked;
392
+ private planRoutesInFlightSettlementsLocked;
393
+ private planPairInFlightSettlementsLocked;
394
+ private purgePairCapabilitiesLocked;
395
+ private settleDeliveryStoreLocked;
396
+ private publishStallNoticeLocked;
397
+ private applyDeliveryEffectsLocked;
398
+ private advanceDeliveryLocked;
399
+ private applyTerminalSettlementLocked;
400
+ private takeMessageContextLocked;
401
+ /**
402
+ * Codex App Server acceptance is a terminal delivery boundary for the
403
+ * original message body, but not for its later model reply. Settle the
404
+ * durable ledger/body now and retain only bounded in-memory reply
405
+ * correlation until completion or the original deadline.
406
+ */
407
+ private acceptProviderDeliveryLocked;
408
+ private stallReasonFor;
409
+ private refreshNextProgressWatchWakeLocked;
410
+ private processProgressWatchesLocked;
411
+ private processLifecycleLocked;
412
+ private scheduleLifecycleWakeLocked;
413
+ private deliveryStatus;
414
+ private acceptToClaude;
415
+ private acceptToCodex;
416
+ private acceptReply;
417
+ private enqueue;
418
+ private enqueueNativeReply;
419
+ /**
420
+ * A provider reply observed before route teardown remains valid evidence
421
+ * even when the same atomic mutation removes its selected Claude route.
422
+ * Re-enter that already-observed reply through the existing transient
423
+ * native-ingress boundary; this preserves the exact connector generation
424
+ * without recreating route authority or accepting a new unsolicited send.
425
+ */
426
+ private enqueueObservedClaudeReplyAfterRouteTeardownLocked;
427
+ private pruneTransient;
428
+ private awaitDispatchWithNativeHeldLocked;
429
+ private dispatchOne;
430
+ private scheduleDispatch;
431
+ private scheduleHeldRedispatch;
432
+ private onDelivery;
433
+ private finishDelivery;
434
+ private finishDeliveredReplyLocked;
435
+ private finishProviderTurnContinuationLocked;
436
+ private onClaudeReply;
437
+ private onClaudeMessage;
438
+ private releasePendingClaude;
439
+ private onRouteState;
440
+ private setNativeCodexStatus;
441
+ private rejectDetachedNativeReceipt;
442
+ private drainDetachedReceiptWritesLocked;
443
+ private settleDetachedNativeReceipt;
444
+ private exclusiveDecision;
445
+ private changed;
446
+ private publicSnapshotLocked;
447
+ private publish;
448
+ }
449
+ export {};