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
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { randomBytes, randomUUID } from "node:crypto";
|
|
2
|
+
import { BridgeError } from "../errors.js";
|
|
3
|
+
import { Ledger } from "./ledger.js";
|
|
4
|
+
const publicEndpoint = ({ id, alias, provider, host }) => ({ id, alias, provider, host });
|
|
5
|
+
const admissionRefusals = new Set(["INVALID_PEER_HANDOFF", "ROUTE_UNREGISTERED", "INVALID_MESSAGE_BODY",
|
|
6
|
+
"MESSAGE_EXPIRED", "QUEUE_FULL", "RATE_LIMITED"]);
|
|
7
|
+
class PreEnqueueRefusal extends Error {
|
|
8
|
+
code;
|
|
9
|
+
constructor(code) {
|
|
10
|
+
super(code);
|
|
11
|
+
this.code = code;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** Application commands over the directory and the single delivery ledger. */
|
|
15
|
+
export class MessagingBroker {
|
|
16
|
+
options;
|
|
17
|
+
timer;
|
|
18
|
+
stopped = false;
|
|
19
|
+
started = false;
|
|
20
|
+
pumping;
|
|
21
|
+
requested = false;
|
|
22
|
+
fault;
|
|
23
|
+
now;
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.options = options;
|
|
26
|
+
this.now = options.now ?? Date.now;
|
|
27
|
+
}
|
|
28
|
+
change(operation) {
|
|
29
|
+
return this.options.store.transact((state) => operation(new Ledger(state, this.options.host, this.options.limits, this.now())));
|
|
30
|
+
}
|
|
31
|
+
async start() {
|
|
32
|
+
await this.change((ledger) => ledger.restart());
|
|
33
|
+
this.started = true;
|
|
34
|
+
this.kick();
|
|
35
|
+
}
|
|
36
|
+
async register(caller, alias, succeeds) {
|
|
37
|
+
if (caller.kind !== "codex")
|
|
38
|
+
throw new BridgeError("ROUTE_BINDING_MISMATCH", "Codex registration requires its inherited task identity.");
|
|
39
|
+
const endpoint = await this.options.directory.registerCodex(caller.handle, alias, succeeds);
|
|
40
|
+
return publicEndpoint(endpoint);
|
|
41
|
+
}
|
|
42
|
+
async send(caller, address, body) {
|
|
43
|
+
if (this.stopped)
|
|
44
|
+
throw new BridgeError("GATEWAY_SHUTDOWN", "The gateway is stopping.");
|
|
45
|
+
const source = await this.options.directory.caller(caller);
|
|
46
|
+
const target = "to" in address ? await this.options.directory.named(address.to)
|
|
47
|
+
: await this.options.directory.exact(new Ledger(await this.options.store.snapshot(), this.options.host, this.options.limits, this.now()).replyTarget(address.conversation, source));
|
|
48
|
+
if (!target)
|
|
49
|
+
throw new BridgeError("ROUTE_UNREGISTERED", "The exact destination is unavailable.");
|
|
50
|
+
const deadline = this.now() + this.options.limits.deadlineMs;
|
|
51
|
+
const admitted = await this.change((ledger) => ledger.admit({
|
|
52
|
+
id: `msg_${randomUUID()}`, token: `dlv_${randomBytes(18).toString("base64url")}`,
|
|
53
|
+
reply: `conv_${randomBytes(24).toString("base64url")}`, source, target, body,
|
|
54
|
+
deadline,
|
|
55
|
+
steer: this.options.steeringEnabled !== false && source.provider === "claude" && target.provider === "codex" && body.startsWith("STEER:"),
|
|
56
|
+
}));
|
|
57
|
+
this.kick();
|
|
58
|
+
return { accepted: true, conversationId: admitted.delivery.reply, deliveryToken: admitted.delivery.token };
|
|
59
|
+
}
|
|
60
|
+
async retire(selector) {
|
|
61
|
+
if (typeof selector === "string" && !selector.endsWith(`@${this.options.host}`))
|
|
62
|
+
throw new BridgeError("FEDERATED_ROUTE_READ_ONLY", "Retire a remote route on its owning host.");
|
|
63
|
+
// Retirement acts on owned state, not discovery: an exited session must remain removable.
|
|
64
|
+
const counts = await this.change((ledger) => {
|
|
65
|
+
const endpoint = typeof selector === "string" ? ledger.resolve(selector)
|
|
66
|
+
: ledger.state.endpoints.find((row) => row.id === selector.endpoint);
|
|
67
|
+
if (!endpoint)
|
|
68
|
+
throw new BridgeError("ROUTE_UNREGISTERED", "The local route is absent.");
|
|
69
|
+
return ledger.retire(endpoint);
|
|
70
|
+
});
|
|
71
|
+
this.kick();
|
|
72
|
+
return counts;
|
|
73
|
+
}
|
|
74
|
+
async handoff(peerHost, input) {
|
|
75
|
+
if (this.stopped)
|
|
76
|
+
throw new BridgeError("GATEWAY_SHUTDOWN", "The gateway is stopping.");
|
|
77
|
+
if (!this.options.nodes?.includes(peerHost) || input.target.host !== this.options.host ||
|
|
78
|
+
input.messages.some((m) => m.source.host !== peerHost))
|
|
79
|
+
return { accepted: false, code: "INVALID_PEER_HANDOFF" };
|
|
80
|
+
try {
|
|
81
|
+
await this.change((ledger) => {
|
|
82
|
+
try {
|
|
83
|
+
for (const message of input.messages)
|
|
84
|
+
ledger.admit({
|
|
85
|
+
id: message.id, reply: message.reply, token: `dlv_${randomBytes(18).toString("base64url")}`,
|
|
86
|
+
source: message.source, sourceAlias: message.source.alias, target: input.target,
|
|
87
|
+
body: message.body, deadline: message.deadline, steer: message.steer && this.options.steeringEnabled !== false,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
// The sentinel is created ONLY inside the transition, before any persist.
|
|
92
|
+
// A later I/O throw carrying the same text is not a proven refusal.
|
|
93
|
+
if (error instanceof BridgeError && admissionRefusals.has(error.code))
|
|
94
|
+
throw new PreEnqueueRefusal(error.code);
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (error instanceof PreEnqueueRefusal)
|
|
101
|
+
return { accepted: false, code: error.code };
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
this.kick();
|
|
105
|
+
return { accepted: true };
|
|
106
|
+
}
|
|
107
|
+
async delivery(token) {
|
|
108
|
+
await this.change((ledger) => ledger.expire());
|
|
109
|
+
const d = (await this.options.store.snapshot()).deliveries.find((d) => d.token === token);
|
|
110
|
+
if (!d)
|
|
111
|
+
return { found: false };
|
|
112
|
+
return { found: true, state: d.state.phase === "terminal" ? d.state.outcome : d.state.phase,
|
|
113
|
+
terminal: d.state.phase === "terminal", deadlineAt: new Date(d.deadline).toISOString(),
|
|
114
|
+
...(d.state.phase === "terminal" ? { safeErrorCode: d.state.code } : { pendingForMs: Math.max(0, this.now() - d.admittedAt) }) };
|
|
115
|
+
}
|
|
116
|
+
async refresh() {
|
|
117
|
+
const [endpoints] = await Promise.all([
|
|
118
|
+
this.options.directory.refresh(), this.options.federation?.catalog(),
|
|
119
|
+
]);
|
|
120
|
+
this.kick();
|
|
121
|
+
return { routes: endpoints.map(publicEndpoint) };
|
|
122
|
+
}
|
|
123
|
+
async status() {
|
|
124
|
+
await this.change((ledger) => ledger.expire());
|
|
125
|
+
const state = await this.options.store.snapshot();
|
|
126
|
+
const alias = (ref) => state.endpoints.find((e) => e.id === ref.id && e.host === ref.host)?.alias;
|
|
127
|
+
return {
|
|
128
|
+
health: this.fault ? "degraded" : "healthy", ...(this.fault ? { safeErrorCode: this.fault } : {}),
|
|
129
|
+
revision: state.commit.sequence,
|
|
130
|
+
...(this.options.federation ? { federation: this.options.federation.snapshot() } : {}),
|
|
131
|
+
routes: state.endpoints.map((e) => ({ ...publicEndpoint(e),
|
|
132
|
+
...(this.options.coordinator.observation(e) === undefined ? {} : { lastOperation: this.options.coordinator.observation(e) }),
|
|
133
|
+
queueDepth: state.deliveries.filter((d) => d.target.id === e.id && d.target.host === e.host && d.state.phase !== "terminal").length })),
|
|
134
|
+
messages: state.deliveries.map((d) => ({ source: alias(d.source) ?? d.sourceAlias, target: alias(d.target),
|
|
135
|
+
state: d.state.phase === "terminal" ? d.state.outcome : d.state.phase,
|
|
136
|
+
ageMs: Math.max(0, this.now() - d.admittedAt),
|
|
137
|
+
...(d.state.phase === "terminal" ? { safeErrorCode: d.state.code } : {}) })),
|
|
138
|
+
retirements: state.retirements.map(({ alias, at }) => ({ alias, at: new Date(at).toISOString() })),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
kick() {
|
|
142
|
+
if (this.stopped)
|
|
143
|
+
return;
|
|
144
|
+
this.requested = true;
|
|
145
|
+
if (this.pumping)
|
|
146
|
+
return;
|
|
147
|
+
if (this.timer) {
|
|
148
|
+
clearTimeout(this.timer);
|
|
149
|
+
this.timer = undefined;
|
|
150
|
+
}
|
|
151
|
+
this.pumping = this.pump().catch((error) => {
|
|
152
|
+
this.fault = error instanceof BridgeError ? error.code : "DISPATCH_OUTCOME_AMBIGUOUS";
|
|
153
|
+
}).finally(() => {
|
|
154
|
+
this.pumping = undefined;
|
|
155
|
+
if (this.requested)
|
|
156
|
+
this.kick();
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
async pump() {
|
|
160
|
+
this.requested = false;
|
|
161
|
+
const state = await this.options.store.snapshot();
|
|
162
|
+
const targets = new Map();
|
|
163
|
+
for (const d of state.deliveries) {
|
|
164
|
+
if (d.state.phase === "queued")
|
|
165
|
+
targets.set(JSON.stringify([d.target, d.steer]), d);
|
|
166
|
+
}
|
|
167
|
+
for (const d of targets.values()) {
|
|
168
|
+
// Do not await an agent's turn: another target or a STEER must remain dispatchable.
|
|
169
|
+
void this.options.coordinator.wake(d.target, d.steer).catch((error) => {
|
|
170
|
+
this.fault = error instanceof BridgeError ? error.code : "DISPATCH_OUTCOME_AMBIGUOUS";
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
if (!this.stopped && state.deliveries.some((d) => d.state.phase !== "terminal")) {
|
|
174
|
+
this.timer = setTimeout(() => { this.timer = undefined; this.kick(); }, 500);
|
|
175
|
+
this.timer.unref();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async close() {
|
|
179
|
+
this.stopped = true;
|
|
180
|
+
if (this.timer)
|
|
181
|
+
clearTimeout(this.timer);
|
|
182
|
+
await this.pumping;
|
|
183
|
+
await this.options.coordinator.close(this.started);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=broker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../src/gateway/broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type Socket } from "node:net";
|
|
2
|
-
import type { GatewayDeliveryNoticeMode } from "./config.js";
|
|
3
2
|
export declare const CLAUDE_PEER_COMPATIBILITY: Readonly<{
|
|
4
3
|
peerProtocol: 1;
|
|
5
4
|
}>;
|
|
@@ -23,31 +22,6 @@ export type ClaudePeerDiscovery = {
|
|
|
23
22
|
entriesScanned: number;
|
|
24
23
|
parseableRecords: number;
|
|
25
24
|
};
|
|
26
|
-
export type ClaudePeerDeliveryDiagnostic = {
|
|
27
|
-
code: string;
|
|
28
|
-
};
|
|
29
|
-
export declare const claudePeerInboundStallReasons: readonly ["ROUTE_BUSY", "ROUTE_UNAVAILABLE", "AWAITING_EXTERNAL_APPROVAL"];
|
|
30
|
-
export type ClaudePeerInboundStallReason = (typeof claudePeerInboundStallReasons)[number];
|
|
31
|
-
export type ClaudePeerInboundProgress = {
|
|
32
|
-
kind: "stall";
|
|
33
|
-
reason: ClaudePeerInboundStallReason;
|
|
34
|
-
queuedForMs: number;
|
|
35
|
-
};
|
|
36
|
-
export type ClaudePeerAcknowledgmentResult = {
|
|
37
|
-
transportStatus: "transport_written" | "suppressed";
|
|
38
|
-
};
|
|
39
|
-
export type ClaudePeerInboundMessage = {
|
|
40
|
-
inboundId: string;
|
|
41
|
-
content: string;
|
|
42
|
-
sourceTargetId?: string;
|
|
43
|
-
sourceAlias?: string;
|
|
44
|
-
receiptHandle?: string;
|
|
45
|
-
replySupported: boolean;
|
|
46
|
-
trust: "untrusted_same_uid_peer" | "untrusted_anonymous_local_peer";
|
|
47
|
-
};
|
|
48
|
-
export type ClaudePeerProtocolNotice = {
|
|
49
|
-
code: "FRAME_TOO_LARGE" | "INVALID_UTF8" | "INVALID_FRAME" | "UNSUPPORTED_FRAME" | "UNREGISTERED_REPLY_ADDRESS" | "RECEIPT_LIMIT" | "CONNECTION_LIMIT" | "CONNECTION_TIMEOUT" | "CALLBACK_ERROR";
|
|
50
|
-
};
|
|
51
25
|
export type ClaudeProcessIdentity = {
|
|
52
26
|
uid: number;
|
|
53
27
|
generation: string;
|
|
@@ -57,15 +31,10 @@ export type ClaudePeerConnect = (socketPath: string) => Socket;
|
|
|
57
31
|
export type ClaudePeerAdapterOptions = {
|
|
58
32
|
sessionsDir: string;
|
|
59
33
|
socketDir: string;
|
|
60
|
-
deliveryNotices?: GatewayDeliveryNoticeMode;
|
|
61
34
|
maxRegistryEntries?: number;
|
|
62
35
|
maxRegistryBytes?: number;
|
|
63
36
|
maxFrameBytes?: number;
|
|
64
37
|
connectTimeoutMs?: number;
|
|
65
|
-
maxPendingReceipts?: number;
|
|
66
|
-
maxConnections?: number;
|
|
67
|
-
connectionIdleMs?: number;
|
|
68
|
-
maxFramesPerConnection?: number;
|
|
69
38
|
};
|
|
70
39
|
export type ClaudePeerAdapterTestOverrides = {
|
|
71
40
|
expectedUid?: number;
|
|
@@ -73,20 +42,8 @@ export type ClaudePeerAdapterTestOverrides = {
|
|
|
73
42
|
connect?: ClaudePeerConnect;
|
|
74
43
|
now?: () => number;
|
|
75
44
|
createId?: () => string;
|
|
76
|
-
createArtifactToken?: () => string;
|
|
77
|
-
registryRename?: (source: string, destination: string) => Promise<void>;
|
|
78
|
-
registryOperationHook?: (event: {
|
|
79
|
-
operation: "advertise" | "status" | "unadvertise";
|
|
80
|
-
phase: "entered" | "exited";
|
|
81
|
-
generation: string;
|
|
82
|
-
}) => void | Promise<void>;
|
|
83
45
|
userHome?: string;
|
|
84
46
|
tempRoots?: readonly string[];
|
|
85
|
-
postBindHook?: (socketPath: string) => void | Promise<void>;
|
|
86
|
-
};
|
|
87
|
-
export type ClaudePeerListenerOptions = {
|
|
88
|
-
onMessage: (message: ClaudePeerInboundMessage) => void | Promise<void>;
|
|
89
|
-
onProtocolNotice?: (notice: ClaudePeerProtocolNotice) => void | Promise<void>;
|
|
90
47
|
};
|
|
91
48
|
export type ClaudePeerPreparedSendResult = {
|
|
92
49
|
messageId: string;
|
|
@@ -96,38 +53,12 @@ export type ClaudePeerPreparedSend = Readonly<{
|
|
|
96
53
|
messageId: string;
|
|
97
54
|
frameBytes: number;
|
|
98
55
|
sha256: string;
|
|
99
|
-
perform: () => Promise<ClaudePeerPreparedSendResult>;
|
|
56
|
+
perform: (authorize: () => Promise<boolean>) => Promise<ClaudePeerPreparedSendResult>;
|
|
100
57
|
cancel: () => void;
|
|
101
58
|
}>;
|
|
102
|
-
type ParsedRegistryRecord = {
|
|
103
|
-
pid: number;
|
|
104
|
-
sessionId: string;
|
|
105
|
-
cwd: string;
|
|
106
|
-
kind: ClaudePeerKind;
|
|
107
|
-
messagingSocketPath: string;
|
|
108
|
-
name: string;
|
|
109
|
-
status: ClaudePeerStatus;
|
|
110
|
-
embassyAdvertisement: boolean;
|
|
111
|
-
};
|
|
112
|
-
type TargetBinding = Readonly<{
|
|
113
|
-
targetId: string;
|
|
114
|
-
alias: string;
|
|
115
|
-
record: ParsedRegistryRecord;
|
|
116
|
-
}>;
|
|
117
|
-
type AdapterLimits = {
|
|
118
|
-
maxRegistryEntries: number;
|
|
119
|
-
maxRegistryBytes: number;
|
|
120
|
-
maxFrameBytes: number;
|
|
121
|
-
connectTimeoutMs: number;
|
|
122
|
-
maxPendingReceipts: number;
|
|
123
|
-
maxConnections: number;
|
|
124
|
-
connectionIdleMs: number;
|
|
125
|
-
maxFramesPerConnection: number;
|
|
126
|
-
};
|
|
127
59
|
export declare function encodeClaudePeerUserFrame(input: {
|
|
128
60
|
messageId: string;
|
|
129
61
|
content: string;
|
|
130
|
-
from?: string;
|
|
131
62
|
maxFrameBytes?: number;
|
|
132
63
|
}): Buffer;
|
|
133
64
|
export declare class ClaudePeerAdapter {
|
|
@@ -145,62 +76,8 @@ export declare class ClaudePeerAdapter {
|
|
|
145
76
|
* every later delivery resolves the UUID to fresh transport coordinates.
|
|
146
77
|
*/
|
|
147
78
|
resolveReplyAddress(address: string): Promise<ClaudePeerDescriptor>;
|
|
148
|
-
listen(options: ClaudePeerListenerOptions): Promise<ClaudePeerListener>;
|
|
149
79
|
prepareSend(targetId: string, content: string, options: Readonly<{
|
|
150
80
|
deadlineAt: number;
|
|
151
|
-
/** Owned reply address only; no outbound receipt is tracked. */
|
|
152
|
-
replyListener?: ClaudePeerListener;
|
|
153
81
|
}>): Promise<ClaudePeerPreparedSend>;
|
|
154
82
|
close(): Promise<void>;
|
|
155
83
|
}
|
|
156
|
-
type ListenerCreateOptions = {
|
|
157
|
-
sessionsDir: string;
|
|
158
|
-
socketDir: string;
|
|
159
|
-
expectedUid: number;
|
|
160
|
-
limits: AdapterLimits;
|
|
161
|
-
createId: () => string;
|
|
162
|
-
connect: ClaudePeerConnect;
|
|
163
|
-
deliveryNotices: GatewayDeliveryNoticeMode;
|
|
164
|
-
resolveReplyAddress: (address: string) => Promise<TargetBinding>;
|
|
165
|
-
resolveSessionBinding: (sessionId: string) => Promise<TargetBinding>;
|
|
166
|
-
options: ClaudePeerListenerOptions;
|
|
167
|
-
generation: string;
|
|
168
|
-
registryRename: (source: string, destination: string) => Promise<void>;
|
|
169
|
-
registryOperationHook?: ClaudePeerAdapterTestOverrides["registryOperationHook"];
|
|
170
|
-
runRegistryMutation: <T>(operation: () => Promise<T>) => Promise<T>;
|
|
171
|
-
postBindHook: ClaudePeerAdapterTestOverrides["postBindHook"];
|
|
172
|
-
onClosed: () => void;
|
|
173
|
-
};
|
|
174
|
-
export declare class ClaudePeerListener {
|
|
175
|
-
#private;
|
|
176
|
-
readonly address: string;
|
|
177
|
-
readonly generation: string;
|
|
178
|
-
private constructor();
|
|
179
|
-
static create(options: ListenerCreateOptions): Promise<ClaudePeerListener>;
|
|
180
|
-
get closed(): boolean;
|
|
181
|
-
advertise(name: string, cwd: string): Promise<void>;
|
|
182
|
-
updateAdvertisedStatus(status: ClaudePeerStatus): Promise<void>;
|
|
183
|
-
unadvertise(name?: string): Promise<void>;
|
|
184
|
-
acknowledge(receiptHandle: string, status: "held" | "delivered" | "denied" | "expired", diagnostic?: ClaudePeerDeliveryDiagnostic): Promise<ClaudePeerAcknowledgmentResult>;
|
|
185
|
-
/**
|
|
186
|
-
* Writes one nonterminal gateway progress frame without synthesizing a
|
|
187
|
-
* native peer_message_status transition. The receipt remains available for
|
|
188
|
-
* its later exact terminal acknowledgement or explicit release.
|
|
189
|
-
*/
|
|
190
|
-
notifyInboundProgress(receiptHandle: string, progress: ClaudePeerInboundProgress): Promise<ClaudePeerAcknowledgmentResult>;
|
|
191
|
-
/**
|
|
192
|
-
* Releases a listener-owned native receipt capability without writing to the
|
|
193
|
-
* peer. The service uses this after a terminal notification becomes
|
|
194
|
-
* definitively undeliverable so bounded receipt capacity cannot leak.
|
|
195
|
-
*/
|
|
196
|
-
releaseInboundReceipt(receiptHandle: string): boolean;
|
|
197
|
-
/**
|
|
198
|
-
* Stop admitting new user-message frames while keeping the listener alive
|
|
199
|
-
* for terminal receipt writes. The promise joins every frame already
|
|
200
|
-
* admitted, so controller shutdown can drain service receipt work before
|
|
201
|
-
* closing the provider socket.
|
|
202
|
-
*/
|
|
203
|
-
quiesceInbound(): Promise<void>;
|
|
204
|
-
close(): Promise<void>;
|
|
205
|
-
}
|
|
206
|
-
export {};
|