holosphere 2.0.0-alpha0 → 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 -42
  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
package/FEATURES.md ADDED
@@ -0,0 +1,431 @@
1
+ # Top 30 Features of HoloSphere
2
+
3
+ HoloSphere is a distributed, local-first geospatial communication system that combines hexagonal spatial indexing with decentralized data storage and AI capabilities.
4
+
5
+ ---
6
+
7
+ ## 1. H3 Hexagonal Spatial Indexing
8
+
9
+ Organize data by geographic location using Uber's H3 hierarchical hexagonal grid system. 16 resolution levels from continental scale (res 0) to sub-meter precision (res 15).
10
+
11
+ ```javascript
12
+ const holon = h3.latLngToCell(lat, lng, resolution);
13
+ await hs.write(holon, 'events', eventData);
14
+ ```
15
+
16
+ ---
17
+
18
+ ## 2. Multi-Backend Storage Architecture
19
+
20
+ Pluggable storage backends supporting three decentralized protocols:
21
+
22
+ | Backend | Protocol | Best For |
23
+ |---------|----------|----------|
24
+ | **Nostr** | NIP-01 events | Censorship-resistant P2P storage |
25
+ | **GunDB** | CRDT + WebRTC | Real-time collaboration |
26
+ | **ActivityPub** | Fediverse | Social federation |
27
+
28
+ ---
29
+
30
+ ## 3. Local-First Architecture
31
+
32
+ Guaranteed delivery with offline support. Data writes to local storage first, then syncs to network when available. Never lose data due to network issues.
33
+
34
+ - Outbox queue for pending operations
35
+ - Automatic retry with exponential backoff
36
+ - Conflict resolution via CRDTs
37
+
38
+ ---
39
+
40
+ ## 4. Hologram Federation
41
+
42
+ Lightweight cross-holon data references that enable data discovery across geographic boundaries without duplicating data.
43
+
44
+ ```javascript
45
+ // Create a hologram (reference) to data in another holon
46
+ await hs.federateHolon(targetHolon, sourceHolon, lens, key);
47
+
48
+ // Reading automatically resolves holograms
49
+ const data = await hs.read(targetHolon, lens, key); // Returns source data
50
+ ```
51
+
52
+ ---
53
+
54
+ ## 5. Capability-Based Authorization
55
+
56
+ Secure cross-HoloSphere authorization using cryptographic tokens:
57
+
58
+ - Time-limited capability tokens with signatures
59
+ - Scope-based permissions (holon, lens, data level)
60
+ - Inbound/outbound capability registry
61
+ - Delegation and revocation support
62
+
63
+ ---
64
+
65
+ ## 6. AI-Powered LLM Service
66
+
67
+ Comprehensive OpenAI integration for intelligent data processing:
68
+
69
+ - Text summarization and analysis
70
+ - Automatic categorization
71
+ - Multi-language translation
72
+ - Sentiment analysis
73
+ - Content moderation
74
+
75
+ ```javascript
76
+ const summary = await hs.ai.summarize(longText);
77
+ const category = await hs.ai.categorize(content, ['news', 'events', 'projects']);
78
+ ```
79
+
80
+ ---
81
+
82
+ ## 7. Vector Embeddings & Semantic Search
83
+
84
+ Generate and search vector embeddings for semantic similarity:
85
+
86
+ ```javascript
87
+ const embedding = await hs.ai.embed('Find renewable energy projects');
88
+ const results = await hs.ai.semanticSearch(query, documents, { topK: 10 });
89
+ ```
90
+
91
+ ---
92
+
93
+ ## 8. Multi-Perspective AI Council
94
+
95
+ Balanced decision-making through multiple AI perspectives analyzing the same question from different viewpoints (skeptic, optimist, pragmatist, etc.).
96
+
97
+ ```javascript
98
+ const decision = await hs.ai.council.deliberate(
99
+ 'Should we implement feature X?',
100
+ { perspectives: ['technical', 'business', 'user-experience'] }
101
+ );
102
+ ```
103
+
104
+ ---
105
+
106
+ ## 9. Natural Language Query Interface
107
+
108
+ Query your data using plain English instead of structured queries:
109
+
110
+ ```javascript
111
+ const results = await hs.ai.query('Show me all events near Paris next week');
112
+ ```
113
+
114
+ ---
115
+
116
+ ## 10. Smart Contract Integration
117
+
118
+ Ethereum-based fractal fund distribution with multi-chain support:
119
+
120
+ | Contract | Purpose |
121
+ |----------|---------|
122
+ | **Splitter** | Internal/external fund split with fractal nesting |
123
+ | **Managed** | Appreciation-based distribution |
124
+ | **Zoned** | Tier-based geographic zone rewards |
125
+ | **Appreciative** | Peer-to-peer appreciation tokens |
126
+ | **Bundle** | All-in-one 2-way split with steepness curve |
127
+
128
+ ---
129
+
130
+ ## 11. Multi-Chain Support
131
+
132
+ Deploy and interact with contracts on multiple EVM chains:
133
+
134
+ - Ethereum Mainnet
135
+ - Polygon
136
+ - Arbitrum
137
+ - Base
138
+ - Optimism
139
+ - Sepolia (testnet)
140
+
141
+ ---
142
+
143
+ ## 12. Real-Time Subscriptions
144
+
145
+ Subscribe to data changes with callbacks for live updates:
146
+
147
+ ```javascript
148
+ const sub = await hs.subscribe(holon, lens, (data, key) => {
149
+ console.log('Data updated:', key, data);
150
+ });
151
+
152
+ // Later: sub.unsubscribe();
153
+ ```
154
+
155
+ ---
156
+
157
+ ## 13. Schema Validation
158
+
159
+ JSON Schema validation for data integrity with custom validators:
160
+
161
+ ```javascript
162
+ await hs.setSchema(holon, lens, {
163
+ type: 'object',
164
+ properties: {
165
+ title: { type: 'string', minLength: 1 },
166
+ date: { type: 'string', format: 'date' }
167
+ },
168
+ required: ['title']
169
+ });
170
+ ```
171
+
172
+ ---
173
+
174
+ ## 14. Automatic Parent Propagation
175
+
176
+ Data automatically propagates to parent hexagons in the H3 hierarchy, enabling queries at any resolution level.
177
+
178
+ ```javascript
179
+ // Write at resolution 9
180
+ await hs.write('891f1d48127ffff', 'events', event);
181
+
182
+ // Discoverable at resolution 7
183
+ const events = await hs.readAll('871f1d481ffffff', 'events');
184
+ ```
185
+
186
+ ---
187
+
188
+ ## 15. Schema Extraction from Unstructured Text
189
+
190
+ AI-powered extraction of structured data from free-form text:
191
+
192
+ ```javascript
193
+ const structured = await hs.ai.extractSchema(
194
+ 'Meeting tomorrow at 3pm with John about the budget review',
195
+ { fields: ['date', 'time', 'attendees', 'topic'] }
196
+ );
197
+ ```
198
+
199
+ ---
200
+
201
+ ## 16. Fuzzy JSON Operations
202
+
203
+ Semantic merge, diff, and union operations on JSON data:
204
+
205
+ ```javascript
206
+ const merged = await hs.ai.fuzzyMerge(doc1, doc2);
207
+ const diff = await hs.ai.fuzzyDiff(before, after);
208
+ ```
209
+
210
+ ---
211
+
212
+ ## 17. Spatial Analysis with AI
213
+
214
+ Geographic pattern recognition and spatial clustering:
215
+
216
+ ```javascript
217
+ const analysis = await hs.ai.analyzeSpatial(geoData, {
218
+ detectClusters: true,
219
+ findPatterns: true
220
+ });
221
+ ```
222
+
223
+ ---
224
+
225
+ ## 18. Task Breakdown & Decomposition
226
+
227
+ AI-powered hierarchical task decomposition for complex projects:
228
+
229
+ ```javascript
230
+ const tasks = await hs.ai.breakdown('Build a community garden', {
231
+ maxDepth: 3,
232
+ estimateEffort: true
233
+ });
234
+ ```
235
+
236
+ ---
237
+
238
+ ## 19. Relationship Discovery
239
+
240
+ Automatically discover relationships between data entities:
241
+
242
+ ```javascript
243
+ const relationships = await hs.ai.discoverRelationships(entities);
244
+ // Returns: [{from: 'A', to: 'B', type: 'collaborates_with', confidence: 0.85}]
245
+ ```
246
+
247
+ ---
248
+
249
+ ## 20. Text-to-Speech Integration
250
+
251
+ Convert text to speech with multiple voice options:
252
+
253
+ ```javascript
254
+ const audio = await hs.ai.textToSpeech(text, { voice: 'alloy' });
255
+ ```
256
+
257
+ ---
258
+
259
+ ## 21. CDN-Ready Browser Bundle
260
+
261
+ Direct script tag inclusion for quick web integration:
262
+
263
+ ```html
264
+ <script src="https://unpkg.com/holosphere@next/dist/holosphere.cdn.js"></script>
265
+ <script>
266
+ const hs = new HoloSphere({ backend: 'nostr', relays: ['wss://...'] });
267
+ </script>
268
+ ```
269
+
270
+ ---
271
+
272
+ ## 22. Nostr Protocol Integration
273
+
274
+ Full NIP-01 compliance with:
275
+
276
+ - Long-lived subscriptions
277
+ - Query deduplication
278
+ - Intelligent caching
279
+ - Multiple relay support
280
+ - Automatic reconnection
281
+
282
+ ---
283
+
284
+ ## 23. GunDB Real-Time Sync
285
+
286
+ CRDT-based conflict resolution with:
287
+
288
+ - WebRTC peer-to-peer connections
289
+ - Radisk persistence
290
+ - User authentication
291
+ - Encrypted user spaces
292
+
293
+ ---
294
+
295
+ ## 24. ActivityPub Federation
296
+
297
+ Fediverse compatibility for social federation:
298
+
299
+ - Actor creation and management
300
+ - Inbox/Outbox message handling
301
+ - Server-Sent Events for real-time updates
302
+ - HTTP Signatures for security
303
+
304
+ ---
305
+
306
+ ## 25. Data Migration Tools
307
+
308
+ Seamlessly migrate data between backends:
309
+
310
+ ```javascript
311
+ const tool = new MigrationTool();
312
+ await tool.setSource('nostr', { relays: ['wss://old.relay'] });
313
+ await tool.setTarget('gundb', { peers: ['wss://new.peer'] });
314
+ await tool.migrate();
315
+ await tool.validate(); // Verify integrity
316
+ ```
317
+
318
+ ---
319
+
320
+ ## 26. Global Data Operations
321
+
322
+ Store application-wide data not tied to geographic locations:
323
+
324
+ ```javascript
325
+ await hs.writeGlobal('schemas', 'event-schema', schema);
326
+ await hs.writeGlobal('config', 'app-settings', settings);
327
+ const config = await hs.readGlobal('config', 'app-settings');
328
+ ```
329
+
330
+ ---
331
+
332
+ ## 27. Circular Reference Prevention
333
+
334
+ Built-in safeguards against infinite hologram reference loops with automatic cycle detection.
335
+
336
+ ---
337
+
338
+ ## 28. TypeScript Support
339
+
340
+ Comprehensive TypeScript type definitions for full IDE support:
341
+
342
+ ```typescript
343
+ import { HoloSphere, Holon, Lens, HologramRef } from 'holosphere';
344
+
345
+ const hs: HoloSphere = new HoloSphere(config);
346
+ const data: MyDataType = await hs.read<MyDataType>(holon, lens, id);
347
+ ```
348
+
349
+ ---
350
+
351
+ ## 29. Contract Event Listening
352
+
353
+ Real-time blockchain event monitoring:
354
+
355
+ ```javascript
356
+ hs.contracts.onEvent('FundsDistributed', (event) => {
357
+ console.log('Distribution:', event.args.recipients, event.args.amounts);
358
+ });
359
+ ```
360
+
361
+ ---
362
+
363
+ ## 30. Federation Advisor AI
364
+
365
+ AI-powered recommendations for optimal federation strategies:
366
+
367
+ ```javascript
368
+ const advice = await hs.ai.federationAdvisor({
369
+ sourceHolon,
370
+ candidateTargets,
371
+ dataTypes: ['events', 'projects']
372
+ });
373
+ // Returns recommended federation topology
374
+ ```
375
+
376
+ ---
377
+
378
+ ## Quick Start
379
+
380
+ ```javascript
381
+ import { HoloSphere } from 'holosphere';
382
+
383
+ // Initialize with Nostr backend
384
+ const hs = new HoloSphere({
385
+ appName: 'myapp',
386
+ backend: 'nostr',
387
+ relays: ['wss://relay.damus.io', 'wss://nos.lol']
388
+ });
389
+
390
+ await hs.init();
391
+
392
+ // Write geospatial data
393
+ const holon = '891f1d48127ffff'; // H3 cell ID
394
+ await hs.write(holon, 'events', {
395
+ id: 'event-1',
396
+ title: 'Community Meetup',
397
+ date: '2025-01-15'
398
+ });
399
+
400
+ // Read it back
401
+ const event = await hs.read(holon, 'events', 'event-1');
402
+
403
+ // Subscribe to changes
404
+ await hs.subscribe(holon, 'events', (data, key) => {
405
+ console.log('Updated:', key);
406
+ });
407
+ ```
408
+
409
+ ---
410
+
411
+ ## Installation
412
+
413
+ ```bash
414
+ npm install holosphere@next
415
+ ```
416
+
417
+ Or via CDN:
418
+
419
+ ```html
420
+ <script src="https://unpkg.com/holosphere@next/dist/holosphere.cdn.js"></script>
421
+ ```
422
+
423
+ ---
424
+
425
+ ## License
426
+
427
+ MIT License - Open source and free to use.
428
+
429
+ ---
430
+
431
+ *HoloSphere: Distributed geospatial communication for a decentralized world.*
package/LICENSE CHANGED
@@ -1,56 +1,43 @@
1
- GNU LESSER GENERAL PUBLIC LICENSE
2
- Version 3, 29 June 2007
1
+ # HoloSphere - Dual Licensed
3
2
 
