@rookdaemon/agora 0.2.7 → 0.2.9

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 (124) hide show
  1. package/README.md +33 -0
  2. package/dist/chunk-JUOGKXFN.js +1645 -0
  3. package/dist/chunk-JUOGKXFN.js.map +1 -0
  4. package/dist/cli.d.ts +0 -2
  5. package/dist/cli.js +1163 -1137
  6. package/dist/cli.js.map +1 -1
  7. package/dist/index.d.ts +1613 -25
  8. package/dist/index.js +1135 -24
  9. package/dist/index.js.map +1 -1
  10. package/package.json +11 -2
  11. package/dist/cli.d.ts.map +0 -1
  12. package/dist/config.d.ts +0 -59
  13. package/dist/config.d.ts.map +0 -1
  14. package/dist/config.js +0 -115
  15. package/dist/config.js.map +0 -1
  16. package/dist/discovery/bootstrap.d.ts +0 -32
  17. package/dist/discovery/bootstrap.d.ts.map +0 -1
  18. package/dist/discovery/bootstrap.js +0 -36
  19. package/dist/discovery/bootstrap.js.map +0 -1
  20. package/dist/discovery/peer-discovery.d.ts +0 -59
  21. package/dist/discovery/peer-discovery.d.ts.map +0 -1
  22. package/dist/discovery/peer-discovery.js +0 -108
  23. package/dist/discovery/peer-discovery.js.map +0 -1
  24. package/dist/identity/keypair.d.ts +0 -42
  25. package/dist/identity/keypair.d.ts.map +0 -1
  26. package/dist/identity/keypair.js +0 -83
  27. package/dist/identity/keypair.js.map +0 -1
  28. package/dist/index.d.ts.map +0 -1
  29. package/dist/message/envelope.d.ts +0 -59
  30. package/dist/message/envelope.d.ts.map +0 -1
  31. package/dist/message/envelope.js +0 -83
  32. package/dist/message/envelope.js.map +0 -1
  33. package/dist/message/types/paper-discovery.d.ts +0 -28
  34. package/dist/message/types/paper-discovery.d.ts.map +0 -1
  35. package/dist/message/types/paper-discovery.js +0 -2
  36. package/dist/message/types/paper-discovery.js.map +0 -1
  37. package/dist/message/types/peer-discovery.d.ts +0 -78
  38. package/dist/message/types/peer-discovery.d.ts.map +0 -1
  39. package/dist/message/types/peer-discovery.js +0 -90
  40. package/dist/message/types/peer-discovery.js.map +0 -1
  41. package/dist/peer/client.d.ts +0 -50
  42. package/dist/peer/client.d.ts.map +0 -1
  43. package/dist/peer/client.js +0 -138
  44. package/dist/peer/client.js.map +0 -1
  45. package/dist/peer/manager.d.ts +0 -65
  46. package/dist/peer/manager.d.ts.map +0 -1
  47. package/dist/peer/manager.js +0 -153
  48. package/dist/peer/manager.js.map +0 -1
  49. package/dist/peer/server.d.ts +0 -65
  50. package/dist/peer/server.d.ts.map +0 -1
  51. package/dist/peer/server.js +0 -154
  52. package/dist/peer/server.js.map +0 -1
  53. package/dist/registry/capability.d.ts +0 -44
  54. package/dist/registry/capability.d.ts.map +0 -1
  55. package/dist/registry/capability.js +0 -94
  56. package/dist/registry/capability.js.map +0 -1
  57. package/dist/registry/discovery-service.d.ts +0 -64
  58. package/dist/registry/discovery-service.d.ts.map +0 -1
  59. package/dist/registry/discovery-service.js +0 -129
  60. package/dist/registry/discovery-service.js.map +0 -1
  61. package/dist/registry/messages.d.ts +0 -105
  62. package/dist/registry/messages.d.ts.map +0 -1
  63. package/dist/registry/messages.js +0 -2
  64. package/dist/registry/messages.js.map +0 -1
  65. package/dist/registry/peer-store.d.ts +0 -57
  66. package/dist/registry/peer-store.d.ts.map +0 -1
  67. package/dist/registry/peer-store.js +0 -92
  68. package/dist/registry/peer-store.js.map +0 -1
  69. package/dist/registry/peer.d.ts +0 -20
  70. package/dist/registry/peer.d.ts.map +0 -1
  71. package/dist/registry/peer.js +0 -2
  72. package/dist/registry/peer.js.map +0 -1
  73. package/dist/relay/client.d.ts +0 -112
  74. package/dist/relay/client.d.ts.map +0 -1
  75. package/dist/relay/client.js +0 -281
  76. package/dist/relay/client.js.map +0 -1
  77. package/dist/relay/server.d.ts +0 -76
  78. package/dist/relay/server.d.ts.map +0 -1
  79. package/dist/relay/server.js +0 -338
  80. package/dist/relay/server.js.map +0 -1
  81. package/dist/relay/types.d.ts +0 -35
  82. package/dist/relay/types.d.ts.map +0 -1
  83. package/dist/relay/types.js +0 -2
  84. package/dist/relay/types.js.map +0 -1
  85. package/dist/reputation/commit-reveal.d.ts +0 -45
  86. package/dist/reputation/commit-reveal.d.ts.map +0 -1
  87. package/dist/reputation/commit-reveal.js +0 -125
  88. package/dist/reputation/commit-reveal.js.map +0 -1
  89. package/dist/reputation/scoring.d.ts +0 -31
  90. package/dist/reputation/scoring.d.ts.map +0 -1
  91. package/dist/reputation/scoring.js +0 -105
  92. package/dist/reputation/scoring.js.map +0 -1
  93. package/dist/reputation/store.d.ts +0 -83
  94. package/dist/reputation/store.d.ts.map +0 -1
  95. package/dist/reputation/store.js +0 -202
  96. package/dist/reputation/store.js.map +0 -1
  97. package/dist/reputation/types.d.ts +0 -150
  98. package/dist/reputation/types.d.ts.map +0 -1
  99. package/dist/reputation/types.js +0 -113
  100. package/dist/reputation/types.js.map +0 -1
  101. package/dist/reputation/verification.d.ts +0 -28
  102. package/dist/reputation/verification.d.ts.map +0 -1
  103. package/dist/reputation/verification.js +0 -91
  104. package/dist/reputation/verification.js.map +0 -1
  105. package/dist/service.d.ts +0 -90
  106. package/dist/service.d.ts.map +0 -1
  107. package/dist/service.js +0 -176
  108. package/dist/service.js.map +0 -1
  109. package/dist/transport/http.d.ts +0 -41
  110. package/dist/transport/http.d.ts.map +0 -1
  111. package/dist/transport/http.js +0 -103
  112. package/dist/transport/http.js.map +0 -1
  113. package/dist/transport/peer-config.d.ts +0 -38
  114. package/dist/transport/peer-config.d.ts.map +0 -1
  115. package/dist/transport/peer-config.js +0 -41
  116. package/dist/transport/peer-config.js.map +0 -1
  117. package/dist/transport/relay.d.ts +0 -30
  118. package/dist/transport/relay.d.ts.map +0 -1
  119. package/dist/transport/relay.js +0 -85
  120. package/dist/transport/relay.js.map +0 -1
  121. package/dist/utils.d.ts +0 -40
  122. package/dist/utils.d.ts.map +0 -1
  123. package/dist/utils.js +0 -59
  124. package/dist/utils.js.map +0 -1
