agent-embassy 3.1.0 → 4.1.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 (118) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/CONTRIBUTING.md +92 -202
  3. package/README.md +179 -162
  4. package/SECURITY.md +191 -348
  5. package/dist/src/gateway/broker-check.d.ts +26 -0
  6. package/dist/src/gateway/broker-check.js +89 -0
  7. package/dist/src/gateway/broker-check.js.map +1 -0
  8. package/dist/src/gateway/broker-control.d.ts +72 -0
  9. package/dist/src/gateway/broker-control.js +164 -0
  10. package/dist/src/gateway/broker-control.js.map +1 -0
  11. package/dist/src/gateway/broker.d.ts +117 -0
  12. package/dist/src/gateway/broker.js +186 -0
  13. package/dist/src/gateway/broker.js.map +1 -0
  14. package/dist/src/gateway/claude-peer.d.ts +1 -124
  15. package/dist/src/gateway/claude-peer.js +61 -1052
  16. package/dist/src/gateway/claude-peer.js.map +1 -1
  17. package/dist/src/gateway/codex-stateless-transport.d.ts +0 -12
  18. package/dist/src/gateway/codex-stateless-transport.js +9 -142
  19. package/dist/src/gateway/codex-stateless-transport.js.map +1 -1
  20. package/dist/src/gateway/config.d.ts +2 -6
  21. package/dist/src/gateway/config.js +17 -27
  22. package/dist/src/gateway/config.js.map +1 -1
  23. package/dist/src/gateway/coordinator.d.ts +57 -0
  24. package/dist/src/gateway/coordinator.js +217 -0
  25. package/dist/src/gateway/coordinator.js.map +1 -0
  26. package/dist/src/gateway/core-cli.d.ts +14 -0
  27. package/dist/src/gateway/core-cli.js +293 -0
  28. package/dist/src/gateway/core-cli.js.map +1 -0
  29. package/dist/src/gateway/core-service-command.d.ts +16 -0
  30. package/dist/src/gateway/core-service-command.js +71 -0
  31. package/dist/src/gateway/core-service-command.js.map +1 -0
  32. package/dist/src/gateway/core-version.d.ts +1 -0
  33. package/dist/src/gateway/core-version.js +2 -0
  34. package/dist/src/gateway/core-version.js.map +1 -0
  35. package/dist/src/gateway/endpoint-directory.d.ts +33 -0
  36. package/dist/src/gateway/endpoint-directory.js +223 -0
  37. package/dist/src/gateway/endpoint-directory.js.map +1 -0
  38. package/dist/src/gateway/federation.d.ts +89 -0
  39. package/dist/src/gateway/federation.js +632 -0
  40. package/dist/src/gateway/federation.js.map +1 -0
  41. package/dist/src/gateway/ledger-codec.d.ts +3 -0
  42. package/dist/src/gateway/ledger-codec.js +159 -0
  43. package/dist/src/gateway/ledger-codec.js.map +1 -0
  44. package/dist/src/gateway/ledger.d.ts +138 -0
  45. package/dist/src/gateway/ledger.js +319 -0
  46. package/dist/src/gateway/ledger.js.map +1 -0
  47. package/dist/src/gateway/local-control.d.ts +23 -0
  48. package/dist/src/gateway/local-control.js +489 -0
  49. package/dist/src/gateway/local-control.js.map +1 -0
  50. package/dist/src/gateway/native-destinations.d.ts +34 -0
  51. package/dist/src/gateway/native-destinations.js +272 -0
  52. package/dist/src/gateway/native-destinations.js.map +1 -0
  53. package/dist/src/gateway/owned-state.d.ts +57 -0
  54. package/dist/src/gateway/owned-state.js +398 -0
  55. package/dist/src/gateway/owned-state.js.map +1 -0
  56. package/dist/src/gateway/provenance-envelope.d.ts +3 -3
  57. package/dist/src/gateway/provenance-envelope.js +3 -23
  58. package/dist/src/gateway/provenance-envelope.js.map +1 -1
  59. package/dist/src/gateway/runtime.d.ts +41 -0
  60. package/dist/src/gateway/runtime.js +175 -0
  61. package/dist/src/gateway/runtime.js.map +1 -0
  62. package/dist/src/gateway/tui.d.ts +67 -0
  63. package/dist/src/gateway/tui.js +516 -0
  64. package/dist/src/gateway/tui.js.map +1 -0
  65. package/docs/CONFIGURATION.md +178 -266
  66. package/docs/DELIVERY.md +133 -82
  67. package/docs/GATEWAY-ARCHITECTURE.md +281 -949
  68. package/package.json +5 -5
  69. package/skills/embassy-peer/SKILL.md +38 -196
  70. package/skills/embassy-peer/agents/openai.yaml +2 -2
  71. package/dist/src/gateway/claude-helper-protocol.d.ts +0 -117
  72. package/dist/src/gateway/claude-helper-protocol.js +0 -122
  73. package/dist/src/gateway/claude-helper-protocol.js.map +0 -1
  74. package/dist/src/gateway/claude-helper-supervisor.d.ts +0 -87
  75. package/dist/src/gateway/claude-helper-supervisor.js +0 -374
  76. package/dist/src/gateway/claude-helper-supervisor.js.map +0 -1
  77. package/dist/src/gateway/claude-helper.d.ts +0 -1
  78. package/dist/src/gateway/claude-helper.js +0 -252
  79. package/dist/src/gateway/claude-helper.js.map +0 -1
  80. package/dist/src/gateway/cli.d.ts +0 -56
  81. package/dist/src/gateway/cli.js +0 -1532
  82. package/dist/src/gateway/cli.js.map +0 -1
  83. package/dist/src/gateway/codex-socket-holder.d.ts +0 -26
  84. package/dist/src/gateway/codex-socket-holder.js +0 -76
  85. package/dist/src/gateway/codex-socket-holder.js.map +0 -1
  86. package/dist/src/gateway/control.d.ts +0 -279
  87. package/dist/src/gateway/control.js +0 -933
  88. package/dist/src/gateway/control.js.map +0 -1
  89. package/dist/src/gateway/peer-client.d.ts +0 -58
  90. package/dist/src/gateway/peer-client.js +0 -217
  91. package/dist/src/gateway/peer-client.js.map +0 -1
  92. package/dist/src/gateway/peer-mailbox.d.ts +0 -78
  93. package/dist/src/gateway/peer-mailbox.js +0 -168
  94. package/dist/src/gateway/peer-mailbox.js.map +0 -1
  95. package/dist/src/gateway/peer-protocol.d.ts +0 -110
  96. package/dist/src/gateway/peer-protocol.js +0 -79
  97. package/dist/src/gateway/peer-protocol.js.map +0 -1
  98. package/dist/src/gateway/peer-stdio.d.ts +0 -23
  99. package/dist/src/gateway/peer-stdio.js +0 -100
  100. package/dist/src/gateway/peer-stdio.js.map +0 -1
  101. package/dist/src/gateway/providers.d.ts +0 -164
  102. package/dist/src/gateway/providers.js +0 -975
  103. package/dist/src/gateway/providers.js.map +0 -1
  104. package/dist/src/gateway/server.d.ts +0 -46
  105. package/dist/src/gateway/server.js +0 -216
  106. package/dist/src/gateway/server.js.map +0 -1
  107. package/dist/src/gateway/service.d.ts +0 -371
  108. package/dist/src/gateway/service.js +0 -2335
  109. package/dist/src/gateway/service.js.map +0 -1
  110. package/dist/src/gateway/status-view.d.ts +0 -119
  111. package/dist/src/gateway/status-view.js +0 -484
  112. package/dist/src/gateway/status-view.js.map +0 -1
  113. package/dist/src/gateway/store.d.ts +0 -188
  114. package/dist/src/gateway/store.js +0 -2360
  115. package/dist/src/gateway/store.js.map +0 -1
  116. package/dist/src/gateway/types.d.ts +0 -541
  117. package/dist/src/gateway/types.js +0 -332
  118. package/dist/src/gateway/types.js.map +0 -1
