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,308 @@
1
+ import { type CompatibilityCertificationReport, type CompatibilityCheckReport } from "./compatibility.js";
2
+ import type { GatewayPublicSnapshot } from "./types.js";
3
+ export declare const GATEWAY_CONTROL_PROTOCOL_VERSION: 1;
4
+ export declare const GATEWAY_CONTROL_MAX_FRAME_BYTES: number;
5
+ export declare const GATEWAY_CONTROL_MAX_RESPONSE_BYTES: number;
6
+ export declare const GATEWAY_CONTROL_MAX_MESSAGE_BYTES: number;
7
+ export declare const GATEWAY_CONTROL_DEFAULT_TIMEOUT_MS = 3000;
8
+ export declare const GATEWAY_CONTROL_MAX_CONNECTIONS = 32;
9
+ export declare const gatewayControlMethods: readonly ["health", "register_codex", "unregister_codex", "select_claude", "unselect_claude", "pair", "unpair", "list_snapshot", "observe_snapshot", "compat_check", "compat_certify", "delivery_status", "untrack", "send_to_claude", "send_to_codex", "reply", "refresh_dashboard"];
10
+ export type GatewayControlMethod = (typeof gatewayControlMethods)[number];
11
+ export type GatewayBusyPolicy = "queue";
12
+ export type RegisterCodexParams = {
13
+ alias: string;
14
+ threadId: string;
15
+ hostId?: string;
16
+ busyPolicy?: GatewayBusyPolicy;
17
+ succeedsAlias?: string;
18
+ };
19
+ export type ValidatedRegisterCodexParams = {
20
+ alias: string;
21
+ threadId: string;
22
+ hostId: string;
23
+ busyPolicy: GatewayBusyPolicy;
24
+ succeedsAlias?: string;
25
+ };
26
+ export type UnregisterCodexParams = {
27
+ alias: string;
28
+ threadId: string;
29
+ };
30
+ export type SelectClaudeParams = {
31
+ /** Latest name@host or native Claude session UUID. */
32
+ alias: string;
33
+ /** Optional inherited Codex task identity used for fail-closed inference. */
34
+ codexThreadId?: string;
35
+ };
36
+ export type PairParams = {
37
+ claudeAlias: string;
38
+ codexAlias: string;
39
+ /** Optional task attestation: when supplied it must match the alias's live registered thread exactly; when omitted, pairing binds to the alias's live registered endpoint without thread attestation. */
40
+ codexThreadId?: string;
41
+ };
42
+ export type SendToClaudeParams = {
43
+ fromAlias: string;
44
+ threadId: string;
45
+ /** Latest name@host or native Claude session UUID. */
46
+ toAlias: string;
47
+ text: string;
48
+ expectsReply?: boolean;
49
+ trackIdleMinutes?: number;
50
+ };
51
+ export type ValidatedSendToClaudeParams = {
52
+ fromAlias: string;
53
+ threadId: string;
54
+ toAlias: string;
55
+ text: string;
56
+ expectsReply: boolean;
57
+ trackIdleMinutes?: number;
58
+ };
59
+ export type SendToCodexParams = {
60
+ fromAlias: string;
61
+ toAlias: string;
62
+ text: string;
63
+ replyAddress?: string;
64
+ expectsReply?: boolean;
65
+ trackIdleMinutes?: number;
66
+ };
67
+ export type ValidatedSendToCodexParams = {
68
+ fromAlias: string;
69
+ toAlias: string;
70
+ text: string;
71
+ replyAddress?: string;
72
+ expectsReply: boolean;
73
+ trackIdleMinutes?: number;
74
+ };
75
+ export type GatewayReplyCaller = {
76
+ kind: "codex";
77
+ alias: string;
78
+ threadId: string;
79
+ } | {
80
+ kind: "claude";
81
+ alias: string;
82
+ replyAddress?: string;
83
+ };
84
+ export type ValidatedGatewayReplyCaller = GatewayReplyCaller;
85
+ export type ReplyParams = {
86
+ conversationId: string;
87
+ text: string;
88
+ caller: GatewayReplyCaller;
89
+ trackIdleMinutes?: number;
90
+ };
91
+ export type UntrackParams = {
92
+ conversationId: string;
93
+ };
94
+ export type DeliveryStatusParams = {
95
+ token: string;
96
+ };
97
+ export type GatewayControlRequest = {
98
+ protocolVersion: 1;
99
+ method: "health";
100
+ params: Record<string, never>;
101
+ } | {
102
+ protocolVersion: 1;
103
+ method: "register_codex";
104
+ params: RegisterCodexParams;
105
+ } | {
106
+ protocolVersion: 1;
107
+ method: "unregister_codex";
108
+ params: UnregisterCodexParams;
109
+ } | {
110
+ protocolVersion: 1;
111
+ method: "select_claude";
112
+ params: SelectClaudeParams;
113
+ } | {
114
+ protocolVersion: 1;
115
+ method: "unselect_claude";
116
+ params: SelectClaudeParams;
117
+ } | {
118
+ protocolVersion: 1;
119
+ method: "pair";
120
+ params: PairParams;
121
+ } | {
122
+ protocolVersion: 1;
123
+ method: "unpair";
124
+ params: PairParams;
125
+ } | {
126
+ protocolVersion: 1;
127
+ method: "list_snapshot";
128
+ params: Record<string, never>;
129
+ } | {
130
+ protocolVersion: 1;
131
+ method: "observe_snapshot";
132
+ params: Record<string, never>;
133
+ } | {
134
+ protocolVersion: 1;
135
+ method: "compat_check";
136
+ params: Record<string, never>;
137
+ } | {
138
+ protocolVersion: 1;
139
+ method: "compat_certify";
140
+ params: {
141
+ codexAlias?: string;
142
+ withTurn: boolean;
143
+ };
144
+ } | {
145
+ protocolVersion: 1;
146
+ method: "delivery_status";
147
+ params: DeliveryStatusParams;
148
+ } | {
149
+ protocolVersion: 1;
150
+ method: "untrack";
151
+ params: UntrackParams;
152
+ } | {
153
+ protocolVersion: 1;
154
+ method: "send_to_claude";
155
+ params: SendToClaudeParams;
156
+ } | {
157
+ protocolVersion: 1;
158
+ method: "send_to_codex";
159
+ params: SendToCodexParams;
160
+ } | {
161
+ protocolVersion: 1;
162
+ method: "reply";
163
+ params: ReplyParams;
164
+ } | {
165
+ protocolVersion: 1;
166
+ method: "refresh_dashboard";
167
+ params: Record<string, never>;
168
+ };
169
+ export type GatewayDecisionCode = "ok" | "not_found" | "conflict" | "route_mismatch" | "busy" | "unavailable" | "rejected";
170
+ export type GatewayDecision = {
171
+ accepted: true;
172
+ code: "ok";
173
+ } | {
174
+ accepted: false;
175
+ code: Exclude<GatewayDecisionCode, "ok">;
176
+ };
177
+ export type GatewaySendResult = {
178
+ accepted: true;
179
+ code: "ok";
180
+ conversationId: string;
181
+ deliveryToken: string;
182
+ } | {
183
+ accepted: false;
184
+ code: Exclude<GatewayDecisionCode, "ok">;
185
+ };
186
+ export type GatewayHealthResult = {
187
+ status: "ok" | "degraded";
188
+ /** Coarse controller activity clock; not a semantic snapshot revision. */
189
+ revision: number;
190
+ };
191
+ export type GatewayRefreshResult = GatewayDecision & {
192
+ revision: number;
193
+ };
194
+ export type GatewayDeliveryStatusState = "queued" | "stalled" | "delivered" | "unconfirmed" | "expired" | "failed" | "ambiguous" | "cancelled";
195
+ export type GatewayDeliveryStatusResult = {
196
+ found: false;
197
+ } | {
198
+ found: true;
199
+ state: GatewayDeliveryStatusState;
200
+ terminal: boolean;
201
+ updatedAt: string;
202
+ deadlineAt: string;
203
+ pendingForMs?: number;
204
+ safeErrorCode?: string;
205
+ };
206
+ export type GatewaySnapshot = GatewayPublicSnapshot;
207
+ /**
208
+ * One atomic, read-only public observation. `snapshotRevision` is distinct
209
+ * from the coarse controller revision returned by `health`: it resets with
210
+ * the gateway process and changes only when public snapshot semantics change.
211
+ */
212
+ export type GatewaySnapshotObservation = {
213
+ snapshotRevision: number;
214
+ snapshot: GatewaySnapshot;
215
+ };
216
+ type ResultByMethod = {
217
+ health: GatewayHealthResult;
218
+ register_codex: GatewayDecision;
219
+ unregister_codex: GatewayDecision;
220
+ select_claude: GatewayDecision;
221
+ unselect_claude: GatewayDecision;
222
+ pair: GatewayDecision;
223
+ unpair: GatewayDecision;
224
+ list_snapshot: GatewaySnapshot;
225
+ observe_snapshot: GatewaySnapshotObservation;
226
+ compat_check: CompatibilityCheckReport;
227
+ compat_certify: CompatibilityCertificationReport;
228
+ delivery_status: GatewayDeliveryStatusResult;
229
+ untrack: GatewayDecision;
230
+ send_to_claude: GatewaySendResult;
231
+ send_to_codex: GatewaySendResult;
232
+ reply: GatewaySendResult;
233
+ refresh_dashboard: GatewayRefreshResult;
234
+ };
235
+ type MaybePromise<T> = T | Promise<T>;
236
+ export type GatewayControlHandlers = {
237
+ health: () => MaybePromise<GatewayHealthResult>;
238
+ registerCodex: (params: Readonly<ValidatedRegisterCodexParams>) => MaybePromise<GatewayDecision>;
239
+ unregisterCodex: (params: Readonly<UnregisterCodexParams>) => MaybePromise<GatewayDecision>;
240
+ selectClaude: (params: Readonly<SelectClaudeParams>) => MaybePromise<GatewayDecision>;
241
+ unselectClaude: (params: Readonly<SelectClaudeParams>) => MaybePromise<GatewayDecision>;
242
+ pair: (params: Readonly<PairParams>) => MaybePromise<GatewayDecision>;
243
+ unpair: (params: Readonly<PairParams>) => MaybePromise<GatewayDecision>;
244
+ listSnapshot: () => MaybePromise<GatewaySnapshot>;
245
+ observeSnapshot: () => MaybePromise<GatewaySnapshotObservation>;
246
+ compatibilityCheck: () => MaybePromise<CompatibilityCheckReport>;
247
+ compatibilityCertify: (params: Readonly<{
248
+ codexAlias?: string;
249
+ withTurn: boolean;
250
+ }>) => MaybePromise<CompatibilityCertificationReport>;
251
+ deliveryStatus: (params: Readonly<DeliveryStatusParams>) => MaybePromise<GatewayDeliveryStatusResult>;
252
+ untrack: (params: Readonly<UntrackParams>) => MaybePromise<GatewayDecision>;
253
+ sendToClaude: (params: Readonly<ValidatedSendToClaudeParams>) => MaybePromise<GatewaySendResult>;
254
+ sendToCodex: (params: Readonly<ValidatedSendToCodexParams>) => MaybePromise<GatewaySendResult>;
255
+ reply: (params: Readonly<ReplyParams>) => MaybePromise<GatewaySendResult>;
256
+ refreshDashboard: () => MaybePromise<GatewayRefreshResult>;
257
+ };
258
+ export type GatewayWireErrorCode = "INVALID_JSON" | "FRAME_TOO_LARGE" | "INVALID_REQUEST" | "UNSUPPORTED_VERSION" | "UNKNOWN_METHOD" | "MULTIPLE_FRAMES" | "SERVER_BUSY" | "REQUEST_TIMEOUT" | "HANDLER_FAILURE" | "INVALID_HANDLER_RESPONSE" | "RESPONSE_TOO_LARGE";
259
+ export type GatewayControlErrorResponse = {
260
+ protocolVersion: 1;
261
+ ok: false;
262
+ error: {
263
+ code: GatewayWireErrorCode;
264
+ message: string;
265
+ };
266
+ };
267
+ export type GatewayControlSuccessResponse<M extends GatewayControlMethod = GatewayControlMethod> = {
268
+ protocolVersion: 1;
269
+ ok: true;
270
+ result: ResultByMethod[M];
271
+ };
272
+ export type GatewayControlResponse<M extends GatewayControlMethod = GatewayControlMethod> = GatewayControlSuccessResponse<M> | GatewayControlErrorResponse;
273
+ export declare class GatewayControlTransportError extends Error {
274
+ readonly code: string;
275
+ readonly ambiguous: boolean;
276
+ readonly recoverable: boolean;
277
+ constructor(code: string, message: string, ambiguous?: boolean);
278
+ }
279
+ export type GatewayControlServer = {
280
+ readonly socketPath: string;
281
+ readonly closed: boolean;
282
+ close: () => Promise<void>;
283
+ };
284
+ export type StartGatewayControlServerOptions = {
285
+ stateDir: string;
286
+ socketPath: string;
287
+ handlers: GatewayControlHandlers;
288
+ requestTimeoutMs?: number;
289
+ };
290
+ export declare function createGatewayConversationId(): string;
291
+ export declare function isGatewayAlias(value: string): boolean;
292
+ export declare function isClaudeSessionSelector(value: string): boolean;
293
+ export declare function isGatewayHostId(value: string): boolean;
294
+ export declare function isGatewayConversationId(value: string): boolean;
295
+ export declare function isGatewayDeliveryToken(value: string): boolean;
296
+ export declare function isGatewayReplyAddress(value: string): boolean;
297
+ export declare function isGatewaySnapshot(value: unknown): value is GatewaySnapshot;
298
+ export declare function startGatewayControlServer(options: StartGatewayControlServerOptions): Promise<GatewayControlServer>;
299
+ export type SendGatewayControlRequestOptions<M extends GatewayControlMethod> = {
300
+ socketPath: string;
301
+ request: Extract<GatewayControlRequest, {
302
+ method: M;
303
+ }>;
304
+ timeoutMs?: number;
305
+ maxResponseBytes?: number;
306
+ };
307
+ export declare function sendGatewayControlRequest<M extends GatewayControlMethod>(options: SendGatewayControlRequestOptions<M>): Promise<GatewayControlResponse<M>>;
308
+ export {};