4
- Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>
3
+ Copyright (c) 2024-2025 Roberto Valenti
5
4
 
6
- Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
5
+ This software is available under two licensing options:
7
6
 
8
- This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.
7
+ ## 1. AGPL-3.0 (Open Source)
9
8
 
10
- 0. Additional Definitions.
11
- As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.
9
+ For open source projects and non-commercial use, HoloSphere is licensed under
10
+ the GNU Affero General Public License version 3.0 (AGPL-3.0).
12
11
 
13
- “The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.
12
+ See [LICENSE-AGPL.md](LICENSE-AGPL.md) for the full license text.
14
13
 
15
- An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.
14
+ **Key requirements:**
15
+ - You must make your source code available if you modify and distribute the software
16
+ - Network use (SaaS) counts as distribution - you must provide source access to users
17
+ - Derivative works must also be licensed under AGPL-3.0
16
18
 
17
- A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.
19
+ ## 2. Commercial License
18
20
 
19
- The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.
21
+ For proprietary or commercial use without AGPL obligations, a commercial license
22
+ is available.
20
23
 
21
- The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.
24
+ **Benefits of commercial license:**
25
+ - Use in proprietary/closed-source applications
26
+ - No copyleft requirements
27
+ - No source code disclosure obligations
28
+ - Priority support available
22
29
 
