@swal/edge-mesh 0.0.0-stage → 0.1.1

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 (464) hide show
  1. package/LICENSE +128 -0
  2. package/NOTICE +37 -0
  3. package/README.md +470 -2
  4. package/dist/adapters/gpu-agent/index.d.ts +61 -0
  5. package/dist/adapters/gpu-agent/index.d.ts.map +1 -0
  6. package/dist/adapters/gpu-agent/index.js +364 -0
  7. package/dist/adapters/gpu-agent/index.js.map +1 -0
  8. package/dist/adapters/maloca-salud/citas-distribuidas.d.ts +19 -0
  9. package/dist/adapters/maloca-salud/citas-distribuidas.d.ts.map +1 -0
  10. package/dist/adapters/maloca-salud/citas-distribuidas.js +51 -0
  11. package/dist/adapters/maloca-salud/citas-distribuidas.js.map +1 -0
  12. package/dist/adapters/maloca-salud/eps-bridge.d.ts +15 -0
  13. package/dist/adapters/maloca-salud/eps-bridge.d.ts.map +1 -0
  14. package/dist/adapters/maloca-salud/eps-bridge.js +27 -0
  15. package/dist/adapters/maloca-salud/eps-bridge.js.map +1 -0
  16. package/dist/adapters/maloca-salud/patient-profile.d.ts +20 -0
  17. package/dist/adapters/maloca-salud/patient-profile.d.ts.map +1 -0
  18. package/dist/adapters/maloca-salud/patient-profile.js +36 -0
  19. package/dist/adapters/maloca-salud/patient-profile.js.map +1 -0
  20. package/dist/adapters/maloca-salud/types.d.ts +40 -0
  21. package/dist/adapters/maloca-salud/types.d.ts.map +1 -0
  22. package/dist/adapters/maloca-salud/types.js +2 -0
  23. package/dist/adapters/maloca-salud/types.js.map +1 -0
  24. package/dist/adapters/maloca-veeduria/contract-bridge.d.ts +31 -0
  25. package/dist/adapters/maloca-veeduria/contract-bridge.d.ts.map +1 -0
  26. package/dist/adapters/maloca-veeduria/contract-bridge.js +103 -0
  27. package/dist/adapters/maloca-veeduria/contract-bridge.js.map +1 -0
  28. package/dist/adapters/maloca-veeduria/evidentia-veeduria.d.ts +14 -0
  29. package/dist/adapters/maloca-veeduria/evidentia-veeduria.d.ts.map +1 -0
  30. package/dist/adapters/maloca-veeduria/evidentia-veeduria.js +40 -0
  31. package/dist/adapters/maloca-veeduria/evidentia-veeduria.js.map +1 -0
  32. package/dist/adapters/maloca-veeduria/licitante-profile.d.ts +21 -0
  33. package/dist/adapters/maloca-veeduria/licitante-profile.d.ts.map +1 -0
  34. package/dist/adapters/maloca-veeduria/licitante-profile.js +58 -0
  35. package/dist/adapters/maloca-veeduria/licitante-profile.js.map +1 -0
  36. package/dist/adapters/maloca-veeduria/types.d.ts +30 -0
  37. package/dist/adapters/maloca-veeduria/types.d.ts.map +1 -0
  38. package/dist/adapters/maloca-veeduria/types.js +2 -0
  39. package/dist/adapters/maloca-veeduria/types.js.map +1 -0
  40. package/dist/adapters/maloca-xavier/agent-profile.d.ts +32 -0
  41. package/dist/adapters/maloca-xavier/agent-profile.d.ts.map +1 -0
  42. package/dist/adapters/maloca-xavier/agent-profile.js +56 -0
  43. package/dist/adapters/maloca-xavier/agent-profile.js.map +1 -0
  44. package/dist/adapters/maloca-xavier/codegraph-bridge.d.ts +27 -0
  45. package/dist/adapters/maloca-xavier/codegraph-bridge.d.ts.map +1 -0
  46. package/dist/adapters/maloca-xavier/codegraph-bridge.js +58 -0
  47. package/dist/adapters/maloca-xavier/codegraph-bridge.js.map +1 -0
  48. package/dist/adapters/maloca-xavier/llm-router.d.ts +25 -0
  49. package/dist/adapters/maloca-xavier/llm-router.d.ts.map +1 -0
  50. package/dist/adapters/maloca-xavier/llm-router.js +58 -0
  51. package/dist/adapters/maloca-xavier/llm-router.js.map +1 -0
  52. package/dist/authz/index.d.ts +81 -0
  53. package/dist/authz/index.d.ts.map +1 -0
  54. package/dist/authz/index.js +271 -0
  55. package/dist/authz/index.js.map +1 -0
  56. package/dist/chat/index.d.ts +138 -0
  57. package/dist/chat/index.d.ts.map +1 -0
  58. package/dist/chat/index.js +394 -0
  59. package/dist/chat/index.js.map +1 -0
  60. package/dist/chat/offline-queue.d.ts +32 -0
  61. package/dist/chat/offline-queue.d.ts.map +1 -0
  62. package/dist/chat/offline-queue.js +93 -0
  63. package/dist/chat/offline-queue.js.map +1 -0
  64. package/dist/core/DefaultEdgeMeshNode.d.ts +17 -0
  65. package/dist/core/DefaultEdgeMeshNode.d.ts.map +1 -0
  66. package/dist/core/DefaultEdgeMeshNode.js +57 -0
  67. package/dist/core/DefaultEdgeMeshNode.js.map +1 -0
  68. package/dist/core/node.d.ts +26 -0
  69. package/dist/core/node.d.ts.map +1 -0
  70. package/dist/core/node.js +16 -0
  71. package/dist/core/node.js.map +1 -0
  72. package/dist/edge-mesh.d.ts +139 -0
  73. package/dist/edge-mesh.d.ts.map +1 -0
  74. package/dist/edge-mesh.js +1146 -0
  75. package/dist/edge-mesh.js.map +1 -0
  76. package/dist/gos/GosBridge.d.ts +49 -0
  77. package/dist/gos/GosBridge.d.ts.map +1 -0
  78. package/dist/gos/GosBridge.js +133 -0
  79. package/dist/gos/GosBridge.js.map +1 -0
  80. package/dist/governance/authority.d.ts +44 -0
  81. package/dist/governance/authority.d.ts.map +1 -0
  82. package/dist/governance/authority.js +123 -0
  83. package/dist/governance/authority.js.map +1 -0
  84. package/dist/governance/index.d.ts +66 -0
  85. package/dist/governance/index.d.ts.map +1 -0
  86. package/dist/governance/index.js +210 -0
  87. package/dist/governance/index.js.map +1 -0
  88. package/dist/governance/merge.d.ts +31 -0
  89. package/dist/governance/merge.d.ts.map +1 -0
  90. package/dist/governance/merge.js +167 -0
  91. package/dist/governance/merge.js.map +1 -0
  92. package/dist/identity/index.d.ts +199 -0
  93. package/dist/identity/index.d.ts.map +1 -0
  94. package/dist/identity/index.js +415 -0
  95. package/dist/identity/index.js.map +1 -0
  96. package/dist/index.d.ts +71 -0
  97. package/dist/index.d.ts.map +1 -0
  98. package/dist/index.js +56 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/maloca/backoffice.d.ts +31 -0
  101. package/dist/maloca/backoffice.d.ts.map +1 -0
  102. package/dist/maloca/backoffice.js +40 -0
  103. package/dist/maloca/backoffice.js.map +1 -0
  104. package/dist/maloca/event-bus.d.ts +60 -0
  105. package/dist/maloca/event-bus.d.ts.map +1 -0
  106. package/dist/maloca/event-bus.js +175 -0
  107. package/dist/maloca/event-bus.js.map +1 -0
  108. package/dist/maloca/evidentia.d.ts +136 -0
  109. package/dist/maloca/evidentia.d.ts.map +1 -0
  110. package/dist/maloca/evidentia.js +447 -0
  111. package/dist/maloca/evidentia.js.map +1 -0
  112. package/dist/maloca/gateway/api.d.ts +146 -0
  113. package/dist/maloca/gateway/api.d.ts.map +1 -0
  114. package/dist/maloca/gateway/api.js +228 -0
  115. package/dist/maloca/gateway/api.js.map +1 -0
  116. package/dist/maloca/gateway/auth.d.ts +20 -0
  117. package/dist/maloca/gateway/auth.d.ts.map +1 -0
  118. package/dist/maloca/gateway/auth.js +115 -0
  119. package/dist/maloca/gateway/auth.js.map +1 -0
  120. package/dist/maloca/gateway/dashboard.d.ts +42 -0
  121. package/dist/maloca/gateway/dashboard.d.ts.map +1 -0
  122. package/dist/maloca/gateway/dashboard.js +67 -0
  123. package/dist/maloca/gateway/dashboard.js.map +1 -0
  124. package/dist/maloca/gateway/websocket.d.ts +34 -0
  125. package/dist/maloca/gateway/websocket.d.ts.map +1 -0
  126. package/dist/maloca/gateway/websocket.js +71 -0
  127. package/dist/maloca/gateway/websocket.js.map +1 -0
  128. package/dist/maloca/karma.d.ts +165 -0
  129. package/dist/maloca/karma.d.ts.map +1 -0
  130. package/dist/maloca/karma.js +307 -0
  131. package/dist/maloca/karma.js.map +1 -0
  132. package/dist/maloca/kernel.d.ts +20 -0
  133. package/dist/maloca/kernel.d.ts.map +1 -0
  134. package/dist/maloca/kernel.js +76 -0
  135. package/dist/maloca/kernel.js.map +1 -0
  136. package/dist/maloca/metadata.d.ts +30 -0
  137. package/dist/maloca/metadata.d.ts.map +1 -0
  138. package/dist/maloca/metadata.js +80 -0
  139. package/dist/maloca/metadata.js.map +1 -0
  140. package/dist/maloca/perfil.d.ts +57 -0
  141. package/dist/maloca/perfil.d.ts.map +1 -0
  142. package/dist/maloca/perfil.js +113 -0
  143. package/dist/maloca/perfil.js.map +1 -0
  144. package/dist/maloca/plugin-registry.d.ts +27 -0
  145. package/dist/maloca/plugin-registry.d.ts.map +1 -0
  146. package/dist/maloca/plugin-registry.js +76 -0
  147. package/dist/maloca/plugin-registry.js.map +1 -0
  148. package/dist/maloca/polygon-bridge.d.ts +63 -0
  149. package/dist/maloca/polygon-bridge.d.ts.map +1 -0
  150. package/dist/maloca/polygon-bridge.js +198 -0
  151. package/dist/maloca/polygon-bridge.js.map +1 -0
  152. package/dist/maloca/types.d.ts +44 -0
  153. package/dist/maloca/types.d.ts.map +1 -0
  154. package/dist/maloca/types.js +2 -0
  155. package/dist/maloca/types.js.map +1 -0
  156. package/dist/medico/aval.d.ts +149 -0
  157. package/dist/medico/aval.d.ts.map +1 -0
  158. package/dist/medico/aval.js +281 -0
  159. package/dist/medico/aval.js.map +1 -0
  160. package/dist/medico/canonica.d.ts +96 -0
  161. package/dist/medico/canonica.d.ts.map +1 -0
  162. package/dist/medico/canonica.js +148 -0
  163. package/dist/medico/canonica.js.map +1 -0
  164. package/dist/medico/credencial.d.ts +160 -0
  165. package/dist/medico/credencial.d.ts.map +1 -0
  166. package/dist/medico/credencial.js +240 -0
  167. package/dist/medico/credencial.js.map +1 -0
  168. package/dist/medico/index.d.ts +36 -0
  169. package/dist/medico/index.d.ts.map +1 -0
  170. package/dist/medico/index.js +39 -0
  171. package/dist/medico/index.js.map +1 -0
  172. package/dist/medico/malla.d.ts +218 -0
  173. package/dist/medico/malla.d.ts.map +1 -0
  174. package/dist/medico/malla.js +347 -0
  175. package/dist/medico/malla.js.map +1 -0
  176. package/dist/medico/registro-profesional.d.ts +84 -0
  177. package/dist/medico/registro-profesional.d.ts.map +1 -0
  178. package/dist/medico/registro-profesional.js +135 -0
  179. package/dist/medico/registro-profesional.js.map +1 -0
  180. package/dist/medico/registro.d.ts +149 -0
  181. package/dist/medico/registro.d.ts.map +1 -0
  182. package/dist/medico/registro.js +173 -0
  183. package/dist/medico/registro.js.map +1 -0
  184. package/dist/medico/types.d.ts +287 -0
  185. package/dist/medico/types.d.ts.map +1 -0
  186. package/dist/medico/types.js +135 -0
  187. package/dist/medico/types.js.map +1 -0
  188. package/dist/medico/verificacion-registro.d.ts +300 -0
  189. package/dist/medico/verificacion-registro.d.ts.map +1 -0
  190. package/dist/medico/verificacion-registro.js +319 -0
  191. package/dist/medico/verificacion-registro.js.map +1 -0
  192. package/dist/mesh/index.d.ts +457 -0
  193. package/dist/mesh/index.d.ts.map +1 -0
  194. package/dist/mesh/index.js +929 -0
  195. package/dist/mesh/index.js.map +1 -0
  196. package/dist/namespaces/encrypted-plugin.d.ts +56 -0
  197. package/dist/namespaces/encrypted-plugin.d.ts.map +1 -0
  198. package/dist/namespaces/encrypted-plugin.js +173 -0
  199. package/dist/namespaces/encrypted-plugin.js.map +1 -0
  200. package/dist/namespaces/index.d.ts +52 -0
  201. package/dist/namespaces/index.d.ts.map +1 -0
  202. package/dist/namespaces/index.js +134 -0
  203. package/dist/namespaces/index.js.map +1 -0
  204. package/dist/namespaces/ivn-proofs.d.ts +54 -0
  205. package/dist/namespaces/ivn-proofs.d.ts.map +1 -0
  206. package/dist/namespaces/ivn-proofs.js +162 -0
  207. package/dist/namespaces/ivn-proofs.js.map +1 -0
  208. package/dist/namespaces/offers-gossip.d.ts +95 -0
  209. package/dist/namespaces/offers-gossip.d.ts.map +1 -0
  210. package/dist/namespaces/offers-gossip.js +213 -0
  211. package/dist/namespaces/offers-gossip.js.map +1 -0
  212. package/dist/node-memory/idb-store.d.ts +22 -0
  213. package/dist/node-memory/idb-store.d.ts.map +1 -0
  214. package/dist/node-memory/idb-store.js +157 -0
  215. package/dist/node-memory/idb-store.js.map +1 -0
  216. package/dist/node-memory/index.d.ts +14 -0
  217. package/dist/node-memory/index.d.ts.map +1 -0
  218. package/dist/node-memory/index.js +159 -0
  219. package/dist/node-memory/index.js.map +1 -0
  220. package/dist/node-memory/sync-flush.d.ts +11 -0
  221. package/dist/node-memory/sync-flush.d.ts.map +1 -0
  222. package/dist/node-memory/sync-flush.js +37 -0
  223. package/dist/node-memory/sync-flush.js.map +1 -0
  224. package/dist/node-memory/types.d.ts +34 -0
  225. package/dist/node-memory/types.d.ts.map +1 -0
  226. package/dist/node-memory/types.js +2 -0
  227. package/dist/node-memory/types.js.map +1 -0
  228. package/dist/node-memory/xavier-store.d.ts +12 -0
  229. package/dist/node-memory/xavier-store.d.ts.map +1 -0
  230. package/dist/node-memory/xavier-store.js +75 -0
  231. package/dist/node-memory/xavier-store.js.map +1 -0
  232. package/dist/op-log/index.d.ts +49 -0
  233. package/dist/op-log/index.d.ts.map +1 -0
  234. package/dist/op-log/index.js +190 -0
  235. package/dist/op-log/index.js.map +1 -0
  236. package/dist/presence/health.d.ts +54 -0
  237. package/dist/presence/health.d.ts.map +1 -0
  238. package/dist/presence/health.js +139 -0
  239. package/dist/presence/health.js.map +1 -0
  240. package/dist/presence/index.d.ts +85 -0
  241. package/dist/presence/index.d.ts.map +1 -0
  242. package/dist/presence/index.js +255 -0
  243. package/dist/presence/index.js.map +1 -0
  244. package/dist/presence/peer-health.d.ts +40 -0
  245. package/dist/presence/peer-health.d.ts.map +1 -0
  246. package/dist/presence/peer-health.js +118 -0
  247. package/dist/presence/peer-health.js.map +1 -0
  248. package/dist/protocol/canonical.d.ts +10 -0
  249. package/dist/protocol/canonical.d.ts.map +1 -0
  250. package/dist/protocol/canonical.js +32 -0
  251. package/dist/protocol/canonical.js.map +1 -0
  252. package/dist/protocol/crypto.d.ts +299 -0
  253. package/dist/protocol/crypto.d.ts.map +1 -0
  254. package/dist/protocol/crypto.js +739 -0
  255. package/dist/protocol/crypto.js.map +1 -0
  256. package/dist/protocol/index.d.ts +30 -0
  257. package/dist/protocol/index.d.ts.map +1 -0
  258. package/dist/protocol/index.js +116 -0
  259. package/dist/protocol/index.js.map +1 -0
  260. package/dist/protocol/utils.d.ts +5 -0
  261. package/dist/protocol/utils.d.ts.map +1 -0
  262. package/dist/protocol/utils.js +27 -0
  263. package/dist/protocol/utils.js.map +1 -0
  264. package/dist/salones/manager.d.ts +100 -0
  265. package/dist/salones/manager.d.ts.map +1 -0
  266. package/dist/salones/manager.js +240 -0
  267. package/dist/salones/manager.js.map +1 -0
  268. package/dist/security/rate-limiter.d.ts +13 -0
  269. package/dist/security/rate-limiter.d.ts.map +1 -0
  270. package/dist/security/rate-limiter.js +32 -0
  271. package/dist/security/rate-limiter.js.map +1 -0
  272. package/dist/snapshot/index.d.ts +90 -0
  273. package/dist/snapshot/index.d.ts.map +1 -0
  274. package/dist/snapshot/index.js +189 -0
  275. package/dist/snapshot/index.js.map +1 -0
  276. package/dist/storage/index.d.ts +49 -0
  277. package/dist/storage/index.d.ts.map +1 -0
  278. package/dist/storage/index.js +192 -0
  279. package/dist/storage/index.js.map +1 -0
  280. package/dist/storage/optimizer.d.ts +28 -0
  281. package/dist/storage/optimizer.d.ts.map +1 -0
  282. package/dist/storage/optimizer.js +71 -0
  283. package/dist/storage/optimizer.js.map +1 -0
  284. package/dist/storage/ydoc-persistence.d.ts +27 -0
  285. package/dist/storage/ydoc-persistence.d.ts.map +1 -0
  286. package/dist/storage/ydoc-persistence.js +128 -0
  287. package/dist/storage/ydoc-persistence.js.map +1 -0
  288. package/dist/sync/ChunkSyncManager.d.ts +41 -0
  289. package/dist/sync/ChunkSyncManager.d.ts.map +1 -0
  290. package/dist/sync/ChunkSyncManager.js +115 -0
  291. package/dist/sync/ChunkSyncManager.js.map +1 -0
  292. package/dist/sync/conflict-resolver.d.ts +33 -0
  293. package/dist/sync/conflict-resolver.d.ts.map +1 -0
  294. package/dist/sync/conflict-resolver.js +54 -0
  295. package/dist/sync/conflict-resolver.js.map +1 -0
  296. package/dist/sync/engine.d.ts +168 -0
  297. package/dist/sync/engine.d.ts.map +1 -0
  298. package/dist/sync/engine.js +315 -0
  299. package/dist/sync/engine.js.map +1 -0
  300. package/dist/sync/index.d.ts +3 -0
  301. package/dist/sync/index.d.ts.map +1 -0
  302. package/dist/sync/index.js +3 -0
  303. package/dist/sync/index.js.map +1 -0
  304. package/dist/transport/TorTransportAdapter.d.ts +70 -0
  305. package/dist/transport/TorTransportAdapter.d.ts.map +1 -0
  306. package/dist/transport/TorTransportAdapter.js +192 -0
  307. package/dist/transport/TorTransportAdapter.js.map +1 -0
  308. package/dist/transport/memory.d.ts +31 -0
  309. package/dist/transport/memory.d.ts.map +1 -0
  310. package/dist/transport/memory.js +114 -0
  311. package/dist/transport/memory.js.map +1 -0
  312. package/dist/transport/peerjs.d.ts +52 -0
  313. package/dist/transport/peerjs.d.ts.map +1 -0
  314. package/dist/transport/peerjs.js +336 -0
  315. package/dist/transport/peerjs.js.map +1 -0
  316. package/dist/transport/pqc-handshake.d.ts +72 -0
  317. package/dist/transport/pqc-handshake.d.ts.map +1 -0
  318. package/dist/transport/pqc-handshake.js +129 -0
  319. package/dist/transport/pqc-handshake.js.map +1 -0
  320. package/dist/transport/relay-config.d.ts +11 -0
  321. package/dist/transport/relay-config.d.ts.map +1 -0
  322. package/dist/transport/relay-config.js +48 -0
  323. package/dist/transport/relay-config.js.map +1 -0
  324. package/dist/transport/relay-server.d.ts +37 -0
  325. package/dist/transport/relay-server.d.ts.map +1 -0
  326. package/dist/transport/relay-server.js +246 -0
  327. package/dist/transport/relay-server.js.map +1 -0
  328. package/dist/transport/tor.d.ts +47 -0
  329. package/dist/transport/tor.d.ts.map +1 -0
  330. package/dist/transport/tor.js +158 -0
  331. package/dist/transport/tor.js.map +1 -0
  332. package/dist/transport/types.d.ts +34 -0
  333. package/dist/transport/types.d.ts.map +1 -0
  334. package/dist/transport/types.js +2 -0
  335. package/dist/transport/types.js.map +1 -0
  336. package/dist/types/index.d.ts +293 -0
  337. package/dist/types/index.d.ts.map +1 -0
  338. package/dist/types/index.js +73 -0
  339. package/dist/types/index.js.map +1 -0
  340. package/dist/web/admission.d.ts +24 -0
  341. package/dist/web/admission.d.ts.map +1 -0
  342. package/dist/web/admission.js +41 -0
  343. package/dist/web/admission.js.map +1 -0
  344. package/dist/web/crypto.d.ts +18 -0
  345. package/dist/web/crypto.d.ts.map +1 -0
  346. package/dist/web/crypto.js +78 -0
  347. package/dist/web/crypto.js.map +1 -0
  348. package/dist/web/exchange.d.ts +23 -0
  349. package/dist/web/exchange.d.ts.map +1 -0
  350. package/dist/web/exchange.js +54 -0
  351. package/dist/web/exchange.js.map +1 -0
  352. package/dist/web/fragment.d.ts +58 -0
  353. package/dist/web/fragment.d.ts.map +1 -0
  354. package/dist/web/fragment.js +198 -0
  355. package/dist/web/fragment.js.map +1 -0
  356. package/dist/web/index.d.ts +25 -0
  357. package/dist/web/index.d.ts.map +1 -0
  358. package/dist/web/index.js +14 -0
  359. package/dist/web/index.js.map +1 -0
  360. package/dist/web/merge/index.d.ts +104 -0
  361. package/dist/web/merge/index.d.ts.map +1 -0
  362. package/dist/web/merge/index.js +236 -0
  363. package/dist/web/merge/index.js.map +1 -0
  364. package/dist/web/oplog/hlc.d.ts +19 -0
  365. package/dist/web/oplog/hlc.d.ts.map +1 -0
  366. package/dist/web/oplog/hlc.js +39 -0
  367. package/dist/web/oplog/hlc.js.map +1 -0
  368. package/dist/web/oplog/index.d.ts +10 -0
  369. package/dist/web/oplog/index.d.ts.map +1 -0
  370. package/dist/web/oplog/index.js +6 -0
  371. package/dist/web/oplog/index.js.map +1 -0
  372. package/dist/web/oplog/log.d.ts +182 -0
  373. package/dist/web/oplog/log.d.ts.map +1 -0
  374. package/dist/web/oplog/log.js +693 -0
  375. package/dist/web/oplog/log.js.map +1 -0
  376. package/dist/web/oplog/store.d.ts +40 -0
  377. package/dist/web/oplog/store.d.ts.map +1 -0
  378. package/dist/web/oplog/store.js +85 -0
  379. package/dist/web/oplog/store.js.map +1 -0
  380. package/dist/web/oplog/sync.d.ts +54 -0
  381. package/dist/web/oplog/sync.d.ts.map +1 -0
  382. package/dist/web/oplog/sync.js +162 -0
  383. package/dist/web/oplog/sync.js.map +1 -0
  384. package/dist/web/oplog/types.d.ts +119 -0
  385. package/dist/web/oplog/types.d.ts.map +1 -0
  386. package/dist/web/oplog/types.js +2 -0
  387. package/dist/web/oplog/types.js.map +1 -0
  388. package/dist/web/pairing.d.ts +186 -0
  389. package/dist/web/pairing.d.ts.map +1 -0
  390. package/dist/web/pairing.js +395 -0
  391. package/dist/web/pairing.js.map +1 -0
  392. package/dist/web/pq.d.ts +36 -0
  393. package/dist/web/pq.d.ts.map +1 -0
  394. package/dist/web/pq.js +59 -0
  395. package/dist/web/pq.js.map +1 -0
  396. package/dist/web/provider.d.ts +188 -0
  397. package/dist/web/provider.d.ts.map +1 -0
  398. package/dist/web/provider.js +2042 -0
  399. package/dist/web/provider.js.map +1 -0
  400. package/dist/web/rooms.d.ts +20 -0
  401. package/dist/web/rooms.d.ts.map +1 -0
  402. package/dist/web/rooms.js +51 -0
  403. package/dist/web/rooms.js.map +1 -0
  404. package/dist/web/rotation.d.ts +73 -0
  405. package/dist/web/rotation.d.ts.map +1 -0
  406. package/dist/web/rotation.js +130 -0
  407. package/dist/web/rotation.js.map +1 -0
  408. package/dist/web/secstate.d.ts +213 -0
  409. package/dist/web/secstate.d.ts.map +1 -0
  410. package/dist/web/secstate.js +789 -0
  411. package/dist/web/secstate.js.map +1 -0
  412. package/dist/web/store.d.ts +9 -0
  413. package/dist/web/store.d.ts.map +1 -0
  414. package/dist/web/store.js +32 -0
  415. package/dist/web/store.js.map +1 -0
  416. package/dist/web/transports/loopback.d.ts +11 -0
  417. package/dist/web/transports/loopback.d.ts.map +1 -0
  418. package/dist/web/transports/loopback.js +97 -0
  419. package/dist/web/transports/loopback.js.map +1 -0
  420. package/dist/web/transports/qr-sdp.d.ts +27 -0
  421. package/dist/web/transports/qr-sdp.d.ts.map +1 -0
  422. package/dist/web/transports/qr-sdp.js +131 -0
  423. package/dist/web/transports/qr-sdp.js.map +1 -0
  424. package/dist/web/transports/ws.d.ts +12 -0
  425. package/dist/web/transports/ws.d.ts.map +1 -0
  426. package/dist/web/transports/ws.js +139 -0
  427. package/dist/web/transports/ws.js.map +1 -0
  428. package/dist/web/trust/canonical.d.ts +8 -0
  429. package/dist/web/trust/canonical.d.ts.map +1 -0
  430. package/dist/web/trust/canonical.js +27 -0
  431. package/dist/web/trust/canonical.js.map +1 -0
  432. package/dist/web/trust/docs.d.ts +51 -0
  433. package/dist/web/trust/docs.d.ts.map +1 -0
  434. package/dist/web/trust/docs.js +170 -0
  435. package/dist/web/trust/docs.js.map +1 -0
  436. package/dist/web/trust/index.d.ts +10 -0
  437. package/dist/web/trust/index.d.ts.map +1 -0
  438. package/dist/web/trust/index.js +7 -0
  439. package/dist/web/trust/index.js.map +1 -0
  440. package/dist/web/trust/keys.d.ts +37 -0
  441. package/dist/web/trust/keys.d.ts.map +1 -0
  442. package/dist/web/trust/keys.js +75 -0
  443. package/dist/web/trust/keys.js.map +1 -0
  444. package/dist/web/trust/store.d.ts +150 -0
  445. package/dist/web/trust/store.d.ts.map +1 -0
  446. package/dist/web/trust/store.js +587 -0
  447. package/dist/web/trust/store.js.map +1 -0
  448. package/dist/web/trust/types.d.ts +134 -0
  449. package/dist/web/trust/types.d.ts.map +1 -0
  450. package/dist/web/trust/types.js +4 -0
  451. package/dist/web/trust/types.js.map +1 -0
  452. package/dist/web/types.d.ts +115 -0
  453. package/dist/web/types.d.ts.map +1 -0
  454. package/dist/web/types.js +2 -0
  455. package/dist/web/types.js.map +1 -0
  456. package/dist/web/util.d.ts +12 -0
  457. package/dist/web/util.d.ts.map +1 -0
  458. package/dist/web/util.js +54 -0
  459. package/dist/web/util.js.map +1 -0
  460. package/dist/web/webrtc.d.ts +35 -0
  461. package/dist/web/webrtc.d.ts.map +1 -0
  462. package/dist/web/webrtc.js +304 -0
  463. package/dist/web/webrtc.js.map +1 -0
  464. package/package.json +139 -4
