@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.
Files changed (38) hide show
  1. package/dist/cli/agent-comms.d.ts +1 -1
  2. package/dist/cli/agent-comms.d.ts.map +1 -1
  3. package/dist/cli/agent-comms.js +9 -2
  4. package/dist/cli/agent-comms.js.map +1 -1
  5. package/dist/cli/config.d.ts.map +1 -1
  6. package/dist/cli/config.js +74 -0
  7. package/dist/cli/config.js.map +1 -1
  8. package/dist/cli/federation.d.ts +27 -0
  9. package/dist/cli/federation.d.ts.map +1 -1
  10. package/dist/cli/federation.js +88 -42
  11. package/dist/cli/federation.js.map +1 -1
  12. package/dist/cli.js +2 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/daemon/agent-comms.d.ts +9 -0
  15. package/dist/daemon/agent-comms.d.ts.map +1 -1
  16. package/dist/daemon/agent-comms.js +65 -0
  17. package/dist/daemon/agent-comms.js.map +1 -1
  18. package/dist/daemon/relay-client.d.ts +16 -0
  19. package/dist/daemon/relay-client.d.ts.map +1 -0
  20. package/dist/daemon/relay-client.js +312 -0
  21. package/dist/daemon/relay-client.js.map +1 -0
  22. package/dist/daemon/rendezvous.d.ts +56 -2
  23. package/dist/daemon/rendezvous.d.ts.map +1 -1
  24. package/dist/daemon/rendezvous.js +99 -4
  25. package/dist/daemon/rendezvous.js.map +1 -1
  26. package/dist/daemon/server.d.ts +1 -0
  27. package/dist/daemon/server.d.ts.map +1 -1
  28. package/dist/daemon/server.js +140 -26
  29. package/dist/daemon/server.js.map +1 -1
  30. package/dist/shared/config.d.ts +28 -0
  31. package/dist/shared/config.d.ts.map +1 -1
  32. package/dist/shared/config.js +7 -0
  33. package/dist/shared/config.js.map +1 -1
  34. package/dist/shared/relay-protocol.d.ts +91 -0
  35. package/dist/shared/relay-protocol.d.ts.map +1 -0
  36. package/dist/shared/relay-protocol.js +55 -0
  37. package/dist/shared/relay-protocol.js.map +1 -0
  38. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"agent-comms.js","sourceRoot":"","sources":["../../src/daemon/agent-comms.ts"],"names":[],"mappings":"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"}
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":"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"}
@@ -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;AAkD5D;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAuCf;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"}
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;AAEnD,IAAI,cAAc,GAA0C,IAAI,CAAC;AACjE,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAC3C,IAAI,YAAY,GAA4B,IAAI,CAAC;AAEjD,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,KAAK,UAAU,cAAc;IAC3B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,mCAAmC,EAAE;QAC3D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAoB,CAAC;IAChD,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAwB,EAAE,MAAc,EAAE,IAAY,EAAE,SAAkB;IAClG,6EAA6E;IAC7E,8EAA8E;IAC9E,0DAA0D;IAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAyD,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5F,IAAI,SAAS,EAAE,CAAC;QACd,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;IAE/E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,WAAW,EAAE;QAChD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAC/C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAwB,EACxB,MAAc,EACd,IAAY;IAEZ,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAE5B,YAAY,GAAG,MAAM,CAAC;IACtB,gBAAgB,GAAG,MAAM,CAAC;IAE1B,uDAAuD;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS,CAAC;IAEjE,gFAAgF;IAChF,IAAI,QAAQ,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qCAAsC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,uCAAuC,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC;QACzH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uCAAuC,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,yCAA0C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,mCAAmC;IACrC,CAAC;IAED,kBAAkB;IAClB,cAAc,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,sCAAuC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,cAAc,CAAC,CAAC;QAC9B,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB;QAAE,OAAO;IAE/C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,YAAY,CAAC,GAAG,SAAS,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,EAAE;YAC9E,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;IAED,YAAY,GAAG,IAAI,CAAC;IACpB,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAwB,EACxB,MAAc;IAEd,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE;YAC1E,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAwD,CAAC;QAEpF,2CAA2C;QAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,mCAAoC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"rendezvous.js","sourceRoot":"","sources":["../../src/daemon/rendezvous.ts"],"names":[],"mappings":"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"}
@@ -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;