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.
Files changed (102) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/CONTRIBUTING.md +25 -7
  3. package/README.md +66 -13
  4. package/README.zh-CN.md +41 -13
  5. package/SECURITY.md +80 -42
  6. package/assets/live-dashboard/app.css +14 -5
  7. package/dist/src/gateway/claude-helper-protocol.d.ts +3 -0
  8. package/dist/src/gateway/claude-helper-protocol.js +15 -1
  9. package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
  10. package/dist/src/gateway/claude-helper-supervisor.d.ts +2 -0
  11. package/dist/src/gateway/claude-helper-supervisor.js +24 -1
  12. package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
  13. package/dist/src/gateway/claude-runtime.d.ts +0 -2
  14. package/dist/src/gateway/claude-runtime.js +6 -17
  15. package/dist/src/gateway/claude-runtime.js.map +1 -1
  16. package/dist/src/gateway/cli-copy.d.ts +1 -1
  17. package/dist/src/gateway/cli-copy.en.d.ts +4 -1
  18. package/dist/src/gateway/cli-copy.en.js +6 -3
  19. package/dist/src/gateway/cli-copy.en.js.map +1 -1
  20. package/dist/src/gateway/cli-copy.js +2 -0
  21. package/dist/src/gateway/cli-copy.js.map +1 -1
  22. package/dist/src/gateway/cli-copy.zh-CN.d.ts +4 -1
  23. package/dist/src/gateway/cli-copy.zh-CN.js +6 -3
  24. package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
  25. package/dist/src/gateway/cli.d.ts +2 -5
  26. package/dist/src/gateway/cli.js +49 -73
  27. package/dist/src/gateway/cli.js.map +1 -1
  28. package/dist/src/gateway/codex-app-server.d.ts +1 -7
  29. package/dist/src/gateway/codex-app-server.js +10 -53
  30. package/dist/src/gateway/codex-app-server.js.map +1 -1
  31. package/dist/src/gateway/codex-local-transport.d.ts +10 -3
  32. package/dist/src/gateway/codex-local-transport.js +25 -9
  33. package/dist/src/gateway/codex-local-transport.js.map +1 -1
  34. package/dist/src/gateway/compatibility.d.ts +0 -27
  35. package/dist/src/gateway/compatibility.js +1 -101
  36. package/dist/src/gateway/compatibility.js.map +1 -1
  37. package/dist/src/gateway/config.d.ts +0 -3
  38. package/dist/src/gateway/config.js +4 -12
  39. package/dist/src/gateway/config.js.map +1 -1
  40. package/dist/src/gateway/control.d.ts +11 -20
  41. package/dist/src/gateway/control.js +50 -47
  42. package/dist/src/gateway/control.js.map +1 -1
  43. package/dist/src/gateway/dashboard-copy.d.ts +1 -1
  44. package/dist/src/gateway/dashboard-copy.en.d.ts +12 -7
  45. package/dist/src/gateway/dashboard-copy.en.js +26 -21
  46. package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
  47. package/dist/src/gateway/dashboard-copy.js +12 -7
  48. package/dist/src/gateway/dashboard-copy.js.map +1 -1
  49. package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +12 -7
  50. package/dist/src/gateway/dashboard-copy.zh-CN.js +26 -21
  51. package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
  52. package/dist/src/gateway/dashboard-model.d.ts +7 -9
  53. package/dist/src/gateway/dashboard-model.js +47 -16
  54. package/dist/src/gateway/dashboard-model.js.map +1 -1
  55. package/dist/src/gateway/dashboard.js +10 -10
  56. package/dist/src/gateway/dashboard.js.map +1 -1
  57. package/dist/src/gateway/live-dashboard-app/app.js +65 -55
  58. package/dist/src/gateway/live-dashboard-command.d.ts +5 -1
  59. package/dist/src/gateway/live-dashboard-command.js +18 -6
  60. package/dist/src/gateway/live-dashboard-command.js.map +1 -1
  61. package/dist/src/gateway/live-dashboard-http.d.ts +3 -4
  62. package/dist/src/gateway/live-dashboard-http.js +32 -93
  63. package/dist/src/gateway/live-dashboard-http.js.map +1 -1
  64. package/dist/src/gateway/live-dashboard-protocol.d.ts +1 -5
  65. package/dist/src/gateway/live-dashboard-protocol.js +0 -42
  66. package/dist/src/gateway/live-dashboard-protocol.js.map +1 -1
  67. package/dist/src/gateway/live-dashboard-server.d.ts +2 -2
  68. package/dist/src/gateway/live-dashboard-server.js +18 -4
  69. package/dist/src/gateway/live-dashboard-server.js.map +1 -1
  70. package/dist/src/gateway/live-dashboard-stream.js +26 -25
  71. package/dist/src/gateway/live-dashboard-stream.js.map +1 -1
  72. package/dist/src/gateway/live-dashboard.d.ts +3 -6
  73. package/dist/src/gateway/live-dashboard.js +6 -42
  74. package/dist/src/gateway/live-dashboard.js.map +1 -1
  75. package/dist/src/gateway/provenance-envelope.d.ts +16 -0
  76. package/dist/src/gateway/provenance-envelope.js +80 -0
  77. package/dist/src/gateway/provenance-envelope.js.map +1 -0
  78. package/dist/src/gateway/providers.d.ts +40 -33
  79. package/dist/src/gateway/providers.js +683 -302
  80. package/dist/src/gateway/providers.js.map +1 -1
  81. package/dist/src/gateway/server.d.ts +2 -0
  82. package/dist/src/gateway/server.js +8 -5
  83. package/dist/src/gateway/server.js.map +1 -1
  84. package/dist/src/gateway/service.d.ts +103 -23
  85. package/dist/src/gateway/service.js +1346 -272
  86. package/dist/src/gateway/service.js.map +1 -1
  87. package/dist/src/gateway/store.d.ts +39 -3
  88. package/dist/src/gateway/store.js +604 -44
  89. package/dist/src/gateway/store.js.map +1 -1
  90. package/dist/src/gateway/types.d.ts +90 -9
  91. package/dist/src/gateway/types.js +6 -0
  92. package/dist/src/gateway/types.js.map +1 -1
  93. package/docs/GATEWAY-ARCHITECTURE.md +155 -56
  94. package/package.json +3 -2
  95. package/skills/embassy-peer/SKILL.md +36 -7
  96. package/dist/src/gateway/claude-compatibility-scratch.d.ts +0 -18
  97. package/dist/src/gateway/claude-compatibility-scratch.js +0 -158
  98. package/dist/src/gateway/claude-compatibility-scratch.js.map +0 -1
  99. package/dist/src/gateway/live-dashboard-bootstrap.d.ts +0 -36
  100. package/dist/src/gateway/live-dashboard-bootstrap.js +0 -176
  101. package/dist/src/gateway/live-dashboard-bootstrap.js.map +0 -1
  102. 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 ClaudeCompatibilityScratchFactory } from "./claude-compatibility-scratch.js";
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?: string;
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
- readonly identity: PrivateEndpointIdentity;
213
- readonly protocol: string;
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
- runCompatibilityCertification(input: Readonly<{
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;