@dp-pcs/ogp 0.9.1 → 0.10.1
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/dist/cli/agent-comms.d.ts +1 -1
- package/dist/cli/agent-comms.d.ts.map +1 -1
- package/dist/cli/agent-comms.js +9 -2
- package/dist/cli/agent-comms.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +74 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/federation.d.ts +27 -0
- package/dist/cli/federation.d.ts.map +1 -1
- package/dist/cli/federation.js +88 -42
- package/dist/cli/federation.js.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/daemon/agent-comms.d.ts +9 -0
- package/dist/daemon/agent-comms.d.ts.map +1 -1
- package/dist/daemon/agent-comms.js +65 -0
- package/dist/daemon/agent-comms.js.map +1 -1
- package/dist/daemon/relay-client.d.ts +16 -0
- package/dist/daemon/relay-client.d.ts.map +1 -0
- package/dist/daemon/relay-client.js +312 -0
- package/dist/daemon/relay-client.js.map +1 -0
- package/dist/daemon/rendezvous.d.ts +56 -2
- package/dist/daemon/rendezvous.d.ts.map +1 -1
- package/dist/daemon/rendezvous.js +99 -4
- package/dist/daemon/rendezvous.js.map +1 -1
- package/dist/daemon/server.d.ts +1 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +140 -26
- package/dist/daemon/server.js.map +1 -1
- package/dist/shared/config.d.ts +28 -0
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +7 -0
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/relay-protocol.d.ts +91 -0
- package/dist/shared/relay-protocol.d.ts.map +1 -0
- package/dist/shared/relay-protocol.js +55 -0
- package/dist/shared/relay-protocol.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-comms.js","sourceRoot":"","sources":["../../src/daemon/agent-comms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,EAMX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,SAAS,kBAAkB;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC;AAKD,MAAM,0BAA0B,GAAqB;IACnD,YAAY,EAAE;QACZ,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;QAC/B,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;KAC7B;IACD,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM;QAAE,OAAO,0BAA0B,CAAC;IAC/C,OAAO,MAAM,CAAC,UAAU,IAAI,0BAA0B,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,gBAAkC;IACrE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC;IACrC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IAC5D,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,KAAoB,EAAE,KAAc;IACtF,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAChE,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa;IAC9D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B,4CAA4C;IAC5C,IAAI,IAAI,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,8CAA8C;IAC9C,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAED,uCAAuC;IACvC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B,6BAA6B;IAC7B,MAAM,SAAS,GAAmB,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IAE7D,uCAAuC;IACvC,IAAI,IAAI,EAAE,cAAc,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAClE,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAgBD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuC;IACjE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,WAAW;QAAE,OAAO;IAEhC,eAAe,EAAE,CAAC;IAElB,MAAM,SAAS,GAAkB;QAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,KAAK;KACT,CAAC;IAEF,+BAA+B;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,IAAI,UAAU,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAClC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;QACxD,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,UAAU,IAAI,CAAC;IAE5H,qBAAqB;IACrB,EAAE,CAAC,cAAc,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1D,sBAAsB;IACtB,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-comms.js","sourceRoot":"","sources":["../../src/daemon/agent-comms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type RelayFrame } from '../shared/relay-protocol.js';
|
|
2
|
+
/**
|
|
3
|
+
* Start the persistent receiver socket. Call from server.ts startup ONLY when
|
|
4
|
+
* transport.mode === 'relay'. Idempotent; reconnects with backoff on drop.
|
|
5
|
+
*/
|
|
6
|
+
export declare function startRelayClient(relayUrl: string): Promise<void>;
|
|
7
|
+
/** Stop the receiver and reject any in-flight work. Returns when torn down. */
|
|
8
|
+
export declare function stopRelayClient(): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Deliver a signed envelope to a relay-mode peer and await their MessageResponse.
|
|
11
|
+
* Reuses the live receiver socket when it's on the same relay; otherwise opens a
|
|
12
|
+
* short-lived sender socket just for this exchange. Throws on timeout or
|
|
13
|
+
* peer-not-connected (callers map that to a failed-send result).
|
|
14
|
+
*/
|
|
15
|
+
export declare function deliverViaRelay(relayUrl: string, toPubkey: string, frame: RelayFrame, timeoutMs?: number): Promise<unknown>;
|
|
16
|
+
//# sourceMappingURL=relay-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/daemon/relay-client.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,UAAU,EAGhB,MAAM,6BAA6B,CAAC;AA4LrC;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAgCD,+EAA+E;AAC/E,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AAMD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EACjB,SAAS,GAAE,MAAmC,GAC7C,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
// Daemon-side relay transport client (bd-b7em Phase 2).
|
|
2
|
+
//
|
|
3
|
+
// Two responsibilities, one module:
|
|
4
|
+
// 1. RECEIVER — when this daemon runs transport.mode='relay', hold a persistent
|
|
5
|
+
// outbound WS to the relay so peers can reach us with no inbound port. Inbound
|
|
6
|
+
// `deliver` frames run through handleMessage() (transport-agnostic) and the
|
|
7
|
+
// MessageResponse is sent back as a `response` frame.
|
|
8
|
+
// 2. SENDER — deliverViaRelay() ships a signed envelope to a relay-mode peer and
|
|
9
|
+
// awaits their response. Reuses the live receiver socket when on the same relay;
|
|
10
|
+
// otherwise opens a short-lived sender socket just for the response leg.
|
|
11
|
+
//
|
|
12
|
+
// The relay is UNTRUSTED. E2E Ed25519 is inside the forwarded `frame`; auth only
|
|
13
|
+
// proves pubkey ownership for routing. Mirrors the rendezvous heartbeat/reconnect
|
|
14
|
+
// shape (src/daemon/rendezvous.ts) and graceful-shutdown contract (server.ts).
|
|
15
|
+
import WebSocket from 'ws';
|
|
16
|
+
import crypto from 'node:crypto';
|
|
17
|
+
import { HEARTBEAT_MS, MAX_FRAME_BYTES, parseFrame, isChallengeFrame, } from '../shared/relay-protocol.js';
|
|
18
|
+
const AUTH_TIMEOUT_MS = 10_000;
|
|
19
|
+
const PONG_GRACE_MS = 10_000;
|
|
20
|
+
const DEFAULT_DELIVER_TIMEOUT_MS = 30_000;
|
|
21
|
+
const BACKOFF_START_MS = 1_000;
|
|
22
|
+
const BACKOFF_MAX_MS = 30_000;
|
|
23
|
+
/** A single authenticated relay connection (receiver or sender). */
|
|
24
|
+
class RelaySocket {
|
|
25
|
+
relayUrl;
|
|
26
|
+
role;
|
|
27
|
+
pubkey;
|
|
28
|
+
privateKey;
|
|
29
|
+
onDeliver;
|
|
30
|
+
onClosed;
|
|
31
|
+
ws = null;
|
|
32
|
+
pingTimer = null;
|
|
33
|
+
pongTimer = null;
|
|
34
|
+
authed = false;
|
|
35
|
+
pending = new Map();
|
|
36
|
+
constructor(relayUrl, role, pubkey, privateKey, onDeliver, onClosed) {
|
|
37
|
+
this.relayUrl = relayUrl;
|
|
38
|
+
this.role = role;
|
|
39
|
+
this.pubkey = pubkey;
|
|
40
|
+
this.privateKey = privateKey;
|
|
41
|
+
this.onDeliver = onDeliver;
|
|
42
|
+
this.onClosed = onClosed;
|
|
43
|
+
}
|
|
44
|
+
/** Open the socket and complete the Ed25519 challenge handshake. */
|
|
45
|
+
connect() {
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
let settled = false;
|
|
48
|
+
const ws = new WebSocket(this.relayUrl, { maxPayload: MAX_FRAME_BYTES });
|
|
49
|
+
this.ws = ws;
|
|
50
|
+
const authTimer = setTimeout(() => {
|
|
51
|
+
if (!settled) {
|
|
52
|
+
settled = true;
|
|
53
|
+
ws.terminate();
|
|
54
|
+
reject(new Error('relay auth timeout'));
|
|
55
|
+
}
|
|
56
|
+
}, AUTH_TIMEOUT_MS);
|
|
57
|
+
ws.on('message', (data) => {
|
|
58
|
+
const frame = parseFrame(data.toString());
|
|
59
|
+
if (!frame)
|
|
60
|
+
return;
|
|
61
|
+
// Handshake: answer the server challenge by signing the nonce.
|
|
62
|
+
if (!this.authed && isChallengeFrame(frame)) {
|
|
63
|
+
void this.sendAuth(frame.challengeId, frame.nonce);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!this.authed && frame.type === 'auth-ok') {
|
|
67
|
+
this.authed = true;
|
|
68
|
+
clearTimeout(authTimer);
|
|
69
|
+
this.startHeartbeat();
|
|
70
|
+
if (!settled) {
|
|
71
|
+
settled = true;
|
|
72
|
+
resolve();
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!this.authed && frame.type === 'auth-err') {
|
|
77
|
+
clearTimeout(authTimer);
|
|
78
|
+
ws.terminate();
|
|
79
|
+
if (!settled) {
|
|
80
|
+
settled = true;
|
|
81
|
+
reject(new Error(`relay auth rejected: ${frame.reason}`));
|
|
82
|
+
}
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (frame.type === 'pong') {
|
|
86
|
+
this.clearPong();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (frame.type === 'ping') {
|
|
90
|
+
this.safeSend({ type: 'pong' });
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (frame.type === 'deliver') {
|
|
94
|
+
// Inbound delivery for us — hand to the receiver dispatch.
|
|
95
|
+
if (this.onDeliver)
|
|
96
|
+
this.onDeliver(frame.reqId, frame.frame);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (frame.type === 'response') {
|
|
100
|
+
const p = this.pending.get(frame.reqId);
|
|
101
|
+
if (p) {
|
|
102
|
+
clearTimeout(p.timer);
|
|
103
|
+
this.pending.delete(frame.reqId);
|
|
104
|
+
p.resolve(frame.result);
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (frame.type === 'error') {
|
|
109
|
+
if (frame.reqId) {
|
|
110
|
+
const p = this.pending.get(frame.reqId);
|
|
111
|
+
if (p) {
|
|
112
|
+
clearTimeout(p.timer);
|
|
113
|
+
this.pending.delete(frame.reqId);
|
|
114
|
+
p.reject(new Error(`${frame.code}: ${frame.message}`));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
ws.on('close', () => {
|
|
121
|
+
clearTimeout(authTimer);
|
|
122
|
+
this.teardown();
|
|
123
|
+
if (!settled) {
|
|
124
|
+
settled = true;
|
|
125
|
+
reject(new Error('relay socket closed during auth'));
|
|
126
|
+
}
|
|
127
|
+
if (this.onClosed)
|
|
128
|
+
this.onClosed();
|
|
129
|
+
});
|
|
130
|
+
ws.on('error', (err) => {
|
|
131
|
+
clearTimeout(authTimer);
|
|
132
|
+
if (!settled) {
|
|
133
|
+
settled = true;
|
|
134
|
+
reject(err);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
async sendAuth(challengeId, nonce) {
|
|
140
|
+
const { signCanonical } = await import('../shared/signing.js');
|
|
141
|
+
const payload = { pubkey: this.pubkey, challengeId, nonce, role: this.role };
|
|
142
|
+
const { payloadStr, signature } = signCanonical(payload, this.privateKey);
|
|
143
|
+
this.safeSend({ type: 'auth', pubkey: this.pubkey, challengeId, payloadStr, signature });
|
|
144
|
+
}
|
|
145
|
+
/** Send a deliver request and await the peer's MessageResponse (or error). */
|
|
146
|
+
deliver(toPubkey, frame, timeoutMs) {
|
|
147
|
+
return new Promise((resolve, reject) => {
|
|
148
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
149
|
+
reject(new Error('relay socket not open'));
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const reqId = crypto.randomUUID();
|
|
153
|
+
const timer = setTimeout(() => {
|
|
154
|
+
this.pending.delete(reqId);
|
|
155
|
+
reject(new Error('relay deliver timeout'));
|
|
156
|
+
}, timeoutMs);
|
|
157
|
+
this.pending.set(reqId, { resolve, reject, timer });
|
|
158
|
+
this.safeSend({ type: 'deliver', reqId, to: toPubkey, frame });
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/** Send a response frame back to the relay (receiver leg). */
|
|
162
|
+
sendResponse(reqId, result) {
|
|
163
|
+
this.safeSend({ type: 'response', reqId, result });
|
|
164
|
+
}
|
|
165
|
+
startHeartbeat() {
|
|
166
|
+
this.pingTimer = setInterval(() => {
|
|
167
|
+
this.safeSend({ type: 'ping' });
|
|
168
|
+
this.clearPong();
|
|
169
|
+
this.pongTimer = setTimeout(() => {
|
|
170
|
+
// No pong in time — force a reconnect by tearing the socket down.
|
|
171
|
+
this.ws?.terminate();
|
|
172
|
+
}, PONG_GRACE_MS);
|
|
173
|
+
}, HEARTBEAT_MS);
|
|
174
|
+
}
|
|
175
|
+
clearPong() {
|
|
176
|
+
if (this.pongTimer) {
|
|
177
|
+
clearTimeout(this.pongTimer);
|
|
178
|
+
this.pongTimer = null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
safeSend(obj) {
|
|
182
|
+
try {
|
|
183
|
+
if (this.ws && this.ws.readyState === WebSocket.OPEN)
|
|
184
|
+
this.ws.send(JSON.stringify(obj));
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// best effort; close/error handlers drive recovery
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
teardown() {
|
|
191
|
+
if (this.pingTimer) {
|
|
192
|
+
clearInterval(this.pingTimer);
|
|
193
|
+
this.pingTimer = null;
|
|
194
|
+
}
|
|
195
|
+
this.clearPong();
|
|
196
|
+
for (const [, p] of this.pending) {
|
|
197
|
+
clearTimeout(p.timer);
|
|
198
|
+
p.reject(new Error('relay socket closed'));
|
|
199
|
+
}
|
|
200
|
+
this.pending.clear();
|
|
201
|
+
}
|
|
202
|
+
close() {
|
|
203
|
+
this.teardown();
|
|
204
|
+
try {
|
|
205
|
+
this.ws?.close(1000);
|
|
206
|
+
}
|
|
207
|
+
catch { /* ignore */ }
|
|
208
|
+
this.ws = null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
212
|
+
// Persistent receiver (module singleton, mirrors rendezvous.ts lifecycle)
|
|
213
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
214
|
+
let receiver = null;
|
|
215
|
+
let receiverRelayUrl = null;
|
|
216
|
+
let reconnectTimer = null;
|
|
217
|
+
let backoffMs = BACKOFF_START_MS;
|
|
218
|
+
let stopped = false;
|
|
219
|
+
let identity = null;
|
|
220
|
+
/** Dispatch an inbound delivery through the transport-agnostic message handler. */
|
|
221
|
+
async function dispatchInbound(sock, reqId, frame) {
|
|
222
|
+
try {
|
|
223
|
+
const { handleMessage } = await import('./message-handler.js');
|
|
224
|
+
const result = await handleMessage(frame.message, frame.signature, frame.messageStr);
|
|
225
|
+
sock.sendResponse(reqId, result);
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
sock.sendResponse(reqId, { success: false, nonce: '', error: `relay receive failed: ${err.message}`, statusCode: 500 });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Start the persistent receiver socket. Call from server.ts startup ONLY when
|
|
233
|
+
* transport.mode === 'relay'. Idempotent; reconnects with backoff on drop.
|
|
234
|
+
*/
|
|
235
|
+
export async function startRelayClient(relayUrl) {
|
|
236
|
+
const { getPublicKey, getPrivateKey } = await import('./keypair.js');
|
|
237
|
+
identity = { pubkey: getPublicKey(), privateKey: getPrivateKey() };
|
|
238
|
+
stopped = false;
|
|
239
|
+
receiverRelayUrl = relayUrl;
|
|
240
|
+
await connectReceiver();
|
|
241
|
+
}
|
|
242
|
+
async function connectReceiver() {
|
|
243
|
+
if (stopped || !identity || !receiverRelayUrl)
|
|
244
|
+
return;
|
|
245
|
+
const sock = new RelaySocket(receiverRelayUrl, 'receiver', identity.pubkey, identity.privateKey, (reqId, frame) => { void dispatchInbound(sock, reqId, frame); }, () => scheduleReconnect());
|
|
246
|
+
try {
|
|
247
|
+
await sock.connect();
|
|
248
|
+
receiver = sock;
|
|
249
|
+
backoffMs = BACKOFF_START_MS; // reset after a clean auth
|
|
250
|
+
console.log(`[OGP] Relay receiver connected (${receiverRelayUrl}) as ${identity.pubkey.slice(0, 8)}...`);
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
console.warn(`[OGP] Relay receiver connect failed: ${err.message}`);
|
|
254
|
+
scheduleReconnect();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
function scheduleReconnect() {
|
|
258
|
+
if (stopped)
|
|
259
|
+
return;
|
|
260
|
+
if (receiver) {
|
|
261
|
+
receiver = null;
|
|
262
|
+
}
|
|
263
|
+
if (reconnectTimer)
|
|
264
|
+
return; // already scheduled
|
|
265
|
+
const delay = backoffMs;
|
|
266
|
+
backoffMs = Math.min(backoffMs * 2, BACKOFF_MAX_MS);
|
|
267
|
+
reconnectTimer = setTimeout(() => {
|
|
268
|
+
reconnectTimer = null;
|
|
269
|
+
void connectReceiver();
|
|
270
|
+
}, delay);
|
|
271
|
+
}
|
|
272
|
+
/** Stop the receiver and reject any in-flight work. Returns when torn down. */
|
|
273
|
+
export async function stopRelayClient() {
|
|
274
|
+
stopped = true;
|
|
275
|
+
if (reconnectTimer) {
|
|
276
|
+
clearTimeout(reconnectTimer);
|
|
277
|
+
reconnectTimer = null;
|
|
278
|
+
}
|
|
279
|
+
if (receiver) {
|
|
280
|
+
receiver.close();
|
|
281
|
+
receiver = null;
|
|
282
|
+
}
|
|
283
|
+
receiverRelayUrl = null;
|
|
284
|
+
backoffMs = BACKOFF_START_MS;
|
|
285
|
+
}
|
|
286
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
287
|
+
// Sender leg
|
|
288
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
289
|
+
/**
|
|
290
|
+
* Deliver a signed envelope to a relay-mode peer and await their MessageResponse.
|
|
291
|
+
* Reuses the live receiver socket when it's on the same relay; otherwise opens a
|
|
292
|
+
* short-lived sender socket just for this exchange. Throws on timeout or
|
|
293
|
+
* peer-not-connected (callers map that to a failed-send result).
|
|
294
|
+
*/
|
|
295
|
+
export async function deliverViaRelay(relayUrl, toPubkey, frame, timeoutMs = DEFAULT_DELIVER_TIMEOUT_MS) {
|
|
296
|
+
// Fast path: piggyback on our persistent receiver if it targets the same relay.
|
|
297
|
+
if (receiver && receiver.ws && receiver.ws.readyState === WebSocket.OPEN && receiverRelayUrl === relayUrl) {
|
|
298
|
+
return receiver.deliver(toPubkey, frame, timeoutMs);
|
|
299
|
+
}
|
|
300
|
+
// Slow path: open a transient sender socket (even a direct-mode daemon needs a
|
|
301
|
+
// live socket to receive the response leg back from the relay).
|
|
302
|
+
const { getPublicKey, getPrivateKey } = await import('./keypair.js');
|
|
303
|
+
const sock = new RelaySocket(relayUrl, 'sender', getPublicKey(), getPrivateKey(), null, null);
|
|
304
|
+
try {
|
|
305
|
+
await sock.connect();
|
|
306
|
+
return await sock.deliver(toPubkey, frame, timeoutMs);
|
|
307
|
+
}
|
|
308
|
+
finally {
|
|
309
|
+
sock.close();
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=relay-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/daemon/relay-client.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,oCAAoC;AACpC,iFAAiF;AACjF,mFAAmF;AACnF,gFAAgF;AAChF,0DAA0D;AAC1D,kFAAkF;AAClF,qFAAqF;AACrF,6EAA6E;AAC7E,EAAE;AACF,iFAAiF;AACjF,kFAAkF;AAClF,+EAA+E;AAE/E,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,GAIjB,MAAM,6BAA6B,CAAC;AAErC,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,cAAc,GAAG,MAAM,CAAC;AAQ9B,oEAAoE;AACpE,MAAM,WAAW;IAQJ;IACA;IACQ;IACA;IACA;IACA;IAZnB,EAAE,GAAqB,IAAI,CAAC;IACpB,SAAS,GAA0C,IAAI,CAAC;IACxD,SAAS,GAAyC,IAAI,CAAC;IACvD,MAAM,GAAG,KAAK,CAAC;IACd,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE9C,YACW,QAAgB,EAChB,IAAe,EACP,MAAc,EACd,UAAkB,EAClB,SAA8D,EAC9D,QAA6B;QALrC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAW;QACP,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAqD;QAC9D,aAAQ,GAAR,QAAQ,CAAqB;IAC7C,CAAC;IAEJ,oEAAoE;IACpE,OAAO;QACL,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAEb,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC;oBAAC,EAAE,CAAC,SAAS,EAAE,CAAC;oBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAAC,CAAC;YAC5F,CAAC,EAAE,eAAe,CAAC,CAAC;YAEpB,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,KAAK;oBAAE,OAAO;gBAEnB,+DAA+D;gBAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5C,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnD,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;wBAAC,OAAO,GAAG,IAAI,CAAC;wBAAC,OAAO,EAAE,CAAC;oBAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9C,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,EAAE,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,OAAO,EAAE,CAAC;wBAAC,OAAO,GAAG,IAAI,CAAC;wBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAC5F,OAAO;gBACT,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACxD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAEvE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC7B,2DAA2D;oBAC3D,IAAI,IAAI,CAAC,SAAS;wBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxC,IAAI,CAAC,EAAE,CAAC;wBAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAAC,CAAC;oBAC5F,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBAChB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACxC,IAAI,CAAC,EAAE,CAAC;4BAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;4BAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;wBAAC,CAAC;oBAC7H,CAAC;oBACD,OAAO;gBACT,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAClB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,EAAE,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC;oBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACvF,IAAI,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,IAAI,CAAC,OAAO,EAAE,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC;oBAAC,MAAM,CAAC,GAAY,CAAC,CAAC;gBAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,KAAa;QACvD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAyB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACnG,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,8EAA8E;IAC9E,OAAO,CAAC,QAAgB,EAAE,KAAiB,EAAE,SAAiB;QAC5D,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC7C,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,YAAY,CAAC,KAAa,EAAE,MAAe;QACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,kEAAkE;gBAClE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC;YACvB,CAAC,EAAE,aAAa,CAAC,CAAC;QACpB,CAAC,EAAE,YAAY,CAAC,CAAC;IACnB,CAAC;IAEO,SAAS;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;IAC9E,CAAC;IAEO,QAAQ,CAAC,GAAY;QAC3B,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;gBAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAAC,CAAC;QACxG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACjB,CAAC;CACF;AAED,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAEhF,IAAI,QAAQ,GAAuB,IAAI,CAAC;AACxC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAC3C,IAAI,cAAc,GAAyC,IAAI,CAAC;AAChE,IAAI,SAAS,GAAG,gBAAgB,CAAC;AACjC,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI,QAAQ,GAAkD,IAAI,CAAC;AAEnE,mFAAmF;AACnF,KAAK,UAAU,eAAe,CAAC,IAAiB,EAAE,KAAa,EAAE,KAAiB;IAChF,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAgB,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9F,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,yBAA0B,GAAa,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACrI,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACrE,QAAQ,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,CAAC;IACnE,OAAO,GAAG,KAAK,CAAC;IAChB,gBAAgB,GAAG,QAAQ,CAAC;IAC5B,MAAM,eAAe,EAAE,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB;QAAE,OAAO;IACtD,MAAM,IAAI,GAAG,IAAI,WAAW,CAC1B,gBAAgB,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAClE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAC/D,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAC1B,CAAC;IACF,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,SAAS,GAAG,gBAAgB,CAAC,CAAC,2BAA2B;QACzD,OAAO,CAAC,GAAG,CAAC,mCAAmC,gBAAgB,QAAQ,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3G,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,wCAAyC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,iBAAiB,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,OAAO;QAAE,OAAO;IACpB,IAAI,QAAQ,EAAE,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC;IAAC,CAAC;IAClC,IAAI,cAAc;QAAE,OAAO,CAAC,oBAAoB;IAChD,MAAM,KAAK,GAAG,SAAS,CAAC;IACxB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IACpD,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;QAC/B,cAAc,GAAG,IAAI,CAAC;QACtB,KAAK,eAAe,EAAE,CAAC;IACzB,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,GAAG,IAAI,CAAC;IACf,IAAI,cAAc,EAAE,CAAC;QAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAAC,cAAc,GAAG,IAAI,CAAC;IAAC,CAAC;IAC5E,IAAI,QAAQ,EAAE,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC;IAAC,CAAC;IACpD,gBAAgB,GAAG,IAAI,CAAC;IACxB,SAAS,GAAG,gBAAgB,CAAC;AAC/B,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,QAAgB,EAChB,KAAiB,EACjB,YAAoB,0BAA0B;IAE9C,gFAAgF;IAChF,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC1G,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,+EAA+E;IAC/E,gEAAgE;IAChE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9F,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -8,12 +8,40 @@
|
|
|
8
8
|
* - Deregistration on shutdown (best effort)
|
|
9
9
|
* - Peer lookup by public key
|
|
10
10
|
*/
|
|
11
|
-
import type { RendezvousConfig } from '../shared/config.js';
|
|
11
|
+
import type { RendezvousConfig, TransportConfig } from '../shared/config.js';
|
|
12
|
+
/**
|
|
13
|
+
* Transport descriptor advertised inside the signed registration (bd-b7em).
|
|
14
|
+
* Mirrors the rendezvous server's shape. Absent ⇒ direct (we omit it entirely
|
|
15
|
+
* for direct mode to stay byte-identical with pre-bd-b7em registrations).
|
|
16
|
+
*/
|
|
17
|
+
type TransportDescriptor = {
|
|
18
|
+
transport: 'relay';
|
|
19
|
+
relayUrl: string;
|
|
20
|
+
} | {
|
|
21
|
+
transport: 'iroh';
|
|
22
|
+
nodeId: string;
|
|
23
|
+
relayUrl?: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Build the transport descriptor to advertise, from config. Returns undefined
|
|
27
|
+
* for 'direct' (or absent) — direct peers register exactly as before, and a
|
|
28
|
+
* missing descriptor is interpreted as direct by the server.
|
|
29
|
+
*
|
|
30
|
+
* relay without a configured url, or iroh without a node id, fall back to
|
|
31
|
+
* undefined (direct) rather than advertising an unreachable transport.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildTransportDescriptor(transport: TransportConfig | undefined, rendezvousUrl: string, irohNodeId?: string): TransportDescriptor | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the relay WebSocket URL for THIS daemon's own receiver socket
|
|
36
|
+
* (bd-b7em Phase 2). Uses an explicitly configured relay.url, else derives
|
|
37
|
+
* wss://<rendezvous-host>/relay. Returns undefined when relay can't be resolved.
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveOwnRelayUrl(transport: TransportConfig | undefined, rendezvousUrl: string | undefined): string | undefined;
|
|
12
40
|
/**
|
|
13
41
|
* Start rendezvous registration and heartbeat.
|
|
14
42
|
* Call this from server.ts after the daemon begins listening.
|
|
15
43
|
*/
|
|
16
|
-
export declare function startRendezvous(config: RendezvousConfig, pubkey: string, port: number): Promise<void>;
|
|
44
|
+
export declare function startRendezvous(config: RendezvousConfig, pubkey: string, port: number, transportConfig?: TransportConfig): Promise<void>;
|
|
17
45
|
/**
|
|
18
46
|
* Stop heartbeat and deregister from rendezvous (best effort).
|
|
19
47
|
* Call from server.ts shutdown path.
|
|
@@ -24,4 +52,30 @@ export declare function stopRendezvous(): Promise<void>;
|
|
|
24
52
|
* Returns the peer URL (http://ip:port or publicUrl) or null if not found.
|
|
25
53
|
*/
|
|
26
54
|
export declare function lookupPeer(config: RendezvousConfig, pubkey: string): Promise<string | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Resolved transport for a peer (bd-b7em). Phase 1: senders still deliver via
|
|
57
|
+
* `direct` (the `url`); `relay`/`iroh` are carried so Phase 2's sender can branch
|
|
58
|
+
* on `mode`. Direct/legacy records resolve to `{ mode:'direct', url }` exactly as
|
|
59
|
+
* `lookupPeer` does today, so existing behavior is unchanged.
|
|
60
|
+
*/
|
|
61
|
+
export type ResolvedTransport = {
|
|
62
|
+
mode: 'direct';
|
|
63
|
+
url: string;
|
|
64
|
+
} | {
|
|
65
|
+
mode: 'relay';
|
|
66
|
+
relayUrl: string;
|
|
67
|
+
pubkey: string;
|
|
68
|
+
} | {
|
|
69
|
+
mode: 'iroh';
|
|
70
|
+
nodeId: string;
|
|
71
|
+
relayUrl?: string;
|
|
72
|
+
pubkey: string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Look up a peer and resolve HOW to reach them. Backward compatible: a peer with
|
|
76
|
+
* no transport descriptor (or transport:'direct') resolves to direct via the
|
|
77
|
+
* same publicUrl / ip:port logic as `lookupPeer`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function lookupPeerTransport(config: RendezvousConfig, pubkey: string): Promise<ResolvedTransport | null>;
|
|
80
|
+
export {};
|
|
27
81
|
//# sourceMappingURL=rendezvous.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendezvous.d.ts","sourceRoot":"","sources":["../../src/daemon/rendezvous.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"rendezvous.d.ts","sourceRoot":"","sources":["../../src/daemon/rendezvous.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI7E;;;;GAIG;AACH,KAAK,mBAAmB,GACpB;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,mBAAmB,GAAG,SAAS,CAYjC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,MAAM,GAAG,SAAS,CAIpB;AAsED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBpD;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4BxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAsCnC"}
|
|
@@ -9,6 +9,52 @@
|
|
|
9
9
|
* - Peer lookup by public key
|
|
10
10
|
*/
|
|
11
11
|
const HEARTBEAT_INTERVAL_MS = 30_000; // 30 seconds
|
|
12
|
+
/**
|
|
13
|
+
* Build the transport descriptor to advertise, from config. Returns undefined
|
|
14
|
+
* for 'direct' (or absent) — direct peers register exactly as before, and a
|
|
15
|
+
* missing descriptor is interpreted as direct by the server.
|
|
16
|
+
*
|
|
17
|
+
* relay without a configured url, or iroh without a node id, fall back to
|
|
18
|
+
* undefined (direct) rather than advertising an unreachable transport.
|
|
19
|
+
*/
|
|
20
|
+
export function buildTransportDescriptor(transport, rendezvousUrl, irohNodeId) {
|
|
21
|
+
const mode = transport?.mode ?? 'direct';
|
|
22
|
+
if (mode === 'relay') {
|
|
23
|
+
const relayUrl = transport?.relay?.url || defaultRelayUrl(rendezvousUrl);
|
|
24
|
+
if (!relayUrl)
|
|
25
|
+
return undefined;
|
|
26
|
+
return { transport: 'relay', relayUrl };
|
|
27
|
+
}
|
|
28
|
+
if (mode === 'iroh') {
|
|
29
|
+
if (!irohNodeId)
|
|
30
|
+
return undefined; // no node yet (Phase 3) ⇒ stay direct
|
|
31
|
+
return { transport: 'iroh', nodeId: irohNodeId, ...(transport?.iroh?.relayUrl ? { relayUrl: transport.iroh.relayUrl } : {}) };
|
|
32
|
+
}
|
|
33
|
+
return undefined; // direct
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve the relay WebSocket URL for THIS daemon's own receiver socket
|
|
37
|
+
* (bd-b7em Phase 2). Uses an explicitly configured relay.url, else derives
|
|
38
|
+
* wss://<rendezvous-host>/relay. Returns undefined when relay can't be resolved.
|
|
39
|
+
*/
|
|
40
|
+
export function resolveOwnRelayUrl(transport, rendezvousUrl) {
|
|
41
|
+
if (transport?.relay?.url)
|
|
42
|
+
return transport.relay.url;
|
|
43
|
+
if (rendezvousUrl)
|
|
44
|
+
return defaultRelayUrl(rendezvousUrl);
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/** Derive the default relay endpoint from the rendezvous URL (wss://<host>/relay). */
|
|
48
|
+
function defaultRelayUrl(rendezvousUrl) {
|
|
49
|
+
try {
|
|
50
|
+
const u = new URL(rendezvousUrl);
|
|
51
|
+
const scheme = u.protocol === 'http:' ? 'ws:' : 'wss:';
|
|
52
|
+
return `${scheme}//${u.host}/relay`;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
12
58
|
let heartbeatTimer = null;
|
|
13
59
|
let registeredPubkey = null;
|
|
14
60
|
let activeConfig = null;
|
|
@@ -24,7 +70,7 @@ async function detectPublicIp() {
|
|
|
24
70
|
const data = await res.json();
|
|
25
71
|
return data.ip;
|
|
26
72
|
}
|
|
27
|
-
async function doRegister(config, pubkey, port, publicUrl) {
|
|
73
|
+
async function doRegister(config, pubkey, port, publicUrl, transport) {
|
|
28
74
|
// SECURITY (F-02): Sign the registration so the rendezvous server can verify
|
|
29
75
|
// we actually hold the private key matching this pubkey. Without this, anyone
|
|
30
76
|
// could squat on someone else's pubkey at the rendezvous.
|
|
@@ -34,6 +80,11 @@ async function doRegister(config, pubkey, port, publicUrl) {
|
|
|
34
80
|
if (publicUrl) {
|
|
35
81
|
innerPayload.publicUrl = publicUrl;
|
|
36
82
|
}
|
|
83
|
+
// bd-b7em: advertise transport INSIDE the signed payload (only when non-direct,
|
|
84
|
+
// so direct registrations stay byte-identical with pre-bd-b7em daemons).
|
|
85
|
+
if (transport) {
|
|
86
|
+
innerPayload.transport = transport;
|
|
87
|
+
}
|
|
37
88
|
const { payloadStr, signature } = signCanonical(innerPayload, getPrivateKey());
|
|
38
89
|
const res = await fetch(`${config.url}/register`, {
|
|
39
90
|
method: 'POST',
|
|
@@ -52,13 +103,19 @@ async function doRegister(config, pubkey, port, publicUrl) {
|
|
|
52
103
|
* Start rendezvous registration and heartbeat.
|
|
53
104
|
* Call this from server.ts after the daemon begins listening.
|
|
54
105
|
*/
|
|
55
|
-
export async function startRendezvous(config, pubkey, port) {
|
|
106
|
+
export async function startRendezvous(config, pubkey, port, transportConfig) {
|
|
56
107
|
if (!config.enabled)
|
|
57
108
|
return;
|
|
58
109
|
activeConfig = config;
|
|
59
110
|
registeredPubkey = pubkey;
|
|
60
111
|
// Check for OGP_PUBLIC_URL env var or config.publicUrl
|
|
61
112
|
const publicUrl = process.env.OGP_PUBLIC_URL || config.publicUrl;
|
|
113
|
+
// bd-b7em: build the transport descriptor once (undefined ⇒ direct). iroh node
|
|
114
|
+
// id is not available in Phase 1, so iroh mode advertises nothing yet.
|
|
115
|
+
const transport = buildTransportDescriptor(transportConfig, config.url);
|
|
116
|
+
if (transport) {
|
|
117
|
+
console.log(`[OGP] Transport mode: ${transport.transport}`);
|
|
118
|
+
}
|
|
62
119
|
// Detect public IP (informational — rendezvous server auto-detects from socket)
|
|
63
120
|
let publicIp = 'unknown';
|
|
64
121
|
try {
|
|
@@ -69,7 +126,7 @@ export async function startRendezvous(config, pubkey, port) {
|
|
|
69
126
|
}
|
|
70
127
|
// Initial registration
|
|
71
128
|
try {
|
|
72
|
-
await doRegister(config, pubkey, port, publicUrl);
|
|
129
|
+
await doRegister(config, pubkey, port, publicUrl, transport);
|
|
73
130
|
if (publicUrl) {
|
|
74
131
|
console.log(`[OGP] Registered with rendezvous at ${config.url} as ${pubkey.slice(0, 8)}... (publicUrl: ${publicUrl})`);
|
|
75
132
|
}
|
|
@@ -86,7 +143,7 @@ export async function startRendezvous(config, pubkey, port) {
|
|
|
86
143
|
if (!activeConfig)
|
|
87
144
|
return;
|
|
88
145
|
try {
|
|
89
|
-
await doRegister(activeConfig, pubkey, port, publicUrl);
|
|
146
|
+
await doRegister(activeConfig, pubkey, port, publicUrl, transport);
|
|
90
147
|
}
|
|
91
148
|
catch (err) {
|
|
92
149
|
console.warn(`[OGP] Rendezvous heartbeat failed: ${err.message}`);
|
|
@@ -148,4 +205,42 @@ export async function lookupPeer(config, pubkey) {
|
|
|
148
205
|
return null;
|
|
149
206
|
}
|
|
150
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Look up a peer and resolve HOW to reach them. Backward compatible: a peer with
|
|
210
|
+
* no transport descriptor (or transport:'direct') resolves to direct via the
|
|
211
|
+
* same publicUrl / ip:port logic as `lookupPeer`.
|
|
212
|
+
*/
|
|
213
|
+
export async function lookupPeerTransport(config, pubkey) {
|
|
214
|
+
if (!config.enabled)
|
|
215
|
+
return null;
|
|
216
|
+
try {
|
|
217
|
+
const res = await fetch(`${config.url}/peer/${encodeURIComponent(pubkey)}`, {
|
|
218
|
+
signal: AbortSignal.timeout(8000)
|
|
219
|
+
});
|
|
220
|
+
if (res.status === 404)
|
|
221
|
+
return null;
|
|
222
|
+
if (!res.ok)
|
|
223
|
+
throw new Error(`Rendezvous lookup returned ${res.status}`);
|
|
224
|
+
const data = await res.json();
|
|
225
|
+
const t = data.transport;
|
|
226
|
+
if (t && t.transport === 'relay') {
|
|
227
|
+
return { mode: 'relay', relayUrl: t.relayUrl, pubkey };
|
|
228
|
+
}
|
|
229
|
+
if (t && t.transport === 'iroh') {
|
|
230
|
+
return { mode: 'iroh', nodeId: t.nodeId, ...(t.relayUrl ? { relayUrl: t.relayUrl } : {}), pubkey };
|
|
231
|
+
}
|
|
232
|
+
// direct / legacy / transport:'direct'
|
|
233
|
+
const directUrl = (t && t.transport === 'direct' && t.gatewayUrl) ? t.gatewayUrl :
|
|
234
|
+
data.publicUrl ? data.publicUrl :
|
|
235
|
+
(data.ip && data.port) ? `http://${data.ip}:${data.port}` : null;
|
|
236
|
+
if (!directUrl) {
|
|
237
|
+
throw new Error('Invalid response from rendezvous server: no reachable address');
|
|
238
|
+
}
|
|
239
|
+
return { mode: 'direct', url: directUrl };
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
console.warn(`[OGP] Rendezvous transport lookup failed: ${err.message}`);
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
151
246
|
//# sourceMappingURL=rendezvous.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendezvous.js","sourceRoot":"","sources":["../../src/daemon/rendezvous.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"rendezvous.js","sourceRoot":"","sources":["../../src/daemon/rendezvous.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/server.d.ts
CHANGED
|
@@ -131,6 +131,7 @@ interface ShutdownDeps {
|
|
|
131
131
|
stopDoormanCleanup: () => void;
|
|
132
132
|
stopReplyCleanup: () => void;
|
|
133
133
|
stopRendezvous: () => Promise<void>;
|
|
134
|
+
stopRelayClient: () => Promise<void>;
|
|
134
135
|
stopHeartbeat: () => void;
|
|
135
136
|
getServer: () => {
|
|
136
137
|
close: (cb: (error?: Error) => void) => void;
|