@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,108 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import { createEnvelope, verifyEnvelope } from '../message/envelope.js';
3
- /**
4
- * Service for discovering peers on the Agora network
5
- */
6
- export class PeerDiscoveryService extends EventEmitter {
7
- config;
8
- constructor(config) {
9
- super();
10
- this.config = config;
11
- // Listen for peer list responses and referrals
12
- this.config.relayClient.on('message', (envelope, from) => {
13
- if (envelope.type === 'peer_list_response') {
14
- this.handlePeerList(envelope);
15
- }
16
- else if (envelope.type === 'peer_referral') {
17
- this.handleReferral(envelope, from);
18
- }
19
- });
20
- }
21
- /**
22
- * Request peer list from relay
23
- */
24
- async discoverViaRelay(filters) {
25
- if (!this.config.relayPublicKey) {
26
- throw new Error('Relay public key not configured');
27
- }
28
- if (!this.config.relayClient.connected()) {
29
- throw new Error('Not connected to relay');
30
- }
31
- const payload = filters ? { filters } : {};
32
- const envelope = createEnvelope('peer_list_request', this.config.publicKey, this.config.privateKey, payload);
33
- // Send request to relay
34
- const result = await this.config.relayClient.send(this.config.relayPublicKey, envelope);
35
- if (!result.ok) {
36
- throw new Error(`Failed to send peer list request: ${result.error}`);
37
- }
38
- // Wait for response (with timeout)
39
- return new Promise((resolve, reject) => {
40
- const timeout = setTimeout(() => {
41
- cleanup();
42
- reject(new Error('Peer list request timed out'));
43
- }, 10000); // 10 second timeout
44
- const messageHandler = (responseEnvelope, from) => {
45
- if (responseEnvelope.type === 'peer_list_response' &&
46
- responseEnvelope.inReplyTo === envelope.id &&
47
- from === this.config.relayPublicKey) {
48
- cleanup();
49
- resolve(responseEnvelope.payload);
50
- }
51
- };
52
- const cleanup = () => {
53
- clearTimeout(timeout);
54
- this.config.relayClient.off('message', messageHandler);
55
- };
56
- this.config.relayClient.on('message', messageHandler);
57
- });
58
- }
59
- /**
60
- * Send peer referral to another agent
61
- */
62
- async referPeer(recipientPublicKey, referredPublicKey, metadata) {
63
- if (!this.config.relayClient.connected()) {
64
- return { ok: false, error: 'Not connected to relay' };
65
- }
66
- const payload = {
67
- publicKey: referredPublicKey,
68
- endpoint: metadata?.endpoint,
69
- metadata: metadata?.name ? { name: metadata.name } : undefined,
70
- comment: metadata?.comment,
71
- trustScore: metadata?.trustScore,
72
- };
73
- const envelope = createEnvelope('peer_referral', this.config.publicKey, this.config.privateKey, payload);
74
- return this.config.relayClient.send(recipientPublicKey, envelope);
75
- }
76
- /**
77
- * Handle incoming peer referral
78
- */
79
- handleReferral(envelope, from) {
80
- // Verify envelope
81
- const verification = verifyEnvelope(envelope);
82
- if (!verification.valid) {
83
- this.emit('error', new Error(`Invalid peer referral: ${verification.reason}`));
84
- return;
85
- }
86
- // Emit event for application to handle
87
- this.emit('peer-referral', envelope.payload, from);
88
- }
89
- /**
90
- * Handle incoming peer list from relay
91
- */
92
- handlePeerList(envelope) {
93
- // Verify envelope
94
- const verification = verifyEnvelope(envelope);
95
- if (!verification.valid) {
96
- this.emit('error', new Error(`Invalid peer list response: ${verification.reason}`));
97
- return;
98
- }
99
- // Verify sender is the relay
100
- if (envelope.sender !== this.config.relayPublicKey) {
101
- this.emit('error', new Error('Peer list response not from configured relay'));
102
- return;
103
- }
104
- // Emit event
105
- this.emit('peers-discovered', envelope.payload.peers);
106
- }
107
- }
108
- //# sourceMappingURL=peer-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peer-discovery.js","sourceRoot":"","sources":["../../src/discovery/peer-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Represents an ed25519 key pair for agent identity
3
- */
4
- export interface KeyPair {
5
- publicKey: string;
6
- privateKey: string;
7
- }
8
- /**
9
- * Generates a new ed25519 key pair
10
- * @returns KeyPair with hex-encoded public and private keys
11
- */
12
- export declare function generateKeyPair(): KeyPair;
13
- /**
14
- * Signs a message with the private key
15
- * @param message - The message to sign (string or Buffer)
16
- * @param privateKeyHex - The private key in hex format
17
- * @returns Signature as hex string
18
- */
19
- export declare function signMessage(message: string | Buffer, privateKeyHex: string): string;
20
- /**
21
- * Verifies a signature with the public key
22
- * @param message - The original message (string or Buffer)
23
- * @param signatureHex - The signature in hex format
24
- * @param publicKeyHex - The public key in hex format
25
- * @returns true if signature is valid, false otherwise
26
- */
27
- export declare function verifySignature(message: string | Buffer, signatureHex: string, publicKeyHex: string): boolean;
28
- /**
29
- * Exports a key pair to a JSON-serializable format
30
- * @param keyPair - The key pair to export
31
- * @returns KeyPair object with hex-encoded keys
32
- */
33
- export declare function exportKeyPair(keyPair: KeyPair): KeyPair;
34
- /**
35
- * Imports a key pair from hex strings
36
- * @param publicKeyHex - The public key in hex format
37
- * @param privateKeyHex - The private key in hex format
38
- * @returns KeyPair object
39
- * @throws Error if keys are not valid hex strings
40
- */
41
- export declare function importKeyPair(publicKeyHex: string, privateKeyHex: string): KeyPair;
42
- //# sourceMappingURL=keypair.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keypair.d.ts","sourceRoot":"","sources":["../../src/identity/keypair.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAOzC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAWnF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAcT;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAclF"}
@@ -1,83 +0,0 @@
1
- import { sign, verify, generateKeyPairSync } from 'node:crypto';
2
- /**
3
- * Generates a new ed25519 key pair
4
- * @returns KeyPair with hex-encoded public and private keys
5
- */
6
- export function generateKeyPair() {
7
- const { publicKey, privateKey } = generateKeyPairSync('ed25519');
8
- return {
9
- publicKey: publicKey.export({ type: 'spki', format: 'der' }).toString('hex'),
10
- privateKey: privateKey.export({ type: 'pkcs8', format: 'der' }).toString('hex'),
11
- };
12
- }
13
- /**
14
- * Signs a message with the private key
15
- * @param message - The message to sign (string or Buffer)
16
- * @param privateKeyHex - The private key in hex format
17
- * @returns Signature as hex string
18
- */
19
- export function signMessage(message, privateKeyHex) {
20
- const messageBuffer = typeof message === 'string' ? Buffer.from(message) : message;
21
- const privateKey = Buffer.from(privateKeyHex, 'hex');
22
- const signature = sign(null, messageBuffer, {
23
- key: privateKey,
24
- format: 'der',
25
- type: 'pkcs8',
26
- });
27
- return signature.toString('hex');
28
- }
29
- /**
30
- * Verifies a signature with the public key
31
- * @param message - The original message (string or Buffer)
32
- * @param signatureHex - The signature in hex format
33
- * @param publicKeyHex - The public key in hex format
34
- * @returns true if signature is valid, false otherwise
35
- */
36
- export function verifySignature(message, signatureHex, publicKeyHex) {
37
- const messageBuffer = typeof message === 'string' ? Buffer.from(message) : message;
38
- const signature = Buffer.from(signatureHex, 'hex');
39
- const publicKey = Buffer.from(publicKeyHex, 'hex');
40
- try {
41
- return verify(null, messageBuffer, {
42
- key: publicKey,
43
- format: 'der',
44
- type: 'spki',
45
- }, signature);
46
- }
47
- catch {
48
- return false;
49
- }
50
- }
51
- /**
52
- * Exports a key pair to a JSON-serializable format
53
- * @param keyPair - The key pair to export
54
- * @returns KeyPair object with hex-encoded keys
55
- */
56
- export function exportKeyPair(keyPair) {
57
- return {
58
- publicKey: keyPair.publicKey,
59
- privateKey: keyPair.privateKey,
60
- };
61
- }
62
- /**
63
- * Imports a key pair from hex strings
64
- * @param publicKeyHex - The public key in hex format
65
- * @param privateKeyHex - The private key in hex format
66
- * @returns KeyPair object
67
- * @throws Error if keys are not valid hex strings
68
- */
69
- export function importKeyPair(publicKeyHex, privateKeyHex) {
70
- // Validate that keys are valid hex strings
71
- const hexPattern = /^[0-9a-f]+$/i;
72
- if (!hexPattern.test(publicKeyHex)) {
73
- throw new Error('Invalid public key: must be a hex string');
74
- }
75
- if (!hexPattern.test(privateKeyHex)) {
76
- throw new Error('Invalid private key: must be a hex string');
77
- }
78
- return {
79
- publicKey: publicKeyHex,
80
- privateKey: privateKeyHex,
81
- };
82
- }
83
- //# sourceMappingURL=keypair.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keypair.js","sourceRoot":"","sources":["../../src/identity/keypair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAUhE;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAEjE,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5E,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KAChF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB,EAAE,aAAqB;IACzE,MAAM,aAAa,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACnF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;QAC1C,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAwB,EACxB,YAAoB,EACpB,YAAoB;IAEpB,MAAM,aAAa,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE;YACjC,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,YAAoB,EAAE,aAAqB;IACvE,2CAA2C;IAC3C,MAAM,UAAU,GAAG,cAAc,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,aAAa;KAC1B,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
@@ -1,59 +0,0 @@
1
- /**
2
- * Message types on the Agora network.
3
- * Every piece of data flowing between agents is wrapped in an envelope.
4
- */
5
- export type MessageType = 'announce' | 'discover' | 'request' | 'response' | 'publish' | 'subscribe' | 'verify' | 'ack' | 'error' | 'paper_discovery' | 'peer_list_request' | 'peer_list_response' | 'peer_referral' | 'capability_announce' | 'capability_query' | 'capability_response' | 'commit' | 'reveal' | 'verification' | 'revocation' | 'reputation_query' | 'reputation_response';
6
- /**
7
- * The signed envelope that wraps every message on the network.
8
- * Content-addressed: the ID is the hash of the canonical payload.
9
- * Signed: every envelope carries a signature from the sender's private key.
10
- */
11
- export interface Envelope<T = unknown> {
12
- /** Content-addressed ID: SHA-256 hash of canonical payload */
13
- id: string;
14
- /** Message type */
15
- type: MessageType;
16
- /** Sender's public key (hex-encoded ed25519) */
17
- sender: string;
18
- /** Unix timestamp (ms) when the message was created */
19
- timestamp: number;
20
- /** Optional: ID of the message this is responding to */
21
- inReplyTo?: string;
22
- /** The actual payload */
23
- payload: T;
24
- /** ed25519 signature over the canonical form (hex-encoded) */
25
- signature: string;
26
- }
27
- /**
28
- * Canonical form of an envelope for signing/hashing.
29
- * Deterministic JSON serialization: recursively sorted keys, no whitespace.
30
- */
31
- export declare function canonicalize(type: MessageType, sender: string, timestamp: number, payload: unknown, inReplyTo?: string): string;
32
- /**
33
- * Compute the content-addressed ID for a message.
34
- */
35
- export declare function computeId(canonical: string): string;
36
- /**
37
- * Create a signed envelope.
38
- * @param type - Message type
39
- * @param sender - Sender's public key (hex)
40
- * @param privateKey - Sender's private key (hex) for signing
41
- * @param payload - The message payload
42
- * @param timestamp - Timestamp for the envelope (ms), defaults to Date.now()
43
- * @param inReplyTo - Optional ID of the message being replied to
44
- * @returns A signed Envelope
45
- */
46
- export declare function createEnvelope<T>(type: MessageType, sender: string, privateKey: string, payload: T, timestamp?: number, inReplyTo?: string): Envelope<T>;
47
- /**
48
- * Verify an envelope's integrity and authenticity.
49
- * Checks:
50
- * 1. Canonical form matches the ID (content-addressing)
51
- * 2. Signature is valid for the sender's public key
52
- *
53
- * @returns Object with `valid` boolean and optional `reason` for failure
54
- */
55
- export declare function verifyEnvelope(envelope: Envelope): {
56
- valid: boolean;
57
- reason?: string;
58
- };
59
- //# sourceMappingURL=envelope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/message/envelope.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,WAAW,GACX,QAAQ,GACR,KAAK,GACL,OAAO,GACP,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,eAAe,GACf,qBAAqB,GACrB,kBAAkB,GAClB,qBAAqB,GACrB,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAgBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/H;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,EACV,SAAS,GAAE,MAAmB,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,CAAC,CAAC,CAAC,CAcb;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBtF"}
@@ -1,83 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { signMessage, verifySignature } from '../identity/keypair.js';
3
- /**
4
- * Deterministic JSON serialization with recursively sorted keys.
5
- */
6
- function stableStringify(value) {
7
- if (value === null || value === undefined)
8
- return JSON.stringify(value);
9
- if (typeof value !== 'object')
10
- return JSON.stringify(value);
11
- if (Array.isArray(value)) {
12
- return '[' + value.map(stableStringify).join(',') + ']';
13
- }
14
- const keys = Object.keys(value).sort();
15
- const pairs = keys.map(k => JSON.stringify(k) + ':' + stableStringify(value[k]));
16
- return '{' + pairs.join(',') + '}';
17
- }
18
- /**
19
- * Canonical form of an envelope for signing/hashing.
20
- * Deterministic JSON serialization: recursively sorted keys, no whitespace.
21
- */
22
- export function canonicalize(type, sender, timestamp, payload, inReplyTo) {
23
- const obj = { payload, sender, timestamp, type };
24
- if (inReplyTo !== undefined) {
25
- obj.inReplyTo = inReplyTo;
26
- }
27
- return stableStringify(obj);
28
- }
29
- /**
30
- * Compute the content-addressed ID for a message.
31
- */
32
- export function computeId(canonical) {
33
- return createHash('sha256').update(canonical).digest('hex');
34
- }
35
- /**
36
- * Create a signed envelope.
37
- * @param type - Message type
38
- * @param sender - Sender's public key (hex)
39
- * @param privateKey - Sender's private key (hex) for signing
40
- * @param payload - The message payload
41
- * @param timestamp - Timestamp for the envelope (ms), defaults to Date.now()
42
- * @param inReplyTo - Optional ID of the message being replied to
43
- * @returns A signed Envelope
44
- */
45
- export function createEnvelope(type, sender, privateKey, payload, timestamp = Date.now(), inReplyTo) {
46
- const canonical = canonicalize(type, sender, timestamp, payload, inReplyTo);
47
- const id = computeId(canonical);
48
- const signature = signMessage(canonical, privateKey);
49
- return {
50
- id,
51
- type,
52
- sender,
53
- timestamp,
54
- ...(inReplyTo !== undefined ? { inReplyTo } : {}),
55
- payload,
56
- signature,
57
- };
58
- }
59
- /**
60
- * Verify an envelope's integrity and authenticity.
61
- * Checks:
62
- * 1. Canonical form matches the ID (content-addressing)
63
- * 2. Signature is valid for the sender's public key
64
- *
65
- * @returns Object with `valid` boolean and optional `reason` for failure
66
- */
67
- export function verifyEnvelope(envelope) {
68
- const { id, type, sender, timestamp, payload, signature, inReplyTo } = envelope;
69
- // Reconstruct canonical form
70
- const canonical = canonicalize(type, sender, timestamp, payload, inReplyTo);
71
- // Check content-addressed ID
72
- const expectedId = computeId(canonical);
73
- if (id !== expectedId) {
74
- return { valid: false, reason: 'id_mismatch' };
75
- }
76
- // Check signature
77
- const sigValid = verifySignature(canonical, signature, sender);
78
- if (!sigValid) {
79
- return { valid: false, reason: 'signature_invalid' };
80
- }
81
- return { valid: true };
82
- }
83
- //# sourceMappingURL=envelope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/message/envelope.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Payload for 'paper_discovery' messages.
3
- * An agent publishes a discovered academic paper to the network.
4
- * Each paper gets its own envelope for easy referencing and threading.
5
- */
6
- export interface PaperDiscoveryPayload {
7
- /** arXiv identifier (e.g. "2501.12345") */
8
- arxiv_id: string;
9
- /** Paper title */
10
- title: string;
11
- /** List of author names */
12
- authors: string[];
13
- /** Key contribution in 1-2 sentences */
14
- claim: string;
15
- /** Confidence score (0-1) in the relevance/importance assessment */
16
- confidence: number;
17
- /** Tags describing relevance domains */
18
- relevance_tags: string[];
19
- /** Agent ID of the discoverer */
20
- discoverer: string;
21
- /** ISO 8601 timestamp of discovery */
22
- timestamp: string;
23
- /** URL to the abstract page */
24
- abstract_url: string;
25
- /** URL to the PDF (optional) */
26
- pdf_url?: string;
27
- }
28
- //# sourceMappingURL=paper-discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paper-discovery.d.ts","sourceRoot":"","sources":["../../../src/message/types/paper-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=paper-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paper-discovery.js","sourceRoot":"","sources":["../../../src/message/types/paper-discovery.ts"],"names":[],"mappings":""}
@@ -1,78 +0,0 @@
1
- /**
2
- * Peer discovery message types for the Agora network.
3
- */
4
- /**
5
- * Request peer list from relay
6
- */
7
- export interface PeerListRequestPayload {
8
- /** Optional filters */
9
- filters?: {
10
- /** Only peers seen in last N ms */
11
- activeWithin?: number;
12
- /** Maximum peers to return */
13
- limit?: number;
14
- };
15
- }
16
- /**
17
- * Relay responds with connected peers
18
- */
19
- export interface PeerListResponsePayload {
20
- /** List of known peers */
21
- peers: Array<{
22
- /** Peer's Ed25519 public key */
23
- publicKey: string;
24
- /** Optional metadata (if peer announced) */
25
- metadata?: {
26
- name?: string;
27
- version?: string;
28
- capabilities?: string[];
29
- };
30
- /** Last seen timestamp (ms) */
31
- lastSeen: number;
32
- }>;
33
- /** Total peer count (may be > peers.length if limited) */
34
- totalPeers: number;
35
- /** Relay's public key (for trust verification) */
36
- relayPublicKey: string;
37
- }
38
- /**
39
- * Agent recommends another agent
40
- */
41
- export interface PeerReferralPayload {
42
- /** Referred peer's public key */
43
- publicKey: string;
44
- /** Optional endpoint (if known) */
45
- endpoint?: string;
46
- /** Optional metadata */
47
- metadata?: {
48
- name?: string;
49
- version?: string;
50
- capabilities?: string[];
51
- };
52
- /** Referrer's comment */
53
- comment?: string;
54
- /** Trust hint (RFC-001 integration) */
55
- trustScore?: number;
56
- }
57
- /**
58
- * Validate PeerListRequestPayload
59
- */
60
- export declare function validatePeerListRequest(payload: unknown): {
61
- valid: boolean;
62
- errors: string[];
63
- };
64
- /**
65
- * Validate PeerListResponsePayload
66
- */
67
- export declare function validatePeerListResponse(payload: unknown): {
68
- valid: boolean;
69
- errors: string[];
70
- };
71
- /**
72
- * Validate PeerReferralPayload
73
- */
74
- export declare function validatePeerReferral(payload: unknown): {
75
- valid: boolean;
76
- errors: string[];
77
- };
78
- //# sourceMappingURL=peer-discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peer-discovery.d.ts","sourceRoot":"","sources":["../../../src/message/types/peer-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uBAAuB;IACvB,OAAO,CAAC,EAAE;QACR,mCAAmC;QACnC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,8BAA8B;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,KAAK,EAAE,KAAK,CAAC;QACX,gCAAgC;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,4CAA4C;QAC5C,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;SACzB,CAAC;QACF,+BAA+B;QAC/B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyB9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAqC/F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA2B3F"}
@@ -1,90 +0,0 @@
1
- /**
2
- * Peer discovery message types for the Agora network.
3
- */
4
- /**
5
- * Validate PeerListRequestPayload
6
- */
7
- export function validatePeerListRequest(payload) {
8
- const errors = [];
9
- if (typeof payload !== 'object' || payload === null) {
10
- errors.push('Payload must be an object');
11
- return { valid: false, errors };
12
- }
13
- const p = payload;
14
- if (p.filters !== undefined) {
15
- if (typeof p.filters !== 'object' || p.filters === null) {
16
- errors.push('filters must be an object');
17
- }
18
- else {
19
- const filters = p.filters;
20
- if (filters.activeWithin !== undefined && typeof filters.activeWithin !== 'number') {
21
- errors.push('filters.activeWithin must be a number');
22
- }
23
- if (filters.limit !== undefined && typeof filters.limit !== 'number') {
24
- errors.push('filters.limit must be a number');
25
- }
26
- }
27
- }
28
- return { valid: errors.length === 0, errors };
29
- }
30
- /**
31
- * Validate PeerListResponsePayload
32
- */
33
- export function validatePeerListResponse(payload) {
34
- const errors = [];
35
- if (typeof payload !== 'object' || payload === null) {
36
- errors.push('Payload must be an object');
37
- return { valid: false, errors };
38
- }
39
- const p = payload;
40
- if (!Array.isArray(p.peers)) {
41
- errors.push('peers must be an array');
42
- }
43
- else {
44
- p.peers.forEach((peer, index) => {
45
- if (typeof peer !== 'object' || peer === null) {
46
- errors.push(`peers[${index}] must be an object`);
47
- return;
48
- }
49
- const peerObj = peer;
50
- if (typeof peerObj.publicKey !== 'string') {
51
- errors.push(`peers[${index}].publicKey must be a string`);
52
- }
53
- if (typeof peerObj.lastSeen !== 'number') {
54
- errors.push(`peers[${index}].lastSeen must be a number`);
55
- }
56
- });
57
- }
58
- if (typeof p.totalPeers !== 'number') {
59
- errors.push('totalPeers must be a number');
60
- }
61
- if (typeof p.relayPublicKey !== 'string') {
62
- errors.push('relayPublicKey must be a string');
63
- }
64
- return { valid: errors.length === 0, errors };
65
- }
66
- /**
67
- * Validate PeerReferralPayload
68
- */
69
- export function validatePeerReferral(payload) {
70
- const errors = [];
71
- if (typeof payload !== 'object' || payload === null) {
72
- errors.push('Payload must be an object');
73
- return { valid: false, errors };
74
- }
75
- const p = payload;
76
- if (typeof p.publicKey !== 'string') {
77
- errors.push('publicKey must be a string');
78
- }
79
- if (p.endpoint !== undefined && typeof p.endpoint !== 'string') {
80
- errors.push('endpoint must be a string');
81
- }
82
- if (p.comment !== undefined && typeof p.comment !== 'string') {
83
- errors.push('comment must be a string');
84
- }
85
- if (p.trustScore !== undefined && typeof p.trustScore !== 'number') {
86
- errors.push('trustScore must be a number');
87
- }
88
- return { valid: errors.length === 0, errors };
89
- }
90
- //# sourceMappingURL=peer-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peer-discovery.js","sourceRoot":"","sources":["../../../src/message/types/peer-discovery.ts"],"names":[],"mappings":"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"}