@@ -1,112 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import { type Envelope } from '../message/envelope.js';
3
- import type { RelayPeer } from './types.js';
4
- /**
5
- * Configuration for RelayClient
6
- */
7
- export interface RelayClientConfig {
8
- /** WebSocket URL of the relay server */
9
- relayUrl: string;
10
- /** Agent's public key */
11
- publicKey: string;
12
- /** Agent's private key (for signing) */
13
- privateKey: string;
14
- /** Optional name for this agent */
15
- name?: string;
16
- /** Keepalive ping interval in milliseconds (default: 30000) */
17
- pingInterval?: number;
18
- /** Maximum reconnection delay in milliseconds (default: 60000) */
19
- maxReconnectDelay?: number;
20
- }
21
- /**
22
- * Events emitted by RelayClient
23
- */
24
- export interface RelayClientEvents {
25
- /** Emitted when successfully connected and registered */
26
- 'connected': () => void;
27
- /** Emitted when disconnected from relay */
28
- 'disconnected': () => void;
29
- /** Emitted when a verified message is received */
30
- 'message': (envelope: Envelope, from: string, fromName?: string) => void;
31
- /** Emitted when a peer comes online */
32
- 'peer_online': (peer: RelayPeer) => void;
33
- /** Emitted when a peer goes offline */
34
- 'peer_offline': (peer: RelayPeer) => void;
35
- /** Emitted on errors */
36
- 'error': (error: Error) => void;
37
- }
38
- /**
39
- * Persistent WebSocket client for the Agora relay server.
40
- * Maintains a long-lived connection, handles reconnection, and routes messages.
41
- */
42
- export declare class RelayClient extends EventEmitter {
43
- private ws;
44
- private config;
45
- private reconnectAttempts;
46
- private reconnectTimeout;
47
- private pingInterval;
48
- private isConnected;
49
- private isRegistered;
50
- private shouldReconnect;
51
- private onlinePeers;
52
- constructor(config: RelayClientConfig);
53
- /**
54
- * Connect to the relay server
55
- */
56
- connect(): Promise<void>;
57
- /**
58
- * Disconnect from the relay server
59
- */
60
- disconnect(): void;
61
- /**
62
- * Check if currently connected and registered
63
- */
64
- connected(): boolean;
65
- /**
66
- * Send a message to a specific peer
67
- */
68
- send(to: string, envelope: Envelope): Promise<{
69
- ok: boolean;
70
- error?: string;
71
- }>;
72
- /**
73
- * Broadcast a message to all connected peers
74
- */
75
- broadcast(envelope: Envelope): Promise<{
76
- ok: boolean;
77
- error?: string;
78
- }>;
79
- /**
80
- * Get list of currently online peers
81
- */
82
- getOnlinePeers(): RelayPeer[];
83
- /**
84
- * Check if a specific peer is online
85
- */
86
- isPeerOnline(publicKey: string): boolean;
87
- /**
88
- * Internal: Perform connection
89
- */
90
- private doConnect;
91
- /**
92
- * Handle incoming message from relay
93
- */
94
- private handleMessage;
95
- /**
96
- * Schedule reconnection with exponential backoff
97
- */
98
- private scheduleReconnect;
99
- /**
100
- * Start periodic ping messages
101
- */
102
- private startPingInterval;
103
- /**
104
- * Stop ping interval
105
- */
106
- private stopPingInterval;
107
- /**
108
- * Cleanup resources
109
- */
110
- private cleanup;
111
- }
112
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/relay/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAA0C,SAAS,EAAE,MAAM,YAAY,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,kDAAkD;IAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,uCAAuC;IACvC,aAAa,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,uCAAuC;IACvC,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,wBAAwB;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,WAAW,CAAgC;gBAEvC,MAAM,EAAE,iBAAiB;IASrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBpF;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB7E;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE;IAI7B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;YACW,SAAS;IAoEvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoErB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,OAAO;CAQhB"}
@@ -1,281 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import WebSocket from 'ws';
3
- import { verifyEnvelope } from '../message/envelope.js';
4
- /**
5
- * Persistent WebSocket client for the Agora relay server.
6
- * Maintains a long-lived connection, handles reconnection, and routes messages.
7
- */
8
- export class RelayClient extends EventEmitter {
9
- ws = null;
10
- config;
11
- reconnectAttempts = 0;
12
- reconnectTimeout = null;
13
- pingInterval = null;
14
- isConnected = false;
15
- isRegistered = false;
16
- shouldReconnect = true;
17
- onlinePeers = new Map();
18
- constructor(config) {
19
- super();
20
- this.config = {
21
- pingInterval: 30000,
22
- maxReconnectDelay: 60000,
23
- ...config,
24
- };
25
- }
26
- /**
27
- * Connect to the relay server
28
- */
29
- async connect() {
30
- if (this.ws && (this.ws.readyState === WebSocket.CONNECTING || this.ws.readyState === WebSocket.OPEN)) {
31
- return;
32
- }
33
- this.shouldReconnect = true;
34
- return this.doConnect();
35
- }
36
- /**
37
- * Disconnect from the relay server
38
- */
39
- disconnect() {
40
- this.shouldReconnect = false;
41
- this.cleanup();
42
- if (this.ws) {
43
- this.ws.close();
44
- this.ws = null;
45
- }
46
- }
47
- /**
48
- * Check if currently connected and registered
49
- */
50
- connected() {
51
- return this.isConnected && this.isRegistered;
52
- }
53
- /**
54
- * Send a message to a specific peer
55
- */
56
- async send(to, envelope) {
57
- if (!this.connected()) {
58
- return { ok: false, error: 'Not connected to relay' };
59
- }
60
- const message = {
61
- type: 'message',
62
- to,
63
- envelope,
64
- };
65
- try {
66
- this.ws.send(JSON.stringify(message));
67
- return { ok: true };
68
- }
69
- catch (err) {
70
- return { ok: false, error: err instanceof Error ? err.message : String(err) };
71
- }
72
- }
73
- /**
74
- * Broadcast a message to all connected peers
75
- */
76
- async broadcast(envelope) {
77
- if (!this.connected()) {
78
- return { ok: false, error: 'Not connected to relay' };
79
- }
80
- const message = {
81
- type: 'broadcast',
82
- envelope,
83
- };
84
- try {
85
- this.ws.send(JSON.stringify(message));
86
- return { ok: true };
87
- }
88
- catch (err) {
89
- return { ok: false, error: err instanceof Error ? err.message : String(err) };
90
- }
91
- }
92
- /**
93
- * Get list of currently online peers
94
- */
95
- getOnlinePeers() {
96
- return Array.from(this.onlinePeers.values());
97
- }
98
- /**
99
- * Check if a specific peer is online
100
- */
101
- isPeerOnline(publicKey) {
102
- return this.onlinePeers.has(publicKey);
103
- }
104
- /**
105
- * Internal: Perform connection
106
- */
107
- async doConnect() {
108
- return new Promise((resolve, reject) => {
109
- try {
110
- this.ws = new WebSocket(this.config.relayUrl);
111
- let resolved = false;
112
- const resolveOnce = (callback) => {
113
- if (!resolved) {
114
- resolved = true;
115
- callback();
116
- }
117
- };
118
- this.ws.on('open', () => {
119
- this.isConnected = true;
120
- this.reconnectAttempts = 0;
121
- this.startPingInterval();
122
- // Send registration message
123
- const registerMsg = {
124
- type: 'register',
125
- publicKey: this.config.publicKey,
126
- name: this.config.name,
127
- };
128
- this.ws.send(JSON.stringify(registerMsg));
129
- });
130
- this.ws.on('message', (data) => {
131
- try {
132
- const msg = JSON.parse(data.toString());
133
- this.handleMessage(msg);
134
- // Resolve promise on successful registration
135
- if (msg.type === 'registered' && !resolved) {
136
- resolveOnce(() => resolve());
137
- }
138
- }
139
- catch (err) {
140
- this.emit('error', new Error(`Failed to parse message: ${err instanceof Error ? err.message : String(err)}`));
141
- }
142
- });
143
- this.ws.on('close', () => {
144
- this.isConnected = false;
145
- this.isRegistered = false;
146
- this.cleanup();
147
- this.emit('disconnected');
148
- if (this.shouldReconnect) {
149
- this.scheduleReconnect();
150
- }
151
- if (!resolved) {
152
- resolveOnce(() => reject(new Error('Connection closed before registration')));
153
- }
154
- });
155
- this.ws.on('error', (err) => {
156
- this.emit('error', err);
157
- if (!resolved) {
158
- resolveOnce(() => reject(err));
159
- }
160
- });
161
- }
162
- catch (err) {
163
- reject(err);
164
- }
165
- });
166
- }
167
- /**
168
- * Handle incoming message from relay
169
- */
170
- handleMessage(msg) {
171
- switch (msg.type) {
172
- case 'registered':
173
- this.isRegistered = true;
174
- if (msg.peers) {
175
- // Populate initial peer list
176
- for (const peer of msg.peers) {
177
- this.onlinePeers.set(peer.publicKey, peer);
178
- }
179
- }
180
- this.emit('connected');
181
- break;
182
- case 'message':
183
- if (msg.envelope && msg.from) {
184
- // Verify envelope signature
185
- const verification = verifyEnvelope(msg.envelope);
186
- if (!verification.valid) {
187
- this.emit('error', new Error(`Invalid envelope signature: ${verification.reason}`));
188
- return;
189
- }
190
- // Verify sender matches 'from' field
191
- if (msg.envelope.sender !== msg.from) {
192
- this.emit('error', new Error('Envelope sender does not match relay from field'));
193
- return;
194
- }
195
- // Emit verified message
196
- this.emit('message', msg.envelope, msg.from, msg.name);
197
- }
198
- break;
199
- case 'peer_online':
200
- if (msg.publicKey) {
201
- const peer = {
202
- publicKey: msg.publicKey,
203
- name: msg.name,
204
- };
205
- this.onlinePeers.set(msg.publicKey, peer);
206
- this.emit('peer_online', peer);
207
- }
208
- break;
209
- case 'peer_offline':
210
- if (msg.publicKey) {
211
- const peer = this.onlinePeers.get(msg.publicKey);
212
- if (peer) {
213
- this.onlinePeers.delete(msg.publicKey);
214
- this.emit('peer_offline', peer);
215
- }
216
- }
217
- break;
218
- case 'error':
219
- this.emit('error', new Error(`Relay error: ${msg.message || 'Unknown error'}`));
220
- break;
221
- case 'pong':
222
- // Keepalive response, no action needed
223
- break;
224
- default:
225
- // Unknown message type, ignore
226
- break;
227
- }
228
- }
229
- /**
230
- * Schedule reconnection with exponential backoff
231
- */
232
- scheduleReconnect() {
233
- if (this.reconnectTimeout) {
234
- return;
235
- }
236
- // Exponential backoff: 1s, 2s, 4s, 8s, 16s, 32s, 60s (max)
237
- const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), this.config.maxReconnectDelay);
238
- this.reconnectAttempts++;
239
- this.reconnectTimeout = setTimeout(() => {
240
- this.reconnectTimeout = null;
241
- if (this.shouldReconnect) {
242
- this.doConnect().catch((err) => {
243
- this.emit('error', err);
244
- });
245
- }
246
- }, delay);
247
- }
248
- /**
249
- * Start periodic ping messages
250
- */
251
- startPingInterval() {
252
- this.stopPingInterval();
253
- this.pingInterval = setInterval(() => {
254
- if (this.ws && this.ws.readyState === WebSocket.OPEN) {
255
- const ping = { type: 'ping' };
256
- this.ws.send(JSON.stringify(ping));
257
- }
258
- }, this.config.pingInterval);
259
- }
260
- /**
261
- * Stop ping interval
262
- */
263
- stopPingInterval() {
264
- if (this.pingInterval) {
265
- clearInterval(this.pingInterval);
266
- this.pingInterval = null;
267
- }
268
- }
269
- /**
270
- * Cleanup resources
271
- */
272
- cleanup() {
273
- this.stopPingInterval();
274
- if (this.reconnectTimeout) {
275
- clearTimeout(this.reconnectTimeout);
276
- this.reconnectTimeout = null;
277
- }
278
- this.onlinePeers.clear();
279
- }
280
- }
281
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/relay/client.ts"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import { WebSocket } from 'ws';
3
- import { type Envelope } from '../message/envelope.js';
4
- /**
5
- * Represents a connected agent in the relay
6
- */
7
- interface ConnectedAgent {
8
- /** Agent's public key */
9
- publicKey: string;
10
- /** Optional agent name */
11
- name?: string;
12
- /** WebSocket connection */
13
- socket: WebSocket;
14
- /** Last seen timestamp (ms) */
15
- lastSeen: number;
16
- /** Optional metadata */
17
- metadata?: {
18
- version?: string;
19
- capabilities?: string[];
20
- };
21
- }
22
- /**
23
- * Events emitted by RelayServer
24
- */
25
- export interface RelayServerEvents {
26
- 'agent-registered': (publicKey: string) => void;
27
- 'agent-disconnected': (publicKey: string) => void;
28
- 'message-relayed': (from: string, to: string, envelope: Envelope) => void;
29
- 'error': (error: Error) => void;
30
- }
31
- /**
32
- * WebSocket relay server for routing messages between agents.
33
- *
34
- * Agents connect to the relay and register with their public key.
35
- * Messages are routed to recipients based on the 'to' field.
36
- * All envelopes are verified before being forwarded.
37
- */
38
- export declare class RelayServer extends EventEmitter {
39
- private wss;
40
- private agents;
41
- private identity?;
42
- constructor(identity?: {
43
- publicKey: string;
44
- privateKey: string;
45
- });
46
- /**
47
- * Start the relay server
48
- */
49
- start(port: number): Promise<void>;
50
- /**
51
- * Stop the relay server
52
- */
53
- stop(): Promise<void>;
54
- /**
55
- * Get all connected agents
56
- */
57
- getAgents(): Map<string, ConnectedAgent>;
58
- /**
59
- * Handle incoming connection
60
- */
61
- private handleConnection;
62
- /**
63
- * Send an error message to a client
64
- */
65
- private sendError;
66
- /**
67
- * Broadcast a peer event to all connected agents
68
- */
69
- private broadcastPeerEvent;
70
- /**
71
- * Handle peer list request from an agent
72
- */
73
- private handlePeerListRequest;
74
- }
75
- export {};
76
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/relay/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAmB,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAkC,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvF;;GAEG;AACH,UAAU,cAAc;IACtB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1E,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,QAAQ,CAAC,CAA4C;gBAEjD,QAAQ,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAKhE;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BlC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAIxC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkMxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA8D9B"}