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,291 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Discovery = void 0;
40
+ exports.getSharedMdns = getSharedMdns;
41
+ const os = __importStar(require("os"));
42
+ const multicast_dns_1 = __importDefault(require("multicast-dns"));
43
+ let sharedMdns = null;
44
+ function getSharedMdns() {
45
+ if (!sharedMdns) {
46
+ sharedMdns = (0, multicast_dns_1.default)({ loopback: true });
47
+ }
48
+ return sharedMdns;
49
+ }
50
+ class Discovery {
51
+ constructor(agentId, port, callbacks = {}, mdnsInstance) {
52
+ this.peers = new Map();
53
+ this.announceTimer = null;
54
+ this.browseTimer = null;
55
+ this.staleTimer = null;
56
+ this.running = false;
57
+ this.agentId = agentId;
58
+ this.port = port;
59
+ this.callbacks = callbacks;
60
+ const shortId = agentId.split('@')[0].replace('adp://', '').slice(0, 12);
61
+ this.instanceName = `${shortId}._adp._tcp.local`;
62
+ this.hostname = `${shortId}.local`;
63
+ if (mdnsInstance) {
64
+ this.mdns = mdnsInstance;
65
+ this.ownsMdns = false;
66
+ }
67
+ else {
68
+ this.mdns = (0, multicast_dns_1.default)({ loopback: true });
69
+ this.ownsMdns = true;
70
+ }
71
+ }
72
+ start() {
73
+ if (this.running)
74
+ return;
75
+ this.running = true;
76
+ this.mdns.on('query', (query) => {
77
+ for (const q of query.questions) {
78
+ if (q.type === 'PTR' && q.name === '_adp._tcp.local') {
79
+ this.mdns.respond({
80
+ answers: [{
81
+ name: '_adp._tcp.local',
82
+ type: 'PTR',
83
+ ttl: 120,
84
+ data: this.instanceName,
85
+ }],
86
+ additionals: [
87
+ {
88
+ name: this.instanceName,
89
+ type: 'SRV',
90
+ ttl: 120,
91
+ data: { target: this.hostname, port: this.port },
92
+ },
93
+ {
94
+ name: this.instanceName,
95
+ type: 'TXT',
96
+ ttl: 120,
97
+ data: Buffer.from(`agent_id=${this.agentId}\x00protocol=adp/0.2`),
98
+ },
99
+ {
100
+ name: this.hostname,
101
+ type: 'A',
102
+ ttl: 120,
103
+ data: this.getLocalIP(),
104
+ },
105
+ ],
106
+ });
107
+ }
108
+ if (q.type === 'SRV' && q.name === this.instanceName) {
109
+ this.mdns.respond({
110
+ answers: [{
111
+ name: this.instanceName,
112
+ type: 'SRV',
113
+ ttl: 120,
114
+ data: { target: this.hostname, port: this.port },
115
+ }],
116
+ });
117
+ }
118
+ if (q.type === 'TXT' && q.name === this.instanceName) {
119
+ this.mdns.respond({
120
+ answers: [{
121
+ name: this.instanceName,
122
+ type: 'TXT',
123
+ ttl: 120,
124
+ data: Buffer.from(`agent_id=${this.agentId}\x00protocol=adp/0.2`),
125
+ }],
126
+ });
127
+ }
128
+ if ((q.type === 'A' || q.type === 'AAAA') && q.name === this.hostname) {
129
+ this.mdns.respond({
130
+ answers: [{
131
+ name: this.hostname,
132
+ type: 'A',
133
+ ttl: 120,
134
+ data: this.getLocalIP(),
135
+ }],
136
+ });
137
+ }
138
+ }
139
+ });
140
+ this.mdns.on('response', (response) => {
141
+ const srvRecords = {};
142
+ const txtRecords = {};
143
+ const allRecords = [
144
+ ...(response.answers || []),
145
+ ...(response.additionals || []),
146
+ ];
147
+ for (const a of allRecords) {
148
+ if (a.type === 'SRV' && typeof a.data === 'object') {
149
+ srvRecords[a.name] = a.data;
150
+ }
151
+ if (a.type === 'TXT') {
152
+ if (Buffer.isBuffer(a.data)) {
153
+ txtRecords[a.name] = a.data;
154
+ }
155
+ else if (Array.isArray(a.data) && a.data.length > 0) {
156
+ try {
157
+ txtRecords[a.name] = Buffer.concat(a.data.map(b => Buffer.isBuffer(b) ? b : Buffer.from(b)));
158
+ }
159
+ catch { }
160
+ }
161
+ }
162
+ }
163
+ for (const a of response.answers) {
164
+ if (a.type === 'PTR' && a.name === '_adp._tcp.local') {
165
+ const instanceName = a.data;
166
+ if (instanceName === this.instanceName)
167
+ continue;
168
+ const srv = srvRecords[instanceName];
169
+ const txtBuf = txtRecords[instanceName];
170
+ if (srv && txtBuf) {
171
+ const txt = this.parseTXT(txtBuf);
172
+ if (txt.agent_id) {
173
+ const peer = {
174
+ agentId: txt.agent_id,
175
+ host: srv.target,
176
+ port: srv.port,
177
+ protocol: txt.protocol || 'adp/0.2',
178
+ lastSeen: Date.now(),
179
+ };
180
+ const existing = this.peers.get(txt.agent_id);
181
+ this.peers.set(txt.agent_id, peer);
182
+ if (!existing) {
183
+ this.callbacks.onPeerDiscovered?.(peer);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ }
189
+ });
190
+ this.proactiveAnnounce();
191
+ this.announceTimer = setInterval(() => this.proactiveAnnounce(), 60000);
192
+ this.browseTimer = setInterval(() => this.browse(), 30000);
193
+ this.staleTimer = setInterval(() => this.cleanStale(), 30000);
194
+ this.browse();
195
+ }
196
+ proactiveAnnounce() {
197
+ this.mdns.respond({
198
+ answers: [
199
+ {
200
+ name: '_adp._tcp.local',
201
+ type: 'PTR',
202
+ ttl: 120,
203
+ data: this.instanceName,
204
+ },
205
+ {
206
+ name: this.instanceName,
207
+ type: 'SRV',
208
+ ttl: 120,
209
+ data: { target: this.hostname, port: this.port },
210
+ },
211
+ {
212
+ name: this.instanceName,
213
+ type: 'TXT',
214
+ ttl: 120,
215
+ data: Buffer.from(`agent_id=${this.agentId}\x00protocol=adp/0.2`),
216
+ },
217
+ {
218
+ name: this.hostname,
219
+ type: 'A',
220
+ ttl: 120,
221
+ data: this.getLocalIP(),
222
+ },
223
+ ],
224
+ });
225
+ }
226
+ browse() {
227
+ this.mdns.query({
228
+ questions: [{ name: '_adp._tcp.local', type: 'PTR' }],
229
+ });
230
+ }
231
+ cleanStale() {
232
+ const now = Date.now();
233
+ for (const [id, peer] of this.peers) {
234
+ if (now - peer.lastSeen > 120000) {
235
+ this.peers.delete(id);
236
+ this.callbacks.onPeerLost?.(id);
237
+ }
238
+ }
239
+ }
240
+ parseTXT(buf) {
241
+ const result = {};
242
+ const text = buf.toString();
243
+ for (const kv of text.split('\x00')) {
244
+ const eq = kv.indexOf('=');
245
+ if (eq > 0) {
246
+ result[kv.slice(0, eq)] = kv.slice(eq + 1);
247
+ }
248
+ }
249
+ return result;
250
+ }
251
+ getLocalIP() {
252
+ const nets = os.networkInterfaces();
253
+ for (const iface of Object.values(nets)) {
254
+ if (!iface)
255
+ continue;
256
+ for (const addr of iface) {
257
+ if (addr.family === 'IPv4' && !addr.internal) {
258
+ return addr.address;
259
+ }
260
+ }
261
+ }
262
+ return '127.0.0.1';
263
+ }
264
+ getPeers() {
265
+ return Array.from(this.peers.values());
266
+ }
267
+ shutdown() {
268
+ this.running = false;
269
+ if (this.announceTimer)
270
+ clearInterval(this.announceTimer);
271
+ if (this.browseTimer)
272
+ clearInterval(this.browseTimer);
273
+ if (this.staleTimer)
274
+ clearInterval(this.staleTimer);
275
+ this.mdns.respond({
276
+ answers: [
277
+ { name: '_adp._tcp.local', type: 'PTR', ttl: 0, data: this.instanceName },
278
+ { name: this.instanceName, type: 'SRV', ttl: 0, data: { target: this.hostname, port: this.port } },
279
+ { name: this.instanceName, type: 'TXT', ttl: 0, data: Buffer.from('') },
280
+ ],
281
+ additionals: [
282
+ { name: this.hostname, type: 'A', ttl: 0, data: this.getLocalIP() },
283
+ ],
284
+ });
285
+ if (this.ownsMdns) {
286
+ setTimeout(() => this.mdns.destroy(), 500);
287
+ }
288
+ }
289
+ }
290
+ exports.Discovery = Discovery;
291
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { TrustStore } from './trust-store';
2
+ export interface Envelope {
3
+ protocol: string;
4
+ id: string;
5
+ from: string;
6
+ to: string;
7
+ action: string;
8
+ params: unknown;
9
+ timestamp: string;
10
+ sig: string;
11
+ reply_to?: string;
12
+ error?: {
13
+ code: string;
14
+ message: string;
15
+ data?: unknown;
16
+ };
17
+ trace_id?: string;
18
+ span_id?: string;
19
+ encoding?: string;
20
+ expires_at?: string;
21
+ }
22
+ export interface VerificationResult {
23
+ valid: boolean;
24
+ error?: string;
25
+ message?: string;
26
+ }
27
+ export declare class MessageVerifier {
28
+ private trustStore;
29
+ constructor(trustStore: TrustStore);
30
+ verify(envelope: Envelope): Promise<VerificationResult>;
31
+ }
32
+ export declare function generateMessageId(): string;
33
+ export declare function buildEnvelope(from: string, to: string, action: string, params?: unknown, options?: {
34
+ reply_to?: string;
35
+ error?: {
36
+ code: string;
37
+ message: string;
38
+ data?: unknown;
39
+ };
40
+ trace_id?: string;
41
+ span_id?: string;
42
+ }): Omit<Envelope, 'sig'>;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageVerifier = void 0;
4
+ exports.generateMessageId = generateMessageId;
5
+ exports.buildEnvelope = buildEnvelope;
6
+ const crypto_1 = require("./crypto");
7
+ const canonical_1 = require("./canonical");
8
+ const agent_id_1 = require("./agent-id");
9
+ const TIMESTAMP_TOLERANCE_MS = 300000;
10
+ class MessageVerifier {
11
+ constructor(trustStore) {
12
+ this.trustStore = trustStore;
13
+ }
14
+ async verify(envelope) {
15
+ if (!envelope.sig) {
16
+ return { valid: false, error: 'INVALID_SIGNATURE', message: 'Signature missing' };
17
+ }
18
+ const sigBytes = (0, crypto_1.decodeBase64URL)(envelope.sig);
19
+ if (sigBytes.length !== 64) {
20
+ return { valid: false, error: 'INVALID_SIGNATURE', message: 'Invalid signature length' };
21
+ }
22
+ const timestamp = new Date(envelope.timestamp).getTime();
23
+ const now = Date.now();
24
+ if (Math.abs(now - timestamp) > TIMESTAMP_TOLERANCE_MS) {
25
+ return { valid: false, error: 'INVALID_PARAMS', message: 'Timestamp too old or in future' };
26
+ }
27
+ const publicKey = (0, agent_id_1.extractPublicKey)(envelope.from);
28
+ if (!this.trustStore.has(envelope.from)) {
29
+ this.trustStore.pin(envelope.from, publicKey, 'tofu');
30
+ }
31
+ const { sig, ...unsigned } = envelope;
32
+ const canonical = (0, canonical_1.canonicalize)(unsigned);
33
+ const messageBytes = new TextEncoder().encode(canonical);
34
+ const isValid = (0, crypto_1.verify)(publicKey, messageBytes, sigBytes);
35
+ if (isValid) {
36
+ this.trustStore.updateLastVerified(envelope.from);
37
+ return { valid: true };
38
+ }
39
+ return { valid: false, error: 'INVALID_SIGNATURE', message: 'Signature verification failed' };
40
+ }
41
+ }
42
+ exports.MessageVerifier = MessageVerifier;
43
+ function generateMessageId() {
44
+ return 'msg_' + Math.random().toString(36).slice(2, 10);
45
+ }
46
+ function buildEnvelope(from, to, action, params = {}, options) {
47
+ return {
48
+ protocol: 'adp/0.2',
49
+ id: generateMessageId(),
50
+ from,
51
+ to,
52
+ action,
53
+ params,
54
+ timestamp: new Date().toISOString(),
55
+ ...options,
56
+ };
57
+ }
58
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":";;;AAsEA,8CAEC;AAED,sCAsBC;AAhGD,qCAAmD;AACnD,2CAA2C;AAC3C,yCAA8C;AA0B9C,MAAM,sBAAsB,GAAG,MAAO,CAAC;AAEvC,MAAa,eAAe;IAC1B,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;QACpF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,wBAAe,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QAC3F,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,sBAAsB,EAAE,CAAC;YACvD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;QAC9F,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;QACtC,MAAM,SAAS,GAAG,IAAA,wBAAY,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE1D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IAChG,CAAC;CACF;AAtCD,0CAsCC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,aAAa,CAC3B,IAAY,EACZ,EAAU,EACV,MAAc,EACd,SAAkB,EAAE,EACpB,OAKC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,EAAE;QACF,MAAM;QACN,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,OAAO;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { WebSocket } from 'ws';
2
+ import { Manifest, Capability, Route } from './manifest';
3
+ export interface GatewayOptions {
4
+ host?: string;
5
+ port: number;
6
+ path?: string;
7
+ secretKey: Uint8Array;
8
+ agentId: string;
9
+ displayName: string;
10
+ capabilities: (string | Capability)[];
11
+ routes?: Route[];
12
+ tls?: {
13
+ cert: string;
14
+ key: string;
15
+ };
16
+ skipVerification?: boolean;
17
+ }
18
+ export declare class Gateway {
19
+ private server;
20
+ private wss;
21
+ private secretKey;
22
+ private agentId;
23
+ private manifest;
24
+ private trustStore;
25
+ private verifier;
26
+ private messageIdCache;
27
+ private skipVerification;
28
+ constructor(options: GatewayOptions);
29
+ private handleConnection;
30
+ private processMessage;
31
+ private handleMessage;
32
+ private handlePing;
33
+ private handleCapabilityQuery;
34
+ private handleInfo;
35
+ private sendError;
36
+ private signAndBuildEnvelope;
37
+ getManifest(): Manifest;
38
+ getAgentId(): string;
39
+ processRelayMessage(rawEnvelope: unknown): Promise<void>;
40
+ private processMessageDirect;
41
+ private handleMessageDirect;
42
+ close(): void;
43
+ }
44
+ export declare function connectToAgent(agentId: string, address: string, localAgentId: string): Promise<WebSocket>;