holosphere 2.0.0-alpha1 → 2.0.0-alpha10

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 (418) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/FEATURES.md +431 -0
  3. package/LICENSE +29 -166
  4. package/LICENSE-AGPL.md +180 -0
  5. package/README.md +97 -16
  6. package/dist/2019-D2OG2idw.js +6680 -0
  7. package/dist/2019-D2OG2idw.js.map +1 -0
  8. package/dist/2019-EION3wKo.cjs +8 -0
  9. package/dist/2019-EION3wKo.cjs.map +1 -0
  10. package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
  11. package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
  12. package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
  13. package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
  14. package/dist/browser-BSniCNqO.js +3058 -0
  15. package/dist/browser-BSniCNqO.js.map +1 -0
  16. package/dist/browser-Cq59Ij19.cjs +2 -0
  17. package/dist/browser-Cq59Ij19.cjs.map +1 -0
  18. package/dist/cdn/holosphere.min.js +55 -0
  19. package/dist/cdn/holosphere.min.js.map +1 -0
  20. package/dist/cjs/holosphere.cjs +2 -0
  21. package/dist/cjs/holosphere.cjs.map +1 -0
  22. package/dist/esm/holosphere.js +53 -0
  23. package/dist/esm/holosphere.js.map +1 -0
  24. package/dist/index-DDGt_V9o.cjs +12 -0
  25. package/dist/index-DDGt_V9o.cjs.map +1 -0
  26. package/dist/index-DJXftyvB.js +39841 -0
  27. package/dist/index-DJXftyvB.js.map +1 -0
  28. package/dist/index-DMbdcMtK.cjs +18 -0
  29. package/dist/index-DMbdcMtK.cjs.map +1 -0
  30. package/dist/index-DeZ1xz_s.js +15104 -0
  31. package/dist/index-DeZ1xz_s.js.map +1 -0
  32. package/dist/indexeddb-storage-BFt6hMeF.js +176 -0
  33. package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
  34. package/dist/indexeddb-storage-BK5tv4Sh.cjs +2 -0
  35. package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
  36. package/dist/memory-storage-C9HuoL2E.js +91 -0
  37. package/dist/memory-storage-C9HuoL2E.js.map +1 -0
  38. package/dist/memory-storage-Dao7jfYG.cjs +2 -0
  39. package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
  40. package/dist/secp256k1-BbKzbLtD.cjs +12 -0
  41. package/dist/secp256k1-BbKzbLtD.cjs.map +1 -0
  42. package/dist/secp256k1-CreY7Pcl.js +1890 -0
  43. package/dist/secp256k1-CreY7Pcl.js.map +1 -0
  44. package/docs/CONTRACTS.md +797 -0
  45. package/docs/FOSDEM_PROPOSAL.md +388 -0
  46. package/docs/LOCALFIRST.md +266 -0
  47. package/docs/api/ai_aggregation.js.html +333 -0
  48. package/docs/api/ai_breakdown.js.html +524 -0
  49. package/docs/api/ai_classifier.js.html +231 -0
  50. package/docs/api/ai_council.js.html +246 -0
  51. package/docs/api/ai_embeddings.js.html +304 -0
  52. package/docs/api/ai_federation-ai.js.html +338 -0
  53. package/docs/api/ai_h3-ai.js.html +970 -0
  54. package/docs/api/ai_index.js.html +124 -0
  55. package/docs/api/ai_json-ops.js.html +241 -0
  56. package/docs/api/ai_llm-service.js.html +239 -0
  57. package/docs/api/ai_nl-query.js.html +236 -0
  58. package/docs/api/ai_relationships.js.html +367 -0
  59. package/docs/api/ai_schema-extractor.js.html +235 -0
  60. package/docs/api/ai_spatial.js.html +307 -0
  61. package/docs/api/ai_tts.js.html +214 -0
  62. package/docs/api/content_social-protocols.js.html +180 -0
  63. package/docs/api/core_holosphere.js.html +757 -0
  64. package/docs/api/crypto_nostr-utils.js.html +306 -0
  65. package/docs/api/crypto_secp256k1.js.html +267 -0
  66. package/docs/api/data/search.json +1 -0
  67. package/docs/api/federation_discovery.js.html +337 -0
  68. package/docs/api/federation_handshake.js.html +478 -0
  69. package/docs/api/federation_hologram.js.html +1053 -0
  70. package/docs/api/federation_registry.js.html +389 -0
  71. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  72. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  73. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  74. package/docs/api/global.html +3 -0
  75. package/docs/api/hierarchical_upcast.js.html +128 -0
  76. package/docs/api/index.html +265 -0
  77. package/docs/api/index.js.html +1868 -0
  78. package/docs/api/lib_ai-methods.js.html +660 -0
  79. package/docs/api/lib_contract-methods.js.html +445 -0
  80. package/docs/api/lib_errors.js.html +56 -0
  81. package/docs/api/lib_federation-methods.js.html +348 -0
  82. package/docs/api/lib_index.js.html +33 -0
  83. package/docs/api/module-ai.html +5 -0
  84. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  85. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  86. package/docs/api/module-ai_aggregation.html +3 -0
  87. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  88. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  89. package/docs/api/module-ai_breakdown.html +3 -0
  90. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  91. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  92. package/docs/api/module-ai_classifier.html +3 -0
  93. package/docs/api/module-ai_council-Council.html +6 -0
  94. package/docs/api/module-ai_council.Council.html +3 -0
  95. package/docs/api/module-ai_council.html +3 -0
  96. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  97. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  98. package/docs/api/module-ai_embeddings.html +3 -0
  99. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  100. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  101. package/docs/api/module-ai_federation-ai.html +3 -0
  102. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  103. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  104. package/docs/api/module-ai_h3-ai.html +3 -0
  105. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  106. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  107. package/docs/api/module-ai_json-ops.html +3 -0
  108. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  109. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  110. package/docs/api/module-ai_llm-service.html +3 -0
  111. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  112. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  113. package/docs/api/module-ai_nl-query.html +3 -0
  114. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  115. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  116. package/docs/api/module-ai_relationships.html +3 -0
  117. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  118. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  119. package/docs/api/module-ai_schema-extractor.html +3 -0
  120. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  121. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  122. package/docs/api/module-ai_spatial.html +3 -0
  123. package/docs/api/module-ai_tts-TTS.html +5 -0
  124. package/docs/api/module-ai_tts.TTS.html +3 -0
  125. package/docs/api/module-ai_tts.html +3 -0
  126. package/docs/api/module-content_social-protocols.html +3 -0
  127. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  128. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  129. package/docs/api/module-core_holosphere.html +3 -0
  130. package/docs/api/module-crypto_nostr-utils.html +3 -0
  131. package/docs/api/module-crypto_secp256k1.html +3 -0
  132. package/docs/api/module-federation_hologram.html +3 -0
  133. package/docs/api/module-hierarchical_upcast.html +3 -0
  134. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  135. package/docs/api/module-holosphere.html +3 -0
  136. package/docs/api/module-lib_ai-methods.html +3 -0
  137. package/docs/api/module-lib_contract-methods.html +3 -0
  138. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  139. package/docs/api/module-lib_errors-ValidationError.html +3 -0
  140. package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
  141. package/docs/api/module-lib_errors.ValidationError.html +3 -0
  142. package/docs/api/module-lib_errors.html +3 -0
  143. package/docs/api/module-lib_federation-methods.html +3 -0
  144. package/docs/api/module-lib_index.html +3 -0
  145. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  146. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  147. package/docs/api/module-schema_validator.html +3 -0
  148. package/docs/api/module-spatial_h3-operations.html +4 -0
  149. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  150. package/docs/api/module-storage_backend-factory.html +3 -0
  151. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  152. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  153. package/docs/api/module-storage_backend-interface.html +3 -0
  154. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  155. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  156. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  157. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  158. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  159. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  160. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  161. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  162. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  163. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  164. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  165. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  166. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  167. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  168. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  169. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  170. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  171. package/docs/api/module-storage_filesystem-storage.html +3 -0
  172. package/docs/api/module-storage_global-tables.html +3 -0
  173. package/docs/api/module-storage_gun-async.html +3 -0
  174. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  175. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  176. package/docs/api/module-storage_gun-auth.html +3 -0
  177. package/docs/api/module-storage_gun-federation.html +3 -0
  178. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  179. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  180. package/docs/api/module-storage_gun-references.html +3 -0
  181. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  182. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  183. package/docs/api/module-storage_gun-schema.html +3 -0
  184. package/docs/api/module-storage_gun-wrapper.html +11 -0
  185. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  186. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  187. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  188. package/docs/api/module-storage_key-storage-simple.html +3 -0
  189. package/docs/api/module-storage_key-storage.html +4 -0
  190. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  191. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  192. package/docs/api/module-storage_memory-storage.html +3 -0
  193. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  194. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  195. package/docs/api/module-storage_migration.html +3 -0
  196. package/docs/api/module-storage_nostr-async.html +18 -0
  197. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  198. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  199. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  200. package/docs/api/module-storage_nostr-client.html +6 -0
  201. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  202. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  203. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  204. package/docs/api/module-storage_outbox-queue.html +3 -0
  205. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  206. package/docs/api/module-storage_persistent-storage.html +4 -0
  207. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  208. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  209. package/docs/api/module-storage_sync-service.html +3 -0
  210. package/docs/api/module-storage_unified-storage.html +3 -0
  211. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  212. package/docs/api/module-subscriptions_manager.html +3 -0
  213. package/docs/api/schema_validator.js.html +113 -0
  214. package/docs/api/scripts/core.js +726 -0
  215. package/docs/api/scripts/core.min.js +23 -0
  216. package/docs/api/scripts/resize.js +90 -0
  217. package/docs/api/scripts/search.js +265 -0
  218. package/docs/api/scripts/search.min.js +6 -0
  219. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  220. package/docs/api/scripts/third-party/fuse.js +9 -0
  221. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  222. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  223. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  224. package/docs/api/scripts/third-party/hljs.js +1 -0
  225. package/docs/api/scripts/third-party/popper.js +5 -0
  226. package/docs/api/scripts/third-party/tippy.js +1 -0
  227. package/docs/api/scripts/third-party/tocbot.js +672 -0
  228. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  229. package/docs/api/spatial_h3-operations.js.html +129 -0
  230. package/docs/api/storage_backend-factory.js.html +133 -0
  231. package/docs/api/storage_backend-interface.js.html +164 -0
  232. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  233. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  234. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  235. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  236. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  237. package/docs/api/storage_filesystem-storage.js.html +207 -0
  238. package/docs/api/storage_global-tables.js.html +116 -0
  239. package/docs/api/storage_gun-async.js.html +344 -0
  240. package/docs/api/storage_gun-auth.js.html +376 -0
  241. package/docs/api/storage_gun-federation.js.html +788 -0
  242. package/docs/api/storage_gun-references.js.html +212 -0
  243. package/docs/api/storage_gun-schema.js.html +309 -0
  244. package/docs/api/storage_gun-wrapper.js.html +645 -0
  245. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  246. package/docs/api/storage_key-storage-simple.js.html +102 -0
  247. package/docs/api/storage_key-storage.js.html +171 -0
  248. package/docs/api/storage_memory-storage.js.html +128 -0
  249. package/docs/api/storage_migration.js.html +354 -0
  250. package/docs/api/storage_nostr-async.js.html +1076 -0
  251. package/docs/api/storage_nostr-client.js.html +1598 -0
  252. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  253. package/docs/api/storage_outbox-queue.js.html +248 -0
  254. package/docs/api/storage_persistent-storage.js.html +160 -0
  255. package/docs/api/storage_sync-service.js.html +201 -0
  256. package/docs/api/storage_unified-storage.js.html +157 -0
  257. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  258. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  259. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  260. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  261. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  262. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  263. package/docs/api/subscriptions_manager.js.html +162 -0
  264. package/docs/contracts/api-interface.md +793 -0
  265. package/docs/data-model.md +476 -0
  266. package/docs/gun-async-usage.md +338 -0
  267. package/docs/plan.md +349 -0
  268. package/docs/quickstart.md +674 -0
  269. package/docs/research.md +362 -0
  270. package/docs/spec.md +244 -0
  271. package/docs/storage-backends.md +326 -0
  272. package/docs/tasks.md +947 -0
  273. package/examples/demo.html +47 -0
  274. package/examples/holosphere-widget.js +1242 -0
  275. package/examples/widget-demo.html +274 -0
  276. package/examples/widget.html +703 -0
  277. package/jsdoc.json +26 -0
  278. package/package.json +25 -7
  279. package/src/ai/aggregation.js +13 -2
  280. package/src/ai/breakdown.js +12 -2
  281. package/src/ai/classifier.js +14 -3
  282. package/src/ai/council.js +22 -7
  283. package/src/ai/embeddings.js +37 -15
  284. package/src/ai/federation-ai.js +13 -2
  285. package/src/ai/h3-ai.js +14 -2
  286. package/src/ai/index.js +16 -7
  287. package/src/ai/json-ops.js +18 -5
  288. package/src/ai/llm-service.js +62 -31
  289. package/src/ai/nl-query.js +12 -2
  290. package/src/ai/relationships.js +13 -2
  291. package/src/ai/schema-extractor.js +24 -10
  292. package/src/ai/spatial.js +13 -2
  293. package/src/ai/tts.js +25 -8
  294. package/src/cdn-entry.js +22 -0
  295. package/src/content/social-protocols.js +34 -25
  296. package/src/contracts/abis/Appreciative.json +1280 -0
  297. package/src/contracts/abis/AppreciativeFactory.json +101 -0
  298. package/src/contracts/abis/Bundle.json +1438 -0
  299. package/src/contracts/abis/BundleFactory.json +106 -0
  300. package/src/contracts/abis/Holon.json +881 -0
  301. package/src/contracts/abis/Holons.json +330 -0
  302. package/src/contracts/abis/Managed.json +1262 -0
  303. package/src/contracts/abis/ManagedFactory.json +149 -0
  304. package/src/contracts/abis/Membrane.json +261 -0
  305. package/src/contracts/abis/Splitter.json +1624 -0
  306. package/src/contracts/abis/SplitterFactory.json +220 -0
  307. package/src/contracts/abis/TestToken.json +321 -0
  308. package/src/contracts/abis/Zoned.json +1461 -0
  309. package/src/contracts/abis/ZonedFactory.json +154 -0
  310. package/src/contracts/chain-manager.js +403 -0
  311. package/src/contracts/deployer.js +500 -0
  312. package/src/contracts/event-listener.js +539 -0
  313. package/src/contracts/holon-contracts.js +359 -0
  314. package/src/contracts/index.js +82 -0
  315. package/src/contracts/networks.js +229 -0
  316. package/src/contracts/operations.js +687 -0
  317. package/src/contracts/queries.js +638 -0
  318. package/src/core/holosphere.js +487 -6
  319. package/src/crypto/nostr-utils.js +303 -0
  320. package/src/crypto/secp256k1.js +7 -2
  321. package/src/federation/handshake.js +475 -0
  322. package/src/federation/hologram.js +117 -3
  323. package/src/hierarchical/upcast.js +40 -25
  324. package/src/index.js +1501 -1909
  325. package/src/lib/ai-methods.js +657 -0
  326. package/src/lib/contract-methods.js +442 -0
  327. package/src/lib/errors.js +53 -0
  328. package/src/lib/federation-methods.js +345 -0
  329. package/src/lib/index.js +30 -0
  330. package/src/schema/validator.js +22 -3
  331. package/src/spatial/h3-operations.js +19 -3
  332. package/src/storage/backend-factory.js +7 -2
  333. package/src/storage/backend-interface.js +21 -2
  334. package/src/storage/backends/activitypub/server.js +25 -3
  335. package/src/storage/backends/activitypub-backend.js +25 -2
  336. package/src/storage/backends/gundb-backend.js +692 -50
  337. package/src/storage/backends/nostr-backend.js +116 -1
  338. package/src/storage/filesystem-storage-browser.js +42 -2
  339. package/src/storage/filesystem-storage.js +72 -5
  340. package/src/storage/global-tables.js +35 -3
  341. package/src/storage/gun-async.js +75 -15
  342. package/src/storage/gun-auth.js +373 -0
  343. package/src/storage/gun-federation.js +785 -0
  344. package/src/storage/gun-references.js +209 -0
  345. package/src/storage/gun-schema.js +306 -0
  346. package/src/storage/gun-wrapper.js +475 -54
  347. package/src/storage/indexeddb-storage.js +112 -13
  348. package/src/storage/key-storage-simple.js +32 -9
  349. package/src/storage/key-storage.js +45 -13
  350. package/src/storage/memory-storage.js +68 -2
  351. package/src/storage/migration.js +20 -7
  352. package/src/storage/nostr-async.js +412 -122
  353. package/src/storage/nostr-client.js +749 -76
  354. package/src/storage/nostr-wrapper.js +6 -2
  355. package/src/storage/outbox-queue.js +55 -18
  356. package/src/storage/persistent-storage.js +62 -14
  357. package/src/storage/sync-service.js +51 -17
  358. package/src/storage/unified-storage.js +154 -0
  359. package/src/subscriptions/manager.js +34 -17
  360. package/types/index.d.ts +133 -0
  361. package/vite.config.cdn.js +60 -0
  362. package/tests/unit/ai/aggregation.test.js +0 -295
  363. package/tests/unit/ai/breakdown.test.js +0 -446
  364. package/tests/unit/ai/classifier.test.js +0 -294
  365. package/tests/unit/ai/council.test.js +0 -262
  366. package/tests/unit/ai/embeddings.test.js +0 -384
  367. package/tests/unit/ai/federation-ai.test.js +0 -344
  368. package/tests/unit/ai/h3-ai.test.js +0 -458
  369. package/tests/unit/ai/index.test.js +0 -304
  370. package/tests/unit/ai/json-ops.test.js +0 -307
  371. package/tests/unit/ai/llm-service.test.js +0 -390
  372. package/tests/unit/ai/nl-query.test.js +0 -383
  373. package/tests/unit/ai/relationships.test.js +0 -311
  374. package/tests/unit/ai/schema-extractor.test.js +0 -384
  375. package/tests/unit/ai/spatial.test.js +0 -279
  376. package/tests/unit/ai/tts.test.js +0 -279
  377. package/tests/unit/content.test.js +0 -332
  378. package/tests/unit/contract/core.test.js +0 -88
  379. package/tests/unit/contract/crypto.test.js +0 -198
  380. package/tests/unit/contract/data.test.js +0 -223
  381. package/tests/unit/contract/federation.test.js +0 -181
  382. package/tests/unit/contract/hierarchical.test.js +0 -113
  383. package/tests/unit/contract/schema.test.js +0 -114
  384. package/tests/unit/contract/social.test.js +0 -217
  385. package/tests/unit/contract/spatial.test.js +0 -110
  386. package/tests/unit/contract/subscriptions.test.js +0 -128
  387. package/tests/unit/contract/utils.test.js +0 -159
  388. package/tests/unit/core.test.js +0 -152
  389. package/tests/unit/crypto.test.js +0 -328
  390. package/tests/unit/federation.test.js +0 -234
  391. package/tests/unit/gun-async.test.js +0 -252
  392. package/tests/unit/hierarchical.test.js +0 -399
  393. package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
  394. package/tests/unit/integration/scenario-02-federation.test.js +0 -76
  395. package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
  396. package/tests/unit/integration/scenario-04-validation.test.js +0 -129
  397. package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
  398. package/tests/unit/integration/scenario-06-social.test.js +0 -135
  399. package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
  400. package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
  401. package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
  402. package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
  403. package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
  404. package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
  405. package/tests/unit/performance/benchmark.test.js +0 -85
  406. package/tests/unit/schema.test.js +0 -213
  407. package/tests/unit/spatial.test.js +0 -158
  408. package/tests/unit/storage.test.js +0 -195
  409. package/tests/unit/subscriptions.test.js +0 -328
  410. package/tests/unit/test-data-permanence-debug.js +0 -197
  411. package/tests/unit/test-data-permanence.js +0 -340
  412. package/tests/unit/test-key-persistence-fixed.js +0 -148
  413. package/tests/unit/test-key-persistence.js +0 -172
  414. package/tests/unit/test-relay-permanence.js +0 -376
  415. package/tests/unit/test-second-node.js +0 -95
  416. package/tests/unit/test-simple-write.js +0 -89
  417. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  418. /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
