society-protocol 1.0.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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/adapters.d.ts +101 -0
  4. package/dist/adapters.d.ts.map +1 -0
  5. package/dist/adapters.js +764 -0
  6. package/dist/adapters.js.map +1 -0
  7. package/dist/agents-md.d.ts +59 -0
  8. package/dist/agents-md.d.ts.map +1 -0
  9. package/dist/agents-md.js +204 -0
  10. package/dist/agents-md.js.map +1 -0
  11. package/dist/autoconfig.d.ts +137 -0
  12. package/dist/autoconfig.d.ts.map +1 -0
  13. package/dist/autoconfig.js +452 -0
  14. package/dist/autoconfig.js.map +1 -0
  15. package/dist/bootstrap.d.ts +68 -0
  16. package/dist/bootstrap.d.ts.map +1 -0
  17. package/dist/bootstrap.js +304 -0
  18. package/dist/bootstrap.js.map +1 -0
  19. package/dist/bridges/a2a-bridge.d.ts +156 -0
  20. package/dist/bridges/a2a-bridge.d.ts.map +1 -0
  21. package/dist/bridges/a2a-bridge.js +337 -0
  22. package/dist/bridges/a2a-bridge.js.map +1 -0
  23. package/dist/bridges/mcp-bridge.d.ts +87 -0
  24. package/dist/bridges/mcp-bridge.d.ts.map +1 -0
  25. package/dist/bridges/mcp-bridge.js +332 -0
  26. package/dist/bridges/mcp-bridge.js.map +1 -0
  27. package/dist/cache.d.ts +130 -0
  28. package/dist/cache.d.ts.map +1 -0
  29. package/dist/cache.js +257 -0
  30. package/dist/cache.js.map +1 -0
  31. package/dist/capsules.d.ts +23 -0
  32. package/dist/capsules.d.ts.map +1 -0
  33. package/dist/capsules.js +75 -0
  34. package/dist/capsules.js.map +1 -0
  35. package/dist/cli/commands.d.ts +8 -0
  36. package/dist/cli/commands.d.ts.map +1 -0
  37. package/dist/cli/commands.js +263 -0
  38. package/dist/cli/commands.js.map +1 -0
  39. package/dist/coc.d.ts +121 -0
  40. package/dist/coc.d.ts.map +1 -0
  41. package/dist/coc.js +629 -0
  42. package/dist/coc.js.map +1 -0
  43. package/dist/coc.test.d.ts +2 -0
  44. package/dist/coc.test.d.ts.map +1 -0
  45. package/dist/coc.test.js +80 -0
  46. package/dist/coc.test.js.map +1 -0
  47. package/dist/compression.d.ts +125 -0
  48. package/dist/compression.d.ts.map +1 -0
  49. package/dist/compression.js +573 -0
  50. package/dist/compression.js.map +1 -0
  51. package/dist/cot-stream.d.ts +220 -0
  52. package/dist/cot-stream.d.ts.map +1 -0
  53. package/dist/cot-stream.js +673 -0
  54. package/dist/cot-stream.js.map +1 -0
  55. package/dist/crypto-wasm.d.ts +100 -0
  56. package/dist/crypto-wasm.d.ts.map +1 -0
  57. package/dist/crypto-wasm.js +229 -0
  58. package/dist/crypto-wasm.js.map +1 -0
  59. package/dist/federation.d.ts +200 -0
  60. package/dist/federation.d.ts.map +1 -0
  61. package/dist/federation.js +691 -0
  62. package/dist/federation.js.map +1 -0
  63. package/dist/federation.test.d.ts +2 -0
  64. package/dist/federation.test.d.ts.map +1 -0
  65. package/dist/federation.test.js +71 -0
  66. package/dist/federation.test.js.map +1 -0
  67. package/dist/gateway/capability-router.d.ts +77 -0
  68. package/dist/gateway/capability-router.d.ts.map +1 -0
  69. package/dist/gateway/capability-router.js +222 -0
  70. package/dist/gateway/capability-router.js.map +1 -0
  71. package/dist/gateway/demand-spawner.d.ts +155 -0
  72. package/dist/gateway/demand-spawner.d.ts.map +1 -0
  73. package/dist/gateway/demand-spawner.js +426 -0
  74. package/dist/gateway/demand-spawner.js.map +1 -0
  75. package/dist/identity.d.ts +46 -0
  76. package/dist/identity.d.ts.map +1 -0
  77. package/dist/identity.js +102 -0
  78. package/dist/identity.js.map +1 -0
  79. package/dist/identity.test.d.ts +2 -0
  80. package/dist/identity.test.d.ts.map +1 -0
  81. package/dist/identity.test.js +45 -0
  82. package/dist/identity.test.js.map +1 -0
  83. package/dist/index.d.ts +36 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +1572 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/integration.d.ts +210 -0
  88. package/dist/integration.d.ts.map +1 -0
  89. package/dist/integration.js +1105 -0
  90. package/dist/integration.js.map +1 -0
  91. package/dist/integration.test.d.ts +2 -0
  92. package/dist/integration.test.d.ts.map +1 -0
  93. package/dist/integration.test.js +155 -0
  94. package/dist/integration.test.js.map +1 -0
  95. package/dist/knowledge.d.ts +219 -0
  96. package/dist/knowledge.d.ts.map +1 -0
  97. package/dist/knowledge.js +543 -0
  98. package/dist/knowledge.js.map +1 -0
  99. package/dist/knowledge.test.d.ts +2 -0
  100. package/dist/knowledge.test.d.ts.map +1 -0
  101. package/dist/knowledge.test.js +72 -0
  102. package/dist/knowledge.test.js.map +1 -0
  103. package/dist/latent-space.d.ts +178 -0
  104. package/dist/latent-space.d.ts.map +1 -0
  105. package/dist/latent-space.js +385 -0
  106. package/dist/latent-space.js.map +1 -0
  107. package/dist/lib.d.ts +30 -0
  108. package/dist/lib.d.ts.map +1 -0
  109. package/dist/lib.js +30 -0
  110. package/dist/lib.js.map +1 -0
  111. package/dist/mcp/server.d.ts +74 -0
  112. package/dist/mcp/server.d.ts.map +1 -0
  113. package/dist/mcp/server.js +1392 -0
  114. package/dist/mcp/server.js.map +1 -0
  115. package/dist/metrics.d.ts +98 -0
  116. package/dist/metrics.d.ts.map +1 -0
  117. package/dist/metrics.js +222 -0
  118. package/dist/metrics.js.map +1 -0
  119. package/dist/p2p.d.ts +87 -0
  120. package/dist/p2p.d.ts.map +1 -0
  121. package/dist/p2p.js +606 -0
  122. package/dist/p2p.js.map +1 -0
  123. package/dist/persona/capabilities.d.ts +17 -0
  124. package/dist/persona/capabilities.d.ts.map +1 -0
  125. package/dist/persona/capabilities.js +224 -0
  126. package/dist/persona/capabilities.js.map +1 -0
  127. package/dist/persona/domains.d.ts +22 -0
  128. package/dist/persona/domains.d.ts.map +1 -0
  129. package/dist/persona/domains.js +176 -0
  130. package/dist/persona/domains.js.map +1 -0
  131. package/dist/persona/embeddings.d.ts +40 -0
  132. package/dist/persona/embeddings.d.ts.map +1 -0
  133. package/dist/persona/embeddings.js +265 -0
  134. package/dist/persona/embeddings.js.map +1 -0
  135. package/dist/persona/engine.d.ts +79 -0
  136. package/dist/persona/engine.d.ts.map +1 -0
  137. package/dist/persona/engine.js +1087 -0
  138. package/dist/persona/engine.js.map +1 -0
  139. package/dist/persona/index.d.ts +11 -0
  140. package/dist/persona/index.d.ts.map +1 -0
  141. package/dist/persona/index.js +11 -0
  142. package/dist/persona/index.js.map +1 -0
  143. package/dist/persona/lifecycle.d.ts +17 -0
  144. package/dist/persona/lifecycle.d.ts.map +1 -0
  145. package/dist/persona/lifecycle.js +36 -0
  146. package/dist/persona/lifecycle.js.map +1 -0
  147. package/dist/persona/retrieval.d.ts +6 -0
  148. package/dist/persona/retrieval.d.ts.map +1 -0
  149. package/dist/persona/retrieval.js +122 -0
  150. package/dist/persona/retrieval.js.map +1 -0
  151. package/dist/persona/sync.d.ts +15 -0
  152. package/dist/persona/sync.d.ts.map +1 -0
  153. package/dist/persona/sync.js +92 -0
  154. package/dist/persona/sync.js.map +1 -0
  155. package/dist/persona/types.d.ts +283 -0
  156. package/dist/persona/types.d.ts.map +1 -0
  157. package/dist/persona/types.js +2 -0
  158. package/dist/persona/types.js.map +1 -0
  159. package/dist/persona/zkp/engine.d.ts +26 -0
  160. package/dist/persona/zkp/engine.d.ts.map +1 -0
  161. package/dist/persona/zkp/engine.js +370 -0
  162. package/dist/persona/zkp/engine.js.map +1 -0
  163. package/dist/persona/zkp/types.d.ts +39 -0
  164. package/dist/persona/zkp/types.d.ts.map +1 -0
  165. package/dist/persona/zkp/types.js +2 -0
  166. package/dist/persona/zkp/types.js.map +1 -0
  167. package/dist/planner.d.ts +114 -0
  168. package/dist/planner.d.ts.map +1 -0
  169. package/dist/planner.js +522 -0
  170. package/dist/planner.js.map +1 -0
  171. package/dist/proactive/checkpoints.d.ts +9 -0
  172. package/dist/proactive/checkpoints.d.ts.map +1 -0
  173. package/dist/proactive/checkpoints.js +20 -0
  174. package/dist/proactive/checkpoints.js.map +1 -0
  175. package/dist/proactive/engine.d.ts +59 -0
  176. package/dist/proactive/engine.d.ts.map +1 -0
  177. package/dist/proactive/engine.js +406 -0
  178. package/dist/proactive/engine.js.map +1 -0
  179. package/dist/proactive/scheduler.d.ts +11 -0
  180. package/dist/proactive/scheduler.d.ts.map +1 -0
  181. package/dist/proactive/scheduler.js +45 -0
  182. package/dist/proactive/scheduler.js.map +1 -0
  183. package/dist/proactive/swarm-controller.d.ts +189 -0
  184. package/dist/proactive/swarm-controller.d.ts.map +1 -0
  185. package/dist/proactive/swarm-controller.js +477 -0
  186. package/dist/proactive/swarm-controller.js.map +1 -0
  187. package/dist/proactive/swarm-registry.d.ts +13 -0
  188. package/dist/proactive/swarm-registry.d.ts.map +1 -0
  189. package/dist/proactive/swarm-registry.js +122 -0
  190. package/dist/proactive/swarm-registry.js.map +1 -0
  191. package/dist/proactive/types.d.ts +145 -0
  192. package/dist/proactive/types.d.ts.map +1 -0
  193. package/dist/proactive/types.js +25 -0
  194. package/dist/proactive/types.js.map +1 -0
  195. package/dist/registry.d.ts +35 -0
  196. package/dist/registry.d.ts.map +1 -0
  197. package/dist/registry.js +88 -0
  198. package/dist/registry.js.map +1 -0
  199. package/dist/reputation.d.ts +123 -0
  200. package/dist/reputation.d.ts.map +1 -0
  201. package/dist/reputation.js +366 -0
  202. package/dist/reputation.js.map +1 -0
  203. package/dist/reputation.test.d.ts +5 -0
  204. package/dist/reputation.test.d.ts.map +1 -0
  205. package/dist/reputation.test.js +265 -0
  206. package/dist/reputation.test.js.map +1 -0
  207. package/dist/rooms.d.ts +96 -0
  208. package/dist/rooms.d.ts.map +1 -0
  209. package/dist/rooms.js +410 -0
  210. package/dist/rooms.js.map +1 -0
  211. package/dist/sdk/client.d.ts +290 -0
  212. package/dist/sdk/client.d.ts.map +1 -0
  213. package/dist/sdk/client.js +1287 -0
  214. package/dist/sdk/client.js.map +1 -0
  215. package/dist/sdk/index.d.ts +32 -0
  216. package/dist/sdk/index.d.ts.map +1 -0
  217. package/dist/sdk/index.js +70 -0
  218. package/dist/sdk/index.js.map +1 -0
  219. package/dist/security.d.ts +230 -0
  220. package/dist/security.d.ts.map +1 -0
  221. package/dist/security.js +652 -0
  222. package/dist/security.js.map +1 -0
  223. package/dist/skills/engine.d.ts +262 -0
  224. package/dist/skills/engine.d.ts.map +1 -0
  225. package/dist/skills/engine.js +788 -0
  226. package/dist/skills/engine.js.map +1 -0
  227. package/dist/skills/engine.test.d.ts +2 -0
  228. package/dist/skills/engine.test.d.ts.map +1 -0
  229. package/dist/skills/engine.test.js +134 -0
  230. package/dist/skills/engine.test.js.map +1 -0
  231. package/dist/skills/parser.d.ts +129 -0
  232. package/dist/skills/parser.d.ts.map +1 -0
  233. package/dist/skills/parser.js +318 -0
  234. package/dist/skills/parser.js.map +1 -0
  235. package/dist/social.d.ts +149 -0
  236. package/dist/social.d.ts.map +1 -0
  237. package/dist/social.js +401 -0
  238. package/dist/social.js.map +1 -0
  239. package/dist/storage-optimized.d.ts +116 -0
  240. package/dist/storage-optimized.d.ts.map +1 -0
  241. package/dist/storage-optimized.js +264 -0
  242. package/dist/storage-optimized.js.map +1 -0
  243. package/dist/storage.d.ts +584 -0
  244. package/dist/storage.d.ts.map +1 -0
  245. package/dist/storage.js +2703 -0
  246. package/dist/storage.js.map +1 -0
  247. package/dist/storage.test.d.ts +2 -0
  248. package/dist/storage.test.d.ts.map +1 -0
  249. package/dist/storage.test.js +78 -0
  250. package/dist/storage.test.js.map +1 -0
  251. package/dist/swp.d.ts +443 -0
  252. package/dist/swp.d.ts.map +1 -0
  253. package/dist/swp.js +223 -0
  254. package/dist/swp.js.map +1 -0
  255. package/dist/swp.test.d.ts +5 -0
  256. package/dist/swp.test.d.ts.map +1 -0
  257. package/dist/swp.test.js +127 -0
  258. package/dist/swp.test.js.map +1 -0
  259. package/dist/templates.d.ts +25 -0
  260. package/dist/templates.d.ts.map +1 -0
  261. package/dist/templates.js +1048 -0
  262. package/dist/templates.js.map +1 -0
  263. package/dist/test-e2e.d.ts +14 -0
  264. package/dist/test-e2e.d.ts.map +1 -0
  265. package/dist/test-e2e.js +266 -0
  266. package/dist/test-e2e.js.map +1 -0
  267. package/dist/workers/research-worker.d.ts +19 -0
  268. package/dist/workers/research-worker.d.ts.map +1 -0
  269. package/dist/workers/research-worker.js +141 -0
  270. package/dist/workers/research-worker.js.map +1 -0
  271. package/package.json +110 -0
