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
@@ -1,234 +0,0 @@
1
- import { describe, it, expect, beforeEach } from 'vitest';
2
- import HoloSphere from '../../src/index.js';
3
-
4
- describe('Unit: Federation Module', () => {
5
- let hs;
6
- let sourceHolon;
7
- let targetHolon;
8
-
9
- beforeEach(async () => {
10
- hs = new HoloSphere({ relays: [], appName: 'test-federation-unit', persistence: false });
11
- sourceHolon = await hs.toHolon(37.7749, -122.4194, 10);
12
- targetHolon = await hs.toHolon(37.7749, -122.4194, 8);
13
- });
14
-
15
- describe('Hologram creation (reference structure)', () => {
16
- it('should create hologram with reference structure', async () => {
17
- await hs.write(sourceHolon, 'test', { id: 'item-1', value: 'data' });
18
-
19
- await hs.federate(sourceHolon, targetHolon, 'test', {
20
- mode: 'reference'
21
- });
22
-
23
- // Hologram should reference original data
24
- const fedData = await hs.getFederatedData(targetHolon, 'test');
25
- expect(Array.isArray(fedData)).toBe(true);
26
- });
27
-
28
- it('should include source holon in hologram metadata', async () => {
29
- await hs.write(sourceHolon, 'test', { id: 'item-1', value: 'data' });
30
- await hs.federate(sourceHolon, targetHolon, 'test');
31
-
32
- const fedData = await hs.getFederatedData(targetHolon, 'test');
33
- const hologram = fedData.find(d => d._meta?.source);
34
-
35
- if (hologram) {
36
- expect(hologram._meta.source).toBe(sourceHolon);
37
- }
38
- });
39
-
40
- it('should create hologram not copy in reference mode', async () => {
41
- const lensName = 'test-ref-' + Date.now();
42
- await hs.write(sourceHolon, lensName, { id: 'item-1', value: 'original' });
43
- await hs.federate(sourceHolon, targetHolon, lensName, { mode: 'reference' });
44
-
45
- // Small delay to ensure federation is complete
46
- await new Promise(resolve => setTimeout(resolve, 10));
47
-
48
- // Update source
49
- await hs.update(sourceHolon, lensName, 'item-1', { value: 'updated' });
50
-
51
- // Small delay to ensure update is complete
52
- await new Promise(resolve => setTimeout(resolve, 10));
53
-
54
- // Target should reflect update (reference, not copy)
55
- const fedData = await hs.getFederatedData(targetHolon, lensName);
56
- const item = fedData.find(d => d.id === 'item-1');
57
- expect(item?.value).toBe('updated');
58
- });
59
- });
60
-
61
- describe('Hologram resolution (dereference)', () => {
62
- it('should resolve holograms to actual data', async () => {
63
- const lensName = 'test-resolve-' + Date.now();
64
- await hs.write(sourceHolon, lensName, { id: 'item-1', value: 'data' });
65
- await hs.federate(sourceHolon, targetHolon, lensName);
66
-
67
- // Small delay to ensure federation is complete
68
- await new Promise(resolve => setTimeout(resolve, 10));
69
-
70
- const fedData = await hs.getFederatedData(targetHolon, lensName, {
71
- resolveHolograms: true
72
- });
73
-
74
- const item = fedData.find(d => d.id === 'item-1');
75
- expect(item?.value).toBe('data');
76
- });
77
-
78
- it('should return hologram references when resolveHolograms is false', async () => {
79
- await hs.write(sourceHolon, 'test', { id: 'item-1', value: 'data' });
80
- await hs.federate(sourceHolon, targetHolon, 'test');
81
-
82
- const fedData = await hs.getFederatedData(targetHolon, 'test', {
83
- resolveHolograms: false
84
- });
85
-
86
- // Should return hologram structure, not resolved data
87
- expect(Array.isArray(fedData)).toBe(true);
88
- });
89
- });
90
-
91
- describe('Circular reference detection', () => {
92
- it('should detect circular federation references', async () => {
93
- const holonA = await hs.toHolon(37.7749, -122.4194, 9);
94
- const holonB = await hs.toHolon(40.7128, -74.0060, 9);
95
-
96
- await hs.federate(holonA, holonB, 'test');
97
-
98
- // Circular: B -> A (when A -> B already exists)
99
- await hs.federate(holonB, holonA, 'test');
100
-
101
- // Should not cause infinite loop
102
- const dataA = await hs.getFederatedData(holonA, 'test');
103
- expect(Array.isArray(dataA)).toBe(true);
104
- });
105
-
106
- it('should enforce max depth limit (10 levels)', async () => {
107
- // Create a chain longer than max depth
108
- const holons = [];
109
- for (let i = 0; i < 12; i++) {
110
- holons.push(await hs.toHolon(37.7749 + i * 0.01, -122.4194, 9));
111
- }
112
-
113
- // Create federation chain
114
- for (let i = 0; i < holons.length - 1; i++) {
115
- await hs.federate(holons[i], holons[i + 1], 'chain');
116
- }
117
-
118
- // Should not traverse beyond max depth
119
- const lastData = await hs.getFederatedData(holons[holons.length - 1], 'chain');
120
- expect(Array.isArray(lastData)).toBe(true);
121
- });
122
-
123
- it('should prevent infinite loops in hologram resolution', async () => {
124
- const holonA = await hs.toHolon(37.7749, -122.4194, 9);
125
- const holonB = await hs.toHolon(40.7128, -74.0060, 9);
126
-
127
- await hs.write(holonA, 'circular', { id: 'a1', ref: 'b1' });
128
- await hs.write(holonB, 'circular', { id: 'b1', ref: 'a1' });
129
-
130
- await hs.federate(holonA, holonB, 'circular', { direction: 'bidirectional' });
131
-
132
- // Should handle circular references gracefully
133
- await expect(
134
- hs.getFederatedData(holonA, 'circular')
135
- ).resolves.toBeDefined();
136
- });
137
- });
138
-
139
- describe('Federation config validation', () => {
140
- it('should validate direction option', async () => {
141
- await expect(
142
- hs.federate(sourceHolon, targetHolon, 'test', { direction: 'outbound', propagateExisting: false })
143
- ).resolves.toBe(true);
144
-
145
- await expect(
146
- hs.federate(sourceHolon, targetHolon, 'test', { direction: 'inbound', propagateExisting: false })
147
- ).resolves.toBe(true);
148
-
149
- await expect(
150
- hs.federate(sourceHolon, targetHolon, 'test', { direction: 'bidirectional', propagateExisting: false })
151
- ).resolves.toBe(true);
152
- });
153
-
154
- it('should throw error for invalid direction', async () => {
155
- await expect(
156
- hs.federate(sourceHolon, targetHolon, 'test', { direction: 'invalid' })
157
- ).rejects.toThrow(Error);
158
- });
159
-
160
- it('should validate mode option', async () => {
161
- await expect(
162
- hs.federate(sourceHolon, targetHolon, 'test', { mode: 'reference', propagateExisting: false })
163
- ).resolves.toBe(true);
164
-
165
- await expect(
166
- hs.federate(sourceHolon, targetHolon, 'test', { mode: 'copy', propagateExisting: false })
167
- ).resolves.toBe(true);
168
- });
169
-
170
- it('should throw error for self-federation', async () => {
171
- await expect(
172
- hs.federate(sourceHolon, sourceHolon, 'test')
173
- ).rejects.toThrow(Error);
174
- });
175
- });
176
-
177
- describe('Inbound/outbound/bidirectional modes', () => {
178
- it('should handle outbound federation (source -> target)', async () => {
179
- await hs.write(sourceHolon, 'test', { id: 'item-1', value: 'data' });
180
-
181
- await hs.federate(sourceHolon, targetHolon, 'test', {
182
- direction: 'outbound'
183
- });
184
-
185
- const targetData = await hs.getFederatedData(targetHolon, 'test');
186
- expect(targetData.some(d => d.id === 'item-1')).toBe(true);
187
- });
188
-
189
- it('should handle inbound federation (target <- source)', async () => {
190
- await hs.write(targetHolon, 'test', { id: 'item-1', value: 'data' });
191
-
192
- await hs.federate(sourceHolon, targetHolon, 'test', {
193
- direction: 'inbound'
194
- });
195
-
196
- const sourceData = await hs.getFederatedData(sourceHolon, 'test');
197
- expect(sourceData.some(d => d.id === 'item-1')).toBe(true);
198
- });
199
-
200
- it('should handle bidirectional federation (source <-> target)', async () => {
201
- // Use unique lens name to avoid interference from other tests
202
- const lensName = 'test-bidir-' + Date.now();
203
-
204
- await hs.write(sourceHolon, lensName, { id: 'source-item', value: 'source' });
205
- await hs.write(targetHolon, lensName, { id: 'target-item', value: 'target' });
206
-
207
- await hs.federate(sourceHolon, targetHolon, lensName, {
208
- direction: 'bidirectional'
209
- });
210
-
211
- const sourceData = await hs.getFederatedData(sourceHolon, lensName);
212
- const targetData = await hs.getFederatedData(targetHolon, lensName);
213
-
214
- expect(sourceData.some(d => d.id === 'target-item')).toBe(true);
215
- expect(targetData.some(d => d.id === 'source-item')).toBe(true);
216
- });
217
-
218
- it('should apply filter function in federation', async () => {
219
- // Use unique lens name to avoid interference from other tests
220
- const lensName = 'test-filter-' + Date.now();
221
-
222
- await hs.write(sourceHolon, lensName, { id: 'item-1', priority: 'high' });
223
- await hs.write(sourceHolon, lensName, { id: 'item-2', priority: 'low' });
224
-
225
- await hs.federate(sourceHolon, targetHolon, lensName, {
226
- filter: (data) => data.priority === 'high'
227
- });
228
-
229
- const targetData = await hs.getFederatedData(targetHolon, lensName);
230
- expect(targetData.some(d => d.id === 'item-1')).toBe(true);
231
- expect(targetData.some(d => d.id === 'item-2')).toBe(false);
232
- });
233
- });
234
- });
@@ -1,252 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, beforeAll } from 'vitest';
2
-
3
- // Dynamically import Gun (optional dependency)
4
- let Gun;
5
- let gunAvailable = false;
6
-
7
- // Import gun-async utilities
8
- let gunPromise, gunPut, gunMap, gunMapIterator, gunCollect, gunWaitFor, gunBatchGet, gunBatchPut, gunRetry, gunStream;
9
-
10
- beforeAll(async () => {
11
- try {
12
- Gun = (await import('gun')).default;
13
- const gunAsync = await import('../../src/storage/gun-async.js');
14
- gunPromise = gunAsync.gunPromise;
15
- gunPut = gunAsync.gunPut;
16
- gunMap = gunAsync.gunMap;
17
- gunMapIterator = gunAsync.gunMapIterator;
18
- gunCollect = gunAsync.gunCollect;
19
- gunWaitFor = gunAsync.gunWaitFor;
20
- gunBatchGet = gunAsync.gunBatchGet;
21
- gunBatchPut = gunAsync.gunBatchPut;
22
- gunRetry = gunAsync.gunRetry;
23
- gunStream = gunAsync.gunStream;
24
- gunAvailable = true;
25
- } catch (e) {
26
- console.log('Gun not available, skipping gun-async tests');
27
- }
28
- });
29
-
30
- describe('Gun Async Utilities', () => {
31
- let gun;
32
-
33
- beforeEach(() => {
34
- if (!gunAvailable) return;
35
- gun = Gun({ radisk: false, localStorage: false });
36
- });
37
-
38
- afterEach(() => {
39
- // Cleanup
40
- });
41
-
42
- describe('gunPromise', () => {
43
- it('should resolve with data from once()', async () => {
44
- if (!gunAvailable) return;
45
- const testData = { id: 'test1', value: 'hello' };
46
- await gunPut(gun.get('test1'), testData);
47
-
48
- const result = await gunPromise(gun.get('test1'));
49
- expect(result.id).toBe('test1');
50
- expect(result.value).toBe('hello');
51
- });
52
-
53
- it('should resolve with null for non-existent data', async () => {
54
- if (!gunAvailable) return;
55
- const result = await gunPromise(gun.get('nonexistent'));
56
- expect(result).toBeNull();
57
- });
58
- });
59
-
60
- describe('gunPut', () => {
61
- it('should write data and resolve ack', async () => {
62
- if (!gunAvailable) return;
63
- const data = { id: 'test2', name: 'Test' };
64
- const ack = await gunPut(gun.get('test2'), data);
65
-
66
- expect(ack).toBeDefined();
67
- expect(ack.err).toBeUndefined();
68
- });
69
-
70
- it('should reject on write error', async () => {
71
- if (!gunAvailable) return;
72
- // Gun typically doesn't error on put, but this tests the pattern
73
- const data = { id: 'test3' };
74
- const ack = await gunPut(gun.get('test3'), data);
75
- expect(ack.err).toBeUndefined();
76
- });
77
- });
78
-
79
- describe('gunMap', () => {
80
- it('should collect map items', async () => {
81
- if (!gunAvailable) return;
82
- const base = gun.get('testmap');
83
- await gunPut(base.get('item1'), { id: 'item1', value: 'a' });
84
- await gunPut(base.get('item2'), { id: 'item2', value: 'b' });
85
- await gunPut(base.get('item3'), { id: 'item3', value: 'c' });
86
-
87
- // Wait a bit for Gun to sync
88
- await new Promise((r) => setTimeout(r, 100));
89
-
90
- const items = await gunMap(base, 800);
91
-
92
- // Gun may or may not have items in memory-only mode
93
- expect(Object.keys(items).length).toBeGreaterThanOrEqual(0);
94
- });
95
- });
96
-
97
- describe('gunMapIterator', () => {
98
- it('should iterate over map items', async () => {
99
- if (!gunAvailable) return;
100
- const base = gun.get('testiterator');
101
- await gunPut(base.get('a'), { id: 'a', val: 1 });
102
- await gunPut(base.get('b'), { id: 'b', val: 2 });
103
-
104
- // Wait for Gun to sync
105
- await new Promise((r) => setTimeout(r, 100));
106
-
107
- const items = [];
108
- for await (const [key, value] of gunMapIterator(base)) {
109
- items.push({ key, value });
110
- }
111
-
112
- // Gun may or may not have items in memory-only mode
113
- expect(items.length).toBeGreaterThanOrEqual(0);
114
- });
115
- });
116
-
117
- describe('gunCollect', () => {
118
- it('should collect on() stream data', async () => {
119
- if (!gunAvailable) return;
120
- const base = gun.get('testcollect');
121
-
122
- // Write data
123
- await gunPut(base, { id: 'collect1', value: 'test' });
124
-
125
- // Collect updates
126
- const results = await gunCollect(base, 300);
127
-
128
- expect(results.length).toBeGreaterThan(0);
129
- expect(results[0].data).toBeDefined();
130
- });
131
- });
132
-
133
- describe('gunWaitFor', () => {
134
- it('should resolve when condition is met', async () => {
135
- if (!gunAvailable) return;
136
- const ref = gun.get('testwait');
137
-
138
- // Start waiting
139
- const waitPromise = gunWaitFor(
140
- ref,
141
- (data) => data && data.ready === true,
142
- 2000
143
- );
144
-
145
- // Set data after a delay
146
- setTimeout(async () => {
147
- await gunPut(ref, { id: 'testwait', ready: true });
148
- }, 100);
149
-
150
- const result = await waitPromise;
151
- expect(result.ready).toBe(true);
152
- });
153
-
154
- it('should timeout if condition not met', async () => {
155
- if (!gunAvailable) return;
156
- const ref = gun.get('testtimeout');
157
-
158
- await expect(
159
- gunWaitFor(ref, (data) => data && data.never === true, 500)
160
- ).rejects.toThrow('Timeout');
161
- });
162
- });
163
-
164
- describe('gunBatchGet', () => {
165
- it('should read multiple paths', async () => {
166
- if (!gunAvailable) return;
167
- await gunPut(gun.get('batch1'), { id: 'batch1', val: 1 });
168
- await gunPut(gun.get('batch2'), { id: 'batch2', val: 2 });
169
- await gunPut(gun.get('batch3'), { id: 'batch3', val: 3 });
170
-
171
- const results = await gunBatchGet(gun, ['batch1', 'batch2', 'batch3']);
172
-
173
- expect(results.batch1.id).toBe('batch1');
174
- expect(results.batch2.id).toBe('batch2');
175
- expect(results.batch3.id).toBe('batch3');
176
- });
177
- });
178
-
179
- describe('gunBatchPut', () => {
180
- it('should write multiple paths', async () => {
181
- if (!gunAvailable) return;
182
- const data = {
183
- batchput1: { id: 'batchput1', val: 'a' },
184
- batchput2: { id: 'batchput2', val: 'b' },
185
- batchput3: { id: 'batchput3', val: 'c' },
186
- };
187
-
188
- const results = await gunBatchPut(gun, data);
189
-
190
- expect(results.batchput1).toBeDefined();
191
- expect(results.batchput2).toBeDefined();
192
- expect(results.batchput3).toBeDefined();
193
-
194
- // Verify writes
195
- const read1 = await gunPromise(gun.get('batchput1'));
196
- expect(read1.val).toBe('a');
197
- });
198
- });
199
-
200
- describe('gunRetry', () => {
201
- it('should retry failed operations', async () => {
202
- if (!gunAvailable) return;
203
- let attempts = 0;
204
-
205
- const operation = async () => {
206
- attempts++;
207
- if (attempts < 3) {
208
- throw new Error('Not ready');
209
- }
210
- return 'success';
211
- };
212
-
213
- const result = await gunRetry(operation, 5, 50);
214
- expect(result).toBe('success');
215
- expect(attempts).toBe(3);
216
- });
217
-
218
- it('should throw after max retries', async () => {
219
- if (!gunAvailable) return;
220
- const operation = async () => {
221
- throw new Error('Always fails');
222
- };
223
-
224
- await expect(gunRetry(operation, 2, 10)).rejects.toThrow('Always fails');
225
- });
226
- });
227
-
228
- describe('gunStream', () => {
229
- it('should create async iterable stream', async () => {
230
- if (!gunAvailable) return;
231
- const ref = gun.get('teststream');
232
- const stream = gunStream(ref);
233
-
234
- // Write data
235
- setTimeout(async () => {
236
- await gunPut(ref, { id: 'stream1', value: 'test' });
237
- }, 50);
238
-
239
- setTimeout(() => {
240
- stream.stop();
241
- }, 300);
242
-
243
- const items = [];
244
- for await (const item of stream) {
245
- items.push(item);
246
- if (items.length >= 1) break; // Prevent infinite loop
247
- }
248
-
249
- expect(items.length).toBeGreaterThan(0);
250
- });
251
- });
252
- });