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,452 @@
1
+ /**
2
+ * Auto-Configuration Module
3
+ *
4
+ * Detecta ambiente automaticamente e gera configuração otimizada
5
+ * - Recursos disponíveis (CPU, RAM, disco, rede)
6
+ - Ambiente (home, datacenter, cloud, mobile)
7
+ * - Padrão de uso (light, full-node, relay)
8
+ * - Configura de porta automática
9
+ */
10
+ import { cpus, totalmem, freemem, networkInterfaces, platform, homedir, loadavg } from 'os';
11
+ import { existsSync, statfsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { promisify } from 'util';
14
+ import { exec } from 'child_process';
15
+ import { detectCloudEnvironment } from './bootstrap.js';
16
+ const execAsync = promisify(exec);
17
+ export class AutoConfigurator {
18
+ configDir;
19
+ constructor() {
20
+ this.configDir = join(homedir(), '.society');
21
+ }
22
+ /**
23
+ * Detect system resources
24
+ */
25
+ async detectResources() {
26
+ // CPU info
27
+ const cpuInfo = cpus();
28
+ const avgLoad = platform() !== 'win32' ? loadavg() : [0, 0, 0];
29
+ // Memory info
30
+ const memTotal = totalmem();
31
+ const memFree = freemem();
32
+ let memAvailable = memFree;
33
+ // On Linux, we can get more accurate available memory
34
+ if (platform() === 'linux') {
35
+ try {
36
+ const meminfo = readFileSync('/proc/meminfo', 'utf-8');
37
+ const availableMatch = meminfo.match(/MemAvailable:\s+(\d+)/);
38
+ if (availableMatch) {
39
+ memAvailable = parseInt(availableMatch[1]) * 1024;
40
+ }
41
+ }
42
+ catch { }
43
+ }
44
+ // Disk info - find best location for storage
45
+ const storagePath = this.findBestStoragePath();
46
+ let diskInfo = { total: 0, free: 0, type: 'unknown' };
47
+ try {
48
+ const stats = statfsSync(storagePath);
49
+ diskInfo = {
50
+ total: stats.blocks * stats.bsize,
51
+ free: stats.bavail * stats.bsize,
52
+ type: this.detectFilesystemType(storagePath)
53
+ };
54
+ }
55
+ catch { }
56
+ // Network info
57
+ const interfaces = networkInterfaces();
58
+ const hasPublicIP = this.detectPublicIP(interfaces);
59
+ const bandwidth = await this.estimateBandwidth();
60
+ return {
61
+ cpu: {
62
+ cores: cpuInfo.length,
63
+ model: cpuInfo[0]?.model || 'unknown',
64
+ speed: cpuInfo[0]?.speed || 0,
65
+ loadAvg: avgLoad
66
+ },
67
+ memory: {
68
+ total: memTotal,
69
+ free: memFree,
70
+ available: memAvailable
71
+ },
72
+ disk: {
73
+ path: storagePath,
74
+ total: diskInfo.total,
75
+ free: diskInfo.free,
76
+ type: diskInfo.type
77
+ },
78
+ network: {
79
+ interfaces,
80
+ hasPublicIP,
81
+ estimatedBandwidth: bandwidth
82
+ }
83
+ };
84
+ }
85
+ /**
86
+ * Find best storage path (most free space)
87
+ */
88
+ findBestStoragePath() {
89
+ const candidates = [
90
+ join(homedir(), '.society', 'storage'),
91
+ platform() === 'darwin' ? '/opt/society/storage' : '',
92
+ platform() === 'linux' ? '/var/lib/society' : '',
93
+ join(homedir(), 'society-data')
94
+ ].filter(Boolean);
95
+ let bestPath = candidates[0];
96
+ let maxFree = 0;
97
+ for (const path of candidates) {
98
+ try {
99
+ if (!existsSync(path)) {
100
+ mkdirSync(path, { recursive: true });
101
+ }
102
+ const stats = statfsSync(path);
103
+ const free = stats.bavail * stats.bsize;
104
+ if (free > maxFree) {
105
+ maxFree = free;
106
+ bestPath = path;
107
+ }
108
+ }
109
+ catch { }
110
+ }
111
+ return bestPath;
112
+ }
113
+ /**
114
+ * Detect filesystem type
115
+ */
116
+ detectFilesystemType(path) {
117
+ try {
118
+ if (platform() === 'linux') {
119
+ const { stdout } = exec('df -T ' + path);
120
+ // Parse output to get filesystem type
121
+ return 'ext4'; // Simplified
122
+ }
123
+ if (platform() === 'darwin') {
124
+ return 'apfs';
125
+ }
126
+ }
127
+ catch { }
128
+ return 'unknown';
129
+ }
130
+ /**
131
+ * Detect if machine has public IP
132
+ */
133
+ detectPublicIP(interfaces) {
134
+ for (const [name, addrs] of Object.entries(interfaces)) {
135
+ if (name.startsWith('lo'))
136
+ continue;
137
+ for (const addr of addrs) {
138
+ if (addr.internal)
139
+ continue;
140
+ if (addr.family !== 'IPv4')
141
+ continue;
142
+ // Check if not private IP
143
+ const ip = addr.address;
144
+ if (!this.isPrivateIP(ip)) {
145
+ return true;
146
+ }
147
+ }
148
+ }
149
+ return false;
150
+ }
151
+ /**
152
+ * Check if IP is private
153
+ */
154
+ isPrivateIP(ip) {
155
+ const parts = ip.split('.').map(Number);
156
+ if (parts[0] === 10)
157
+ return true;
158
+ if (parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31)
159
+ return true;
160
+ if (parts[0] === 192 && parts[1] === 168)
161
+ return true;
162
+ if (parts[0] === 127)
163
+ return true;
164
+ return false;
165
+ }
166
+ /**
167
+ * Estimate network bandwidth (rough)
168
+ */
169
+ async estimateBandwidth() {
170
+ try {
171
+ // Quick ping to estimate latency, then rough bandwidth estimate
172
+ const start = Date.now();
173
+ // Try to fetch a small test file or use ping
174
+ if (platform() !== 'win32') {
175
+ await execAsync('ping -c 1 -W 2 1.1.1.1', { timeout: 5000 });
176
+ }
177
+ const latency = Date.now() - start;
178
+ // Very rough heuristic based on latency
179
+ if (latency < 10)
180
+ return 1000; // < 10ms = likely datacenter, 1Gbps
181
+ if (latency < 50)
182
+ return 100; // < 50ms = likely fiber, 100Mbps
183
+ if (latency < 100)
184
+ return 25; // < 100ms = cable, 25Mbps
185
+ return 10; // default assumption
186
+ }
187
+ catch {
188
+ return 0; // unknown
189
+ }
190
+ }
191
+ /**
192
+ * Detect environment type
193
+ */
194
+ async detectEnvironment() {
195
+ const cloudProvider = detectCloudEnvironment();
196
+ const resources = await this.detectResources();
197
+ let type = 'unknown';
198
+ if (cloudProvider !== 'local') {
199
+ type = 'cloud';
200
+ }
201
+ else {
202
+ // Heuristics for home vs office vs datacenter
203
+ const memGB = resources.memory.total / (1024 ** 3);
204
+ const cores = resources.cpu.cores;
205
+ if (memGB < 4 && cores <= 2) {
206
+ type = 'mobile';
207
+ }
208
+ else if (resources.network.hasPublicIP && memGB > 16) {
209
+ type = 'datacenter';
210
+ }
211
+ else {
212
+ type = 'home';
213
+ }
214
+ }
215
+ const canBeRelay = resources.network.hasPublicIP &&
216
+ resources.memory.total > 4 * 1024 ** 3 &&
217
+ resources.cpu.cores >= 2;
218
+ return {
219
+ type,
220
+ cloudProvider: type === 'cloud' ? cloudProvider : undefined,
221
+ hasPublicIP: resources.network.hasPublicIP,
222
+ behindNAT: !resources.network.hasPublicIP,
223
+ canBeRelay
224
+ };
225
+ }
226
+ /**
227
+ * Determine optimal usage pattern based on resources
228
+ */
229
+ async determineUsagePattern() {
230
+ const resources = await this.detectResources();
231
+ const env = await this.detectEnvironment();
232
+ const memGB = resources.memory.total / (1024 ** 3);
233
+ const cores = resources.cpu.cores;
234
+ const freeDiskGB = resources.disk.free / (1024 ** 3);
235
+ // Decision tree for usage pattern
236
+ if (env.canBeRelay && memGB >= 8) {
237
+ return {
238
+ type: 'relay',
239
+ maxConnections: 1000,
240
+ cacheSizeMB: Math.min(2048, Math.floor(memGB * 100)),
241
+ enableDHT: true,
242
+ enableRelay: true,
243
+ logLevel: 'info'
244
+ };
245
+ }
246
+ if (memGB >= 4 && cores >= 2) {
247
+ return {
248
+ type: 'full',
249
+ maxConnections: 100,
250
+ cacheSizeMB: Math.min(512, Math.floor(memGB * 64)),
251
+ enableDHT: true,
252
+ enableRelay: false,
253
+ logLevel: 'info'
254
+ };
255
+ }
256
+ if (memGB >= 2) {
257
+ return {
258
+ type: 'standard',
259
+ maxConnections: 50,
260
+ cacheSizeMB: 256,
261
+ enableDHT: true,
262
+ enableRelay: false,
263
+ logLevel: 'warn'
264
+ };
265
+ }
266
+ return {
267
+ type: 'light',
268
+ maxConnections: 10,
269
+ cacheSizeMB: 64,
270
+ enableDHT: false,
271
+ enableRelay: false,
272
+ logLevel: 'warn'
273
+ };
274
+ }
275
+ /**
276
+ * Find available port
277
+ */
278
+ async findAvailablePort(preferred, range = []) {
279
+ const net = await import('net');
280
+ const ports = [preferred, ...range];
281
+ for (const port of ports) {
282
+ try {
283
+ const server = net.createServer();
284
+ await new Promise((resolve, reject) => {
285
+ server.once('error', reject);
286
+ server.once('listening', resolve);
287
+ server.listen(port, '127.0.0.1');
288
+ });
289
+ server.close();
290
+ return port;
291
+ }
292
+ catch {
293
+ continue;
294
+ }
295
+ }
296
+ // If none available, get random port
297
+ return new Promise((resolve, reject) => {
298
+ const server = net.createServer();
299
+ server.listen(0, '127.0.0.1', () => {
300
+ const port = server.address().port;
301
+ server.close(() => resolve(port));
302
+ });
303
+ server.once('error', reject);
304
+ });
305
+ }
306
+ /**
307
+ * Generate complete auto-configuration
308
+ */
309
+ async generateConfig() {
310
+ const [resources, environment, usage] = await Promise.all([
311
+ this.detectResources(),
312
+ this.detectEnvironment(),
313
+ this.determineUsagePattern()
314
+ ]);
315
+ // Find available ports
316
+ const p2pPort = 0; // Let libp2p choose
317
+ const apiPort = await this.findAvailablePort(8080, [8081, 8082, 8083, 8084, 8085]);
318
+ const wsPort = await this.findAvailablePort(8081, [8082, 8083, 8084, 8085, 8086]);
319
+ // Calculate connection limits based on resources
320
+ const maxPeers = Math.min(usage.maxConnections, Math.floor(resources.memory.available / (50 * 1024 * 1024)) // 50MB per peer estimate
321
+ );
322
+ return {
323
+ environment,
324
+ resources,
325
+ usage,
326
+ recommended: {
327
+ p2pPort,
328
+ apiPort,
329
+ wsPort,
330
+ storagePath: resources.disk.path,
331
+ maxPeers,
332
+ connectionLimits: {
333
+ min: Math.min(5, Math.floor(maxPeers * 0.1)),
334
+ max: maxPeers
335
+ }
336
+ }
337
+ };
338
+ }
339
+ /**
340
+ * Apply configuration to config file
341
+ */
342
+ async applyConfig(config) {
343
+ const autoConfig = config || await this.generateConfig();
344
+ // Ensure config directory exists
345
+ if (!existsSync(this.configDir)) {
346
+ mkdirSync(this.configDir, { recursive: true });
347
+ }
348
+ const configPath = join(this.configDir, 'auto-config.yml');
349
+ const yaml = `
350
+ # Auto-generated Society Configuration
351
+ # Generated: ${new Date().toISOString()}
352
+ # Environment: ${autoConfig.environment.type}
353
+
354
+ environment:
355
+ type: ${autoConfig.environment.type}
356
+ cloud_provider: ${autoConfig.environment.cloudProvider || 'none'}
357
+ has_public_ip: ${autoConfig.environment.hasPublicIP}
358
+ behind_nat: ${autoConfig.environment.behindNAT}
359
+ can_be_relay: ${autoConfig.environment.canBeRelay}
360
+
361
+ resources:
362
+ cpu:
363
+ cores: ${autoConfig.resources.cpu.cores}
364
+ model: "${autoConfig.resources.cpu.model}"
365
+ memory:
366
+ total_mb: ${Math.round(autoConfig.resources.memory.total / (1024 * 1024))}
367
+ available_mb: ${Math.round(autoConfig.resources.memory.available / (1024 * 1024))}
368
+ disk:
369
+ path: ${autoConfig.resources.disk.path}
370
+ free_gb: ${Math.round(autoConfig.resources.disk.free / (1024 ** 3))}
371
+
372
+ usage:
373
+ pattern: ${autoConfig.usage.type}
374
+ max_connections: ${autoConfig.usage.maxConnections}
375
+ cache_size_mb: ${autoConfig.usage.cacheSizeMB}
376
+ enable_dht: ${autoConfig.usage.enableDHT}
377
+ enable_relay: ${autoConfig.usage.enableRelay}
378
+ log_level: ${autoConfig.usage.logLevel}
379
+
380
+ network:
381
+ p2p_port: ${autoConfig.recommended.p2pPort}
382
+ api_port: ${autoConfig.recommended.apiPort}
383
+ ws_port: ${autoConfig.recommended.wsPort}
384
+ max_peers: ${autoConfig.recommended.maxPeers}
385
+ connection_limits:
386
+ min: ${autoConfig.recommended.connectionLimits.min}
387
+ max: ${autoConfig.recommended.connectionLimits.max}
388
+ `.trim();
389
+ writeFileSync(configPath, yaml);
390
+ console.log(`[autoconfig] Configuration saved to ${configPath}`);
391
+ }
392
+ /**
393
+ * Print detected configuration (for CLI)
394
+ */
395
+ async printConfig() {
396
+ const config = await this.generateConfig();
397
+ console.log('\n📊 Detected System Configuration:\n');
398
+ console.log(` Environment: ${config.environment.type}`);
399
+ if (config.environment.cloudProvider) {
400
+ console.log(` Cloud: ${config.environment.cloudProvider}`);
401
+ }
402
+ console.log(` Public IP: ${config.environment.hasPublicIP ? 'Yes ✓' : 'No (behind NAT)'}`);
403
+ console.log(` Can be relay: ${config.environment.canBeRelay ? 'Yes ✓' : 'No'}`);
404
+ console.log('');
405
+ console.log(` CPU: ${config.resources.cpu.cores} cores (${config.resources.cpu.model})`);
406
+ console.log(` Memory: ${(config.resources.memory.total / (1024 ** 3)).toFixed(1)} GB`);
407
+ console.log(` Disk: ${(config.resources.disk.free / (1024 ** 3)).toFixed(1)} GB free`);
408
+ console.log('');
409
+ console.log(` Recommended mode: ${config.usage.type.toUpperCase()}`);
410
+ console.log(` Max peers: ${config.recommended.maxPeers}`);
411
+ console.log(` API port: ${config.recommended.apiPort}`);
412
+ console.log(` Cache: ${config.usage.cacheSizeMB} MB`);
413
+ console.log('');
414
+ }
415
+ }
416
+ /**
417
+ * Quick auto-config
418
+ */
419
+ export async function autoConfigure() {
420
+ const configurator = new AutoConfigurator();
421
+ const config = await configurator.generateConfig();
422
+ await configurator.applyConfig(config);
423
+ return config;
424
+ }
425
+ /**
426
+ * Detect if running in CI/CD environment
427
+ */
428
+ export function detectCI() {
429
+ const envVars = [
430
+ 'CI', 'CONTINUOUS_INTEGRATION', 'GITHUB_ACTIONS', 'GITLAB_CI',
431
+ 'CIRCLECI', 'TRAVIS', 'JENKINS_URL', 'BUILDKITE', 'DRONE'
432
+ ];
433
+ for (const env of envVars) {
434
+ if (process.env[env]) {
435
+ return { isCI: true, provider: env };
436
+ }
437
+ }
438
+ return { isCI: false };
439
+ }
440
+ /**
441
+ * Detect if running in Docker/container
442
+ */
443
+ export function detectContainer() {
444
+ try {
445
+ const cgroup = readFileSync('/proc/self/cgroup', 'utf-8');
446
+ return cgroup.includes('docker') || cgroup.includes('containerd');
447
+ }
448
+ catch {
449
+ return existsSync('/.dockerenv');
450
+ }
451
+ }
452
+ //# sourceMappingURL=autoconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoconfig.js","sourceRoot":"","sources":["../src/autoconfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
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
+ export interface BootstrapPeer {
11
+ id: string;
12
+ addrs: string[];
13
+ lastSeen: number;
14
+ latency: number;
15
+ reliability: number;
16
+ }
17
+ export interface BootstrapConfig {
18
+ dnsEndpoints: string[];
19
+ fallbackPeers: BootstrapPeer[];
20
+ cacheFile: string;
21
+ cacheTtlMs: number;
22
+ discoveryTimeoutMs: number;
23
+ }
24
+ export declare class BootstrapManager {
25
+ private config;
26
+ private cache;
27
+ private workingPeers;
28
+ constructor(customConfig?: Partial<BootstrapConfig>);
29
+ private ensureCacheDir;
30
+ private loadCache;
31
+ private saveCache;
32
+ /**
33
+ * Query DNS TXT records for peer lists
34
+ */
35
+ private queryDnsPeers;
36
+ /**
37
+ * Test connectivity to a peer
38
+ */
39
+ private testPeer;
40
+ /**
41
+ * Discover and return working bootstrap peers
42
+ * Priority: DNS > Cache > Fallback
43
+ */
44
+ discover(): Promise<BootstrapPeer[]>;
45
+ /**
46
+ * Get working peers (cached from last discovery)
47
+ */
48
+ getWorkingPeers(): BootstrapPeer[];
49
+ /**
50
+ * Add a peer manually (from mDNS or other discovery)
51
+ */
52
+ addPeer(peer: BootstrapPeer): void;
53
+ /**
54
+ * Clear cache and force re-discovery
55
+ */
56
+ refresh(): Promise<BootstrapPeer[]>;
57
+ }
58
+ /**
59
+ * Quick bootstrap for immediate connection
60
+ * Usage: const peers = await quickBootstrap();
61
+ */
62
+ export declare function quickBootstrap(): Promise<BootstrapPeer[]>;
63
+ /**
64
+ * Check if running in common cloud environments
65
+ * Useful for auto-configuration
66
+ */
67
+ export declare function detectCloudEnvironment(): 'aws' | 'gcp' | 'azure' | 'digitalocean' | 'local';
68
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AA8BD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,YAAY,CAAuB;gBAE/B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAenD,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,SAAS;IAYjB;;OAEG;YACW,aAAa;IA8D3B;;OAEG;YACW,QAAQ;IAuBtB;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA2E1C;;OAEG;IACH,eAAe,IAAI,aAAa,EAAE;IAIlC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKlC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAK1C;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAG/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,CA6B3F"}