@rookdaemon/agora 0.2.8 → 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.
- package/dist/chunk-JUOGKXFN.js +1645 -0
- package/dist/chunk-JUOGKXFN.js.map +1 -0
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +1163 -1137
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1613 -30
- package/dist/index.js +1135 -29
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/config.d.ts +0 -59
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -115
- package/dist/config.js.map +0 -1
- package/dist/discovery/bootstrap.d.ts +0 -32
- package/dist/discovery/bootstrap.d.ts.map +0 -1
- package/dist/discovery/bootstrap.js +0 -36
- package/dist/discovery/bootstrap.js.map +0 -1
- package/dist/discovery/peer-discovery.d.ts +0 -59
- package/dist/discovery/peer-discovery.d.ts.map +0 -1
- package/dist/discovery/peer-discovery.js +0 -108
- package/dist/discovery/peer-discovery.js.map +0 -1
- package/dist/identity/keypair.d.ts +0 -42
- package/dist/identity/keypair.d.ts.map +0 -1
- package/dist/identity/keypair.js +0 -83
- package/dist/identity/keypair.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/message/envelope.d.ts +0 -59
- package/dist/message/envelope.d.ts.map +0 -1
- package/dist/message/envelope.js +0 -83
- package/dist/message/envelope.js.map +0 -1
- package/dist/message/types/paper-discovery.d.ts +0 -28
- package/dist/message/types/paper-discovery.d.ts.map +0 -1
- package/dist/message/types/paper-discovery.js +0 -2
- package/dist/message/types/paper-discovery.js.map +0 -1
- package/dist/message/types/peer-discovery.d.ts +0 -78
- package/dist/message/types/peer-discovery.d.ts.map +0 -1
- package/dist/message/types/peer-discovery.js +0 -90
- package/dist/message/types/peer-discovery.js.map +0 -1
- package/dist/peer/client.d.ts +0 -50
- package/dist/peer/client.d.ts.map +0 -1
- package/dist/peer/client.js +0 -138
- package/dist/peer/client.js.map +0 -1
- package/dist/peer/manager.d.ts +0 -65
- package/dist/peer/manager.d.ts.map +0 -1
- package/dist/peer/manager.js +0 -153
- package/dist/peer/manager.js.map +0 -1
- package/dist/peer/server.d.ts +0 -65
- package/dist/peer/server.d.ts.map +0 -1
- package/dist/peer/server.js +0 -154
- package/dist/peer/server.js.map +0 -1
- package/dist/registry/capability.d.ts +0 -44
- package/dist/registry/capability.d.ts.map +0 -1
- package/dist/registry/capability.js +0 -94
- package/dist/registry/capability.js.map +0 -1
- package/dist/registry/discovery-service.d.ts +0 -64
- package/dist/registry/discovery-service.d.ts.map +0 -1
- package/dist/registry/discovery-service.js +0 -129
- package/dist/registry/discovery-service.js.map +0 -1
- package/dist/registry/messages.d.ts +0 -105
- package/dist/registry/messages.d.ts.map +0 -1
- package/dist/registry/messages.js +0 -2
- package/dist/registry/messages.js.map +0 -1
- package/dist/registry/peer-store.d.ts +0 -57
- package/dist/registry/peer-store.d.ts.map +0 -1
- package/dist/registry/peer-store.js +0 -92
- package/dist/registry/peer-store.js.map +0 -1
- package/dist/registry/peer.d.ts +0 -20
- package/dist/registry/peer.d.ts.map +0 -1
- package/dist/registry/peer.js +0 -2
- package/dist/registry/peer.js.map +0 -1
- package/dist/relay/client.d.ts +0 -112
- package/dist/relay/client.d.ts.map +0 -1
- package/dist/relay/client.js +0 -281
- package/dist/relay/client.js.map +0 -1
- package/dist/relay/jwt-auth.d.ts +0 -40
- package/dist/relay/jwt-auth.d.ts.map +0 -1
- package/dist/relay/jwt-auth.js +0 -109
- package/dist/relay/jwt-auth.js.map +0 -1
- package/dist/relay/message-buffer.d.ts +0 -41
- package/dist/relay/message-buffer.d.ts.map +0 -1
- package/dist/relay/message-buffer.js +0 -53
- package/dist/relay/message-buffer.js.map +0 -1
- package/dist/relay/rest-api.d.ts +0 -68
- package/dist/relay/rest-api.d.ts.map +0 -1
- package/dist/relay/rest-api.js +0 -225
- package/dist/relay/rest-api.js.map +0 -1
- package/dist/relay/run-relay.d.ts +0 -33
- package/dist/relay/run-relay.d.ts.map +0 -1
- package/dist/relay/run-relay.js +0 -57
- package/dist/relay/run-relay.js.map +0 -1
- package/dist/relay/server.d.ts +0 -91
- package/dist/relay/server.d.ts.map +0 -1
- package/dist/relay/server.js +0 -385
- package/dist/relay/server.js.map +0 -1
- package/dist/relay/store.d.ts +0 -19
- package/dist/relay/store.d.ts.map +0 -1
- package/dist/relay/store.js +0 -55
- package/dist/relay/store.js.map +0 -1
- package/dist/relay/types.d.ts +0 -35
- package/dist/relay/types.d.ts.map +0 -1
- package/dist/relay/types.js +0 -2
- package/dist/relay/types.js.map +0 -1
- package/dist/reputation/commit-reveal.d.ts +0 -45
- package/dist/reputation/commit-reveal.d.ts.map +0 -1
- package/dist/reputation/commit-reveal.js +0 -125
- package/dist/reputation/commit-reveal.js.map +0 -1
- package/dist/reputation/scoring.d.ts +0 -31
- package/dist/reputation/scoring.d.ts.map +0 -1
- package/dist/reputation/scoring.js +0 -105
- package/dist/reputation/scoring.js.map +0 -1
- package/dist/reputation/store.d.ts +0 -83
- package/dist/reputation/store.d.ts.map +0 -1
- package/dist/reputation/store.js +0 -202
- package/dist/reputation/store.js.map +0 -1
- package/dist/reputation/types.d.ts +0 -150
- package/dist/reputation/types.d.ts.map +0 -1
- package/dist/reputation/types.js +0 -113
- package/dist/reputation/types.js.map +0 -1
- package/dist/reputation/verification.d.ts +0 -28
- package/dist/reputation/verification.d.ts.map +0 -1
- package/dist/reputation/verification.js +0 -91
- package/dist/reputation/verification.js.map +0 -1
- package/dist/service.d.ts +0 -90
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -176
- package/dist/service.js.map +0 -1
- package/dist/transport/http.d.ts +0 -41
- package/dist/transport/http.d.ts.map +0 -1
- package/dist/transport/http.js +0 -103
- package/dist/transport/http.js.map +0 -1
- package/dist/transport/peer-config.d.ts +0 -38
- package/dist/transport/peer-config.d.ts.map +0 -1
- package/dist/transport/peer-config.js +0 -41
- package/dist/transport/peer-config.js.map +0 -1
- package/dist/transport/relay.d.ts +0 -30
- package/dist/transport/relay.d.ts.map +0 -1
- package/dist/transport/relay.js +0 -85
- package/dist/transport/relay.js.map +0 -1
- package/dist/utils.d.ts +0 -40
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -59
- package/dist/utils.js.map +0 -1
package/dist/relay/server.js
DELETED
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'node:events';
|
|
2
|
-
import { WebSocketServer, WebSocket } from 'ws';
|
|
3
|
-
import { verifyEnvelope, createEnvelope } from '../message/envelope.js';
|
|
4
|
-
import { MessageStore } from './store.js';
|
|
5
|
-
export class RelayServer extends EventEmitter {
|
|
6
|
-
wss = null;
|
|
7
|
-
agents = new Map();
|
|
8
|
-
identity;
|
|
9
|
-
storagePeers = [];
|
|
10
|
-
store = null;
|
|
11
|
-
constructor(options) {
|
|
12
|
-
super();
|
|
13
|
-
if (options) {
|
|
14
|
-
if ('identity' in options && options.identity) {
|
|
15
|
-
this.identity = options.identity;
|
|
16
|
-
}
|
|
17
|
-
else if ('publicKey' in options && 'privateKey' in options) {
|
|
18
|
-
this.identity = { publicKey: options.publicKey, privateKey: options.privateKey };
|
|
19
|
-
}
|
|
20
|
-
const opts = options;
|
|
21
|
-
if (opts.storagePeers?.length && opts.storageDir) {
|
|
22
|
-
this.storagePeers = opts.storagePeers;
|
|
23
|
-
this.store = new MessageStore(opts.storageDir);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Start the relay server
|
|
29
|
-
* @param port - Port to listen on
|
|
30
|
-
* @param host - Optional host (default: all interfaces)
|
|
31
|
-
*/
|
|
32
|
-
start(port, host) {
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
try {
|
|
35
|
-
this.wss = new WebSocketServer({ port, host: host ?? '0.0.0.0' });
|
|
36
|
-
let resolved = false;
|
|
37
|
-
this.wss.on('error', (error) => {
|
|
38
|
-
this.emit('error', error);
|
|
39
|
-
if (!resolved) {
|
|
40
|
-
resolved = true;
|
|
41
|
-
reject(error);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
this.wss.on('listening', () => {
|
|
45
|
-
if (!resolved) {
|
|
46
|
-
resolved = true;
|
|
47
|
-
resolve();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
this.wss.on('connection', (socket) => {
|
|
51
|
-
this.handleConnection(socket);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
reject(error);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Stop the relay server
|
|
61
|
-
*/
|
|
62
|
-
async stop() {
|
|
63
|
-
return new Promise((resolve, reject) => {
|
|
64
|
-
if (!this.wss) {
|
|
65
|
-
resolve();
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
// Close all agent connections
|
|
69
|
-
for (const agent of this.agents.values()) {
|
|
70
|
-
agent.socket.close();
|
|
71
|
-
}
|
|
72
|
-
this.agents.clear();
|
|
73
|
-
this.wss.close((err) => {
|
|
74
|
-
if (err) {
|
|
75
|
-
reject(err);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
this.wss = null;
|
|
79
|
-
resolve();
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get all connected agents
|
|
86
|
-
*/
|
|
87
|
-
getAgents() {
|
|
88
|
-
return new Map(this.agents);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Handle incoming connection
|
|
92
|
-
*/
|
|
93
|
-
handleConnection(socket) {
|
|
94
|
-
let agentPublicKey = null;
|
|
95
|
-
socket.on('message', (data) => {
|
|
96
|
-
try {
|
|
97
|
-
const msg = JSON.parse(data.toString());
|
|
98
|
-
// Handle registration
|
|
99
|
-
if (msg.type === 'register' && !agentPublicKey) {
|
|
100
|
-
if (!msg.publicKey || typeof msg.publicKey !== 'string') {
|
|
101
|
-
this.sendError(socket, 'Invalid registration: missing or invalid publicKey');
|
|
102
|
-
socket.close();
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
const publicKey = msg.publicKey;
|
|
106
|
-
const name = msg.name;
|
|
107
|
-
agentPublicKey = publicKey;
|
|
108
|
-
// If this pubkey was already connected, close the old connection
|
|
109
|
-
const existing = this.agents.get(publicKey);
|
|
110
|
-
if (existing) {
|
|
111
|
-
existing.socket.close();
|
|
112
|
-
}
|
|
113
|
-
const agent = {
|
|
114
|
-
publicKey,
|
|
115
|
-
name,
|
|
116
|
-
socket,
|
|
117
|
-
lastSeen: Date.now(),
|
|
118
|
-
};
|
|
119
|
-
this.agents.set(publicKey, agent);
|
|
120
|
-
this.emit('agent-registered', publicKey);
|
|
121
|
-
// Build peers list: connected agents + storage peers (always considered "connected" for store-and-forward)
|
|
122
|
-
let peers = Array.from(this.agents.values())
|
|
123
|
-
.filter(a => a.publicKey !== publicKey)
|
|
124
|
-
.map(a => ({ publicKey: a.publicKey, name: a.name }));
|
|
125
|
-
for (const storagePeer of this.storagePeers) {
|
|
126
|
-
if (storagePeer !== publicKey && !this.agents.has(storagePeer)) {
|
|
127
|
-
peers.push({ publicKey: storagePeer, name: undefined });
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
socket.send(JSON.stringify({
|
|
131
|
-
type: 'registered',
|
|
132
|
-
publicKey,
|
|
133
|
-
peers,
|
|
134
|
-
}));
|
|
135
|
-
// Notify other agents that this agent is now online
|
|
136
|
-
this.broadcastPeerEvent('peer_online', publicKey, name);
|
|
137
|
-
// Deliver any stored messages for this peer
|
|
138
|
-
if (this.store && this.storagePeers.includes(publicKey)) {
|
|
139
|
-
const queued = this.store.load(publicKey);
|
|
140
|
-
for (const stored of queued) {
|
|
141
|
-
socket.send(JSON.stringify({
|
|
142
|
-
type: 'message',
|
|
143
|
-
from: stored.from,
|
|
144
|
-
name: stored.name,
|
|
145
|
-
envelope: stored.envelope,
|
|
146
|
-
}));
|
|
147
|
-
}
|
|
148
|
-
this.store.clear(publicKey);
|
|
149
|
-
}
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
// Require registration before processing messages
|
|
153
|
-
if (!agentPublicKey) {
|
|
154
|
-
this.sendError(socket, 'Not registered: send registration message first');
|
|
155
|
-
socket.close();
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
// Handle message relay
|
|
159
|
-
if (msg.type === 'message') {
|
|
160
|
-
if (!msg.to || typeof msg.to !== 'string') {
|
|
161
|
-
this.sendError(socket, 'Invalid message: missing or invalid "to" field');
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
if (!msg.envelope || typeof msg.envelope !== 'object') {
|
|
165
|
-
this.sendError(socket, 'Invalid message: missing or invalid "envelope" field');
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
const envelope = msg.envelope;
|
|
169
|
-
// Verify envelope signature
|
|
170
|
-
const verification = verifyEnvelope(envelope);
|
|
171
|
-
if (!verification.valid) {
|
|
172
|
-
this.sendError(socket, `Invalid envelope: ${verification.reason || 'verification failed'}`);
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
// Verify sender matches registered agent
|
|
176
|
-
if (envelope.sender !== agentPublicKey) {
|
|
177
|
-
this.sendError(socket, 'Envelope sender does not match registered public key');
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
// Update lastSeen timestamp
|
|
181
|
-
const senderAgent = this.agents.get(agentPublicKey);
|
|
182
|
-
if (senderAgent) {
|
|
183
|
-
senderAgent.lastSeen = Date.now();
|
|
184
|
-
}
|
|
185
|
-
// Handle peer_list_request directed at relay
|
|
186
|
-
if (envelope.type === 'peer_list_request' && this.identity && msg.to === this.identity.publicKey) {
|
|
187
|
-
this.handlePeerListRequest(envelope, socket, agentPublicKey);
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
// Find recipient
|
|
191
|
-
const recipient = this.agents.get(msg.to);
|
|
192
|
-
if (!recipient || recipient.socket.readyState !== WebSocket.OPEN) {
|
|
193
|
-
// If recipient is a storage peer, queue the message
|
|
194
|
-
if (this.store && this.storagePeers.includes(msg.to)) {
|
|
195
|
-
const senderAgent = this.agents.get(agentPublicKey);
|
|
196
|
-
this.store.save(msg.to, {
|
|
197
|
-
from: agentPublicKey,
|
|
198
|
-
name: senderAgent?.name,
|
|
199
|
-
envelope,
|
|
200
|
-
});
|
|
201
|
-
this.emit('message-relayed', agentPublicKey, msg.to, envelope);
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
this.sendError(socket, 'Recipient not connected');
|
|
205
|
-
}
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
// Forward envelope to recipient wrapped in relay message format
|
|
209
|
-
try {
|
|
210
|
-
const senderAgent = this.agents.get(agentPublicKey);
|
|
211
|
-
const relayMessage = {
|
|
212
|
-
type: 'message',
|
|
213
|
-
from: agentPublicKey,
|
|
214
|
-
name: senderAgent?.name,
|
|
215
|
-
envelope,
|
|
216
|
-
};
|
|
217
|
-
recipient.socket.send(JSON.stringify(relayMessage));
|
|
218
|
-
this.emit('message-relayed', agentPublicKey, msg.to, envelope);
|
|
219
|
-
}
|
|
220
|
-
catch (err) {
|
|
221
|
-
this.sendError(socket, 'Failed to relay message');
|
|
222
|
-
this.emit('error', err);
|
|
223
|
-
}
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
// Handle broadcast: same validation as message, then forward to all other agents
|
|
227
|
-
if (msg.type === 'broadcast') {
|
|
228
|
-
if (!msg.envelope || typeof msg.envelope !== 'object') {
|
|
229
|
-
this.sendError(socket, 'Invalid broadcast: missing or invalid "envelope" field');
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
const envelope = msg.envelope;
|
|
233
|
-
const verification = verifyEnvelope(envelope);
|
|
234
|
-
if (!verification.valid) {
|
|
235
|
-
this.sendError(socket, `Invalid envelope: ${verification.reason || 'verification failed'}`);
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
if (envelope.sender !== agentPublicKey) {
|
|
239
|
-
this.sendError(socket, 'Envelope sender does not match registered public key');
|
|
240
|
-
return;
|
|
241
|
-
}
|
|
242
|
-
// Update lastSeen timestamp
|
|
243
|
-
const senderAgentBroadcast = this.agents.get(agentPublicKey);
|
|
244
|
-
if (senderAgentBroadcast) {
|
|
245
|
-
senderAgentBroadcast.lastSeen = Date.now();
|
|
246
|
-
}
|
|
247
|
-
const senderAgent = this.agents.get(agentPublicKey);
|
|
248
|
-
const relayMessage = {
|
|
249
|
-
type: 'message',
|
|
250
|
-
from: agentPublicKey,
|
|
251
|
-
name: senderAgent?.name,
|
|
252
|
-
envelope,
|
|
253
|
-
};
|
|
254
|
-
const messageStr = JSON.stringify(relayMessage);
|
|
255
|
-
for (const agent of this.agents.values()) {
|
|
256
|
-
if (agent.publicKey !== agentPublicKey && agent.socket.readyState === WebSocket.OPEN) {
|
|
257
|
-
try {
|
|
258
|
-
agent.socket.send(messageStr);
|
|
259
|
-
}
|
|
260
|
-
catch (err) {
|
|
261
|
-
this.emit('error', err);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
// Handle ping
|
|
268
|
-
if (msg.type === 'ping') {
|
|
269
|
-
socket.send(JSON.stringify({ type: 'pong' }));
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
// Unknown message type
|
|
273
|
-
this.sendError(socket, `Unknown message type: ${msg.type}`);
|
|
274
|
-
}
|
|
275
|
-
catch (err) {
|
|
276
|
-
// Invalid JSON or other parsing errors
|
|
277
|
-
this.emit('error', new Error(`Message parsing failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
278
|
-
this.sendError(socket, 'Invalid message format');
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
socket.on('close', () => {
|
|
282
|
-
if (agentPublicKey) {
|
|
283
|
-
const agent = this.agents.get(agentPublicKey);
|
|
284
|
-
const agentName = agent?.name;
|
|
285
|
-
this.agents.delete(agentPublicKey);
|
|
286
|
-
this.emit('agent-disconnected', agentPublicKey);
|
|
287
|
-
// Storage-enabled peers are always considered connected; skip peer_offline for them
|
|
288
|
-
if (!this.storagePeers.includes(agentPublicKey)) {
|
|
289
|
-
this.broadcastPeerEvent('peer_offline', agentPublicKey, agentName);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
socket.on('error', (error) => {
|
|
294
|
-
this.emit('error', error);
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Send an error message to a client
|
|
299
|
-
*/
|
|
300
|
-
sendError(socket, message) {
|
|
301
|
-
try {
|
|
302
|
-
if (socket.readyState === WebSocket.OPEN) {
|
|
303
|
-
socket.send(JSON.stringify({ type: 'error', message }));
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
catch (err) {
|
|
307
|
-
// Log errors when sending error messages, but don't propagate to avoid cascading failures
|
|
308
|
-
this.emit('error', new Error(`Failed to send error message: ${err instanceof Error ? err.message : String(err)}`));
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Broadcast a peer event to all connected agents
|
|
313
|
-
*/
|
|
314
|
-
broadcastPeerEvent(eventType, publicKey, name) {
|
|
315
|
-
const message = {
|
|
316
|
-
type: eventType,
|
|
317
|
-
publicKey,
|
|
318
|
-
name,
|
|
319
|
-
};
|
|
320
|
-
const messageStr = JSON.stringify(message);
|
|
321
|
-
for (const agent of this.agents.values()) {
|
|
322
|
-
// Don't send the event to the agent it's about
|
|
323
|
-
if (agent.publicKey !== publicKey && agent.socket.readyState === WebSocket.OPEN) {
|
|
324
|
-
try {
|
|
325
|
-
agent.socket.send(messageStr);
|
|
326
|
-
}
|
|
327
|
-
catch (err) {
|
|
328
|
-
this.emit('error', new Error(`Failed to send ${eventType} event: ${err instanceof Error ? err.message : String(err)}`));
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Handle peer list request from an agent
|
|
335
|
-
*/
|
|
336
|
-
handlePeerListRequest(envelope, socket, requesterPublicKey) {
|
|
337
|
-
if (!this.identity) {
|
|
338
|
-
this.sendError(socket, 'Relay does not support peer discovery (no identity configured)');
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
const { filters } = envelope.payload;
|
|
342
|
-
const now = Date.now();
|
|
343
|
-
let peers = Array.from(this.agents.values());
|
|
344
|
-
// Filter out requester first
|
|
345
|
-
peers = peers.filter(p => p.publicKey !== requesterPublicKey);
|
|
346
|
-
// Apply filters
|
|
347
|
-
if (filters?.activeWithin) {
|
|
348
|
-
peers = peers.filter(p => (now - p.lastSeen) < filters.activeWithin);
|
|
349
|
-
}
|
|
350
|
-
if (filters?.limit && filters.limit > 0) {
|
|
351
|
-
peers = peers.slice(0, filters.limit);
|
|
352
|
-
}
|
|
353
|
-
// Build response payload
|
|
354
|
-
const response = {
|
|
355
|
-
peers: peers.map(p => ({
|
|
356
|
-
publicKey: p.publicKey,
|
|
357
|
-
metadata: p.name || p.metadata ? {
|
|
358
|
-
name: p.name,
|
|
359
|
-
version: p.metadata?.version,
|
|
360
|
-
capabilities: p.metadata?.capabilities,
|
|
361
|
-
} : undefined,
|
|
362
|
-
lastSeen: p.lastSeen,
|
|
363
|
-
})),
|
|
364
|
-
totalPeers: this.agents.size - 1, // Exclude requester from count
|
|
365
|
-
relayPublicKey: this.identity.publicKey,
|
|
366
|
-
};
|
|
367
|
-
// Create signed envelope
|
|
368
|
-
const responseEnvelope = createEnvelope('peer_list_response', this.identity.publicKey, this.identity.privateKey, response, Date.now(), envelope.id // Reply to the request
|
|
369
|
-
);
|
|
370
|
-
// Send response
|
|
371
|
-
const relayMessage = {
|
|
372
|
-
type: 'message',
|
|
373
|
-
from: this.identity.publicKey,
|
|
374
|
-
name: 'relay',
|
|
375
|
-
envelope: responseEnvelope,
|
|
376
|
-
};
|
|
377
|
-
try {
|
|
378
|
-
socket.send(JSON.stringify(relayMessage));
|
|
379
|
-
}
|
|
380
|
-
catch (err) {
|
|
381
|
-
this.emit('error', new Error(`Failed to send peer list response: ${err instanceof Error ? err.message : String(err)}`));
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
//# sourceMappingURL=server.js.map
|
package/dist/relay/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/relay/server.ts"],"names":[],"mappings":"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"}
|
package/dist/relay/store.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* store.ts — File-based message store for offline peers.
|
|
3
|
-
* When the relay has storage enabled for certain public keys, messages
|
|
4
|
-
* for offline recipients are persisted and delivered when they connect.
|
|
5
|
-
*/
|
|
6
|
-
export interface StoredMessage {
|
|
7
|
-
from: string;
|
|
8
|
-
name?: string;
|
|
9
|
-
envelope: object;
|
|
10
|
-
}
|
|
11
|
-
export declare class MessageStore {
|
|
12
|
-
private storageDir;
|
|
13
|
-
constructor(storageDir: string);
|
|
14
|
-
private recipientDir;
|
|
15
|
-
save(recipientKey: string, message: StoredMessage): void;
|
|
16
|
-
load(recipientKey: string): StoredMessage[];
|
|
17
|
-
clear(recipientKey: string): void;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/relay/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM;IAK9B,OAAO,CAAC,YAAY;IAKpB,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAOxD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,EAAE;IAiB3C,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAUlC"}
|
package/dist/relay/store.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* store.ts — File-based message store for offline peers.
|
|
3
|
-
* When the relay has storage enabled for certain public keys, messages
|
|
4
|
-
* for offline recipients are persisted and delivered when they connect.
|
|
5
|
-
*/
|
|
6
|
-
import * as fs from 'node:fs';
|
|
7
|
-
import * as path from 'node:path';
|
|
8
|
-
export class MessageStore {
|
|
9
|
-
storageDir;
|
|
10
|
-
constructor(storageDir) {
|
|
11
|
-
this.storageDir = storageDir;
|
|
12
|
-
fs.mkdirSync(storageDir, { recursive: true });
|
|
13
|
-
}
|
|
14
|
-
recipientDir(publicKey) {
|
|
15
|
-
const safe = publicKey.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
16
|
-
return path.join(this.storageDir, safe);
|
|
17
|
-
}
|
|
18
|
-
save(recipientKey, message) {
|
|
19
|
-
const dir = this.recipientDir(recipientKey);
|
|
20
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
21
|
-
const filename = `${Date.now()}-${crypto.randomUUID()}.json`;
|
|
22
|
-
fs.writeFileSync(path.join(dir, filename), JSON.stringify(message));
|
|
23
|
-
}
|
|
24
|
-
load(recipientKey) {
|
|
25
|
-
const dir = this.recipientDir(recipientKey);
|
|
26
|
-
if (!fs.existsSync(dir))
|
|
27
|
-
return [];
|
|
28
|
-
const files = fs.readdirSync(dir).sort();
|
|
29
|
-
const messages = [];
|
|
30
|
-
for (const file of files) {
|
|
31
|
-
if (!file.endsWith('.json'))
|
|
32
|
-
continue;
|
|
33
|
-
try {
|
|
34
|
-
const data = fs.readFileSync(path.join(dir, file), 'utf8');
|
|
35
|
-
messages.push(JSON.parse(data));
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// Skip files that cannot be read or parsed
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return messages;
|
|
42
|
-
}
|
|
43
|
-
clear(recipientKey) {
|
|
44
|
-
const dir = this.recipientDir(recipientKey);
|
|
45
|
-
if (!fs.existsSync(dir))
|
|
46
|
-
return;
|
|
47
|
-
const files = fs.readdirSync(dir);
|
|
48
|
-
for (const file of files) {
|
|
49
|
-
if (file.endsWith('.json')) {
|
|
50
|
-
fs.unlinkSync(path.join(dir, file));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=store.js.map
|
package/dist/relay/store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/relay/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAQlC,MAAM,OAAO,YAAY;IACf,UAAU,CAAS;IAE3B,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAEO,YAAY,CAAC,SAAiB;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,YAAoB,EAAE,OAAsB;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC5C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAC7D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,YAAoB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC3D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,YAAoB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAChC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/dist/relay/types.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Envelope } from '../message/envelope.js';
|
|
2
|
-
/**
|
|
3
|
-
* Messages sent from client to relay server
|
|
4
|
-
*/
|
|
5
|
-
export interface RelayClientMessage {
|
|
6
|
-
type: 'register' | 'message' | 'broadcast' | 'ping';
|
|
7
|
-
publicKey?: string;
|
|
8
|
-
name?: string;
|
|
9
|
-
to?: string;
|
|
10
|
-
envelope?: Envelope;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Messages received from relay server
|
|
14
|
-
*/
|
|
15
|
-
export interface RelayServerMessage {
|
|
16
|
-
type: 'registered' | 'message' | 'error' | 'pong' | 'peer_online' | 'peer_offline';
|
|
17
|
-
publicKey?: string;
|
|
18
|
-
name?: string;
|
|
19
|
-
from?: string;
|
|
20
|
-
envelope?: Envelope;
|
|
21
|
-
peers?: Array<{
|
|
22
|
-
publicKey: string;
|
|
23
|
-
name?: string;
|
|
24
|
-
}>;
|
|
25
|
-
code?: string;
|
|
26
|
-
message?: string;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Peer presence information
|
|
30
|
-
*/
|
|
31
|
-
export interface RelayPeer {
|
|
32
|
-
publicKey: string;
|
|
33
|
-
name?: string;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/relay/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
package/dist/relay/types.js
DELETED
package/dist/relay/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/relay/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Commit-reveal pattern implementation for tamper-proof predictions.
|
|
3
|
-
* Agents commit to predictions before outcomes are known, then reveal after.
|
|
4
|
-
*/
|
|
5
|
-
import type { CommitRecord, RevealRecord } from './types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Create a commitment hash for a prediction
|
|
8
|
-
* @param prediction - The prediction string
|
|
9
|
-
* @returns SHA-256 hash of the prediction (hex string)
|
|
10
|
-
*/
|
|
11
|
-
export declare function hashPrediction(prediction: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Create a signed commit record
|
|
14
|
-
* @param agent - Public key of the committing agent
|
|
15
|
-
* @param privateKey - Private key for signing
|
|
16
|
-
* @param domain - Domain of the prediction
|
|
17
|
-
* @param prediction - The prediction to commit to
|
|
18
|
-
* @param timestamp - Timestamp for the commit (ms)
|
|
19
|
-
* @param expiryMs - Expiry time in milliseconds from timestamp
|
|
20
|
-
* @returns Signed CommitRecord
|
|
21
|
-
*/
|
|
22
|
-
export declare function createCommit(agent: string, privateKey: string, domain: string, prediction: string, timestamp: number, expiryMs: number): CommitRecord;
|
|
23
|
-
/**
|
|
24
|
-
* Create a signed reveal record
|
|
25
|
-
* @param agent - Public key of the revealing agent
|
|
26
|
-
* @param privateKey - Private key for signing
|
|
27
|
-
* @param commitmentId - ID of the original commit record
|
|
28
|
-
* @param prediction - The original prediction (plaintext)
|
|
29
|
-
* @param outcome - The observed outcome
|
|
30
|
-
* @param timestamp - Timestamp for the reveal (ms)
|
|
31
|
-
* @param evidence - Optional evidence for the outcome
|
|
32
|
-
* @returns Signed RevealRecord
|
|
33
|
-
*/
|
|
34
|
-
export declare function createReveal(agent: string, privateKey: string, commitmentId: string, prediction: string, outcome: string, timestamp: number, evidence?: string): RevealRecord;
|
|
35
|
-
/**
|
|
36
|
-
* Verify a reveal against its commitment
|
|
37
|
-
* @param commit - The original commit record
|
|
38
|
-
* @param reveal - The reveal record
|
|
39
|
-
* @returns Object with valid flag and optional reason for failure
|
|
40
|
-
*/
|
|
41
|
-
export declare function verifyReveal(commit: CommitRecord, reveal: RevealRecord): {
|
|
42
|
-
valid: boolean;
|
|
43
|
-
reason?: string;
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=commit-reveal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commit-reveal.d.ts","sourceRoot":"","sources":["../../src/reputation/commit-reveal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG7D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,YAAY,CA0Bd;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,YAAY,CAkCd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAkCrC"}
|