@@ -1,252 +0,0 @@
1
- import { randomBytes } from "node:crypto";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { BridgeError } from "../errors.js";
5
- import { ClaudePeerAdapter } from "./claude-peer.js";
6
- import { composeProvenanceEnvelope } from "./provenance-envelope.js";
7
- import { assertClaudeNativeHelperIpcSize, CLAUDE_NATIVE_HELPER_MAX_REQUESTS, CLAUDE_NATIVE_HELPER_PREPARED_TTL_MS, CLAUDE_NATIVE_HELPER_PROTOCOL_VERSION, isClaudeNativeHelperParentMessage, } from "./claude-helper-protocol.js";
8
- const safe = (error) => error instanceof BridgeError &&
9
- /^[A-Z][A-Z0-9_]{0,95}$/.test(error.code) ? { code: error.code, recoverable: error.recoverable } :
10
- { code: "CLAUDE_NATIVE_HELPER_OPERATION_FAILED", recoverable: false };
11
- const ok = () => ({ ok: true });
12
- function send(value) {
13
- assertClaudeNativeHelperIpcSize(value);
14
- if (!process.send || !process.connected)
15
- return Promise.reject(new Error("CLAUDE_NATIVE_HELPER_PARENT_GONE"));
16
- return new Promise((resolve, reject) => process.send(value, undefined, {}, (error) => error === null ? resolve() : reject(error)));
17
- }
18
- export async function runClaudeNativeHelperProcess() {
19
- if (!process.send)
20
- return;
21
- let adapter, listener;
22
- let registration;
23
- let hostId;
24
- let maxPending = 0, preparation, admitted = 0, closing = false;
25
- const routes = new Map();
26
- let operations = Promise.resolve(), sends = Promise.resolve();
27
- const queue = (message) => {
28
- const operation = sends.then(() => send(message));
29
- sends = operation.catch(() => undefined);
30
- return operation;
31
- };
32
- const event = (value) => { void queue({ protocolVersion: CLAUDE_NATIVE_HELPER_PROTOCOL_VERSION, type: "event", value }).catch(shutdown); };
33
- const respond = (requestId, result) => queue({ protocolVersion: CLAUDE_NATIVE_HELPER_PROTOCOL_VERSION, type: "response", requestId, ok: true, result });
34
- const reject = (requestId, error) => queue({ protocolVersion: CLAUDE_NATIVE_HELPER_PROTOCOL_VERSION, type: "response", requestId, ok: false, error: safe(error) });
35
- const release = () => { const held = preparation; preparation = undefined; if (held) {
36
- clearTimeout(held.timer);
37
- held.prepared.cancel();
38
- } };
39
- const take = (id) => {
40
- const held = preparation;
41
- if (!held)
42
- throw new BridgeError("CLAUDE_NATIVE_PREPARATION_UNKNOWN", "The native preparation is absent or consumed.");
43
- if (held.id !== id)
44
- throw new BridgeError("CLAUDE_NATIVE_PREPARATION_MISMATCH", "The native preparation capability did not match.");
45
- preparation = undefined;
46
- clearTimeout(held.timer);
47
- return held.prepared;
48
- };
49
- const expireReceipt = async (receiptHandle, code) => {
50
- if (!receiptHandle || !listener)
51
- return;
52
- try {
53
- await listener.acknowledge(receiptHandle, "expired", { code });
54
- }
55
- catch {
56
- try {
57
- listener.releaseInboundReceipt(receiptHandle);
58
- }
59
- catch { /* detached */ }
60
- }
61
- };
62
- const inbound = async (message) => {
63
- const active = adapter, source = message.sourceTargetId, advertised = registration;
64
- if (!active || !listener || !advertised || !source || !message.sourceAlias || !message.replySupported) {
65
- await expireReceipt(message.receiptHandle, "CLAUDE_SOURCE_ROUTE_INVALID");
66
- return;
67
- }
68
- let alias;
69
- try {
70
- const discovery = await active.discover();
71
- const found = !discovery.truncated && discovery.peers.find((peer) => peer.targetId === source && (peer.kind === "interactive" || peer.kind === "bg") && peer.alias === message.sourceAlias);
72
- if (found && hostId)
73
- alias = `${found.alias}@${hostId}`;
74
- }
75
- catch { /* stale */ }
76
- if (!alias) {
77
- await expireReceipt(message.receiptHandle, "CLAUDE_SOURCE_ROUTE_STALE");
78
- return;
79
- }
80
- if (!routes.has(source) && routes.size >= maxPending) {
81
- await expireReceipt(message.receiptHandle, "CLAUDE_NATIVE_INGRESS_CAPACITY");
82
- return;
83
- }
84
- routes.set(source, alias);
85
- event({ event: "claude_message", value: { routeHandle: source, sourceAlias: alias,
86
- targetAlias: advertised.alias, text: message.content, ...(message.receiptHandle ? { receiptHandle: message.receiptHandle } : {}) } });
87
- };
88
- const initialize = async (message) => {
89
- if (adapter || listener || registration)
90
- throw new BridgeError("CLAUDE_NATIVE_HELPER_ALREADY_INITIALIZED", "The helper accepts one initialization.");
91
- const created = new ClaudePeerAdapter({ sessionsDir: message.runtime.sessionsDir, socketDir: message.runtime.socketDir,
92
- deliveryNotices: message.deliveryNotices, maxPendingReceipts: message.maxPendingMessages });
93
- let opened;
94
- try {
95
- opened = await created.listen({ onMessage: inbound,
96
- onProtocolNotice: (notice) => event({ event: "protocol_notice", value: { code: notice.code } }) });
97
- const suffix = `@${message.hostId}`;
98
- if (!message.registration.alias.endsWith(suffix))
99
- throw new BridgeError("INVALID_CODEX_PEER_ALIAS", "The helper alias targets another host.");
100
- adapter = created;
101
- listener = opened;
102
- registration = message.registration;
103
- hostId = message.hostId;
104
- maxPending = message.maxPendingMessages;
105
- await opened.advertise(message.registration.alias.slice(0, -suffix.length), message.registration.cwd);
106
- return { generation: opened.generation };
107
- }
108
- catch (error) {
109
- adapter = undefined;
110
- listener = undefined;
111
- registration = undefined;
112
- hostId = undefined;
113
- await opened?.close().catch(() => undefined);
114
- await created.close().catch(() => undefined);
115
- throw error;
116
- }
117
- };
118
- const prepare = async (command) => {
119
- if (preparation)
120
- throw new BridgeError("CLAUDE_NATIVE_PREPARATION_CAPACITY", "The helper already owns one preparation.", true);
121
- const active = adapter, opened = listener, advertised = registration;
122
- if (!active || !opened || !advertised || advertised.alias !== command.sourceAlias || advertised.sourceProvider !== command.sourceProvider)
123
- throw new BridgeError("CLAUDE_NATIVE_HELPER_NOT_INITIALIZED", "The exact native source advertisement is unavailable.", true);
124
- if (command.binding.hostId !== hostId)
125
- throw new BridgeError("CLAUDE_ROUTE_MISMATCH", "The selected Claude route targets another host.");
126
- const deadlineAt = Date.parse(command.deadlineAt);
127
- if (!Number.isFinite(deadlineAt) || deadlineAt <= Date.now())
128
- throw new BridgeError("CLAUDE_PEER_MESSAGE_EXPIRED", "The message expired before preparation.", true);
129
- if (command.authorization === "selected_route") {
130
- const discovery = await active.discover();
131
- if (discovery.truncated || !discovery.peers.some((peer) => peer.targetId === command.binding.routeHandle &&
132
- (peer.kind === "interactive" || peer.kind === "bg")))
133
- throw new BridgeError("CLAUDE_ROUTE_MISMATCH", "The selected Claude UUID is no longer live.", true);
134
- await active.assertTargetWorkspaceDisjoint(command.binding.routeHandle, command.stateRoot);
135
- }
136
- else if (routes.get(command.binding.routeHandle) !== command.targetAlias) {
137
- throw new BridgeError("CLAUDE_NATIVE_REPLY_STALE", "The native reply route is stale.");
138
- }
139
- const content = composeProvenanceEnvelope({ sourceProvider: command.sourceProvider, recipientProvider: "claude",
140
- sourceAlias: command.sourceAlias, targetAlias: command.targetAlias, conversationId: command.conversationId,
141
- body: command.text });
142
- const prepared = await active.prepareSend(command.binding.routeHandle, content, { deadlineAt, replyListener: opened });
143
- const id = `prep_${randomBytes(18).toString("base64url")}`;
144
- const timer = setTimeout(release, Math.max(1, Math.min(CLAUDE_NATIVE_HELPER_PREPARED_TTL_MS, deadlineAt - Date.now())));
145
- timer.unref();
146
- preparation = { id, prepared, timer };
147
- return { preparationId: id, frameBytes: prepared.frameBytes, sha256: prepared.sha256 };
148
- };
149
- const execute = async (command) => {
150
- if (command.method === "prepare_dispatch")
151
- return await prepare(command);
152
- if (command.method === "perform_dispatch") {
153
- const prepared = take(command.preparationId);
154
- const operation = prepared.perform();
155
- try {
156
- await operation;
157
- return { state: "delivered" };
158
- }
159
- catch (error) {
160
- return error instanceof BridgeError && error.recoverable
161
- ? { state: "failed", safeErrorCode: error.code === "CLAUDE_PEER_MESSAGE_EXPIRED" ? "MESSAGE_EXPIRED" : error.code }
162
- : { state: "ambiguous", safeErrorCode: error instanceof BridgeError ? error.code : "CLAUDE_DISPATCH_OUTCOME_AMBIGUOUS" };
163
- }
164
- }
165
- if (command.method === "cancel_dispatch") {
166
- take(command.preparationId).cancel();
167
- return ok();
168
- }
169
- if (!listener || !registration)
170
- throw new BridgeError("CLAUDE_NATIVE_HELPER_NOT_INITIALIZED", "The helper is not initialized.");
171
- if (command.method === "update_status") {
172
- if (command.alias === registration.alias)
173
- await listener.updateAdvertisedStatus(command.status);
174
- return ok();
175
- }
176
- if (command.method === "unadvertise") {
177
- if (command.alias === registration.alias) {
178
- await listener.unadvertise(command.alias.slice(0, command.alias.lastIndexOf("@")));
179
- registration = undefined;
180
- hostId = undefined;
181
- routes.clear();
182
- }
183
- return ok();
184
- }
185
- if (command.method === "update_inbound_status") {
186
- await listener.acknowledge(command.receiptHandle, command.status, command.diagnosticCode ? { code: command.diagnosticCode } : undefined);
187
- return ok();
188
- }
189
- if (command.method === "notify_inbound_progress") {
190
- await listener.notifyInboundProgress(command.receiptHandle, command.progress);
191
- return ok();
192
- }
193
- if (command.method === "release_inbound_receipt")
194
- return { released: listener.releaseInboundReceipt(command.receiptHandle) };
195
- release();
196
- await listener.close();
197
- return ok();
198
- };
199
- async function shutdown() {
200
- if (closing)
201
- return;
202
- closing = true;
203
- release();
204
- const active = adapter;
205
- adapter = undefined;
206
- listener = undefined;
207
- registration = undefined;
208
- hostId = undefined;
209
- await active?.close().catch(() => undefined);
210
- if (process.connected)
211
- process.disconnect();
212
- setImmediate(() => process.exit(0));
213
- }
214
- process.on("disconnect", shutdown);
215
- process.on("SIGTERM", shutdown);
216
- process.on("SIGINT", shutdown);
217
- process.on("message", (value) => {
218
- if (closing)
219
- return;
220
- try {
221
- assertClaudeNativeHelperIpcSize(value);
222
- if (!isClaudeNativeHelperParentMessage(value))
223
- throw new Error();
224
- }
225
- catch {
226
- void shutdown();
227
- return;
228
- }
229
- if (admitted >= CLAUDE_NATIVE_HELPER_MAX_REQUESTS) {
230
- void shutdown();
231
- return;
232
- }
233
- admitted += 1;
234
- operations = operations.then(async () => {
235
- try {
236
- const result = value.type === "initialize" ? await initialize(value) : await execute(value.command);
237
- await respond(value.requestId, result);
238
- if (value.type === "request" && value.command.method === "close")
239
- await shutdown();
240
- }
241
- catch (error) {
242
- await reject(value.requestId, error).catch(() => undefined);
243
- if (value.type === "initialize")
244
- await shutdown();
245
- }
246
- })
247
- .finally(() => { admitted -= 1; });
248
- });
249
- }
250
- if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url))
251
- void runClaudeNativeHelperProcess();
252
- //# sourceMappingURL=claude-helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-helper.js","sourceRoot":"","sources":["../../../src/gateway/claude-helper.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- #!/usr/bin/env node
2
- import { type GatewayControlMethod, type GatewayControlResponse, type SendGatewayControlRequestOptions } from "./control.js";
3
- import { type GatewayConfig } from "./config.js";
4
- import { type GatewayNodeInventory } from "./federation-nodes.js";
5
- import { type GatewayServerOptions } from "./server.js";
6
- import { runPeerStdio, type PeerStdioSession } from "./peer-stdio.js";
7
- import { type ProbeHostLease, type RunLaunchctl } from "./service-agent.js";
8
- export declare const EMBASSY_VERSION = "3.1.0";
9
- export declare const gatewayCliCommands: readonly ["serve", "service", "health", "status", "watch", "check", "delivery-status", "wait-delivery", "refresh", "register-codex", "unregister-codex", "send", "reply", "register-peer", "unregister-peer", "await", "peer-stdio", "retire"];
10
- export type GatewayCliCommand = (typeof gatewayCliCommands)[number];
11
- export declare const gatewayCliExitCodes: Readonly<{
12
- readonly ok: 0;
13
- readonly invalidInput: 2;
14
- readonly rejected: 3;
15
- readonly unavailable: 4;
16
- readonly ambiguous: 5;
17
- readonly failure: 6;
18
- }>;
19
- type Writable = {
20
- write(chunk: string, callback?: (error?: Error | null) => void): unknown;
21
- };
22
- type GatewayControlSender = <M extends GatewayControlMethod>(options: SendGatewayControlRequestOptions<M>) => Promise<GatewayControlResponse<M>>;
23
- type GatewayServerRunner = (options: GatewayServerOptions) => Promise<void>;
24
- type PeerStdioRunner = (options: Parameters<typeof runPeerStdio>[0]) => PeerStdioSession;
25
- export type GatewayCliDependencies = {
26
- env?: NodeJS.ProcessEnv;
27
- stdin?: AsyncIterable<unknown>;
28
- stdout?: Writable;
29
- stderr?: Writable;
30
- loadConfig?: (env: NodeJS.ProcessEnv, inventory: GatewayNodeInventory) => GatewayConfig;
31
- loadNodeInventory?: (stateDir: string) => Promise<GatewayNodeInventory>;
32
- sendRequest?: GatewayControlSender;
33
- runServer?: GatewayServerRunner;
34
- serverSignal?: AbortSignal;
35
- validateControlSocket?: (stateDir: string, socketPath: string) => Promise<void>;
36
- runPeerStdio?: PeerStdioRunner;
37
- now?: () => number;
38
- delay?: (milliseconds: number) => Promise<void>;
39
- runLaunchctl?: RunLaunchctl;
40
- serviceHomeDir?: () => string;
41
- probeHostLease?: ProbeHostLease;
42
- /** Aborts `watch`; production installs SIGINT/SIGTERM handlers instead. */
43
- watchSignal?: AbortSignal;
44
- /** Best-effort broker pid for the `status` header. */
45
- readControllerPid?: (stateDir: string) => Promise<number | undefined>;
46
- };
47
- export declare function validatePrivateGatewayControlSocket(stateDir: string, socketPath: string): Promise<void>;
48
- /**
49
- * The broker's pid, from the controller lock its store writes in the state
50
- * directory. Best effort and never throws: `status` prints with or without it,
51
- * and that file's path is already named in the CLI's own hints, so this
52
- * discloses nothing new.
53
- */
54
- export declare function readGatewayControllerPid(stateDir: string): Promise<number | undefined>;
55
- export declare function runGatewayCli(argv?: readonly string[], dependencies?: GatewayCliDependencies): Promise<number>;
56
- export {};