23
- 1. Exception to Section 3 of the GNU GPL.
24
- You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.
30
+ **Contact for commercial licensing:**
31
+ - GitHub: https://github.com/liminalvillage/holosphere2/issues
32
+ - Open an issue with the "commercial-license" label
25
33
 
26
- 2. Conveying Modified Versions.
27
- If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:
34
+ ---
28
35
 
29
- a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or
30
- b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.
31
- 3. Object Code Incorporating Material from Library Header Files.
32
- The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:
36
+ By using this software, you agree to the terms of one of these licenses.
33
37
 
34
- a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
35
- b) Accompany the object code with a copy of the GNU GPL and this license document.
36
- 4. Combined Works.
37
- You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:
38
+ If you are using this software in an open source project under AGPL-3.0
39
+ compatible terms, no further action is required beyond compliance with the
40
+ AGPL-3.0 license.
38
41
 
39
- a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
40
- b) Accompany the Combined Work with a copy of the GNU GPL and this license document.
41
- c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
42
- d) Do one of the following:
43
- 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
44
- 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
45
- e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)
46
- 5. Combined Libraries.
47
- You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:
48
-
49
- a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
50
- b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
51
- 6. Revised Versions of the GNU Lesser General Public License.
52
- The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
53
-
54
- Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.
55
-
56
- If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.
42
+ If you need a commercial license, please contact us before using this software
43
+ in a proprietary context.