@@ -0,0 +1,457 @@
1
+ import type { EdgeMesh } from "../edge-mesh.js";
2
+ import type { MotivoRechazo } from "../maloca/karma.js";
3
+ import type { TransaccionKarma } from "../maloca/types.js";
4
+ import type { NodoId, ParPublico } from "../types/index.js";
5
+ export declare const ESTRATEGIA_FAN_OUT: {
6
+ readonly ALEATORIA: "aleatoria";
7
+ readonly POR_SALUD: "por_salud";
8
+ readonly POR_LATENCIA: "por_latencia";
9
+ };
10
+ export type EstrategiaFanOut = (typeof ESTRATEGIA_FAN_OUT)[keyof typeof ESTRATEGIA_FAN_OUT];
11
+ export interface MeshConfig {
12
+ readonly nodoId: NodoId;
13
+ readonly fanOut: number;
14
+ readonly maxPeers: number;
15
+ readonly heartbeatIntervalMs: number;
16
+ readonly peerTimeoutMs: number;
17
+ readonly gossipTTL: number;
18
+ readonly estrategia: EstrategiaFanOut;
19
+ readonly namespacePorDefecto: string;
20
+ }
21
+ export interface PeerInfo {
22
+ readonly nodoId: NodoId;
23
+ readonly timestamp: number;
24
+ readonly ultimoHeartbeat: number;
25
+ readonly latenciaMs: number;
26
+ readonly fanOutIndex: number;
27
+ readonly estado: "activo" | "lento" | "caido";
28
+ readonly intentosReconexion: number;
29
+ readonly namespace?: string;
30
+ }
31
+ export interface GossipMessage {
32
+ readonly id: string;
33
+ readonly namespace: string;
34
+ readonly ttl: number;
35
+ readonly payload: unknown;
36
+ readonly origen: NodoId;
37
+ readonly timestamp: number;
38
+ readonly ruta: readonly NodoId[];
39
+ }
40
+ export interface MeshEventMap {
41
+ peerConectado: CustomEvent<{
42
+ readonly peerId: NodoId;
43
+ readonly namespace?: string;
44
+ }>;
45
+ peerDesconectado: CustomEvent<{
46
+ readonly peerId: NodoId;
47
+ }>;
48
+ peerDescubierto: CustomEvent<{
49
+ readonly peerId: NodoId;
50
+ readonly via: NodoId;
51
+ }>;
52
+ gossipRecibido: CustomEvent<{
53
+ readonly mensaje: GossipMessage;
54
+ }>;
55
+ /** Un aval remoto sobrevivio a la verificacion de firma y movio un score. */
56
+ karmaRecibido: CustomEvent<{
57
+ readonly tx: TransaccionKarma;
58
+ readonly desde: NodoId;
59
+ }>;
60
+ /** Un aval remoto fue rechazado. `motivo` es el veredicto del propio KarmaManager. */
61
+ karmaRechazado: CustomEvent<{
62
+ readonly txId: string | null;
63
+ readonly motivo: MotivoRechazo | "payload_malformado";
64
+ readonly desde: NodoId;
65
+ }>;
66
+ /**
67
+ * LA VISTA DE ESTE NODO SOBRE LA REPUTACIÓN DE UN MÉDICO ESTABA DESFASADA.
68
+ *
69
+ * Se emite cuando un aval remoto MOVIÓ un score local, lo cual solo es posible
70
+ * si este nodo nunca había visto ese `tx.id`: el score local del sujeto era por
71
+ * tanto distinto del del emisor, y esta transacción es la prueba. Dos nodos
72
+ * honestos mostraban reputaciones distintas del mismo médico y nada lo decía.
73
+ *
74
+ * Solo detección. Nada se reconcilia, nada se reescribe, el OpLog queda intacto
75
+ * — este evento es lo que hace que la divergencia deje de ser invisible.
76
+ */
77
+ karmaDivergente: CustomEvent<DetalleDivergenciaKarma>;
78
+ meshSaludActualizada: CustomEvent<{
79
+ readonly peersActivos: number;
80
+ readonly peersTotales: number;
81
+ }>;
82
+ namespaceSincronizado: CustomEvent<{
83
+ readonly namespace: string;
84
+ readonly peers: readonly NodoId[];
85
+ }>;
86
+ error: CustomEvent<{
87
+ readonly mensaje: string;
88
+ readonly error?: Error;
89
+ }>;
90
+ rate_limited: CustomEvent<{
91
+ readonly peerId: string;
92
+ readonly resource: string;
93
+ }>;
94
+ }
95
+ /**
96
+ * Por qué la vista local de la reputación de un médico estaba desfasada.
97
+ *
98
+ * Union de un solo miembro a propósito. `aval_tardio` es lo UNICO que esta capa
99
+ * puede probar: el aval le era nuevo a este nodo y movió el score. Un duplicado
100
+ * redelivered que ya estaba aplicado no mueve nada y NO es divergencia — es el
101
+ * gossip haciendo su trabajo — así que no emite nada. Ampliar esta union queda
102
+ * reservado para la fase de reconciliación.
103
+ */
104
+ export type MotivoDivergenciaKarma = "aval_tardio";
105
+ /**
106
+ * Todo lo que un operador necesita ver para saber que dos nodos honestos
107
+ * valoraban distinto la reputación de un médico.
108
+ *
109
+ * `scoreLocalAntes` es lo que este nodo mostraba antes de que llegara el aval —
110
+ * el número que un clínico habría leído y en el que se habría equivocado por
111
+ * `delta`. `scoreLocalDespues` es lo que muestra ahora.
112
+ */
113
+ export interface DetalleDivergenciaKarma {
114
+ /** El médico cuya reputación valoraban distinto los dos nodos. */
115
+ readonly sujeto: NodoId;
116
+ /** El aval que expuso la divergencia. */
117
+ readonly txId: string;
118
+ /** Quien firmó ese aval — el nodo cuya vista ahora es la que copiamos. */
119
+ readonly emisor: NodoId;
120
+ /** El nodo que nos lo relaysó. */
121
+ readonly desde: NodoId;
122
+ /** El peso del aval. */
123
+ readonly delta: number;
124
+ /** Lo que este nodo mostraba antes. */
125
+ readonly scoreLocalAntes: number;
126
+ /** Lo que este nodo muestra tras aplicarlo. */
127
+ readonly scoreLocalDespues: number;
128
+ /**
129
+ * `aval_tardio`: el aval le era nuevo a este nodo, así que su score estaba
130
+ * desfasado. Un duplicado redelivered no aparece aquí: no movió nada, así que
131
+ * no hay nada que reconciliar.
132
+ */
133
+ readonly motivo: MotivoDivergenciaKarma;
134
+ }
135
+ /**
136
+ * Cuántos registros de divergencia retiene {@link MeshManager.obtenerDivergencias}.
137
+ *
138
+ * Acotado por la misma razón que `gossipsVistos`: esto es una cola de
139
+ * diagnóstico, no un libro mayor, y un mapa sin límite alimentado por pares
140
+ * remotos es un bug de crecimiento de memoria. La reconciliación, cuando llegue,
141
+ * será dueña del estado durable — no esta cola.
142
+ */
143
+ export declare const MAX_DIVERGENCIAS_REGISTRADAS: 256;
144
+ /**
145
+ * El motor de karma al que MeshManager replica, expressed como la porción
146
+ * estrecha de KarmaManager que esta capa tiene permiso a usar.
147
+ *
148
+ * Estructural a propósito: `mesh/index.ts` no debe depender del grafo de runtime
149
+ * de karma, y un doble escrito a mano no debe poder satisfacerlo y saltarse la
150
+ * validación en silencio. `aplicarTransaccion` es el ÚNICO método que puede mover
151
+ * un score, y eso es lo que hace exigible que "el gossip es un portador, no una
152
+ * autoridad".
153
+ */
154
+ export interface ConsumidorKarma {
155
+ /**
156
+ * La única entrada que puede mover un score. Devuelve null cuando se aplicó
157
+ * (y cuando la transacción es un `tx.id` duplicado, por diseño), o el motivo
158
+ * del rechazo.
159
+ */
160
+ readonly aplicarTransaccion: (tx: TransaccionKarma) => Promise<MotivoRechazo | null>;
161
+ /**
162
+ * Lee el score actual de un nodo. Es el `getScore` del propio KarmaManager,
163
+ * referenciado por su nombre real y no por un alias en español, precisamente
164
+ * para que la comprobación estructural del constructor demuestre que el motor
165
+ * puede observarse de verdad.
166
+ *
167
+ * OBLIGATORIO, no opcional, y ese es el punto de este cambio. La detección de
168
+ * divergencia solo es posible si el portador puede leer el número que está
169
+ * corrigiendo; un lector opcional dejaría que un consumidor volviera
170
+ * opcionalmente a una reputación silenciosamente desfasada, que es el defecto
171
+ * que se cierra. Que falle en tiempo de compilación y no en silencio.
172
+ *
173
+ * Solo lectura: esta capa nunca escribe un score, solo observa uno.
174
+ */
175
+ readonly getScore: (nodoId: NodoId) => number;
176
+ /**
177
+ * Registra una clave que el nodo ya confía en (p. ej. del registro de pares de
178
+ * EdgeMesh). Opcional: un consumidor que resuelva claves por su cuenta no
179
+ * necesita exponerlo.
180
+ */
181
+ readonly registrarClavePublica?: (nodoId: NodoId, parPublico: ParPublico) => void;
182
+ }
183
+ /** Opciones con nombre para el constructor de MeshManager. */
184
+ export interface MeshManagerOpciones {
185
+ /**
186
+ * Motor de karma al que replicar los avales remotos. Omitirlo deja una malla
187
+ * que solo transporta gossip con otros fines.
188
+ */
189
+ readonly consumidorKarma?: ConsumidorKarma;
190
+ }
191
+ /**
192
+ * Payload que MeshManager gossipea para llevar un aval. Versionado en el cable
193
+ * para que un cambio futuro en el formato de transacción sea distinguible.
194
+ */
195
+ export declare const PAYLOAD_KARMA_TIPO: "karma:tx";
196
+ export declare class MeshManager extends EventTarget {
197
+ readonly config: MeshConfig;
198
+ private readonly edgeMesh;
199
+ private readonly peers;
200
+ private readonly gossipsVistos;
201
+ private readonly gossipRateLimiter;
202
+ private readonly namespacePeers;
203
+ /**
204
+ * Motor de karma al que replicar. Ausente significa que este MeshManager es un
205
+ * portador puro (solo chat/sync) y que los avales remotos se ignoran en vez de
206
+ * validarse con un doble.
207
+ */
208
+ private consumidorKarma?;
209
+ /** Aplicaciones de karma en vuelo, para poder esperar la propagacion sin dormir. */
210
+ private readonly karmaEnCurso;
211
+ /**
212
+ * Cola de diagnostico de divergencias de reputacion observadas, de la mas
213
+ * antigua a la mas reciente, acotada por {@link MAX_DIVERGENCIAS_REGISTRADAS}.
214
+ *
215
+ * Acotada y SOLO EN MEMORIA, a proposito. Esto no es un libro mayor y no debe
216
+ * convertirse en uno: escribir registros de divergencia en el OpLog seria el
217
+ * primer paso de la reconciliación, que es explicitamente una fase posterior.
218
+ * Perder esta cola al reiniciar es el coste aceptado de "hacerlo visible ahora,
219
+ * reconciliar despues".
220
+ */
221
+ private readonly divergencias;
222
+ /**
223
+ * Serializa las aplicaciones de karma para que la lectura de score antes/despues
224
+ * de cada una abarque exactamente su propia aplicacion. Ver
225
+ * {@link MeshManager.encolarAplicacionKarma} para por qué importa.
226
+ *
227
+ * Cadena resuelta, nunca rechazada: cada eslabon captura su propio fallo, asi
228
+ * que un aval que lance no puede bloquear a todos los que tiene detrás.
229
+ */
230
+ private colaKarma;
231
+ private activo;
232
+ private intervalos;
233
+ constructor(config: Partial<MeshConfig> & {
234
+ nodoId: NodoId;
235
+ }, edgeMesh: EdgeMesh, consumidorKarma?: ConsumidorKarma);
236
+ constructor(config: Partial<MeshConfig> & {
237
+ nodoId: NodoId;
238
+ }, edgeMesh: EdgeMesh, opciones?: MeshManagerOpciones);
239
+ iniciar(): Promise<void>;
240
+ detener(): Promise<void>;
241
+ conectarPeer(peerId: NodoId, namespace?: string): Promise<void>;
242
+ desconectarPeer(peerId: NodoId): Promise<void>;
243
+ private encontrarPeorPeer;
244
+ private agregarPeerANamespace;
245
+ unirANamespace(namespace: string, peerId?: NodoId): Promise<void>;
246
+ abandonarNamespace(namespace: string, peerId?: NodoId): Promise<void>;
247
+ obtenerPeersEnNamespace(namespace: string): readonly NodoId[];
248
+ transmitirConGossip(namespace: string, payload: unknown, fanOut?: number): Promise<void>;
249
+ private seleccionarPeersParaFanOut;
250
+ private seleccionAleatoria;
251
+ private seleccionPorSalud;
252
+ private seleccionPorLatencia;
253
+ /**
254
+ * EL CAMINO DE REPLICACIÓN DE LA REPUTACIÓN.
255
+ *
256
+ * ─── POR QUÉ EXISTE ESTE GANCHO ────────────────────────────────────────
257
+ *
258
+ * Hasta ahora `KarmaManager` escribía los avales en el OpLog LOCAL
259
+ * (`karma:emit`) y ahí terminaba, mientras que `procesarGossip` — lo único en
260
+ * el repo que podía haberlos llevado a un par — nunca lo invocaba nadie. Dos
261
+ * observadores honestos del mismo aval sostenían por tanto scores distintos.
262
+ *
263
+ * ─── MODELO DE CONFIANZA: EL GOSSIP ES UN PORTADOR, NO UNA AUTORIDAD ────
264
+ *
265
+ * Un payload de gossip es datos controlados por un atacante. Puede ser
266
+ * reenviado, falsificado, re-firmado por un par coludido, o enviado por un nodo
267
+ * que nunca ha sido avalado por nadie. Por eso este método NUNCA escribe en un
268
+ * OpLog y NUNCA toca un score. Hace exactamente una cosa con el payload:
269
+ * entregarlo a `ConsumidorKarma.aplicarTransaccion`, que es la entrada publica
270
+ * del propio KarmaManager. Ese método es el único lugar donde se verifica la
271
+ * firma ML-DSA-65 contra la clave REGISTRADA del emisor, se rechaza la
272
+ * auto-emisión, se aplica el techo de delta y el reenvío del mismo `tx.id` es
273
+ * idempotente. Reimplementar aquí cualquiera de esas reglas crearía un segundo
274
+ * validador más débil, que es exactamente el bug que este camino cierra.
275
+ *
276
+ * En consecuencia, un par NUNCA puede inyectar karma en un nodo que no ha
277
+ * firmado un aval: sin una firma válida de una clave en la que el nodo confía, la
278
+ * transacción se rechaza y ningún score se mueve.
279
+ *
280
+ * La confianza en claves públicas deliberadamente NO se toma del payload de
281
+ * gossip (eso dejaría que cualquier par respaldara a cualquier otro). Las únicas
282
+ * claves que se registran desde aquí son las que EdgeMesh ya autenticó en el
283
+ * handshake, leídas vía `obtenerClavePublica`.
284
+ *
285
+ * ─── LIMITACIÓN CONOCIDA — MEJOR ESFUERZO, NO CONSENSO (SIN RESOLVER) ───
286
+ *
287
+ * El gossip es mejor-esfuerzo. TTL, el rate limiter de tokens, pares offline y
288
+ * la seleccion de fan-out significan que un aval PUEDE PERDERSE: un médico que
289
+ * está offline cuando se gossipea su aval nunca se entera. Esta capa convierte
290
+ * por tanto la reputación en una SEÑAL que se propaga oportunísticamente, NO en
291
+ * un libro mayor autoritativo. Dos nodos pueden sostener legítimamente scores
292
+ * distintos para el mismo sujeto, y ningún reintento dentro de esta capa lo
293
+ * arregla — es un problema de convergencia, no de transporte.
294
+ *
295
+ * ─── QUÉ HACE ESTE MÉTODO AL RESPECTO: DETECTA, NO CORRIGE ─────────────
296
+ *
297
+ * Antes de este cambio la capa aplicaba el aval y seguía, así que el score se
298
+ * corregía solo y en silencio y ningún operador se enteraba de que dos nodos
299
+ * honestos habían mostrado reputaciones distintas del mismo médico. Ahora lee
300
+ * el score justo antes y justo después de la aplicación y, cuando el aval lo
301
+ * movió, emite `karmaDivergente` nombrando al sujeto, el score desfasado, el
302
+ * nuevo y el aval responsable.
303
+ *
304
+ * LA CORRECCIÓN SIGUE SIENDO LA DEL MOTOR. Esta capa lee scores y los reporta;
305
+ * solo KarmaManager decide qué es un score. Y nada se reconcilia: sin escritura
306
+ * en el OpLog, sin reordenación, sin retractación, sin intentar que los pares
307
+ * coincidan. Hacerlos coincidir es la fase siguiente y necesita diseño de
308
+ * quórum/anti-entropía que no pertenece a un portador.
309
+ *
310
+ * La solución real es un protocolo de reconciliación y está DELIBERADAMENTE NO
311
+ * IMPLEMENTADO AQUÍ. Direcciones candidatas, ninguna elegida aún:
312
+ * (a) Anti-entropía de OpLog: intercambio periódico de entradas `karma:emit`
313
+ * indexadas por `tx.id`, aplicadas vía `aplicarTransaccion` (la
314
+ * idempotencia hace gratis los reenvíos), para que un nodo que regresa se
315
+ * ponga al día.
316
+ * (b) Quórum/acuerdo Bizantino sobre deltas, para que un score se acredite
317
+ * solo cuando una supermayoría de pares lo ha visto de forma
318
+ * independiente.
319
+ * (c) Exposición explícita del conflicto: divergencia (el conjunto de `tx.id`s)
320
+ * para que un operador pueda ver que dos nodos honestos discrepan en vez
321
+ * de confiar calladamente en el gossip que llegó primero. ← esta fase: el
322
+ * evento `karmaDivergente` y {@link MeshManager.obtenerDivergencias} son
323
+ * (c), acotado a lo que la sola llegada de gossip puede probar.
324
+ * Sea cual se elija, los invariantes se mantienen: el karma nunca otorga acceso,
325
+ * y solo un aval firmado puede mover un score. Hasta entonces, quien consuma un
326
+ * número de karma debe tratarlo como una pista no verificada — nunca como una
327
+ * credencial.
328
+ *
329
+ * @returns el motivo del rechazo, o null cuando la transacción se aplicó (o fue
330
+ * un duplicado ya aplicado, que KarmaManager dobla en `null` por
331
+ * diseño).
332
+ */
333
+ aplicarKarmaRemoto(tx: TransaccionKarma, desde: NodoId): Promise<MotivoRechazo | "payload_malformado" | null>;
334
+ /**
335
+ * Lee un score, convirtiendo cualquier mal comportamiento del consumidor en
336
+ * "desconocido".
337
+ *
338
+ * Devuelve `null` — nunca un `0` fabricado — para que un lector roto sea
339
+ * indistinguible de uno ausente. Inventar un cero aquí haría que el informe de
340
+ * divergencia afirmara un movimiento que nunca ocurrió, que es peor que
341
+ * callarse: un operador no podría distinguir una discrepancia real de una
342
+ * inventada.
343
+ */
344
+ private leerScoreSiPuede;
345
+ /**
346
+ * Registra una divergencia y la anuncia.
347
+ *
348
+ * Ambas mitades importan y sirven a lectores distintos: el evento llega a quien
349
+ * esté mirando la malla en vivo, mientras que
350
+ * {@link MeshManager.obtenerDivergencias} permite a un operador descubrir A
351
+ * POSTERIORI EL HECHO que dos nodos discrepaban — incluidas divergencias
352
+ * ocurridas mientras nadie escuchaba. Solo con un evento, la divergencia
353
+ * seguiría desapareciendo en silencio justo en el momento en que importaba.
354
+ *
355
+ * `karmaRecibido` se emite primero, así que un listener que reacciona a un
356
+ * score nuevo ya tiene el registro de divergencia garantizado.
357
+ */
358
+ private registrarDivergencia;
359
+ /** Lee la clave pública de un par del registro de EdgeMesh (verificada en handshake). */
360
+ private obtenerClavePublicaDePeer;
361
+ /**
362
+ * Conecta (o desconecta) el motor de karma al que este MeshManager replica.
363
+ *
364
+ * Existe porque el orden de construccion lo impone: `EdgeMesh` crea el
365
+ * MeshManager en su constructor, y `MalocaKernel` crea el KarmaManager DESPUES
366
+ * de `super(config)`. Sin este gancho, la malla quedaria permanentemente sin
367
+ * consumidor y los avales seguirian sin viajar.
368
+ *
369
+ * Pasar `undefined` devuelve la malla a portador puro: deja de aplicar avales
370
+ * en vez de inventar un motor propio.
371
+ */
372
+ setConsumidorKarma(consumidor?: ConsumidorKarma): void;
373
+ /**
374
+ * Gossipea un aval a la malla. Quien llame le pasa el objeto transacción que
375
+ * devolvió `KarmaManager.emit`, firma incluida — una transacción sin firma es
376
+ * inútil para todo par, y KarmaManager ya garantiza que no puede producirse.
377
+ */
378
+ transmitirKarma(tx: TransaccionKarma, namespace?: string): Promise<void>;
379
+ /**
380
+ * Resuelve cuando todas las transacciones de karma en vuelo se han
381
+ * estabilizado. Los tests y gateways lo usan en vez de dormir; la malla nunca
382
+ * espera la aplicación de gossip en el camino caliente.
383
+ */
384
+ esperarPropagacionKarma(): Promise<void>;
385
+ /**
386
+ * Extrae un aval de un payload de gossip y lo aplica por el motor de karma.
387
+ * Cualquier cosa que no sea reconociblemente un aval se ignora: otros tipos de
388
+ * payload (eventos maloca, descubrimiento de plugins) no son asunto nuestro y
389
+ * se dejan a los listeners de `gossipRecibido`.
390
+ */
391
+ private enrutarKarmaDeGossip;
392
+ /**
393
+ * Aplica avales de UNO EN UNO, en orden de llegada.
394
+ *
395
+ * Por qué la cola, dado que el gossip deliberadamente no se espera en el
396
+ * camino caliente: `aplicarKarmaRemoto` lee el score antes de la aplicación y
397
+ * otra vez después, con un `await` en medio (la comprobación de firma es una
398
+ * operación PQC real). Sin serialización, varios gossips procesados en el mismo
399
+ * tick leerían el MISMO score "anterior" y cada uno aplicaría encima de él — así
400
+ * que el `scoreLocalAntes` registrado sería el valor de antes de todo el lote y
401
+ * no el valor que el nodo realmente mostraba cuando llegó ese aval. El evento
402
+ * seguiría disparándose, pero describiría un score que nadie vio, que es
403
+ * exactamente el tipo de número silenciosamente incorrecto que esta fase existe
404
+ * para dejar de publicar.
405
+ *
406
+ * La cola conserva el orden de llegada (`.then` sobre la tarea anterior), así
407
+ * que la secuencia es determinista e idéntica en cada nodo que vio los mismos
408
+ * gossips en el mismo orden.Tampoco cambia el resultado independiente del
409
+ * orden: KarmaManager suma deltas, así que el score FINAL es el mismo
410
+ * cualquiera — la cola hace que el reporte intermedio sea fiel, no que el
411
+ * total sea distinto.
412
+ *
413
+ * Los fallos no atascan la cola: cada eslabon absorbe su propio rechazo, así
414
+ * que un aval envenenado no bloquea a todos los que tiene detrás.
415
+ */
416
+ private encolarAplicacionKarma;
417
+ procesarGossip(mensaje: GossipMessage): void;
418
+ private reenviarGossip;
419
+ private transmitirHeartbeat;
420
+ procesarHeartbeatPeer(peerId: NodoId, peersConocidos: readonly NodoId[], namespaces: readonly string[]): void;
421
+ descubrirSalon(salonId: string): Promise<readonly NodoId[]>;
422
+ obtenerPeersConectados(): readonly NodoId[];
423
+ /**
424
+ * Divergencias que este nodo ha observado, de la más antigua a la más reciente,
425
+ * acotadas por {@link MAX_DIVERGENCIAS_REGISTRADAS}.
426
+ *
427
+ * La respuesta a "¿mi red está de acuerdo conmigo?" — la pregunta que un
428
+ * presupuesto de divergencia v1 no puede responder por sí solo, ya que todo el
429
+ * coste del modelo es que el score PODRÍA estar mal.
430
+ *
431
+ * Devuelve una copia: la cola es contabilidad interna y handing fuera una
432
+ * referencia viva dejaría que un llamador mutara el estado de detección desde
433
+ * fuera.
434
+ *
435
+ * Vacío significa "no se observó divergencia DESDE QUE ARRANCÓ ESTE PROCESO", no
436
+ * "la red está de acuerdo". No es una prueba de consenso, y nada de esto
437
+ * debería presentarse como tal a un clínico.
438
+ */
439
+ obtenerDivergencias(): readonly DetalleDivergenciaKarma[];
440
+ obtenerPeersActivos(): readonly NodoId[];
441
+ obtenerPeersLentos(): readonly string[];
442
+ obtenerPeerInfo(peerId: NodoId): PeerInfo | null;
443
+ obtenerTotalPeers(): number;
444
+ obtenerNamespaces(): readonly string[];
445
+ estaActivo(): boolean;
446
+ private actualizarLatencia;
447
+ private marcarPeerCaido;
448
+ private limpiarPeersCaidos;
449
+ private limpiarGossipCache;
450
+ private emitMeshSalud;
451
+ destruir(): void;
452
+ }
453
+ export declare class MeshGossip extends MeshManager {
454
+ recibirGossip(_origen: NodoId, mensaje: GossipMessage): void;
455
+ propagarGossip(mensaje: GossipMessage): Promise<void>;
456
+ }
457
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"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"}