agent-embassy 3.0.0 → 4.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.
- package/CHANGELOG.md +42 -0
- package/CONTRIBUTING.md +92 -200
- package/README.md +159 -138
- package/SECURITY.md +191 -335
- package/dist/src/gateway/broker-check.d.ts +26 -0
- package/dist/src/gateway/broker-check.js +89 -0
- package/dist/src/gateway/broker-check.js.map +1 -0
- package/dist/src/gateway/broker-control.d.ts +72 -0
- package/dist/src/gateway/broker-control.js +164 -0
- package/dist/src/gateway/broker-control.js.map +1 -0
- package/dist/src/gateway/broker.d.ts +117 -0
- package/dist/src/gateway/broker.js +186 -0
- package/dist/src/gateway/broker.js.map +1 -0
- package/dist/src/gateway/claude-peer.d.ts +1 -124
- package/dist/src/gateway/claude-peer.js +62 -1053
- package/dist/src/gateway/claude-peer.js.map +1 -1
- package/dist/src/gateway/codex-stateless-transport.d.ts +0 -12
- package/dist/src/gateway/codex-stateless-transport.js +8 -142
- package/dist/src/gateway/codex-stateless-transport.js.map +1 -1
- package/dist/src/gateway/config.d.ts +2 -6
- package/dist/src/gateway/config.js +17 -27
- package/dist/src/gateway/config.js.map +1 -1
- package/dist/src/gateway/coordinator.d.ts +57 -0
- package/dist/src/gateway/coordinator.js +217 -0
- package/dist/src/gateway/coordinator.js.map +1 -0
- package/dist/src/gateway/core-cli.d.ts +15 -0
- package/dist/src/gateway/core-cli.js +282 -0
- package/dist/src/gateway/core-cli.js.map +1 -0
- package/dist/src/gateway/core-service-command.d.ts +16 -0
- package/dist/src/gateway/core-service-command.js +71 -0
- package/dist/src/gateway/core-service-command.js.map +1 -0
- package/dist/src/gateway/endpoint-directory.d.ts +33 -0
- package/dist/src/gateway/endpoint-directory.js +223 -0
- package/dist/src/gateway/endpoint-directory.js.map +1 -0
- package/dist/src/gateway/federation.d.ts +89 -0
- package/dist/src/gateway/federation.js +632 -0
- package/dist/src/gateway/federation.js.map +1 -0
- package/dist/src/gateway/ledger-codec.d.ts +3 -0
- package/dist/src/gateway/ledger-codec.js +159 -0
- package/dist/src/gateway/ledger-codec.js.map +1 -0
- package/dist/src/gateway/ledger.d.ts +138 -0
- package/dist/src/gateway/ledger.js +319 -0
- package/dist/src/gateway/ledger.js.map +1 -0
- package/dist/src/gateway/local-control.d.ts +23 -0
- package/dist/src/gateway/local-control.js +489 -0
- package/dist/src/gateway/local-control.js.map +1 -0
- package/dist/src/gateway/native-destinations.d.ts +34 -0
- package/dist/src/gateway/native-destinations.js +272 -0
- package/dist/src/gateway/native-destinations.js.map +1 -0
- package/dist/src/gateway/owned-state.d.ts +57 -0
- package/dist/src/gateway/owned-state.js +398 -0
- package/dist/src/gateway/owned-state.js.map +1 -0
- package/dist/src/gateway/provenance-envelope.d.ts +3 -3
- package/dist/src/gateway/provenance-envelope.js +3 -23
- package/dist/src/gateway/provenance-envelope.js.map +1 -1
- package/dist/src/gateway/runtime.d.ts +41 -0
- package/dist/src/gateway/runtime.js +175 -0
- package/dist/src/gateway/runtime.js.map +1 -0
- package/docs/CONFIGURATION.md +178 -266
- package/docs/DELIVERY.md +133 -82
- package/docs/GATEWAY-ARCHITECTURE.md +276 -943
- package/package.json +5 -5
- package/skills/embassy-peer/SKILL.md +38 -194
- package/skills/embassy-peer/agents/openai.yaml +2 -2
- package/dist/src/gateway/claude-helper-client.d.ts +0 -2
- package/dist/src/gateway/claude-helper-client.js +0 -2
- package/dist/src/gateway/claude-helper-client.js.map +0 -1
- package/dist/src/gateway/claude-helper-protocol.d.ts +0 -117
- package/dist/src/gateway/claude-helper-protocol.js +0 -122
- package/dist/src/gateway/claude-helper-protocol.js.map +0 -1
- package/dist/src/gateway/claude-helper-supervisor.d.ts +0 -87
- package/dist/src/gateway/claude-helper-supervisor.js +0 -347
- package/dist/src/gateway/claude-helper-supervisor.js.map +0 -1
- package/dist/src/gateway/claude-helper.d.ts +0 -1
- package/dist/src/gateway/claude-helper.js +0 -252
- package/dist/src/gateway/claude-helper.js.map +0 -1
- package/dist/src/gateway/cli.d.ts +0 -57
- package/dist/src/gateway/cli.js +0 -1503
- package/dist/src/gateway/cli.js.map +0 -1
- package/dist/src/gateway/codex-socket-holder.d.ts +0 -26
- package/dist/src/gateway/codex-socket-holder.js +0 -76
- package/dist/src/gateway/codex-socket-holder.js.map +0 -1
- package/dist/src/gateway/control.d.ts +0 -261
- package/dist/src/gateway/control.js +0 -903
- package/dist/src/gateway/control.js.map +0 -1
- package/dist/src/gateway/peer-client.d.ts +0 -58
- package/dist/src/gateway/peer-client.js +0 -217
- package/dist/src/gateway/peer-client.js.map +0 -1
- package/dist/src/gateway/peer-mailbox.d.ts +0 -78
- package/dist/src/gateway/peer-mailbox.js +0 -168
- package/dist/src/gateway/peer-mailbox.js.map +0 -1
- package/dist/src/gateway/peer-protocol.d.ts +0 -105
- package/dist/src/gateway/peer-protocol.js +0 -70
- package/dist/src/gateway/peer-protocol.js.map +0 -1
- package/dist/src/gateway/peer-stdio.d.ts +0 -23
- package/dist/src/gateway/peer-stdio.js +0 -100
- package/dist/src/gateway/peer-stdio.js.map +0 -1
- package/dist/src/gateway/providers.d.ts +0 -163
- package/dist/src/gateway/providers.js +0 -972
- package/dist/src/gateway/providers.js.map +0 -1
- package/dist/src/gateway/server.d.ts +0 -47
- package/dist/src/gateway/server.js +0 -219
- package/dist/src/gateway/server.js.map +0 -1
- package/dist/src/gateway/service.d.ts +0 -373
- package/dist/src/gateway/service.js +0 -2274
- package/dist/src/gateway/service.js.map +0 -1
- package/dist/src/gateway/status-view.d.ts +0 -167
- package/dist/src/gateway/status-view.js +0 -488
- package/dist/src/gateway/status-view.js.map +0 -1
- package/dist/src/gateway/store.d.ts +0 -185
- package/dist/src/gateway/store.js +0 -2359
- package/dist/src/gateway/store.js.map +0 -1
- package/dist/src/gateway/types.d.ts +0 -528
- package/dist/src/gateway/types.js +0 -341
- 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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAwD,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EACL,+BAA+B,EAAE,iCAAiC,EAClE,oCAAoC,EAAE,qCAAqC,EAC3E,iCAAiC,GAGlC,MAAM,6BAA6B,CAAC;AAGrC,MAAM,IAAI,GAAG,CAAC,KAAc,EAA0C,EAAE,CAAC,KAAK,YAAY,WAAW;IACnG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAClG,EAAE,IAAI,EAAE,uCAAuC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACxE,MAAM,EAAE,GAAG,GAA2B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACxD,SAAS,IAAI,CAAC,KAAqC;IACjD,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC9G,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAK,CAAC,KAAqB,EAAE,SAAS,EAAE,EAAE,EACxF,CAAC,KAAmB,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO;IAC1B,IAAI,OAAsC,EAAE,QAAwC,CAAC;IACrF,IAAI,YAA0E,CAAC;IAC/E,IAAI,MAA0B,CAAC;IAC/B,IAAI,UAAU,GAAG,CAAC,EAAE,WAAoC,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,CAAC,OAAuC,EAAiB,EAAE;QACvE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAAC,OAAO,SAAS,CAAC;IAChH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,KAA8B,EAAQ,EAAE,GAAG,KAAK,KAAK,CAAC,EAAE,eAAe,EAAE,qCAAqC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1K,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,MAAgC,EAAiB,EAAE,CACrF,KAAK,CAAC,EAAE,eAAe,EAAE,qCAAqC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnH,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,KAAc,EAAiB,EAAE,CAClE,KAAK,CAAC,EAAE,eAAe,EAAE,qCAAqC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChI,MAAM,OAAO,GAAG,GAAS,EAAE,GAAG,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IACnJ,MAAM,IAAI,GAAG,CAAC,EAAU,EAA0B,EAAE;QAClD,MAAM,IAAI,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,mCAAmC,EAAE,+CAA+C,CAAC,CAAC;QACvH,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;YAAE,MAAM,IAAI,WAAW,CAAC,oCAAoC,EAAE,kDAAkD,CAAC,CAAC;QACpI,WAAW,GAAG,SAAS,CAAC;QAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,KAAK,EAAE,aAAiC,EAAE,IAAY,EAAiB,EAAE;QAC7F,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC;YAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QACvE,MAAM,CAAC;YAAC,IAAI,CAAC;gBAAC,QAAQ,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAAC,CAAC;IAC3F,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,EAAE,OAA4D,EAAiB,EAAE;QACpG,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,UAAU,GAAG,YAAY,CAAC;QACnF,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YACtG,MAAM,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,6BAA6B,CAAC,CAAC;YAAC,OAAO;QACpF,CAAC;QACD,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC;YAAC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YAAC,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACnH,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;YACvH,IAAI,KAAK,IAAI,MAAM;gBAAE,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAChG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;YAAC,MAAM,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC/I,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK;gBAC/E,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1I,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,KAAK,EAAE,OAAyC,EAAqC,EAAE;QACxG,IAAI,OAAO,IAAI,QAAQ,IAAI,YAAY;YAAE,MAAM,IAAI,WAAW,CAAC,0CAA0C,EAAE,wCAAwC,CAAC,CAAC;QACrJ,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS;YACpH,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC9F,IAAI,MAAsC,CAAC;QAC3C,IAAI,CAAC;YAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO;gBACpD,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACrG,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,WAAW,CAAC,0BAA0B,EAAE,wCAAwC,CAAC,CAAC;YAC9I,OAAO,GAAG,OAAO,CAAC;YAAC,QAAQ,GAAG,MAAM,CAAC;YAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAAC,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC5I,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACtG,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,GAAG,SAAS,CAAC;YAAC,QAAQ,GAAG,SAAS,CAAC;YAAC,YAAY,GAAG,SAAS,CAAC;YAAC,MAAM,GAAG,SAAS,CAAC;YACxG,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;IAC9G,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,EAAE,OAA2E,EAAqC,EAAE;QACvI,IAAI,WAAW;YAAE,MAAM,IAAI,WAAW,CAAC,oCAAoC,EAAE,0CAA0C,EAAE,IAAI,CAAC,CAAC;QAC/H,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,UAAU,GAAG,YAAY,CAAC;QACrE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc;YACvI,MAAM,IAAI,WAAW,CAAC,sCAAsC,EAAE,uDAAuD,EAAE,IAAI,CAAC,CAAC;QAC/H,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,iDAAiD,CAAC,CAAC;QACzI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,MAAM,IAAI,WAAW,CAAC,6BAA6B,EAAE,yCAAyC,EAAE,IAAI,CAAC,CAAC;QACpK,IAAI,OAAO,CAAC,aAAa,KAAK,gBAAgB,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,WAAW;gBACtG,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBACpD,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,6CAA6C,EAAE,IAAI,CAAC,CAAC;YACtG,MAAM,MAAM,CAAC,6BAA6B,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAU,CAAC,CAAC;QAC9F,CAAC;aAAM,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3E,MAAM,IAAI,WAAW,CAAC,2BAA2B,EAAE,kCAAkC,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,OAAO,GAAG,yBAAyB,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,QAAQ;YAC7G,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc;YAC1G,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QACvH,MAAM,EAAE,GAAG,QAAQ,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,oCAAoC,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvI,WAAW,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACtC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzF,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,EAAE,OAAkC,EAAqC,EAAE;QAC9F,IAAI,OAAO,CAAC,MAAM,KAAK,kBAAkB;YAAE,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,OAAO,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAAC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnF,IAAI,CAAC;gBAAC,MAAM,SAAS,CAAC;gBAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YAAC,CAAC;YACvD,OAAO,KAAK,EAAE,CAAC;gBAAC,OAAO,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,WAAW;oBACtE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,KAAK,6BAA6B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;oBACnH,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC,EAAE,CAAC;YAAC,CAAC;QAC/H,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;QAAC,CAAC;QAChG,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,WAAW,CAAC,sCAAsC,EAAE,gCAAgC,CAAC,CAAC;QAChI,IAAI,OAAO,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YAAC,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK;gBAAE,MAAM,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;QAAC,CAAC;QACzJ,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAAC,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;gBACjF,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAC,YAAY,GAAG,SAAS,CAAC;gBAAC,MAAM,GAAG,SAAS,CAAC;gBAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;QAAC,CAAC;QACpK,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAuB,EAAE,CAAC;YAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAChH,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;QAAC,CAAC;QACxF,IAAI,OAAO,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;YAAC,MAAM,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;QAAC,CAAC;QACjJ,IAAI,OAAO,CAAC,MAAM,KAAK,yBAAyB;YAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7H,OAAO,EAAE,CAAC;QAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;IACjD,CAAC,CAAC;IACF,KAAK,UAAU,QAAQ;QACrB,IAAI,OAAO;YAAE,OAAO;QAAC,OAAO,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC;QAAC,MAAM,MAAM,GAAG,OAAO,CAAC;QAAC,OAAO,GAAG,SAAS,CAAC;QAAC,QAAQ,GAAG,SAAS,CAAC;QAAC,YAAY,GAAG,SAAS,CAAC;QAAC,MAAM,GAAG,SAAS,CAAC;QAChK,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAAC,IAAI,OAAO,CAAC,SAAS;YAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAAC,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjI,CAAC;IACD,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpG,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAc,EAAE,EAAE;QACvC,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,CAAC;YAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;YAAC,IAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;QAAC,CAAC;QACjH,MAAM,CAAC;YAAC,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAClC,IAAI,QAAQ,IAAI,iCAAiC,EAAE,CAAC;YAAC,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAAC,QAAQ,IAAI,CAAC,CAAC;QAC9F,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAAG,IAAI,CAAC;gBAAC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjJ,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO;oBAAE,MAAM,QAAQ,EAAE,CAAC;YAAC,CAAC;YAC/H,OAAO,KAAK,EAAE,CAAC;gBAAC,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;oBAAE,MAAM,QAAQ,EAAE,CAAC;YAAC,CAAC;QAAC,CAAC,CAAC;aACnI,OAAO,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAAE,KAAK,4BAA4B,EAAE,CAAC"}
|
|
@@ -1,57 +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.0.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"];
|
|
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
|
-
/** Run one command; foreground runners own and release their signal handlers. */
|
|
56
|
-
export declare function runGatewayCli(argv?: readonly string[], dependencies?: GatewayCliDependencies): Promise<number>;
|
|
57
|
-
export {};
|