adp-agent 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +141 -0
  3. package/config.example.json +32 -0
  4. package/dist/agent-id.d.ts +9 -0
  5. package/dist/agent-id.js +118 -0
  6. package/dist/agent-id.js.map +1 -0
  7. package/dist/agent-id.test.d.ts +1 -0
  8. package/dist/agent-id.test.js +36 -0
  9. package/dist/agent-id.test.js.map +1 -0
  10. package/dist/canonical.d.ts +5 -0
  11. package/dist/canonical.js +35 -0
  12. package/dist/canonical.js.map +1 -0
  13. package/dist/canonical.test.d.ts +1 -0
  14. package/dist/canonical.test.js +33 -0
  15. package/dist/canonical.test.js.map +1 -0
  16. package/dist/capability-test.d.ts +1 -0
  17. package/dist/capability-test.js +108 -0
  18. package/dist/capability-test.js.map +1 -0
  19. package/dist/chat.d.ts +1 -0
  20. package/dist/chat.js +166 -0
  21. package/dist/chat.js.map +1 -0
  22. package/dist/contacts-test.d.ts +1 -0
  23. package/dist/contacts-test.js +225 -0
  24. package/dist/contacts-test.js.map +1 -0
  25. package/dist/crypto.d.ts +11 -0
  26. package/dist/crypto.js +103 -0
  27. package/dist/crypto.js.map +1 -0
  28. package/dist/crypto.test.d.ts +1 -0
  29. package/dist/crypto.test.js +40 -0
  30. package/dist/crypto.test.js.map +1 -0
  31. package/dist/discovery.d.ts +36 -0
  32. package/dist/discovery.js +291 -0
  33. package/dist/discovery.js.map +1 -0
  34. package/dist/envelope.d.ts +42 -0
  35. package/dist/envelope.js +58 -0
  36. package/dist/envelope.js.map +1 -0
  37. package/dist/gateway.d.ts +44 -0
  38. package/dist/gateway.js +255 -0
  39. package/dist/gateway.js.map +1 -0
  40. package/dist/index.d.ts +33 -0
  41. package/dist/index.js +75 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/integration-test.d.ts +1 -0
  44. package/dist/integration-test.js +206 -0
  45. package/dist/integration-test.js.map +1 -0
  46. package/dist/key-store.d.ts +10 -0
  47. package/dist/key-store.js +81 -0
  48. package/dist/key-store.js.map +1 -0
  49. package/dist/manifest.d.ts +35 -0
  50. package/dist/manifest.js +24 -0
  51. package/dist/manifest.js.map +1 -0
  52. package/dist/mdns-test.d.ts +1 -0
  53. package/dist/mdns-test.js +93 -0
  54. package/dist/mdns-test.js.map +1 -0
  55. package/dist/relay-peer-test.d.ts +1 -0
  56. package/dist/relay-peer-test.js +220 -0
  57. package/dist/relay-peer-test.js.map +1 -0
  58. package/dist/relay-test.d.ts +1 -0
  59. package/dist/relay-test.js +92 -0
  60. package/dist/relay-test.js.map +1 -0
  61. package/dist/relay.d.ts +60 -0
  62. package/dist/relay.js +277 -0
  63. package/dist/relay.js.map +1 -0
  64. package/dist/src/agent-id.d.ts +9 -0
  65. package/dist/src/agent-id.js +44 -0
  66. package/dist/src/agent-id.js.map +1 -0
  67. package/dist/src/agent-id.test.d.ts +1 -0
  68. package/dist/src/agent-id.test.js +36 -0
  69. package/dist/src/agent-id.test.js.map +1 -0
  70. package/dist/src/canonical.d.ts +5 -0
  71. package/dist/src/canonical.js +37 -0
  72. package/dist/src/canonical.js.map +1 -0
  73. package/dist/src/canonical.test.d.ts +1 -0
  74. package/dist/src/canonical.test.js +33 -0
  75. package/dist/src/canonical.test.js.map +1 -0
  76. package/dist/src/capabilities.d.ts +3 -0
  77. package/dist/src/capabilities.js +39 -0
  78. package/dist/src/capabilities.js.map +1 -0
  79. package/dist/src/config.d.ts +35 -0
  80. package/dist/src/config.js +3 -0
  81. package/dist/src/config.js.map +1 -0
  82. package/dist/src/contacts.d.ts +28 -0
  83. package/dist/src/contacts.js +118 -0
  84. package/dist/src/contacts.js.map +1 -0
  85. package/dist/src/crypto.d.ts +11 -0
  86. package/dist/src/crypto.js +83 -0
  87. package/dist/src/crypto.js.map +1 -0
  88. package/dist/src/crypto.test.d.ts +1 -0
  89. package/dist/src/crypto.test.js +40 -0
  90. package/dist/src/crypto.test.js.map +1 -0
  91. package/dist/src/discovery.d.ts +39 -0
  92. package/dist/src/discovery.js +317 -0
  93. package/dist/src/discovery.js.map +1 -0
  94. package/dist/src/envelope.d.ts +55 -0
  95. package/dist/src/envelope.js +95 -0
  96. package/dist/src/envelope.js.map +1 -0
  97. package/dist/src/gateway.d.ts +78 -0
  98. package/dist/src/gateway.js +540 -0
  99. package/dist/src/gateway.js.map +1 -0
  100. package/dist/src/index.d.ts +22 -0
  101. package/dist/src/index.js +81 -0
  102. package/dist/src/index.js.map +1 -0
  103. package/dist/src/key-rotation.d.ts +27 -0
  104. package/dist/src/key-rotation.js +41 -0
  105. package/dist/src/key-rotation.js.map +1 -0
  106. package/dist/src/key-store.d.ts +10 -0
  107. package/dist/src/key-store.js +81 -0
  108. package/dist/src/key-store.js.map +1 -0
  109. package/dist/src/logger.d.ts +9 -0
  110. package/dist/src/logger.js +18 -0
  111. package/dist/src/logger.js.map +1 -0
  112. package/dist/src/manifest.d.ts +37 -0
  113. package/dist/src/manifest.js +24 -0
  114. package/dist/src/manifest.js.map +1 -0
  115. package/dist/src/mcp-server.d.ts +38 -0
  116. package/dist/src/mcp-server.js +408 -0
  117. package/dist/src/mcp-server.js.map +1 -0
  118. package/dist/src/net-utils.d.ts +3 -0
  119. package/dist/src/net-utils.js +71 -0
  120. package/dist/src/net-utils.js.map +1 -0
  121. package/dist/src/registry/cache.d.ts +12 -0
  122. package/dist/src/registry/cache.js +45 -0
  123. package/dist/src/registry/cache.js.map +1 -0
  124. package/dist/src/registry/client.d.ts +43 -0
  125. package/dist/src/registry/client.js +245 -0
  126. package/dist/src/registry/client.js.map +1 -0
  127. package/dist/src/registry/config.d.ts +32 -0
  128. package/dist/src/registry/config.js +79 -0
  129. package/dist/src/registry/config.js.map +1 -0
  130. package/dist/src/registry/db.d.ts +10 -0
  131. package/dist/src/registry/db.js +97 -0
  132. package/dist/src/registry/db.js.map +1 -0
  133. package/dist/src/registry/index.d.ts +5 -0
  134. package/dist/src/registry/index.js +22 -0
  135. package/dist/src/registry/index.js.map +1 -0
  136. package/dist/src/registry/service.d.ts +45 -0
  137. package/dist/src/registry/service.js +802 -0
  138. package/dist/src/registry/service.js.map +1 -0
  139. package/dist/src/relay.d.ts +69 -0
  140. package/dist/src/relay.js +399 -0
  141. package/dist/src/relay.js.map +1 -0
  142. package/dist/src/task-manager.d.ts +55 -0
  143. package/dist/src/task-manager.js +150 -0
  144. package/dist/src/task-manager.js.map +1 -0
  145. package/dist/src/trust-store.d.ts +24 -0
  146. package/dist/src/trust-store.js +144 -0
  147. package/dist/src/trust-store.js.map +1 -0
  148. package/dist/src/webhook-client.d.ts +30 -0
  149. package/dist/src/webhook-client.js +78 -0
  150. package/dist/src/webhook-client.js.map +1 -0
  151. package/dist/start-mcp.d.ts +2 -0
  152. package/dist/start-mcp.js +126 -0
  153. package/dist/start-mcp.js.map +1 -0
  154. package/dist/start-registry.d.ts +2 -0
  155. package/dist/start-registry.js +33 -0
  156. package/dist/start-registry.js.map +1 -0
  157. package/dist/start-relay.d.ts +1 -0
  158. package/dist/start-relay.js +35 -0
  159. package/dist/start-relay.js.map +1 -0
  160. package/dist/start.d.ts +1 -0
  161. package/dist/start.js +364 -0
  162. package/dist/start.js.map +1 -0
  163. package/dist/task-manager.d.ts +55 -0
  164. package/dist/task-manager.js +145 -0
  165. package/dist/task-manager.js.map +1 -0
  166. package/dist/task-test.d.ts +1 -0
  167. package/dist/task-test.js +188 -0
  168. package/dist/task-test.js.map +1 -0
  169. package/dist/test-auth.d.ts +1 -0
  170. package/dist/test-auth.js +166 -0
  171. package/dist/test-auth.js.map +1 -0
  172. package/dist/test-key-rotation.d.ts +2 -0
  173. package/dist/test-key-rotation.js +114 -0
  174. package/dist/test-key-rotation.js.map +1 -0
  175. package/dist/test-registry.d.ts +2 -0
  176. package/dist/test-registry.js +123 -0
  177. package/dist/test-registry.js.map +1 -0
  178. package/dist/trust-store.d.ts +23 -0
  179. package/dist/trust-store.js +111 -0
  180. package/dist/trust-store.js.map +1 -0
  181. package/package.json +96 -0
  182. package/schema.sql +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/registry/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ export interface RelayOptions {
2
+ host?: string;
3
+ port: number;
4
+ tls?: {
5
+ cert: string;
6
+ key: string;
7
+ };
8
+ maxConnections?: number;
9
+ heartbeatIntervalMs?: number;
10
+ heartbeatTimeoutMs?: number;
11
+ offlineMaxAgeMs?: number;
12
+ offlineMaxPerAgent?: number;
13
+ }
14
+ export declare class Relay {
15
+ private server;
16
+ private wss;
17
+ private sessions;
18
+ private agentSessions;
19
+ private offlineCache;
20
+ private relayedMessageIds;
21
+ private heartbeatTimer;
22
+ private maxConnections;
23
+ private heartbeatIntervalMs;
24
+ private heartbeatTimeoutMs;
25
+ private offlineMaxAgeMs;
26
+ private offlineMaxPerAgent;
27
+ private offlineMaxTotal;
28
+ constructor(options: RelayOptions);
29
+ private handleConnection;
30
+ private handleMessage;
31
+ private cacheMessage;
32
+ private oldestRelayedMessageId;
33
+ private broadcastToAll;
34
+ private deliverOfflineMessages;
35
+ private startHeartbeat;
36
+ getSessionCount(): number;
37
+ close(): void;
38
+ }
39
+ export interface RelayClientCallbacks {
40
+ onWelcome?: (sessionId: string) => void;
41
+ onBusy?: () => void;
42
+ onMessage?: (envelope: unknown) => void;
43
+ onClose?: () => void;
44
+ onPeerUpdate?: (type: 'peer_joined' | 'peer_left', agentId: string) => void;
45
+ }
46
+ export declare class RelayClient {
47
+ private ws;
48
+ private relayUrl;
49
+ private agentId;
50
+ private callbacks;
51
+ private heartbeatTimer;
52
+ private reconnect;
53
+ private heartbeatIntervalMs;
54
+ private reconnectAttempts;
55
+ private maxReconnectDelayMs;
56
+ private minReconnectDelayMs;
57
+ constructor(relayUrl: string, agentId: string, callbacks: RelayClientCallbacks, options?: {
58
+ reconnect?: boolean;
59
+ heartbeatIntervalMs?: number;
60
+ maxReconnectDelayMs?: number;
61
+ });
62
+ connect(): Promise<void>;
63
+ send(to: string, envelope: unknown): void;
64
+ private startHeartbeat;
65
+ private stopHeartbeat;
66
+ private reconnectToRelay;
67
+ isConnected(): boolean;
68
+ close(): void;
69
+ }
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.RelayClient = exports.Relay = void 0;
37
+ const http = __importStar(require("http"));
38
+ const https = __importStar(require("https"));
39
+ const ws_1 = require("ws");
40
+ const crypto_1 = require("crypto");
41
+ class Relay {
42
+ constructor(options) {
43
+ this.sessions = new Map();
44
+ this.agentSessions = new Map();
45
+ this.offlineCache = [];
46
+ this.relayedMessageIds = new Set();
47
+ this.heartbeatTimer = null;
48
+ this.maxConnections = options.maxConnections ?? 10000;
49
+ this.heartbeatIntervalMs = options.heartbeatIntervalMs ?? 15000;
50
+ this.heartbeatTimeoutMs = options.heartbeatTimeoutMs ?? 45000;
51
+ this.offlineMaxAgeMs = options.offlineMaxAgeMs ?? 24 * 60 * 60 * 1000;
52
+ this.offlineMaxPerAgent = options.offlineMaxPerAgent ?? 500;
53
+ this.offlineMaxTotal = 50000;
54
+ if (options.tls) {
55
+ this.server = https.createServer({ cert: options.tls.cert, key: options.tls.key });
56
+ }
57
+ else {
58
+ this.server = http.createServer();
59
+ }
60
+ this.server.on('request', (_req, res) => {
61
+ res.writeHead(200, { 'Content-Type': 'application/json' });
62
+ res.end(JSON.stringify({
63
+ status: 'ok',
64
+ sessions: this.sessions.size,
65
+ cached: this.offlineCache.length,
66
+ }));
67
+ });
68
+ this.wss = new ws_1.WebSocketServer({ server: this.server, path: '/adp/relay' });
69
+ this.wss.on('connection', (ws, req) => this.handleConnection(ws, req));
70
+ this.server.listen(options.port, options.host);
71
+ this.startHeartbeat();
72
+ }
73
+ handleConnection(ws, req) {
74
+ const url = new URL(req.url || '/', `http://localhost`);
75
+ const agentId = url.searchParams.get('agent_id');
76
+ if (!agentId) {
77
+ ws.send(JSON.stringify({ type: 'error', message: 'Missing agent_id' }));
78
+ ws.close();
79
+ return;
80
+ }
81
+ if (this.sessions.size >= this.maxConnections) {
82
+ ws.send(JSON.stringify({ type: 'busy' }));
83
+ ws.close();
84
+ return;
85
+ }
86
+ const sessionId = 'sess_' + (0, crypto_1.randomBytes)(8).toString('base64url');
87
+ const now = Date.now();
88
+ const session = { ws, agentId, connectedAt: now, lastHeartbeat: now };
89
+ this.sessions.set(sessionId, session);
90
+ if (!this.agentSessions.has(agentId)) {
91
+ this.agentSessions.set(agentId, new Set());
92
+ }
93
+ this.agentSessions.get(agentId).add(sessionId);
94
+ ws.send(JSON.stringify({ type: 'welcome', session_id: sessionId }));
95
+ const existingPeers = Array.from(this.agentSessions.keys()).filter(id => id !== agentId);
96
+ if (existingPeers.length > 0) {
97
+ ws.send(JSON.stringify({ type: 'peers_list', peers: existingPeers }));
98
+ }
99
+ this.broadcastToAll(agentId, { type: 'peer_joined', agent_id: agentId });
100
+ this.deliverOfflineMessages(agentId, sessionId);
101
+ ws.on('message', (data) => this.handleMessage(sessionId, agentId, data));
102
+ ws.on('close', () => {
103
+ const set = this.agentSessions.get(agentId);
104
+ if (set) {
105
+ set.delete(sessionId);
106
+ if (set.size === 0) {
107
+ this.agentSessions.delete(agentId);
108
+ this.broadcastToAll(agentId, { type: 'peer_left', agent_id: agentId });
109
+ }
110
+ }
111
+ this.sessions.delete(sessionId);
112
+ });
113
+ ws.on('pong', () => {
114
+ const session = this.sessions.get(sessionId);
115
+ if (session) {
116
+ session.lastHeartbeat = Date.now();
117
+ }
118
+ });
119
+ ws.on('error', (err) => {
120
+ console.warn('[ADP Relay] WebSocket error:', err);
121
+ });
122
+ }
123
+ handleMessage(sessionId, fromAgentId, data) {
124
+ const session = this.sessions.get(sessionId);
125
+ if (!session)
126
+ return;
127
+ try {
128
+ const msg = JSON.parse(data);
129
+ if (msg.type === 'pong') {
130
+ session.lastHeartbeat = Date.now();
131
+ return;
132
+ }
133
+ if (msg.type === 'relay' && msg.to && msg.payload) {
134
+ const payload = msg.payload;
135
+ // Guard against identity spoofing: sender must be the agentId they connected with
136
+ if (payload.from !== fromAgentId) {
137
+ console.warn(`[ADP Relay] Spoofing blocked: session ${fromAgentId} attempted to send as ${payload.from}`);
138
+ return;
139
+ }
140
+ // Guard against replay: reject if we've already relayed this message id
141
+ if (payload.id && this.relayedMessageIds.has(payload.id)) {
142
+ console.warn(`[ADP Relay] Replay detected: ${payload.id}`);
143
+ return;
144
+ }
145
+ if (payload.id) {
146
+ this.relayedMessageIds.add(payload.id);
147
+ if (this.relayedMessageIds.size > 100000) {
148
+ const oldest = this.oldestRelayedMessageId();
149
+ if (oldest)
150
+ this.relayedMessageIds.delete(oldest);
151
+ }
152
+ }
153
+ const targetSessions = this.agentSessions.get(msg.to);
154
+ if (targetSessions && targetSessions.size > 0) {
155
+ for (const targetSessionId of targetSessions) {
156
+ const target = this.sessions.get(targetSessionId);
157
+ if (target && target.ws.readyState === ws_1.WebSocket.OPEN) {
158
+ target.ws.send(JSON.stringify(msg.payload));
159
+ }
160
+ }
161
+ }
162
+ else {
163
+ this.cacheMessage(fromAgentId, msg.to, msg.payload);
164
+ }
165
+ return;
166
+ }
167
+ }
168
+ catch (err) {
169
+ console.warn('[ADP Relay] Failed to handle message:', err);
170
+ }
171
+ }
172
+ cacheMessage(_from, to, payload) {
173
+ if (this.offlineCache.length >= this.offlineMaxTotal) {
174
+ const oldest = this.offlineCache.reduce((minIdx, msg, idx, arr) => msg.storedAt < arr[minIdx].storedAt ? idx : minIdx, 0);
175
+ this.offlineCache.splice(oldest, 1);
176
+ }
177
+ this.offlineCache.push({ to, payload, storedAt: Date.now() });
178
+ while (this.offlineCache.filter(m => m.to === to).length > this.offlineMaxPerAgent) {
179
+ const oldest = this.offlineCache.findIndex(m => m.to === to);
180
+ if (oldest >= 0)
181
+ this.offlineCache.splice(oldest, 1);
182
+ }
183
+ }
184
+ oldestRelayedMessageId() {
185
+ for (const id of this.relayedMessageIds)
186
+ return id;
187
+ return undefined;
188
+ }
189
+ broadcastToAll(excludeAgentId, message) {
190
+ for (const [id, session] of this.sessions) {
191
+ if (session.agentId !== excludeAgentId && session.ws.readyState === 1) {
192
+ session.ws.send(JSON.stringify(message));
193
+ }
194
+ }
195
+ }
196
+ deliverOfflineMessages(agentId, sessionId) {
197
+ const now = Date.now();
198
+ const session = this.sessions.get(sessionId);
199
+ if (!session)
200
+ return;
201
+ const pending = this.offlineCache.filter(m => m.to === agentId && (now - m.storedAt) < this.offlineMaxAgeMs);
202
+ for (const msg of pending) {
203
+ if (session.ws.readyState === ws_1.WebSocket.OPEN) {
204
+ session.ws.send(JSON.stringify(msg.payload));
205
+ }
206
+ }
207
+ this.offlineCache = this.offlineCache.filter(m => m.to !== agentId);
208
+ }
209
+ startHeartbeat() {
210
+ this.heartbeatTimer = setInterval(() => {
211
+ const now = Date.now();
212
+ const expiredIds = [];
213
+ for (const [id, session] of this.sessions) {
214
+ if (now - session.lastHeartbeat > this.heartbeatTimeoutMs) {
215
+ expiredIds.push(id);
216
+ continue;
217
+ }
218
+ if (session.ws.readyState === ws_1.WebSocket.OPEN) {
219
+ session.ws.ping();
220
+ }
221
+ }
222
+ for (const id of expiredIds) {
223
+ const session = this.sessions.get(id);
224
+ if (session) {
225
+ session.ws.close();
226
+ const agentId = session.agentId;
227
+ this.sessions.delete(id);
228
+ const agentSet = this.agentSessions.get(agentId);
229
+ if (agentSet) {
230
+ agentSet.delete(id);
231
+ if (agentSet.size === 0) {
232
+ this.agentSessions.delete(agentId);
233
+ this.broadcastToAll(agentId, { type: 'peer_left', agent_id: agentId });
234
+ }
235
+ }
236
+ }
237
+ }
238
+ this.offlineCache = this.offlineCache.filter(m => now - m.storedAt < this.offlineMaxAgeMs);
239
+ }, this.heartbeatIntervalMs);
240
+ }
241
+ getSessionCount() {
242
+ return this.sessions.size;
243
+ }
244
+ close() {
245
+ if (this.heartbeatTimer)
246
+ clearInterval(this.heartbeatTimer);
247
+ this.wss.close();
248
+ this.server.close();
249
+ }
250
+ }
251
+ exports.Relay = Relay;
252
+ class RelayClient {
253
+ constructor(relayUrl, agentId, callbacks, options) {
254
+ this.ws = null;
255
+ this.heartbeatTimer = null;
256
+ this.reconnectAttempts = 0;
257
+ this.maxReconnectDelayMs = 60000;
258
+ this.minReconnectDelayMs = 1000;
259
+ const url = new URL(relayUrl);
260
+ if (url.pathname === '/') {
261
+ url.pathname = '/adp/relay';
262
+ }
263
+ this.relayUrl = url.toString();
264
+ this.agentId = agentId;
265
+ this.callbacks = callbacks;
266
+ this.reconnect = options?.reconnect ?? true;
267
+ this.heartbeatIntervalMs = options?.heartbeatIntervalMs ?? 15000;
268
+ this.maxReconnectDelayMs = options?.maxReconnectDelayMs ?? 60000;
269
+ }
270
+ async connect() {
271
+ return new Promise((resolve, reject) => {
272
+ const url = `${this.relayUrl}?agent_id=${encodeURIComponent(this.agentId)}`;
273
+ const ws = new ws_1.WebSocket(url);
274
+ this.ws = ws;
275
+ let settled = false;
276
+ const finish = (err) => {
277
+ if (settled)
278
+ return;
279
+ settled = true;
280
+ clearTimeout(timeout);
281
+ if (err)
282
+ reject(err);
283
+ else
284
+ resolve();
285
+ };
286
+ const timeout = setTimeout(() => {
287
+ finish(new Error('Relay connection timeout'));
288
+ }, 10000);
289
+ ws.on('open', () => {
290
+ clearTimeout(timeout);
291
+ this.reconnectAttempts = 0;
292
+ });
293
+ ws.on('message', (data) => {
294
+ try {
295
+ const msg = JSON.parse(data.toString());
296
+ if (msg.type === 'welcome') {
297
+ this.callbacks.onWelcome?.(msg.session_id);
298
+ this.startHeartbeat();
299
+ finish();
300
+ return;
301
+ }
302
+ if (msg.type === 'busy') {
303
+ this.callbacks.onBusy?.();
304
+ ws.close();
305
+ finish(new Error('Relay busy'));
306
+ return;
307
+ }
308
+ if (msg.type === 'ping') {
309
+ ws.send(JSON.stringify({ type: 'pong' }));
310
+ return;
311
+ }
312
+ if (msg.type === 'pong') {
313
+ return;
314
+ }
315
+ if (msg.type === 'peer_joined' || msg.type === 'peer_left') {
316
+ this.callbacks.onPeerUpdate?.(msg.type, msg.agent_id);
317
+ return;
318
+ }
319
+ if (msg.type === 'peers_list' && Array.isArray(msg.peers)) {
320
+ for (const peerId of msg.peers) {
321
+ this.callbacks.onPeerUpdate?.('peer_joined', peerId);
322
+ }
323
+ return;
324
+ }
325
+ if (msg.type === 'relay' && msg.payload) {
326
+ this.callbacks.onMessage?.(msg.payload);
327
+ return;
328
+ }
329
+ this.callbacks.onMessage?.(msg);
330
+ }
331
+ catch (err) {
332
+ console.warn('[ADP Relay Client] Failed to parse relay message:', err);
333
+ }
334
+ });
335
+ ws.on('close', () => {
336
+ this.stopHeartbeat();
337
+ this.callbacks.onClose?.();
338
+ if (!settled) {
339
+ finish(new Error('Relay connection closed unexpectedly'));
340
+ }
341
+ if (this.reconnect && this.ws === ws) {
342
+ this.reconnectToRelay();
343
+ }
344
+ });
345
+ ws.on('error', (err) => {
346
+ if (!settled) {
347
+ finish(new Error(`Relay connection error: ${err.message}`));
348
+ }
349
+ });
350
+ });
351
+ }
352
+ send(to, envelope) {
353
+ if (this.ws && this.ws.readyState === ws_1.WebSocket.OPEN) {
354
+ this.ws.send(JSON.stringify({ type: 'relay', to, payload: envelope }));
355
+ }
356
+ }
357
+ startHeartbeat() {
358
+ this.stopHeartbeat();
359
+ this.heartbeatTimer = setInterval(() => {
360
+ if (this.ws && this.ws.readyState === ws_1.WebSocket.OPEN) {
361
+ this.ws.ping();
362
+ }
363
+ }, this.heartbeatIntervalMs);
364
+ }
365
+ stopHeartbeat() {
366
+ if (this.heartbeatTimer) {
367
+ clearInterval(this.heartbeatTimer);
368
+ this.heartbeatTimer = null;
369
+ }
370
+ }
371
+ async reconnectToRelay() {
372
+ // 指数退避计算延迟
373
+ const delay = Math.min(this.minReconnectDelayMs * Math.pow(2, this.reconnectAttempts), this.maxReconnectDelayMs);
374
+ // 增加重连计数
375
+ this.reconnectAttempts++;
376
+ console.log(`🔄 Reconnecting to relay in ${delay}ms (attempt ${this.reconnectAttempts})...`);
377
+ setTimeout(async () => {
378
+ try {
379
+ await this.connect();
380
+ }
381
+ catch (err) {
382
+ console.warn('[ADP Relay Client] Reconnection failed:', err);
383
+ }
384
+ }, delay);
385
+ }
386
+ isConnected() {
387
+ return this.ws !== null && this.ws.readyState === ws_1.WebSocket.OPEN;
388
+ }
389
+ close() {
390
+ this.reconnect = false;
391
+ this.stopHeartbeat();
392
+ if (this.ws) {
393
+ this.ws.close();
394
+ this.ws = null;
395
+ }
396
+ }
397
+ }
398
+ exports.RelayClient = RelayClient;
399
+ //# sourceMappingURL=relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Envelope } from './envelope';
2
+ export type TaskStatus = 'PENDING' | 'WORKING' | 'COMPLETED' | 'FAILED' | 'CANCELED';
3
+ export interface Task {
4
+ taskId: string;
5
+ status: TaskStatus;
6
+ capability: string;
7
+ input: unknown;
8
+ result?: unknown;
9
+ error?: {
10
+ code: string;
11
+ message: string;
12
+ };
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ }
16
+ export interface CreateTaskParams {
17
+ capability: string;
18
+ input: unknown;
19
+ context_id?: string;
20
+ }
21
+ export interface GetTaskResult {
22
+ task_id: string;
23
+ status: TaskStatus;
24
+ result?: unknown;
25
+ error?: {
26
+ code: string;
27
+ message: string;
28
+ };
29
+ created_at: string;
30
+ updated_at: string;
31
+ }
32
+ export declare class TaskManager {
33
+ private tasks;
34
+ create(capability: string, input: unknown): Task;
35
+ start(taskId: string): Task;
36
+ complete(taskId: string, result: unknown): Task;
37
+ fail(taskId: string, error: {
38
+ code: string;
39
+ message: string;
40
+ }): Task;
41
+ cancel(taskId: string): Task;
42
+ get(taskId: string): Task | undefined;
43
+ list(filter?: {
44
+ status?: TaskStatus;
45
+ cursor?: string;
46
+ limit?: number;
47
+ }): {
48
+ tasks: Task[];
49
+ nextCursor: string | null;
50
+ };
51
+ handleCreateTask(envelope: Envelope, secretKey: Uint8Array): Promise<Envelope>;
52
+ handleGetTask(envelope: Envelope, secretKey: Uint8Array): Promise<Envelope>;
53
+ handleListTasks(envelope: Envelope, secretKey: Uint8Array): Promise<Envelope>;
54
+ handleCancelTask(envelope: Envelope, secretKey: Uint8Array): Promise<Envelope>;
55
+ }