agent-embassy 2.0.1 → 3.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 +56 -0
- package/CONTRIBUTING.md +19 -34
- package/README.md +110 -228
- package/SECURITY.md +55 -89
- package/dist/src/errors.d.ts +10 -1
- package/dist/src/errors.js +3 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/gateway/claude-helper-protocol.d.ts +8 -11
- package/dist/src/gateway/claude-helper-protocol.js +12 -11
- package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
- package/dist/src/gateway/claude-helper-supervisor.d.ts +1 -5
- package/dist/src/gateway/claude-helper-supervisor.js +10 -9
- package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
- package/dist/src/gateway/claude-helper.js +6 -6
- package/dist/src/gateway/claude-helper.js.map +1 -1
- package/dist/src/gateway/claude-peer.d.ts +0 -3
- package/dist/src/gateway/claude-peer.js +6 -18
- package/dist/src/gateway/claude-peer.js.map +1 -1
- package/dist/src/gateway/cli.d.ts +17 -6
- package/dist/src/gateway/cli.js +912 -261
- package/dist/src/gateway/cli.js.map +1 -1
- package/dist/src/gateway/codex-socket-holder.d.ts +26 -0
- package/dist/src/gateway/codex-socket-holder.js +76 -0
- package/dist/src/gateway/codex-socket-holder.js.map +1 -0
- package/dist/src/gateway/codex-stateless-transport.js +1 -1
- package/dist/src/gateway/codex-stateless-transport.js.map +1 -1
- package/dist/src/gateway/config.d.ts +1 -10
- package/dist/src/gateway/config.js +4 -10
- package/dist/src/gateway/config.js.map +1 -1
- package/dist/src/gateway/control.d.ts +45 -77
- package/dist/src/gateway/control.js +56 -141
- package/dist/src/gateway/control.js.map +1 -1
- package/dist/src/gateway/federation-nodes.d.ts +29 -2
- package/dist/src/gateway/federation-nodes.js +177 -7
- package/dist/src/gateway/federation-nodes.js.map +1 -1
- package/dist/src/gateway/peer-client.d.ts +4 -3
- package/dist/src/gateway/peer-client.js +22 -13
- package/dist/src/gateway/peer-client.js.map +1 -1
- package/dist/src/gateway/peer-protocol.d.ts +8 -11
- package/dist/src/gateway/peer-protocol.js +5 -12
- package/dist/src/gateway/peer-protocol.js.map +1 -1
- package/dist/src/gateway/provenance-envelope.d.ts +0 -1
- package/dist/src/gateway/provenance-envelope.js +4 -19
- package/dist/src/gateway/provenance-envelope.js.map +1 -1
- package/dist/src/gateway/providers.d.ts +7 -4
- package/dist/src/gateway/providers.js +16 -20
- package/dist/src/gateway/providers.js.map +1 -1
- package/dist/src/gateway/server.d.ts +3 -12
- package/dist/src/gateway/server.js +31 -50
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/service-agent.d.ts +187 -0
- package/dist/src/gateway/service-agent.js +758 -0
- package/dist/src/gateway/service-agent.js.map +1 -0
- package/dist/src/gateway/service.d.ts +114 -31
- package/dist/src/gateway/service.js +461 -566
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/status-view.d.ts +167 -0
- package/dist/src/gateway/status-view.js +488 -0
- package/dist/src/gateway/status-view.js.map +1 -0
- package/dist/src/gateway/store.d.ts +103 -21
- package/dist/src/gateway/store.js +454 -529
- package/dist/src/gateway/store.js.map +1 -1
- package/dist/src/gateway/types.d.ts +48 -99
- package/dist/src/gateway/types.js +15 -52
- package/dist/src/gateway/types.js.map +1 -1
- package/docs/CONFIGURATION.md +173 -44
- package/docs/DELIVERY.md +11 -11
- package/docs/GATEWAY-ARCHITECTURE.md +277 -375
- package/package.json +4 -12
- package/skills/embassy-peer/SKILL.md +65 -90
- package/skills/embassy-peer/agents/openai.yaml +1 -1
- package/README.zh-CN.md +0 -275
- package/assets/live-dashboard/app.css +0 -1619
- package/assets/vendor/react/LICENSE +0 -21
- package/assets/vendor/react/react-dom.production.min.js +0 -267
- package/assets/vendor/react/react.production.min.js +0 -31
- package/dist/src/gateway/acp-client.d.ts +0 -110
- package/dist/src/gateway/acp-client.js +0 -407
- package/dist/src/gateway/acp-client.js.map +0 -1
- package/dist/src/gateway/acp-provider.d.ts +0 -66
- package/dist/src/gateway/acp-provider.js +0 -275
- package/dist/src/gateway/acp-provider.js.map +0 -1
- package/dist/src/gateway/cli-copy.d.ts +0 -8
- package/dist/src/gateway/cli-copy.en.d.ts +0 -22
- package/dist/src/gateway/cli-copy.en.js +0 -62
- package/dist/src/gateway/cli-copy.en.js.map +0 -1
- package/dist/src/gateway/cli-copy.js +0 -27
- package/dist/src/gateway/cli-copy.js.map +0 -1
- package/dist/src/gateway/cli-copy.zh-CN.d.ts +0 -22
- package/dist/src/gateway/cli-copy.zh-CN.js +0 -62
- package/dist/src/gateway/cli-copy.zh-CN.js.map +0 -1
- package/dist/src/gateway/codex-doctor.d.ts +0 -36
- package/dist/src/gateway/codex-doctor.js +0 -127
- package/dist/src/gateway/codex-doctor.js.map +0 -1
- package/dist/src/gateway/dashboard-copy.d.ts +0 -7
- package/dist/src/gateway/dashboard-copy.en.d.ts +0 -504
- package/dist/src/gateway/dashboard-copy.en.js +0 -505
- package/dist/src/gateway/dashboard-copy.en.js.map +0 -1
- package/dist/src/gateway/dashboard-copy.js +0 -514
- package/dist/src/gateway/dashboard-copy.js.map +0 -1
- package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +0 -504
- package/dist/src/gateway/dashboard-copy.zh-CN.js +0 -505
- package/dist/src/gateway/dashboard-copy.zh-CN.js.map +0 -1
- package/dist/src/gateway/dashboard-model.d.ts +0 -343
- package/dist/src/gateway/dashboard-model.js +0 -1061
- package/dist/src/gateway/dashboard-model.js.map +0 -1
- package/dist/src/gateway/dashboard.d.ts +0 -20
- package/dist/src/gateway/dashboard.js +0 -874
- package/dist/src/gateway/dashboard.js.map +0 -1
- package/dist/src/gateway/deepseek-detect.d.ts +0 -14
- package/dist/src/gateway/deepseek-detect.js +0 -41
- package/dist/src/gateway/deepseek-detect.js.map +0 -1
- package/dist/src/gateway/live-dashboard-app/app.js +0 -2385
- package/dist/src/gateway/live-dashboard-assets.d.ts +0 -10
- package/dist/src/gateway/live-dashboard-assets.js +0 -74
- package/dist/src/gateway/live-dashboard-assets.js.map +0 -1
- package/dist/src/gateway/live-dashboard-command.d.ts +0 -60
- package/dist/src/gateway/live-dashboard-command.js +0 -334
- package/dist/src/gateway/live-dashboard-command.js.map +0 -1
- package/dist/src/gateway/live-dashboard-http.d.ts +0 -39
- package/dist/src/gateway/live-dashboard-http.js +0 -383
- package/dist/src/gateway/live-dashboard-http.js.map +0 -1
- package/dist/src/gateway/live-dashboard-protocol.d.ts +0 -34
- package/dist/src/gateway/live-dashboard-protocol.js +0 -114
- package/dist/src/gateway/live-dashboard-protocol.js.map +0 -1
- package/dist/src/gateway/live-dashboard-server.d.ts +0 -33
- package/dist/src/gateway/live-dashboard-server.js +0 -144
- package/dist/src/gateway/live-dashboard-server.js.map +0 -1
- package/dist/src/gateway/live-dashboard-stream.d.ts +0 -46
- package/dist/src/gateway/live-dashboard-stream.js +0 -234
- package/dist/src/gateway/live-dashboard-stream.js.map +0 -1
- package/dist/src/gateway/live-dashboard.d.ts +0 -28
- package/dist/src/gateway/live-dashboard.js +0 -154
- package/dist/src/gateway/live-dashboard.js.map +0 -1
- package/dist/src/gateway/locale.d.ts +0 -4
- package/dist/src/gateway/locale.js +0 -10
- package/dist/src/gateway/locale.js.map +0 -1
- package/dist/src/gateway/progress-watch-machine.d.ts +0 -45
- package/dist/src/gateway/progress-watch-machine.js +0 -70
- package/dist/src/gateway/progress-watch-machine.js.map +0 -1
- package/docs/CONFIGURATION.zh-CN.md +0 -97
- package/docs/DASHBOARD.md +0 -98
- package/docs/DASHBOARD.zh-CN.md +0 -49
- package/docs/DELIVERY.zh-CN.md +0 -55
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { spawn as nodeSpawn } from "node:child_process";
|
|
2
2
|
import { Buffer } from "node:buffer";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
|
-
import { decodePeerParams, decodePeerResult, encodePeerFrame,
|
|
4
|
+
import { decodePeerParams, decodePeerResult, encodePeerFrame, PEER_MAX_CATALOG_BYTES, PEER_MAX_REQUEST_BYTES, PEER_METHOD_NOT_FOUND, PEER_PROTOCOL_VERSION, PEER_REQUEST_TIMEOUT_MS, PeerProtocolError } from "./peer-protocol.js";
|
|
5
5
|
export class PeerRequestError extends Error {
|
|
6
6
|
detail;
|
|
7
7
|
constructor(detail) {
|
|
@@ -38,8 +38,8 @@ export class PeerClient {
|
|
|
38
38
|
child.once("exit", () => this.fail(new PeerConnectionLostError()));
|
|
39
39
|
}
|
|
40
40
|
static async spawn(options) {
|
|
41
|
-
decodePeerParams("initialize", { protocolVersion:
|
|
42
|
-
decodePeerParams("initialize", { protocolVersion:
|
|
41
|
+
decodePeerParams("initialize", { protocolVersion: PEER_PROTOCOL_VERSION, host: options.node });
|
|
42
|
+
decodePeerParams("initialize", { protocolVersion: PEER_PROTOCOL_VERSION, host: options.localHost });
|
|
43
43
|
let child;
|
|
44
44
|
try {
|
|
45
45
|
child = (options.spawn ?? nodeSpawn)("/usr/bin/ssh", ["-T", "-x", "-o", "BatchMode=yes", "-o", "ClearAllForwardings=yes", "-o", "ForwardAgent=no", "-o", "PermitLocalCommand=no", "-o", "SendEnv=-*", "-o", "Tunnel=no", options.node, "embassy", "peer-stdio"], { env: peerEnvironment(process.env), shell: false, stdio: ["pipe", "pipe", "pipe"] });
|
|
@@ -49,7 +49,7 @@ export class PeerClient {
|
|
|
49
49
|
}
|
|
50
50
|
const client = new PeerClient(child, options.localHost, options.timers ?? { setTimeout, clearTimeout });
|
|
51
51
|
try {
|
|
52
|
-
const result = await client.request("initialize", { protocolVersion:
|
|
52
|
+
const result = await client.request("initialize", { protocolVersion: PEER_PROTOCOL_VERSION, host: options.localHost });
|
|
53
53
|
if (result.host !== options.node)
|
|
54
54
|
throw new Error(`Peer host mismatch: expected ${options.node}, received ${result.host}`);
|
|
55
55
|
client.remoteHost = result.host;
|
|
@@ -57,22 +57,21 @@ export class PeerClient {
|
|
|
57
57
|
}
|
|
58
58
|
catch (error) {
|
|
59
59
|
client.close();
|
|
60
|
+
// Our initialize params are validated above before they are sent, so a peer that
|
|
61
|
+
// rejects them as invalid params, or answers with another version, disagrees on the wire itself.
|
|
62
|
+
if ((error instanceof PeerProtocolError && error.code === "PROTOCOL_MISMATCH") || (error instanceof PeerRequestError && error.detail.code === -32602))
|
|
63
|
+
throw new PeerConnectionLostError("Peer protocol version mismatch", "protocol");
|
|
60
64
|
throw new PeerConnectionLostError(error instanceof Error ? error.message : "Peer initialization failed", "initialize");
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
|
-
get connectionInfo() { return { host: this.remoteHost, protocolVersion:
|
|
67
|
+
get connectionInfo() { return { host: this.remoteHost, protocolVersion: PEER_PROTOCOL_VERSION }; }
|
|
64
68
|
async catalog() {
|
|
65
69
|
const result = await this.request("catalog/get", {});
|
|
66
70
|
const routeIds = result.routes.flatMap((row) => [row.alias, row.ref]), connectorIds = result.connectors.map((row) => row.provider);
|
|
67
71
|
const invalid = (result.complete && result.truncated) || new Set(routeIds).size !== routeIds.length || new Set(connectorIds).size !== connectorIds.length ||
|
|
68
|
-
[...result.routes, ...result.connectors].some((row) => row.host !== this.remoteHost) ||
|
|
69
|
-
const hosts = edge.endpoints.map((endpoint) => endpoint.host).sort();
|
|
70
|
-
return hosts[0] !== [this.localHost, this.remoteHost].sort()[0] || hosts[1] !== [this.localHost, this.remoteHost].sort()[1] ||
|
|
71
|
-
edge.ownerHost !== hosts[0] || edge.ownerHost !== this.remoteHost || edge.ref !== peerEdgeRef(edge.endpoints);
|
|
72
|
-
}) || new Set(result.consentEdges.map((edge) => edge.ref)).size !== result.consentEdges.length ||
|
|
72
|
+
[...result.routes, ...result.connectors].some((row) => row.host !== this.remoteHost) ||
|
|
73
73
|
result.alerts.some((alert) => (alert.host !== undefined && alert.host !== this.remoteHost) ||
|
|
74
|
-
(alert.alias !== undefined && !alert.alias.endsWith(`@${this.remoteHost}`)))
|
|
75
|
-
.filter((endpoint) => endpoint.host === this.remoteHost).some((endpoint) => !result.routes.some((route) => route.alias === endpoint.alias && route.provider === endpoint.provider && route.ref === endpoint.routeRef)));
|
|
74
|
+
(alert.alias !== undefined && !alert.alias.endsWith(`@${this.remoteHost}`)));
|
|
76
75
|
if (invalid) {
|
|
77
76
|
const error = new Error("Peer catalog is not a local, canonical projection");
|
|
78
77
|
this.fail(error);
|
|
@@ -178,10 +177,20 @@ export class PeerClient {
|
|
|
178
177
|
}
|
|
179
178
|
else
|
|
180
179
|
try {
|
|
180
|
+
if (pending.method === "initialize" && object(message.result) && typeof message.result.protocolVersion === "number" && message.result.protocolVersion !== PEER_PROTOCOL_VERSION)
|
|
181
|
+
throw new PeerProtocolError("PROTOCOL_MISMATCH");
|
|
181
182
|
pending.resolve(decodePeerResult(pending.method, message.result));
|
|
182
183
|
}
|
|
183
184
|
catch (fault) {
|
|
184
|
-
|
|
185
|
+
// A result this build cannot decode is a disagreement about the wire,
|
|
186
|
+
// not a broken tunnel: the shapes of `catalog/get` and `handoff`
|
|
187
|
+
// changed within this protocol version's own line, so a lagging node
|
|
188
|
+
// answers honestly and is still unreadable here. Naming it as a
|
|
189
|
+
// protocol mismatch sends the operator to upgrade the node instead of
|
|
190
|
+
// to debug SSH.
|
|
191
|
+
const error = fault instanceof PeerProtocolError && fault.code === "INVALID_RESULT"
|
|
192
|
+
? new PeerConnectionLostError(`Peer ${pending.method} result is not readable by this build`, "protocol")
|
|
193
|
+
: fault instanceof Error ? fault : new Error("Invalid peer result");
|
|
185
194
|
pending.reject(error);
|
|
186
195
|
this.fail(error);
|
|
187
196
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-client.js","sourceRoot":"","sources":["../../../src/gateway/peer-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"peer-client.js","sourceRoot":"","sources":["../../../src/gateway/peer-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ConnectorHealth, type GatewayProvider, type RouteState } from "./types.js";
|
|
2
|
-
export declare const PEER_PROTOCOL_VERSION =
|
|
2
|
+
export declare const PEER_PROTOCOL_VERSION = 2, PEER_MAX_REQUEST_BYTES: number, PEER_MAX_CATALOG_BYTES: number, PEER_MAX_BODY_BYTES: number, PEER_REQUEST_TIMEOUT_MS = 30000, PEER_METHOD_NOT_FOUND = -32601;
|
|
3
3
|
export declare const peerCapabilities: readonly ["catalog", "handoff"];
|
|
4
4
|
export type PeerRpcId = string | number;
|
|
5
5
|
export type PeerRpcError = Readonly<{
|
|
@@ -15,11 +15,11 @@ export type PeerEndpoint = Readonly<{
|
|
|
15
15
|
routeRef: string;
|
|
16
16
|
}>;
|
|
17
17
|
export type PeerInitializeParams = Readonly<{
|
|
18
|
-
protocolVersion:
|
|
18
|
+
protocolVersion: typeof PEER_PROTOCOL_VERSION;
|
|
19
19
|
host: string;
|
|
20
20
|
}>;
|
|
21
21
|
export type PeerInitializeResult = Readonly<{
|
|
22
|
-
protocolVersion:
|
|
22
|
+
protocolVersion: typeof PEER_PROTOCOL_VERSION;
|
|
23
23
|
host: string;
|
|
24
24
|
capabilities: typeof peerCapabilities;
|
|
25
25
|
limits: Readonly<{
|
|
@@ -28,13 +28,16 @@ export type PeerInitializeResult = Readonly<{
|
|
|
28
28
|
bodyBytes: number;
|
|
29
29
|
}>;
|
|
30
30
|
}>;
|
|
31
|
+
/**
|
|
32
|
+
* A federated handoff is authorized by the sending host's membership in the
|
|
33
|
+
* destination's nodes.json plus exact alias addressing; the wire carries no
|
|
34
|
+
* permission record beyond the two endpoints.
|
|
35
|
+
*/
|
|
31
36
|
export type PeerHandoffParams = Readonly<{
|
|
32
37
|
originAttemptId: string;
|
|
33
38
|
originMessageId: string;
|
|
34
39
|
source: PeerEndpoint;
|
|
35
40
|
target: PeerEndpoint;
|
|
36
|
-
edgeRef: string;
|
|
37
|
-
edgeOwnerHost: string;
|
|
38
41
|
deadlineAt: string;
|
|
39
42
|
expectsReply: boolean;
|
|
40
43
|
body: string;
|
|
@@ -71,11 +74,6 @@ export type PeerCatalogResult = Readonly<{
|
|
|
71
74
|
lastSeenAt?: string;
|
|
72
75
|
safeErrorCode?: string;
|
|
73
76
|
}>[];
|
|
74
|
-
consentEdges: readonly Readonly<{
|
|
75
|
-
ref: string;
|
|
76
|
-
ownerHost: string;
|
|
77
|
-
endpoints: readonly [PeerEndpoint, PeerEndpoint];
|
|
78
|
-
}>[];
|
|
79
77
|
alerts: readonly Readonly<{
|
|
80
78
|
code: string;
|
|
81
79
|
severity: "info" | "warning" | "error";
|
|
@@ -101,7 +99,6 @@ export declare class PeerProtocolError extends Error {
|
|
|
101
99
|
}
|
|
102
100
|
export declare const isPeerMethod: (value: unknown) => value is PeerMethod;
|
|
103
101
|
export declare function peerRouteRef(hostId: string, registrationId: string): string;
|
|
104
|
-
export declare function peerEdgeRef(endpoints: readonly [PeerEndpoint, PeerEndpoint]): string;
|
|
105
102
|
export declare function peerInitializeResult(localHost: string): PeerInitializeResult;
|
|
106
103
|
export declare function decodePeerParams<M extends PeerMethod>(method: M, value: unknown): PeerMethodParams[M];
|
|
107
104
|
export declare function decodePeerResult<M extends PeerMethod>(method: M, value: unknown): PeerMethodResult[M];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { connectorHealthStates, gatewayProviders, routeStates } from "./types.js";
|
|
4
|
-
export const PEER_PROTOCOL_VERSION =
|
|
4
|
+
export const PEER_PROTOCOL_VERSION = 2, PEER_MAX_REQUEST_BYTES = 32 * 1024, PEER_MAX_CATALOG_BYTES = 256 * 1024, PEER_MAX_BODY_BYTES = 16 * 1024, PEER_REQUEST_TIMEOUT_MS = 30_000, PEER_METHOD_NOT_FOUND = -32601;
|
|
5
5
|
export const peerCapabilities = ["catalog", "handoff"];
|
|
6
6
|
const providers = new Set(gatewayProviders), health = new Set(connectorHealthStates), states = new Set(routeStates);
|
|
7
7
|
const host = (v) => typeof v === "string" && /^[a-z0-9](?:[a-z0-9.-]{0,61}[a-z0-9])?$/.test(v);
|
|
@@ -35,20 +35,14 @@ export function peerRouteRef(hostId, registrationId) {
|
|
|
35
35
|
throw new PeerProtocolError("INVALID_ROUTE_AUTHORITY");
|
|
36
36
|
return `reg_${createHash("sha256").update(`${hostId}\0${registrationId}`).digest("base64url")}`;
|
|
37
37
|
}
|
|
38
|
-
export function peerEdgeRef(endpoints) {
|
|
39
|
-
if (!endpoints.every(endpoint))
|
|
40
|
-
throw new PeerProtocolError("INVALID_ENDPOINT");
|
|
41
|
-
const canonical = endpoints.map(({ host, alias, routeRef }) => `${host}\0${alias}\0${routeRef}`).sort().join("\0");
|
|
42
|
-
return `edge_${createHash("sha256").update(canonical).digest("base64url")}`;
|
|
43
|
-
}
|
|
44
38
|
export function peerInitializeResult(localHost) {
|
|
45
|
-
return { protocolVersion:
|
|
39
|
+
return { protocolVersion: PEER_PROTOCOL_VERSION, host: localHost,
|
|
46
40
|
capabilities: peerCapabilities, limits: { requestBytes: PEER_MAX_REQUEST_BYTES, catalogBytes: PEER_MAX_CATALOG_BYTES, bodyBytes: PEER_MAX_BODY_BYTES } };
|
|
47
41
|
}
|
|
48
42
|
export function decodePeerParams(method, value) {
|
|
49
|
-
const valid = method === "initialize" ? exact(value, { protocolVersion: (v) => v ===
|
|
43
|
+
const valid = method === "initialize" ? exact(value, { protocolVersion: (v) => v === PEER_PROTOCOL_VERSION, host }) : method === "catalog/get" ? exact(value, {}) :
|
|
50
44
|
exact(value, { originAttemptId: token("attempt_"), originMessageId: token("msg_"), source: endpoint, target: endpoint,
|
|
51
|
-
|
|
45
|
+
deadlineAt: date, expectsReply: bool,
|
|
52
46
|
body: (v) => typeof v === "string" && Buffer.byteLength(v, "utf8") > 0 && Buffer.byteLength(v, "utf8") <= PEER_MAX_BODY_BYTES,
|
|
53
47
|
steer: optional((v) => v === true), conversationCorrelation: optional((v) => typeof v === "string" && /^[A-Za-z0-9_-]{8}$/.test(v)) });
|
|
54
48
|
if (!valid)
|
|
@@ -56,13 +50,12 @@ export function decodePeerParams(method, value) {
|
|
|
56
50
|
return value;
|
|
57
51
|
}
|
|
58
52
|
export function decodePeerResult(method, value) {
|
|
59
|
-
const valid = method === "initialize" ? exact(value, { protocolVersion: (v) => v ===
|
|
53
|
+
const valid = method === "initialize" ? exact(value, { protocolVersion: (v) => v === PEER_PROTOCOL_VERSION, host,
|
|
60
54
|
capabilities: (v) => Array.isArray(v) && v.length === 2 && v[0] === "catalog" && v[1] === "handoff",
|
|
61
55
|
limits: (v) => exact(v, { requestBytes: (x) => x === PEER_MAX_REQUEST_BYTES, catalogBytes: (x) => x === PEER_MAX_CATALOG_BYTES, bodyBytes: (x) => x === PEER_MAX_BODY_BYTES }) }) :
|
|
62
56
|
method === "handoff" ? exact(value, { accepted: (v) => v === true }) : exact(value, { revision: natural, complete: bool, truncated: bool, generatedAt: date, health: member(health),
|
|
63
57
|
connectors: list((v) => exact(v, { provider: member(providers), host, health: member(health), protocol: atom, protocolVersion: atom, lastSeenAt: optional(date), observationAgeMs: optional(natural), safeErrorCode: optional(code) }), 64),
|
|
64
58
|
routes: list((v) => exact(v, { ref: token("reg_"), alias, provider: member(providers), host, enabled: bool, state: member(states), queueDepth: natural, lastSeenAt: optional(date), safeErrorCode: optional(code) }) && coordinate(v), 256),
|
|
65
|
-
consentEdges: list((v) => exact(v, { ref: token("edge_"), ownerHost: host, endpoints: (x) => Array.isArray(x) && x.length === 2 && x.every(endpoint) }), 256),
|
|
66
59
|
alerts: list((v) => exact(v, { code, severity: member(new Set(["info", "warning", "error"])), timestamp: date, provider: optional(member(providers)), host: optional(host), alias: optional(alias) }), 256) });
|
|
67
60
|
if (!valid)
|
|
68
61
|
throw new PeerProtocolError("INVALID_RESULT");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-protocol.js","sourceRoot":"","sources":["../../../src/gateway/peer-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EACE,MAAM,YAAY,CAAC;AAElF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,sBAAsB,GAAG,EAAE,GAAG,IAAI,EACxE,sBAAsB,GAAG,GAAG,GAAG,IAAI,EAAE,mBAAmB,GAAG,EAAE,GAAG,IAAI,EACpE,uBAAuB,GAAG,MAAM,EAAE,qBAAqB,GAAG,CAAC,KAAK,CAAC;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,SAAS,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"peer-protocol.js","sourceRoot":"","sources":["../../../src/gateway/peer-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ export const PROVENANCE_RAW_BODY_MAX_BYTES = 16 * 1024;
|
|
|
4
4
|
export const PROVENANCE_ENVELOPE_MAX_BYTES = 64 * 1024;
|
|
5
5
|
const ALIAS_PATTERN = /^[a-z][a-z0-9_-]{0,31}@[a-z0-9](?:[a-z0-9.-]{0,61}[a-z0-9])?$/;
|
|
6
6
|
const CONVERSATION_ID_PATTERN = /^conv_[A-Za-z0-9_-]{16,64}$/;
|
|
7
|
-
const RESERVED_TAG_PATTERN = /<(?=\/?(?:cross-session-message|embassy-reply-hint|embassy-
|
|
7
|
+
const RESERVED_TAG_PATTERN = /<(?=\/?(?:cross-session-message|embassy-reply-hint|embassy-queued-ahead)(?:[>\s/]|$))/giu;
|
|
8
8
|
const CLAUDE_FROM_NAME_MAX_CODEPOINTS = 64;
|
|
9
9
|
const LONG_ALIAS_HASH_HEX_LENGTH = 16;
|
|
10
10
|
const PROVENANCE_RECIPIENT_PROFILE_VALUES = {
|
|
@@ -17,14 +17,6 @@ const PROVENANCE_RECIPIENT_PROFILE_VALUES = {
|
|
|
17
17
|
emitConversationAttribute: true,
|
|
18
18
|
allowQueuedAhead: true,
|
|
19
19
|
}),
|
|
20
|
-
deepseek: Object.freeze({
|
|
21
|
-
emitConversationAttribute: true,
|
|
22
|
-
allowQueuedAhead: false,
|
|
23
|
-
}),
|
|
24
|
-
grok: Object.freeze({
|
|
25
|
-
emitConversationAttribute: true,
|
|
26
|
-
allowQueuedAhead: false,
|
|
27
|
-
}),
|
|
28
20
|
peer: Object.freeze({
|
|
29
21
|
emitConversationAttribute: true,
|
|
30
22
|
allowQueuedAhead: false,
|
|
@@ -55,8 +47,6 @@ function validateInput(input) {
|
|
|
55
47
|
typeof input.conversationId !== "string" ||
|
|
56
48
|
!CONVERSATION_ID_PATTERN.test(input.conversationId) ||
|
|
57
49
|
typeof input.body !== "string" ||
|
|
58
|
-
(input.progressWatchActive !== undefined &&
|
|
59
|
-
input.progressWatchActive !== true) ||
|
|
60
50
|
(input.queuedAhead !== undefined &&
|
|
61
51
|
(!PROVENANCE_RECIPIENT_PROFILES[input.recipientProvider]
|
|
62
52
|
.allowQueuedAhead ||
|
|
@@ -106,18 +96,13 @@ export function composeProvenanceEnvelope(input) {
|
|
|
106
96
|
const exactSourceAttribute = profile.fromNameMaxCodepoints !== undefined && display.shortened
|
|
107
97
|
? ` from-alias="${input.sourceAlias}"`
|
|
108
98
|
: "";
|
|
109
|
-
const replyCommand = `embassy
|
|
110
|
-
` --
|
|
99
|
+
const replyCommand = `embassy send --conversation ${input.conversationId}` +
|
|
100
|
+
` --from ${input.targetAlias}`;
|
|
111
101
|
const hint = `<embassy-reply-hint conversation="${input.conversationId}"` +
|
|
112
102
|
` reply-as="${input.targetAlias}"${exactSourceAttribute}` +
|
|
113
103
|
` from-provider="${input.sourceProvider}">` +
|
|
114
104
|
`Reply by running \`${replyCommand}\` with the reply body on stdin. ` +
|
|
115
105
|
"Caller, conversation, and route policy are rechecked.</embassy-reply-hint>";
|
|
116
|
-
const trackMarker = input.progressWatchActive === true
|
|
117
|
-
? "\n<embassy-track-active>Progress supervision is active for this " +
|
|
118
|
-
"conversation. Reply with a leading `DONE:` when the assigned work " +
|
|
119
|
-
"is complete; that completion closes the watch.</embassy-track-active>"
|
|
120
|
-
: "";
|
|
121
106
|
const queuedAheadMarker = input.queuedAhead === undefined
|
|
122
107
|
? ""
|
|
123
108
|
: `\n<embassy-queued-ahead count="${input.queuedAhead}">` +
|
|
@@ -126,7 +111,7 @@ export function composeProvenanceEnvelope(input) {
|
|
|
126
111
|
"boundaries.</embassy-queued-ahead>";
|
|
127
112
|
const body = neutralizeReservedTags(input.body);
|
|
128
113
|
const envelope = `<cross-session-message from-name="${fromName}"${conversationAttribute}>\n` +
|
|
129
|
-
`${hint}${
|
|
114
|
+
`${hint}${queuedAheadMarker}\n${body}\n</cross-session-message>`;
|
|
130
115
|
if (Buffer.byteLength(envelope, "utf8") > PROVENANCE_ENVELOPE_MAX_BYTES) {
|
|
131
116
|
envelopeTooLarge();
|
|
132
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provenance-envelope.js","sourceRoot":"","sources":["../../../src/gateway/provenance-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD,MAAM,aAAa,GACjB,+DAA+D,CAAC;AAClE,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AAC9D,MAAM,oBAAoB,GACxB
|
|
1
|
+
{"version":3,"file":"provenance-envelope.js","sourceRoot":"","sources":["../../../src/gateway/provenance-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,9 @@ import type { LocalCodexTransportFactory } from "./codex-local-transport.js";
|
|
|
5
5
|
import type { StatelessCodexOperationTransport } from "./codex-stateless-transport.js";
|
|
6
6
|
import type { GatewayDeliveryNoticeMode } from "./config.js";
|
|
7
7
|
import type { ClaudeNativeHelperFactory } from "./claude-helper-client.js";
|
|
8
|
-
import { type DashboardLocale } from "./locale.js";
|
|
9
8
|
import type { GatewayAdapterCallbacks, GatewayAdapterDiscoverySnapshot, GatewayAdapterDispatchResult, GatewayAdapterDispatchInput, GatewayAdapterRouteState, GatewayAdapterRegistryObservation, GatewayAdapterStart, GatewayProviderAdapter } from "./service.js";
|
|
10
9
|
import type { GatewayProvider } from "./types.js";
|
|
11
|
-
type ClaudePeerFactory = (runtime: AttestedClaudePeerRuntime,
|
|
10
|
+
type ClaudePeerFactory = (runtime: AttestedClaudePeerRuntime, deliveryNotices: GatewayDeliveryNoticeMode) => ClaudePeerAdapter;
|
|
12
11
|
export type LocalClaudeGatewayProviderOptions = {
|
|
13
12
|
/** Exact result of attestClaudePeerRuntime; paths are never rediscovered. */
|
|
14
13
|
runtime: AttestedClaudePeerRuntime;
|
|
@@ -16,8 +15,6 @@ export type LocalClaudeGatewayProviderOptions = {
|
|
|
16
15
|
stateRoot: string;
|
|
17
16
|
hostId: string;
|
|
18
17
|
nodeInventory: GatewayNodeInventory;
|
|
19
|
-
/** Locale for bounded notices written into native Claude sessions. */
|
|
20
|
-
locale?: DashboardLocale;
|
|
21
18
|
/** Gateway-authored user-frame policy; native receipt status is unchanged. */
|
|
22
19
|
deliveryNotices?: GatewayDeliveryNoticeMode;
|
|
23
20
|
discoveryPollMs?: number;
|
|
@@ -71,6 +68,12 @@ export declare class LocalClaudeGatewayProvider implements GatewayProviderAdapte
|
|
|
71
68
|
registrationId: string;
|
|
72
69
|
}): void;
|
|
73
70
|
forgetLogicalRoute(registrationId: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Converts an inherited messaging-socket capability into the owning
|
|
73
|
+
* session's UUID. The session need not hold a route yet: its route installs
|
|
74
|
+
* on its first send, and the service compares the claimed alias against
|
|
75
|
+
* discovery for that UUID.
|
|
76
|
+
*/
|
|
74
77
|
resolveReplyAddress(address: string): Promise<{
|
|
75
78
|
routeHandle: string;
|
|
76
79
|
}>;
|
|
@@ -4,7 +4,6 @@ import { BridgeError } from "../errors.js";
|
|
|
4
4
|
import { isAttestedGatewayNodeInventory } from "./federation-nodes.js";
|
|
5
5
|
import { CLAUDE_PEER_COMPATIBILITY, ClaudePeerAdapter, } from "./claude-peer.js";
|
|
6
6
|
import { ClaudeNativeHelperSupervisor, } from "./claude-helper-supervisor.js";
|
|
7
|
-
import { isDashboardLocale } from "./locale.js";
|
|
8
7
|
import { composeProvenanceEnvelope } from "./provenance-envelope.js";
|
|
9
8
|
const NATIVE_CLAUDE_NAME = /^[a-z][a-z0-9_-]{0,31}$/;
|
|
10
9
|
const PUBLIC_ALIAS = /^[a-z][a-z0-9_-]{0,31}@[a-z0-9](?:[a-z0-9.-]{0,61}[a-z0-9])?$/;
|
|
@@ -89,7 +88,7 @@ async function cancelPreparedClaude(prepared) {
|
|
|
89
88
|
}
|
|
90
89
|
function exactLocalHost(hostId, inventory) {
|
|
91
90
|
if (!isAttestedGatewayNodeInventory(inventory, hostId)) {
|
|
92
|
-
throw new BridgeError("GATEWAY_REMOTE_PROVIDER_DISABLED", "The local host coordinate requires
|
|
91
|
+
throw new BridgeError("GATEWAY_REMOTE_PROVIDER_DISABLED", "The local host coordinate requires an attested node inventory.");
|
|
93
92
|
}
|
|
94
93
|
return hostId;
|
|
95
94
|
}
|
|
@@ -171,9 +170,6 @@ export class LocalClaudeGatewayProvider {
|
|
|
171
170
|
if (!path.isAbsolute(options.stateRoot) || options.stateRoot.includes("\0")) {
|
|
172
171
|
throw new BridgeError("INVALID_GATEWAY_PROVIDER_CONFIGURATION", "The Claude provider state root must be an absolute path.");
|
|
173
172
|
}
|
|
174
|
-
if (options.locale !== undefined && !isDashboardLocale(options.locale)) {
|
|
175
|
-
throw new BridgeError("DASHBOARD_LOCALE_UNSUPPORTED", "The Claude provider notice locale is unsupported.");
|
|
176
|
-
}
|
|
177
173
|
const hostId = exactLocalHost(options.hostId, options.nodeInventory);
|
|
178
174
|
this.identity = {
|
|
179
175
|
provider: "claude",
|
|
@@ -185,19 +181,17 @@ export class LocalClaudeGatewayProvider {
|
|
|
185
181
|
this.now = options.now ?? Date.now;
|
|
186
182
|
const protocolRuntime = options.runtime;
|
|
187
183
|
this.peer = (options.peerFactory ??
|
|
188
|
-
((runtime,
|
|
184
|
+
((runtime, deliveryNotices) => new ClaudePeerAdapter({
|
|
189
185
|
sessionsDir: runtime.sessionsDir,
|
|
190
186
|
socketDir: runtime.socketDir,
|
|
191
|
-
locale,
|
|
192
187
|
deliveryNotices,
|
|
193
|
-
})))(protocolRuntime, options.
|
|
188
|
+
})))(protocolRuntime, options.deliveryNotices ?? "merged");
|
|
194
189
|
this.nativeHelpers =
|
|
195
190
|
options.nativeHelpers === undefined
|
|
196
191
|
? undefined
|
|
197
192
|
: new ClaudeNativeHelperSupervisor({
|
|
198
193
|
identity: this.identity,
|
|
199
194
|
runtime: protocolRuntime,
|
|
200
|
-
locale: options.locale ?? "en",
|
|
201
195
|
deliveryNotices: options.deliveryNotices ?? "merged",
|
|
202
196
|
maxPendingMessages: this.maxPending,
|
|
203
197
|
maxHelpers: positiveBounded(options.nativeHelpers.maxHelpers, 256, 128),
|
|
@@ -245,7 +239,10 @@ export class LocalClaudeGatewayProvider {
|
|
|
245
239
|
this.assertReady();
|
|
246
240
|
const candidate = this.discovered.get(input.routeHandle);
|
|
247
241
|
if (candidate === undefined || candidate.alias !== input.alias) {
|
|
248
|
-
|
|
242
|
+
// The TARGET moved between discovery and this pin — it renamed or left.
|
|
243
|
+
// A distinct code from the caller-side CLAUDE_ROUTE_MISMATCH, so the CLI
|
|
244
|
+
// cannot answer "fix your --from" to a problem at the other end.
|
|
245
|
+
throw new BridgeError("CLAUDE_TARGET_CHANGED", "The addressed Claude session no longer matches that exact peer generation.");
|
|
249
246
|
}
|
|
250
247
|
const route = this.selected.get(input.routeHandle);
|
|
251
248
|
this.selected.set(input.routeHandle, {
|
|
@@ -284,14 +281,17 @@ export class LocalClaudeGatewayProvider {
|
|
|
284
281
|
}
|
|
285
282
|
}
|
|
286
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Converts an inherited messaging-socket capability into the owning
|
|
286
|
+
* session's UUID. The session need not hold a route yet: its route installs
|
|
287
|
+
* on its first send, and the service compares the claimed alias against
|
|
288
|
+
* discovery for that UUID.
|
|
289
|
+
*/
|
|
287
290
|
async resolveReplyAddress(address) {
|
|
288
291
|
this.assertReady();
|
|
289
292
|
const resolved = await this.peer.resolveReplyAddress(address);
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
(resolved.kind !== "interactive" && resolved.kind !== "bg") ||
|
|
293
|
-
selectedAlias !== `${resolved.alias}@${this.identity.hostId}`) {
|
|
294
|
-
throw new BridgeError("CLAUDE_REPLY_ROUTE_MISMATCH", "The reply capability is not the exact selected Claude generation.");
|
|
293
|
+
if (resolved.kind !== "interactive" && resolved.kind !== "bg") {
|
|
294
|
+
throw new BridgeError("CLAUDE_REPLY_ROUTE_MISMATCH", "The reply capability does not belong to a Claude session.");
|
|
295
295
|
}
|
|
296
296
|
return { routeHandle: resolved.targetId };
|
|
297
297
|
}
|
|
@@ -348,7 +348,6 @@ export class LocalClaudeGatewayProvider {
|
|
|
348
348
|
...(input.authorization !== "selected_route" || selected?.stateRoot === undefined
|
|
349
349
|
? {}
|
|
350
350
|
: { stateRoot: selected.stateRoot }),
|
|
351
|
-
...(input.progressWatchActive === true ? { progressWatchActive: true } : {}),
|
|
352
351
|
});
|
|
353
352
|
}
|
|
354
353
|
catch (error) {
|
|
@@ -385,7 +384,7 @@ export class LocalClaudeGatewayProvider {
|
|
|
385
384
|
};
|
|
386
385
|
}
|
|
387
386
|
try {
|
|
388
|
-
// Authorization is the
|
|
387
|
+
// Authorization is the write-authorization linearization point. Invoke the exact
|
|
389
388
|
// prepared mailbox write in the same continuation with no intervening
|
|
390
389
|
// await. Claude has no separate acceptance phase: confirmed mailbox
|
|
391
390
|
// completion is terminal delivered.
|
|
@@ -732,9 +731,6 @@ export class LocalCodexGatewayProvider {
|
|
|
732
731
|
targetAlias: input.targetAlias,
|
|
733
732
|
conversationId: input.conversationId,
|
|
734
733
|
body: input.text,
|
|
735
|
-
...(input.progressWatchActive === true
|
|
736
|
-
? { progressWatchActive: true }
|
|
737
|
-
: {}),
|
|
738
734
|
...(input.steer === true && input.queuedAhead !== undefined
|
|
739
735
|
? { queuedAhead: input.queuedAhead }
|
|
740
736
|
: {}),
|