@@ -0,0 +1,797 @@
1
+ # Holosphere Smart Contracts Integration
2
+
3
+ This guide covers the smart contracts module in Holosphere, enabling fractal fund distribution where every holon can become a recipient of ETH/ERC20 tokens.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [Overview](#overview)
8
+ 2. [Quick Start](#quick-start)
9
+ 3. [Contract Types](#contract-types)
10
+ 4. [1-Click Deployment](#1-click-deployment)
11
+ 5. [Per-Holon Contracts](#per-holon-contracts)
12
+ 6. [All Contract Operations](#all-contract-operations)
13
+ 7. [Multi-Chain Support](#multi-chain-support)
14
+ 8. [Examples](#examples)
15
+
16
+ ---
17
+
18
+ ## Overview
19
+
20
+ The contracts module integrates a hierarchical fund distribution system into Holosphere:
21
+
22
+ ```
23
+ ┌─────────────────────┐
24
+ │ Funds Received │
25
+ │ (ETH or ERC20) │
26
+ └──────────┬──────────┘
27
+
28
+ ┌──────────▼──────────┐
29
+ │ Splitter │
30
+ │ (70% / 30% split) │
31
+ └──────────┬──────────┘
32
+
33
+ ┌────────────────┴────────────────┐
34
+ │ │
35
+ ┌─────────▼─────────┐ ┌─────────▼─────────┐
36
+ │ Managed │ │ Zoned │
37
+ │ (Appreciation) │ │ (Tier-based) │
38
+ └─────────┬─────────┘ └─────────┬─────────┘
39
+ │ │
40
+ ┌─────────┴─────────┐ ┌─────────┴─────────┐
41
+ │ │ │ │
42
+ Alice(60%) Bob(40%) Zone3(high) Zone1(low)
43
+ ```
44
+
45
+ ### Key Concepts
46
+
47
+ - **Fractal Ownership**: Each holon can have its own smart contract
48
+ - **String-based User IDs**: Members identified by strings (e.g., 'alice', 'telegram_12345')
49
+ - **Accumulated Rewards**: Funds stored until claimed (users pay claim gas)
50
+ - **Multiple Distribution Models**: Splitter, Managed, Zoned, Appreciative, Bundle
51
+
52
+ ---
53
+
54
+ ## Quick Start
55
+
56
+ ### Initialize Contracts
57
+
58
+ ```javascript
59
+ import HoloSphere from 'holosphere';
60
+
61
+ const hs = new HoloSphere({ appName: 'myapp' });
62
+
63
+ // Connect to network with private key
64
+ await hs.initContracts({
65
+ network: 'sepolia', // or 'polygon', 'base', etc.
66
+ privateKey: process.env.PRIVATE_KEY
67
+ });
68
+
69
+ // Or connect with browser wallet (MetaMask)
70
+ await hs.initContractsBrowser('polygon');
71
+ ```
72
+
73
+ ### Deploy Everything (1-Click)
74
+
75
+ ```javascript
76
+ const deployment = await hs.deployContracts({
77
+ testTokenSupply: '1000000' // Optional: deploy test ERC20
78
+ });
79
+
80
+ console.log(deployment);
81
+ // {
82
+ // network: 'sepolia',
83
+ // chainId: 11155111,
84
+ // contracts: {
85
+ // holons: '0x...', // Main registry
86
+ // managedFactory: '0x...',
87
+ // zonedFactory: '0x...',
88
+ // splitterFactory: '0x...',
89
+ // appreciativeFactory: '0x...',
90
+ // bundleFactory: '0x...',
91
+ // testToken: '0x...'
92
+ // }
93
+ // }
94
+ ```
95
+
96
+ ### Create Holon with Contract
97
+
98
+ ```javascript
99
+ // Deploy contract for a holon
100
+ await hs.deployHolonContract('my_organization', 'Splitter', {
101
+ name: 'MyOrg',
102
+ splitPercentage: 70 // 70% internal, 30% external
103
+ });
104
+
105
+ // Add members
106
+ await hs.contractAddMembers('my_organization', ['alice', 'bob', 'charlie']);
107
+
108
+ // Send funds (they're distributed automatically!)
109
+ await hs.contractSendEth('my_organization', '1.0');
110
+
111
+ // Members claim their rewards
112
+ await hs.contractClaim('my_organization', 'alice', '0xAliceWallet...');
113
+ ```
114
+
115
+ ---
116
+
117
+ ## Contract Types
118
+
119
+ ### 1. Splitter
120
+
121
+ **Purpose**: Split incoming funds between internal and external distribution
122
+
123
+ **Use Case**: Organizations with core team + external contributors
124
+
125
+ ```javascript
126
+ await hs.deployHolonContract('org', 'Splitter', { splitPercentage: 70 });
127
+
128
+ // Set split: 70% to internal (Managed), 30% to external (Zoned)
129
+ await hs.contractSetSplit('org', 70, 30);
130
+
131
+ // Create child contracts automatically
132
+ // Splitter creates: org_managed and org_zoned
133
+ ```
134
+
135
+ **How Rewards Flow**:
136
+ 1. Funds sent to Splitter
137
+ 2. 70% forwarded to Managed contract
138
+ 3. 30% forwarded to Zoned contract
139
+ 4. Each child distributes to its members
140
+
141
+ ### 2. Managed (Appreciation-Based)
142
+
143
+ **Purpose**: Distribute funds based on admin-set appreciation weights
144
+
145
+ **Use Case**: Core teams where leadership decides contribution weights
146
+
147
+ ```javascript
148
+ await hs.deployHolonContract('team', 'Managed');
149
+
150
+ // Add members
151
+ await hs.contractAddMembers('team', ['alice', 'bob', 'charlie']);
152
+
153
+ // Set appreciation weights (determines reward %)
154
+ await hs.contractSetAppreciation('team',
155
+ ['alice', 'bob', 'charlie'],
156
+ [300, 200, 100] // Alice:50%, Bob:33%, Charlie:17%
157
+ );
158
+
159
+ // When 1 ETH is received:
160
+ // - Alice gets 0.5 ETH
161
+ // - Bob gets 0.33 ETH
162
+ // - Charlie gets 0.17 ETH
163
+ ```
164
+
165
+ **Key Points**:
166
+ - Only owner/bot can set appreciation
167
+ - Appreciation is relative (300:200:100 = 3:2:1 ratio)
168
+ - If no appreciation set, rewards split equally
169
+
170
+ ### 3. Zoned (Tier-Based)
171
+
172
+ **Purpose**: Distribute funds based on contribution zones/tiers
173
+
174
+ **Use Case**: Communities with different contribution levels
175
+
176
+ ```javascript
177
+ await hs.deployHolonContract('community', 'Zoned', { nZones: 5 });
178
+
179
+ // Add members and assign to zones
180
+ await hs.contractAddMember('community', 'alice');
181
+ await hs.contractAddToZone('community', 'admin', 'alice', 4); // High tier
182
+
183
+ await hs.contractAddMember('community', 'bob');
184
+ await hs.contractAddToZone('community', 'admin', 'bob', 2); // Medium tier
185
+
186
+ await hs.contractAddMember('community', 'charlie');
187
+ await hs.contractAddToZone('community', 'admin', 'charlie', 1); // Low tier
188
+ ```
189
+
190
+ **Zone Reward Formula**:
191
+ ```
192
+ reward_units = a × zone² + b × zone + c
193
+ ```
194
+
195
+ Default: `a=0, b=0, c=1` (equal distribution)
196
+ Quadratic: `a=1, b=1, c=0` (higher zones get exponentially more)
197
+
198
+ ```javascript
199
+ // Set quadratic rewards (zone 4 gets much more than zone 1)
200
+ await hs.contractSetZoneParams('community', 'admin', 1, 1, 0);
201
+ ```
202
+
203
+ ### 4. Appreciative (Peer-to-Peer)
204
+
205
+ **Purpose**: Members give appreciation to each other; rewards based on received appreciation
206
+
207
+ **Use Case**: DAOs, cooperatives, peer-evaluated teams
208
+
209
+ ```javascript
210
+ await hs.deployHolonContract('dao', 'Appreciative');
211
+
212
+ await hs.contractAddMembers('dao', ['alice', 'bob', 'charlie']);
213
+
214
+ // Each member has 100 points to give
215
+ // Alice appreciates Bob's work
216
+ await hs.contractAppreciate('dao', 'alice', 'bob', 30);
217
+
218
+ // Bob appreciates Charlie
219
+ await hs.contractAppreciate('dao', 'bob', 'charlie', 50);
220
+
221
+ // Charlie appreciates Alice
222
+ await hs.contractAppreciate('dao', 'charlie', 'alice', 25);
223
+
224
+ // Check appreciation stats
225
+ const received = await hs.contractGetAppreciationReceived('dao', 'bob'); // 30
226
+ const given = await hs.contractGetAppreciationGiven('dao', 'alice'); // 30
227
+ const remaining = await hs.contractGetAppreciationRemaining('dao', 'alice'); // 70
228
+ ```
229
+
230
+ ### 5. Bundle (2-Way Split with Governance)
231
+
232
+ **Purpose**: Advanced splitting with interior/exterior + election mechanism
233
+
234
+ **Use Case**: Complex organizations needing governance rotation
235
+
236
+ ```javascript
237
+ await hs.deployHolonContract('project', 'Bundle', {
238
+ steepness: '0.5', // 50% decay per zone
239
+ nZones: 6
240
+ });
241
+
242
+ // Interior split (explicit percentages)
243
+ await hs.contractSetInteriorSplit('project',
244
+ ['founder', 'cto'],
245
+ [60, 40]
246
+ );
247
+
248
+ // Exterior uses zone-based with steepness decay
249
+ await hs.contractSetSteepness('project', '0.7'); // 70% decay
250
+
251
+ // Governance: Run election for new owner
252
+ await hs.contractStartElection('project');
253
+ await hs.contractNominate('project'); // Caller nominates self
254
+ await hs.contractVote('project', '0xNomineeAddress');
255
+ await hs.contractFinalizeElection('project');
256
+ ```
257
+
258
+ ---
259
+
260
+ ## 1-Click Deployment
261
+
262
+ Deploy the entire contract infrastructure with a single call:
263
+
264
+ ```javascript
265
+ const deployment = await hs.deployContracts({
266
+ // Optional: bot address for member management (defaults to deployer)
267
+ botAddress: '0xBotAddress',
268
+
269
+ // Optional: deploy test ERC20 token
270
+ deployTestToken: true,
271
+ testTokenSupply: '1000000',
272
+
273
+ // Optional: progress callback
274
+ onProgress: ({ step, total, message, done, address }) => {
275
+ console.log(`[${step}/${total}] ${message}`);
276
+ if (done) console.log(` -> ${address}`);
277
+ }
278
+ });
279
+ ```
280
+
281
+ **What Gets Deployed**:
282
+ 1. `ManagedFactory` - Creates Managed contracts
283
+ 2. `ZonedFactory` - Creates Zoned contracts
284
+ 3. `SplitterFactory` - Creates Splitter contracts
285
+ 4. `AppreciativeFactory` - Creates Appreciative contracts
286
+ 5. `BundleFactory` - Creates Bundle contracts
287
+ 6. `Holons` - Central registry
288
+ 7. `TestToken` (optional) - ERC20 for testing
289
+
290
+ **Save Addresses for Later**:
291
+ ```javascript
292
+ // Save deployment
293
+ localStorage.setItem('deployment', JSON.stringify(deployment.contracts));
294
+
295
+ // Load later
296
+ const saved = JSON.parse(localStorage.getItem('deployment'));
297
+ hs.loadDeployedContracts(saved);
298
+ ```
299
+
300
+ ---
301
+
302
+ ## Per-Holon Contracts
303
+
304
+ Each holon can have its own smart contract (1:1 fractal mapping):
305
+
306
+ ### Deploy Contract for Holon
307
+
308
+ ```javascript
309
+ // Deploy new contract
310
+ const result = await hs.deployHolonContract(holonId, type, options);
311
+
312
+ // Types: 'Splitter', 'Managed', 'Zoned', 'Appreciative', 'Bundle'
313
+
314
+ // Examples:
315
+ await hs.deployHolonContract('team_alpha', 'Managed');
316
+ await hs.deployHolonContract('community', 'Zoned', { nZones: 6 });
317
+ await hs.deployHolonContract('dao', 'Appreciative');
318
+ await hs.deployHolonContract('org', 'Splitter', { splitPercentage: 70 });
319
+ await hs.deployHolonContract('project', 'Bundle', { steepness: '0.5' });
320
+ ```
321
+
322
+ ### Link Existing Contract
323
+
324
+ ```javascript
325
+ // Link holon to existing contract
326
+ await hs.linkHolonContract('my_holon', '0xExistingContract', 'Splitter');
327
+
328
+ // Check if linked
329
+ const hasContract = hs.hasHolonContract('my_holon'); // true
330
+
331
+ // Get address
332
+ const address = hs.getHolonContractAddress('my_holon');
333
+ ```
334
+
335
+ ### Unlink Contract
336
+
337
+ ```javascript
338
+ await hs.unlinkHolonContract('my_holon');
339
+ ```
340
+
341
+ ### List All Mappings
342
+
343
+ ```javascript
344
+ const mappings = hs.listHolonContracts();
345
+ // [
346
+ // { holonId: 'team_alpha', address: '0x...', type: 'Managed' },
347
+ // { holonId: 'community', address: '0x...', type: 'Zoned' }
348
+ // ]
349
+ ```
350
+
351
+ ---
352
+
353
+ ## All Contract Operations
354
+
355
+ ### Member Management
356
+
357
+ ```javascript
358
+ // Add single member
359
+ await hs.contractAddMember(holonId, 'alice');
360
+
361
+ // Add multiple members
362
+ await hs.contractAddMembers(holonId, ['alice', 'bob', 'charlie']);
363
+
364
+ // Check membership
365
+ const isMember = await hs.contractIsMember(holonId, 'alice'); // true
366
+ ```
367
+
368
+ ### Fund Distribution
369
+
370
+ ```javascript
371
+ // Send ETH (triggers distribution)
372
+ await hs.contractSendEth(holonId, '1.0'); // 1 ETH
373
+
374
+ // Trigger ERC20 reward distribution
375
+ await hs.contractReward(holonId, tokenAddress, amount);
376
+
377
+ // Check balances
378
+ const ethBalance = await hs.contractGetEthBalance(holonId, 'alice');
379
+ const tokenBalance = await hs.contractGetTokenBalance(holonId, 'alice', tokenAddress);
380
+
381
+ // Claim rewards
382
+ await hs.contractClaim(holonId, 'alice', '0xAliceWallet');
383
+ ```
384
+
385
+ ### Splitter Operations
386
+
387
+ ```javascript
388
+ // Set split percentages
389
+ await hs.contractSetSplit(holonId, 70, 30); // 70% internal, 30% external
390
+
391
+ // Get current split
392
+ const { internal, external } = await hs.contractGetSplit(holonId);
393
+
394
+ // Create child contracts
395
+ await hs.contractCreateManaged(holonId, 'creator', 'ChildName');
396
+ await hs.contractCreateZoned(holonId, 'creator', 'ChildName', 6);
397
+
398
+ // List children
399
+ const { keys, addresses } = await hs.contractGetChildContracts(holonId);
400
+ ```
401
+
402
+ ### Managed Operations
403
+
404
+ ```javascript
405
+ // Set appreciation weights
406
+ await hs.contractSetAppreciation(holonId,
407
+ ['alice', 'bob'],
408
+ [300, 200] // Alice: 60%, Bob: 40%
409
+ );
410
+
411
+ // Get appreciation
412
+ const appreciation = await hs.contractGetAppreciation(holonId, 'alice');
413
+ const total = await hs.contractGetTotalAppreciation(holonId);
414
+ ```
415
+
416
+ ### Zoned Operations
417
+
418
+ ```javascript
419
+ // Add to zone
420
+ await hs.contractAddToZone(holonId, 'admin', 'alice', 3);
421
+
422
+ // Remove from zone
423
+ await hs.contractRemoveFromZone(holonId, 'admin', 'alice');
424
+
425
+ // Get zone
426
+ const zone = await hs.contractGetZone(holonId, 'alice');
427
+
428
+ // Set reward formula: reward = a*zone² + b*zone + c
429
+ await hs.contractSetZoneParams(holonId, 'admin', 1, 1, 0);
430
+ ```
431
+
432
+ ### Appreciative Operations
433
+
434
+ ```javascript
435
+ // Give appreciation
436
+ await hs.contractAppreciate(holonId, 'alice', 'bob', 25);
437
+
438
+ // Check stats
439
+ const given = await hs.contractGetAppreciationGiven(holonId, 'alice');
440
+ const received = await hs.contractGetAppreciationReceived(holonId, 'bob');
441
+ ```
442
+
443
+ ### Bundle Operations
444
+
445
+ ```javascript
446
+ // Set steepness (0.5 = 50% decay per zone)
447
+ await hs.contractSetSteepness(holonId, '0.5');
448
+ const steepness = await hs.contractGetSteepness(holonId);
449
+
450
+ // Set interior split
451
+ await hs.contractSetInteriorSplit(holonId, ['a', 'b'], [60, 40]);
452
+
453
+ // Governance
454
+ await hs.contractStartElection(holonId);
455
+ await hs.contractNominate(holonId);
456
+ await hs.contractVote(holonId, nomineeAddress);
457
+ await hs.contractFinalizeElection(holonId);
458
+ ```
459
+
460
+ ### Read-Only Queries
461
+
462
+ ```javascript
463
+ const name = await hs.contractGetName(holonId);
464
+ const owner = await hs.contractGetOwner(holonId);
465
+ const bot = await hs.contractGetBotAddress(holonId);
466
+ const total = await hs.contractGetTotalDeposited(holonId, tokenAddress);
467
+ ```
468
+
469
+ ---
470
+
471
+ ## Multi-Chain Support
472
+
473
+ ### Supported Networks
474
+
475
+ | Network | Chain ID | Type | Usage |
476
+ |---------|----------|------|-------|
477
+ | `ethereum` | 1 | Mainnet | Production |
478
+ | `polygon` | 137 | Mainnet | Low fees |
479
+ | `arbitrum` | 42161 | Mainnet | L2 |
480
+ | `base` | 8453 | Mainnet | L2 |
481
+ | `optimism` | 10 | Mainnet | L2 |
482
+ | `sepolia` | 11155111 | Testnet | Testing |
483
+ | `mumbai` | 80001 | Testnet | Testing |
484
+ | `hardhat` | 31337 | Local | Development |
485
+ | `anvil` | 31337 | Local | Development |
486
+
487
+ ### Connect to Different Networks
488
+
489
+ ```javascript
490
+ // Testnet (recommended for testing)
491
+ await hs.initContracts({
492
+ network: 'sepolia',
493
+ privateKey: process.env.PRIVATE_KEY
494
+ });
495
+
496
+ // Polygon (low fees)
497
+ await hs.initContracts({
498
+ network: 'polygon',
499
+ privateKey: process.env.PRIVATE_KEY
500
+ });
501
+
502
+ // Custom RPC
503
+ await hs.initContracts({
504
+ network: 'ethereum',
505
+ privateKey: process.env.PRIVATE_KEY,
506
+ rpcUrl: 'https://my-custom-rpc.com'
507
+ });
508
+
509
+ // Local development
510
+ await hs.initContracts({
511
+ network: 'hardhat',
512
+ privateKey: '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
513
+ });
514
+ ```
515
+
516
+ ### Network Utilities
517
+
518
+ ```javascript
519
+ import {
520
+ NETWORKS,
521
+ getNetwork,
522
+ getTxUrl,
523
+ getAddressUrl,
524
+ isNetworkSupported
525
+ } from 'holosphere';
526
+
527
+ // Get network config
528
+ const config = getNetwork('polygon');
529
+ // { name: 'Polygon Mainnet', chainId: 137, rpc: '...', ... }
530
+
531
+ // Get explorer URLs
532
+ const txUrl = getTxUrl('ethereum', '0xTxHash...');
533
+ // https://etherscan.io/tx/0xTxHash...
534
+
535
+ const addrUrl = getAddressUrl('polygon', '0xAddress...');
536
+ // https://polygonscan.com/address/0xAddress...
537
+
538
+ // Check support
539
+ isNetworkSupported('polygon'); // true
540
+ isNetworkSupported('solana'); // false
541
+ ```
542
+
543
+ ---
544
+
545
+ ## Examples
546
+
547
+ ### Example 1: Simple Team Distribution
548
+
549
+ ```javascript
550
+ import HoloSphere from 'holosphere';
551
+
552
+ async function setupTeam() {
553
+ const hs = new HoloSphere({ appName: 'myteam' });
554
+
555
+ // Connect to Sepolia testnet
556
+ await hs.initContracts({
557
+ network: 'sepolia',
558
+ privateKey: process.env.PRIVATE_KEY
559
+ });
560
+
561
+ // Deploy infrastructure
562
+ await hs.deployContracts();
563
+
564
+ // Create team contract
565
+ await hs.deployHolonContract('dev_team', 'Managed');
566
+
567
+ // Add team members
568
+ await hs.contractAddMembers('dev_team', ['alice', 'bob', 'charlie']);
569
+
570
+ // Set contributions (alice: 50%, bob: 30%, charlie: 20%)
571
+ await hs.contractSetAppreciation('dev_team',
572
+ ['alice', 'bob', 'charlie'],
573
+ [500, 300, 200]
574
+ );
575
+
576
+ // When client pays 1 ETH...
577
+ await hs.contractSendEth('dev_team', '1.0');
578
+
579
+ // Check balances
580
+ const aliceBalance = await hs.contractGetEthBalance('dev_team', 'alice');
581
+ console.log(`Alice can claim: ${aliceBalance} ETH`); // ~0.5 ETH
582
+
583
+ // Alice claims her rewards
584
+ await hs.contractClaim('dev_team', 'alice', '0xAliceWallet');
585
+ }
586
+ ```
587
+
588
+ ### Example 2: Organization with Departments
589
+
590
+ ```javascript
591
+ async function setupOrganization() {
592
+ const hs = new HoloSphere({ appName: 'myorg' });
593
+ await hs.initContracts({ network: 'polygon', privateKey: KEY });
594
+ await hs.deployContracts();
595
+
596
+ // Main organization (Splitter)
597
+ await hs.deployHolonContract('organization', 'Splitter', {
598
+ name: 'Acme Corp',
599
+ splitPercentage: 60 // 60% internal, 40% external
600
+ });
601
+
602
+ // Get child contract addresses
603
+ const children = await hs.contractGetChildContracts('organization');
604
+ console.log('Managed:', children.addresses[0]);
605
+ console.log('Zoned:', children.addresses[1]);
606
+
607
+ // Now funds sent to organization automatically split:
608
+ // - 60% -> Managed (for core team)
609
+ // - 40% -> Zoned (for contributors)
610
+
611
+ // Configure the Managed child for core team
612
+ const managedHolon = 'organization_managed';
613
+ await hs.linkHolonContract(managedHolon, children.addresses[0], 'Managed');
614
+ await hs.contractAddMembers(managedHolon, ['ceo', 'cto', 'cfo']);
615
+ await hs.contractSetAppreciation(managedHolon,
616
+ ['ceo', 'cto', 'cfo'],
617
+ [400, 350, 250]
618
+ );
619
+
620
+ // Configure the Zoned child for contributors
621
+ const zonedHolon = 'organization_zoned';
622
+ await hs.linkHolonContract(zonedHolon, children.addresses[1], 'Zoned');
623
+ await hs.contractAddMembers(zonedHolon, ['dev1', 'dev2', 'designer']);
624
+ await hs.contractAddToZone(zonedHolon, 'admin', 'dev1', 3);
625
+ await hs.contractAddToZone(zonedHolon, 'admin', 'dev2', 2);
626
+ await hs.contractAddToZone(zonedHolon, 'admin', 'designer', 2);
627
+ }
628
+ ```
629
+
630
+ ### Example 3: DAO with Peer Appreciation
631
+
632
+ ```javascript
633
+ async function setupDAO() {
634
+ const hs = new HoloSphere({ appName: 'mydao' });
635
+ await hs.initContracts({ network: 'base', privateKey: KEY });
636
+ await hs.deployContracts();
637
+
638
+ // Create DAO with peer appreciation
639
+ await hs.deployHolonContract('dao', 'Appreciative');
640
+
641
+ // Add members
642
+ const members = ['alice', 'bob', 'charlie', 'david'];
643
+ await hs.contractAddMembers('dao', members);
644
+
645
+ // Members appreciate each other's contributions
646
+ // (Each has 100 points to distribute)
647
+
648
+ // Alice appreciates Bob and Charlie
649
+ await hs.contractAppreciate('dao', 'alice', 'bob', 40);
650
+ await hs.contractAppreciate('dao', 'alice', 'charlie', 30);
651
+
652
+ // Bob appreciates Alice and David
653
+ await hs.contractAppreciate('dao', 'bob', 'alice', 50);
654
+ await hs.contractAppreciate('dao', 'bob', 'david', 25);
655
+
656
+ // Check how much appreciation everyone received
657
+ for (const member of members) {
658
+ const received = await hs.contractGetAppreciationReceived('dao', member);
659
+ console.log(`${member} received ${received} appreciation`);
660
+ }
661
+
662
+ // Rewards distributed based on appreciation received!
663
+ }
664
+ ```
665
+
666
+ ### Example 4: Browser Integration (MetaMask)
667
+
668
+ ```javascript
669
+ async function connectWallet() {
670
+ const hs = new HoloSphere({ appName: 'dapp' });
671
+
672
+ // Connect with MetaMask
673
+ const { address, network } = await hs.initContractsBrowser('polygon');
674
+ console.log(`Connected: ${address} on ${network.name}`);
675
+
676
+ // Load existing deployment
677
+ const saved = localStorage.getItem('deployment');
678
+ if (saved) {
679
+ hs.loadDeployedContracts(JSON.parse(saved));
680
+ }
681
+
682
+ // User can now interact with contracts
683
+ // (MetaMask will prompt for each transaction)
684
+ }
685
+ ```
686
+
687
+ ### Example 5: Progress Tracking for Deployment
688
+
689
+ ```javascript
690
+ async function deployWithProgress() {
691
+ const hs = new HoloSphere({ appName: 'myapp' });
692
+ await hs.initContracts({ network: 'sepolia', privateKey: KEY });
693
+
694
+ const deployment = await hs.deployContracts({
695
+ testTokenSupply: '1000000',
696
+ onProgress: ({ step, total, message, done, address }) => {
697
+ const progress = Math.round((step / total) * 100);
698
+ console.log(`[${progress}%] ${message}`);
699
+
700
+ if (done && address) {
701
+ console.log(` Contract deployed at: ${address}`);
702
+ }
703
+ }
704
+ });
705
+
706
+ // Output:
707
+ // [12%] Deploying ManagedFactory...
708
+ // Contract deployed at: 0x...
709
+ // [25%] Deploying ZonedFactory...
710
+ // Contract deployed at: 0x...
711
+ // ...
712
+
713
+ return deployment;
714
+ }
715
+ ```
716
+
717
+ ---
718
+
719
+ ## API Reference
720
+
721
+ ### HoloSphere Contract Methods
722
+
723
+ | Method | Description |
724
+ |--------|-------------|
725
+ | `initContracts(config)` | Initialize with private key |
726
+ | `initContractsBrowser(network?)` | Initialize with browser wallet |
727
+ | `deployContracts(options?)` | 1-click deploy all contracts |
728
+ | `loadDeployedContracts(addresses)` | Load existing deployment |
729
+ | `getDeployedContracts()` | Get deployed addresses |
730
+ | `deployHolonContract(holonId, type, options?)` | Deploy contract for holon |
731
+ | `linkHolonContract(holonId, address, type)` | Link existing contract |
732
+ | `unlinkHolonContract(holonId)` | Remove contract link |
733
+ | `hasHolonContract(holonId)` | Check if holon has contract |
734
+ | `getHolonContractAddress(holonId)` | Get contract address |
735
+ | `listHolonContracts()` | List all holon-contract mappings |
736
+ | `contractAddMember(holonId, userId)` | Add member |
737
+ | `contractAddMembers(holonId, userIds)` | Add multiple members |
738
+ | `contractIsMember(holonId, userId)` | Check membership |
739
+ | `contractSendEth(holonId, amount)` | Send ETH to contract |
740
+ | `contractReward(holonId, token, amount)` | Trigger ERC20 distribution |
741
+ | `contractClaim(holonId, userId, beneficiary)` | Claim rewards |
742
+ | `contractGetEthBalance(holonId, userId)` | Get ETH balance |
743
+ | `contractGetTokenBalance(holonId, userId, token)` | Get token balance |
744
+ | `contractSetSplit(holonId, internal, external)` | Set Splitter percentages |
745
+ | `contractGetSplit(holonId)` | Get Splitter percentages |
746
+ | `contractSetAppreciation(holonId, users, amounts)` | Set Managed weights |
747
+ | `contractGetAppreciation(holonId, userId)` | Get user appreciation |
748
+ | `contractAddToZone(holonId, sender, user, zone)` | Add to Zoned tier |
749
+ | `contractRemoveFromZone(holonId, sender, user)` | Remove from zone |
750
+ | `contractGetZone(holonId, userId)` | Get user's zone |
751
+ | `contractAppreciate(holonId, from, to, amount)` | Give peer appreciation |
752
+ | `contractSetSteepness(holonId, steepness)` | Set Bundle decay |
753
+ | `contractStartElection(holonId)` | Start Bundle election |
754
+ | `contractVote(holonId, nominee)` | Vote in election |
755
+
756
+ ---
757
+
758
+ ## Troubleshooting
759
+
760
+ ### Common Issues
761
+
762
+ **"Contracts not initialized"**
763
+ ```javascript
764
+ // Make sure to call initContracts first
765
+ await hs.initContracts({ network: 'sepolia', privateKey: KEY });
766
+ ```
767
+
768
+ **"Holon has no linked contract"**
769
+ ```javascript
770
+ // Deploy or link a contract first
771
+ await hs.deployHolonContract('myholon', 'Managed');
772
+ // or
773
+ await hs.linkHolonContract('myholon', '0xExisting...', 'Managed');
774
+ ```
775
+
776
+ **"Operation only available for X contracts"**
777
+ ```javascript
778
+ // Make sure you're using the right contract type
779
+ // Splitter: setContractSplit, createManagedContract, etc.
780
+ // Managed: setAppreciation, getAppreciation, etc.
781
+ // Zoned: addToZone, removeFromZone, etc.
782
+ // Appreciative: appreciate, getAppreciationGiven, etc.
783
+ // Bundle: setSteepness, startElection, etc.
784
+ ```
785
+
786
+ **"Insufficient funds"**
787
+ ```javascript
788
+ // Check balance before transactions
789
+ const balance = await hs.getChainManager().getBalance();
790
+ console.log(`Balance: ${balance} ETH`);
791
+ ```
792
+
793
+ ---
794
+
795
+ ## License
796
+
797
+ MIT License - See LICENSE file for details.