@@ -0,0 +1,304 @@
1
+ /**
2
+ * Zero-Config Bootstrap Module
3
+ *
4
+ * Auto-discovery de peers via:
5
+ * 1. DNS TXT records (bootstrap.society.dev)
6
+ * 2. Hardcoded fallback list
7
+ * 3. Cache local de peers funcionais
8
+ * 4. mDNS para LAN discovery
9
+ */
10
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
11
+ import { join } from 'path';
12
+ import { homedir } from 'os';
13
+ import { promisify } from 'util';
14
+ import { exec } from 'child_process';
15
+ const execAsync = promisify(exec);
16
+ // Default bootstrap domain
17
+ const SOCIETY_DOMAIN = 'society.computer';
18
+ function parseFallbackPeersFromEnv() {
19
+ const raw = process.env.SOCIETY_BOOTSTRAP_ADDRS || '';
20
+ const addrs = raw.split(',').map((item) => item.trim()).filter(Boolean);
21
+ const now = Date.now();
22
+ return addrs.map((addr, index) => ({
23
+ id: `env_${index}`,
24
+ addrs: [addr],
25
+ lastSeen: now,
26
+ latency: 0,
27
+ reliability: 0.5,
28
+ }));
29
+ }
30
+ const DEFAULT_FALLBACK_PEERS = parseFallbackPeersFromEnv();
31
+ // Endpoints DNS para descoberta
32
+ const DEFAULT_DNS_ENDPOINTS = [
33
+ `bootstrap.${SOCIETY_DOMAIN}`,
34
+ `bootstrap.society.dev`,
35
+ `bootstrap1.${SOCIETY_DOMAIN}`,
36
+ `bootstrap2.${SOCIETY_DOMAIN}`,
37
+ `bootstrap3.${SOCIETY_DOMAIN}`,
38
+ ];
39
+ export class BootstrapManager {
40
+ config;
41
+ cache = new Map();
42
+ workingPeers = [];
43
+ constructor(customConfig) {
44
+ const societyDir = join(homedir(), '.society');
45
+ this.config = {
46
+ dnsEndpoints: customConfig?.dnsEndpoints ?? DEFAULT_DNS_ENDPOINTS,
47
+ fallbackPeers: customConfig?.fallbackPeers ?? DEFAULT_FALLBACK_PEERS,
48
+ cacheFile: customConfig?.cacheFile ?? join(societyDir, 'peers-cache.json'),
49
+ cacheTtlMs: customConfig?.cacheTtlMs ?? 24 * 60 * 60 * 1000, // 24h
50
+ discoveryTimeoutMs: customConfig?.discoveryTimeoutMs ?? 10000 // 10s
51
+ };
52
+ this.ensureCacheDir();
53
+ this.loadCache();
54
+ }
55
+ ensureCacheDir() {
56
+ const dir = join(homedir(), '.society');
57
+ if (!existsSync(dir)) {
58
+ mkdirSync(dir, { recursive: true });
59
+ }
60
+ }
61
+ loadCache() {
62
+ try {
63
+ if (existsSync(this.config.cacheFile)) {
64
+ const data = JSON.parse(readFileSync(this.config.cacheFile, 'utf-8'));
65
+ const now = Date.now();
66
+ for (const peer of data.peers || []) {
67
+ // Only load if not expired
68
+ if (now - peer.lastSeen < this.config.cacheTtlMs) {
69
+ this.cache.set(peer.id, peer);
70
+ }
71
+ }
72
+ console.log(`[bootstrap] Loaded ${this.cache.size} peers from cache`);
73
+ }
74
+ }
75
+ catch (err) {
76
+ console.warn('[bootstrap] Failed to load cache:', err);
77
+ }
78
+ }
79
+ saveCache() {
80
+ try {
81
+ const data = {
82
+ updatedAt: Date.now(),
83
+ peers: Array.from(this.cache.values())
84
+ };
85
+ writeFileSync(this.config.cacheFile, JSON.stringify(data, null, 2));
86
+ }
87
+ catch (err) {
88
+ console.warn('[bootstrap] Failed to save cache:', err);
89
+ }
90
+ }
91
+ /**
92
+ * Query DNS TXT records for peer lists
93
+ */
94
+ async queryDnsPeers() {
95
+ const peers = [];
96
+ for (const endpoint of this.config.dnsEndpoints) {
97
+ try {
98
+ // Try dig first, then nslookup as fallback
99
+ let result;
100
+ try {
101
+ const { stdout } = await execAsync(`dig +short TXT ${endpoint}`);
102
+ result = stdout;
103
+ }
104
+ catch {
105
+ const { stdout } = await execAsync(`nslookup -type=TXT ${endpoint}`);
106
+ result = stdout;
107
+ }
108
+ // Parse TXT records:
109
+ // 1) peers=<base64-encoded-peer-list>
110
+ // 2) addrs=<comma-separated-multiaddrs>
111
+ const txtRecords = result
112
+ .split('\n')
113
+ .map(line => line.trim().replace(/"/g, ''))
114
+ .filter(line => line.startsWith('peers=') || line.startsWith('addrs='));
115
+ for (const record of txtRecords) {
116
+ if (record.startsWith('addrs=')) {
117
+ const addrs = record
118
+ .replace('addrs=', '')
119
+ .split(',')
120
+ .map((item) => item.trim())
121
+ .filter((item) => item.startsWith('/'));
122
+ if (addrs.length > 0) {
123
+ peers.push({
124
+ id: `dns_${endpoint}_addrs`,
125
+ addrs,
126
+ lastSeen: Date.now(),
127
+ latency: 0,
128
+ reliability: 0.7
129
+ });
130
+ }
131
+ continue;
132
+ }
133
+ if (record.startsWith('peers=')) {
134
+ try {
135
+ const encoded = record.replace('peers=', '');
136
+ const decoded = Buffer.from(encoded, 'base64').toString('utf-8');
137
+ const peerList = JSON.parse(decoded);
138
+ peers.push(...peerList);
139
+ }
140
+ catch {
141
+ console.warn(`[bootstrap] Failed to parse peers TXT record from ${endpoint}`);
142
+ }
143
+ }
144
+ }
145
+ }
146
+ catch (err) {
147
+ console.warn(`[bootstrap] DNS query failed for ${endpoint}`);
148
+ }
149
+ }
150
+ return peers;
151
+ }
152
+ /**
153
+ * Test connectivity to a peer
154
+ */
155
+ async testPeer(peer) {
156
+ const start = Date.now();
157
+ try {
158
+ // Try to dial the peer with timeout
159
+ // This would integrate with the actual libp2p dial
160
+ // For now, we simulate with a ping-like check
161
+ const controller = new AbortController();
162
+ const timeout = setTimeout(() => controller.abort(), 5000);
163
+ // In real implementation, this would be:
164
+ // await this.node.dial(peer.addrs[0], { signal: controller.signal });
165
+ clearTimeout(timeout);
166
+ const latency = Date.now() - start;
167
+ return { latency, working: true };
168
+ }
169
+ catch {
170
+ return { latency: Infinity, working: false };
171
+ }
172
+ }
173
+ /**
174
+ * Discover and return working bootstrap peers
175
+ * Priority: DNS > Cache > Fallback
176
+ */
177
+ async discover() {
178
+ console.log('[bootstrap] Starting peer discovery...');
179
+ const allPeers = [];
180
+ const testedPeers = new Set();
181
+ const working = [];
182
+ // 1. Try DNS first (most up-to-date)
183
+ console.log('[bootstrap] Querying DNS...');
184
+ try {
185
+ const dnsPeers = await this.queryDnsPeers();
186
+ allPeers.push(...dnsPeers);
187
+ console.log(`[bootstrap] DNS returned ${dnsPeers.length} peers`);
188
+ }
189
+ catch (err) {
190
+ console.warn('[bootstrap] DNS discovery failed:', err);
191
+ }
192
+ // 2. Try cached peers
193
+ console.log('[bootstrap] Checking cache...');
194
+ const cachedPeers = Array.from(this.cache.values());
195
+ allPeers.push(...cachedPeers);
196
+ // 3. Add fallback peers
197
+ console.log('[bootstrap] Adding fallback peers...');
198
+ allPeers.push(...this.config.fallbackPeers);
199
+ // 4. Test peers in parallel (with concurrency limit)
200
+ console.log(`[bootstrap] Testing ${allPeers.length} unique peers...`);
201
+ const batchSize = 5;
202
+ for (let i = 0; i < allPeers.length; i += batchSize) {
203
+ const batch = allPeers.slice(i, i + batchSize);
204
+ const results = await Promise.all(batch.map(async (peer) => {
205
+ if (testedPeers.has(peer.id))
206
+ return null;
207
+ testedPeers.add(peer.id);
208
+ const result = await this.testPeer(peer);
209
+ if (result.working) {
210
+ return { ...peer, latency: result.latency, lastSeen: Date.now() };
211
+ }
212
+ return null;
213
+ }));
214
+ working.push(...results.filter((p) => p !== null));
215
+ // Stop if we have enough working peers
216
+ if (working.length >= 3)
217
+ break;
218
+ }
219
+ // 5. Sort by reliability and latency
220
+ working.sort((a, b) => {
221
+ const scoreA = a.reliability * 1000 - a.latency;
222
+ const scoreB = b.reliability * 1000 - b.latency;
223
+ return scoreB - scoreA;
224
+ });
225
+ // 6. Update cache with working peers
226
+ for (const peer of working) {
227
+ this.cache.set(peer.id, peer);
228
+ }
229
+ this.saveCache();
230
+ this.workingPeers = working;
231
+ console.log(`[bootstrap] Discovered ${working.length} working peers`);
232
+ if (working.length === 0) {
233
+ throw new Error('No bootstrap peers available. Check your internet connection.');
234
+ }
235
+ return working;
236
+ }
237
+ /**
238
+ * Get working peers (cached from last discovery)
239
+ */
240
+ getWorkingPeers() {
241
+ return this.workingPeers;
242
+ }
243
+ /**
244
+ * Add a peer manually (from mDNS or other discovery)
245
+ */
246
+ addPeer(peer) {
247
+ this.cache.set(peer.id, { ...peer, lastSeen: Date.now() });
248
+ this.saveCache();
249
+ }
250
+ /**
251
+ * Clear cache and force re-discovery
252
+ */
253
+ async refresh() {
254
+ this.cache.clear();
255
+ this.workingPeers = [];
256
+ return this.discover();
257
+ }
258
+ }
259
+ /**
260
+ * Quick bootstrap for immediate connection
261
+ * Usage: const peers = await quickBootstrap();
262
+ */
263
+ export async function quickBootstrap() {
264
+ const manager = new BootstrapManager();
265
+ return manager.discover();
266
+ }
267
+ /**
268
+ * Check if running in common cloud environments
269
+ * Useful for auto-configuration
270
+ */
271
+ export function detectCloudEnvironment() {
272
+ // AWS
273
+ if (process.env.AWS_REGION || existsSync('/sys/class/dmi/id/product_uuid')) {
274
+ try {
275
+ const uuid = readFileSync('/sys/class/dmi/id/product_uuid', 'utf-8');
276
+ if (uuid.startsWith('EC2') || uuid.startsWith('ec2'))
277
+ return 'aws';
278
+ }
279
+ catch { }
280
+ }
281
+ // GCP
282
+ if (process.env.GOOGLE_CLOUD_PROJECT || existsSync('/sys/class/dmi/id/product_name')) {
283
+ try {
284
+ const name = readFileSync('/sys/class/dmi/id/product_name', 'utf-8');
285
+ if (name.includes('Google'))
286
+ return 'gcp';
287
+ }
288
+ catch { }
289
+ }
290
+ // Azure
291
+ if (process.env.AZURE_RESOURCE_GROUP || existsSync('/sys/class/dmi/id/sys_vendor')) {
292
+ try {
293
+ const vendor = readFileSync('/sys/class/dmi/id/sys_vendor', 'utf-8');
294
+ if (vendor.includes('Microsoft'))
295
+ return 'azure';
296
+ }
297
+ catch { }
298
+ }
299
+ // DigitalOcean
300
+ if (existsSync('/etc/digitalocean'))
301
+ return 'digitalocean';
302
+ return 'local';
303
+ }
304
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Society Protocol — A2A (Agent-to-Agent) Bridge
3
+ *
4
+ * Implements Google's Agent-to-Agent protocol bridge,
5
+ * enabling interoperability between A2A-compliant agents
6
+ * and Society Protocol's P2P network.
7
+ *
8
+ * A2A spec: Agent Card, Tasks, Streaming, Push Notifications
9
+ *
10
+ * - Inbound: A2A task requests → Society CoC chains
11
+ * - Outbound: Society chains → A2A task responses
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ import type { Storage } from '../storage.js';
15
+ import type { RoomManager } from '../rooms.js';
16
+ import type { CocEngine } from '../coc.js';
17
+ import type { KnowledgePool } from '../knowledge.js';
18
+ import type { Identity } from '../identity.js';
19
+ export interface A2AAgentCard {
20
+ name: string;
21
+ description: string;
22
+ url: string;
23
+ version: string;
24
+ capabilities: A2ACapabilities;
25
+ skills: A2ASkill[];
26
+ defaultInputModes: string[];
27
+ defaultOutputModes: string[];
28
+ }
29
+ export interface A2ACapabilities {
30
+ streaming: boolean;
31
+ pushNotifications: boolean;
32
+ stateTransitionHistory: boolean;
33
+ }
34
+ export interface A2ASkill {
35
+ id: string;
36
+ name: string;
37
+ description: string;
38
+ tags: string[];
39
+ examples?: string[];
40
+ }
41
+ export type A2ATaskState = 'submitted' | 'working' | 'input-required' | 'completed' | 'canceled' | 'failed' | 'unknown';
42
+ export interface A2AMessage {
43
+ role: 'user' | 'agent';
44
+ parts: A2APart[];
45
+ }
46
+ export interface A2ATextPart {
47
+ type: 'text';
48
+ text: string;
49
+ }
50
+ export interface A2AFilePart {
51
+ type: 'file';
52
+ file: {
53
+ name: string;
54
+ mimeType: string;
55
+ bytes?: string;
56
+ uri?: string;
57
+ };
58
+ }
59
+ export interface A2ADataPart {
60
+ type: 'data';
61
+ data: Record<string, unknown>;
62
+ }
63
+ export type A2APart = A2ATextPart | A2AFilePart | A2ADataPart;
64
+ export interface A2ATask {
65
+ id: string;
66
+ sessionId: string;
67
+ status: {
68
+ state: A2ATaskState;
69
+ message?: A2AMessage;
70
+ };
71
+ history?: A2AMessage[];
72
+ artifacts?: A2AArtifact[];
73
+ metadata?: Record<string, unknown>;
74
+ }
75
+ export interface A2AArtifact {
76
+ name: string;
77
+ description?: string;
78
+ parts: A2APart[];
79
+ index?: number;
80
+ }
81
+ export interface A2ATaskSendParams {
82
+ id: string;
83
+ sessionId?: string;
84
+ message: A2AMessage;
85
+ acceptedOutputModes?: string[];
86
+ metadata?: Record<string, unknown>;
87
+ }
88
+ export interface A2ABridgeConfig {
89
+ identity: Identity;
90
+ storage: Storage;
91
+ rooms: RoomManager;
92
+ coc: CocEngine;
93
+ knowledge: KnowledgePool;
94
+ /** Default room for incoming A2A tasks */
95
+ defaultRoom: string;
96
+ /** Skills exposed to A2A agents */
97
+ exposedSkills?: A2ASkill[];
98
+ /** Base URL for this agent's A2A endpoint */
99
+ baseUrl?: string;
100
+ }
101
+ export declare class A2ABridge extends EventEmitter {
102
+ private identity;
103
+ private storage;
104
+ private rooms;
105
+ private coc;
106
+ private knowledge;
107
+ private defaultRoom;
108
+ private exposedSkills;
109
+ private baseUrl;
110
+ private taskMappings;
111
+ constructor(config: A2ABridgeConfig);
112
+ getAgentCard(): A2AAgentCard;
113
+ private getDefaultSkills;
114
+ handleTaskSend(params: A2ATaskSendParams): Promise<A2ATask>;
115
+ getTask(taskId: string): A2ATask | undefined;
116
+ cancelTask(taskId: string): Promise<A2ATask>;
117
+ handleJsonRpc(request: {
118
+ jsonrpc: string;
119
+ id: string | number;
120
+ method: string;
121
+ params?: Record<string, unknown>;
122
+ }): Promise<{
123
+ jsonrpc: string;
124
+ id: string | number;
125
+ result?: unknown;
126
+ error?: {
127
+ code: number;
128
+ message: string;
129
+ };
130
+ }>;
131
+ /**
132
+ * Convert a completed Society chain into an A2A task response.
133
+ */
134
+ chainToA2ATask(chainId: string): A2ATask | undefined;
135
+ /**
136
+ * Create A2A message from Society step output.
137
+ */
138
+ stepToA2AMessage(stepOutput: {
139
+ memo: string;
140
+ artifacts?: Array<{
141
+ artifact_type: string;
142
+ content?: string;
143
+ }>;
144
+ }): A2AMessage;
145
+ private syncTaskState;
146
+ private getStatusMessage;
147
+ private createErrorTask;
148
+ private setupCocListeners;
149
+ getStats(): {
150
+ activeTasks: number;
151
+ completedTasks: number;
152
+ failedTasks: number;
153
+ };
154
+ destroy(): void;
155
+ }
156
+ //# sourceMappingURL=a2a-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-bridge.d.ts","sourceRoot":"","sources":["../../src/bridges/a2a-bridge.ts"],"names":[],"mappings":"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"}