holosphere 2.0.0-alpha1 → 2.0.0-alpha11

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 (416) 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/cjs/holosphere.cjs +2 -0
  19. package/dist/cjs/holosphere.cjs.map +1 -0
  20. package/dist/esm/holosphere.js +53 -0
  21. package/dist/esm/holosphere.js.map +1 -0
  22. package/dist/index-Bl6rM1NW.js +15104 -0
  23. package/dist/index-Bl6rM1NW.js.map +1 -0
  24. package/dist/index-Bwg3OzRM.cjs +12 -0
  25. package/dist/index-Bwg3OzRM.cjs.map +1 -0
  26. package/dist/index-D-jZhliX.js +40274 -0
  27. package/dist/index-D-jZhliX.js.map +1 -0
  28. package/dist/index-Dc6Z8Aob.cjs +18 -0
  29. package/dist/index-Dc6Z8Aob.cjs.map +1 -0
  30. package/dist/indexeddb-storage-5eiUNsHC.js +176 -0
  31. package/dist/indexeddb-storage-5eiUNsHC.js.map +1 -0
  32. package/dist/indexeddb-storage-FNFUVvTJ.cjs +2 -0
  33. package/dist/indexeddb-storage-FNFUVvTJ.cjs.map +1 -0
  34. package/dist/memory-storage-CI-gfmuG.js +91 -0
  35. package/dist/memory-storage-CI-gfmuG.js.map +1 -0
  36. package/dist/memory-storage-DMt36uZO.cjs +2 -0
  37. package/dist/memory-storage-DMt36uZO.cjs.map +1 -0
  38. package/dist/secp256k1-CEwJNcfV.js +1890 -0
  39. package/dist/secp256k1-CEwJNcfV.js.map +1 -0
  40. package/dist/secp256k1-CiEONUnj.cjs +12 -0
  41. package/dist/secp256k1-CiEONUnj.cjs.map +1 -0
  42. package/docs/CONTRACTS.md +797 -0
  43. package/docs/FOSDEM_PROPOSAL.md +388 -0
  44. package/docs/LOCALFIRST.md +266 -0
  45. package/docs/api/ai_aggregation.js.html +333 -0
  46. package/docs/api/ai_breakdown.js.html +524 -0
  47. package/docs/api/ai_classifier.js.html +231 -0
  48. package/docs/api/ai_council.js.html +246 -0
  49. package/docs/api/ai_embeddings.js.html +304 -0
  50. package/docs/api/ai_federation-ai.js.html +338 -0
  51. package/docs/api/ai_h3-ai.js.html +970 -0
  52. package/docs/api/ai_index.js.html +124 -0
  53. package/docs/api/ai_json-ops.js.html +241 -0
  54. package/docs/api/ai_llm-service.js.html +239 -0
  55. package/docs/api/ai_nl-query.js.html +236 -0
  56. package/docs/api/ai_relationships.js.html +367 -0
  57. package/docs/api/ai_schema-extractor.js.html +235 -0
  58. package/docs/api/ai_spatial.js.html +307 -0
  59. package/docs/api/ai_tts.js.html +214 -0
  60. package/docs/api/content_social-protocols.js.html +180 -0
  61. package/docs/api/core_holosphere.js.html +757 -0
  62. package/docs/api/crypto_nostr-utils.js.html +306 -0
  63. package/docs/api/crypto_secp256k1.js.html +267 -0
  64. package/docs/api/data/search.json +1 -0
  65. package/docs/api/federation_discovery.js.html +337 -0
  66. package/docs/api/federation_handshake.js.html +478 -0
  67. package/docs/api/federation_hologram.js.html +1053 -0
  68. package/docs/api/federation_registry.js.html +389 -0
  69. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  70. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  71. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  72. package/docs/api/global.html +3 -0
  73. package/docs/api/hierarchical_upcast.js.html +128 -0
  74. package/docs/api/index.html +265 -0
  75. package/docs/api/index.js.html +1868 -0
  76. package/docs/api/lib_ai-methods.js.html +660 -0
  77. package/docs/api/lib_contract-methods.js.html +445 -0
  78. package/docs/api/lib_errors.js.html +56 -0
  79. package/docs/api/lib_federation-methods.js.html +348 -0
  80. package/docs/api/lib_index.js.html +33 -0
  81. package/docs/api/module-ai.html +5 -0
  82. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  83. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  84. package/docs/api/module-ai_aggregation.html +3 -0
  85. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  86. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  87. package/docs/api/module-ai_breakdown.html +3 -0
  88. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  89. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  90. package/docs/api/module-ai_classifier.html +3 -0
  91. package/docs/api/module-ai_council-Council.html +6 -0
  92. package/docs/api/module-ai_council.Council.html +3 -0
  93. package/docs/api/module-ai_council.html +3 -0
  94. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  95. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  96. package/docs/api/module-ai_embeddings.html +3 -0
  97. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  98. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  99. package/docs/api/module-ai_federation-ai.html +3 -0
  100. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  101. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  102. package/docs/api/module-ai_h3-ai.html +3 -0
  103. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  104. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  105. package/docs/api/module-ai_json-ops.html +3 -0
  106. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  107. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  108. package/docs/api/module-ai_llm-service.html +3 -0
  109. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  110. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  111. package/docs/api/module-ai_nl-query.html +3 -0
  112. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  113. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  114. package/docs/api/module-ai_relationships.html +3 -0
  115. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  116. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  117. package/docs/api/module-ai_schema-extractor.html +3 -0
  118. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  119. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  120. package/docs/api/module-ai_spatial.html +3 -0
  121. package/docs/api/module-ai_tts-TTS.html +5 -0
  122. package/docs/api/module-ai_tts.TTS.html +3 -0
  123. package/docs/api/module-ai_tts.html +3 -0
  124. package/docs/api/module-content_social-protocols.html +3 -0
  125. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  126. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  127. package/docs/api/module-core_holosphere.html +3 -0
  128. package/docs/api/module-crypto_nostr-utils.html +3 -0
  129. package/docs/api/module-crypto_secp256k1.html +3 -0
  130. package/docs/api/module-federation_hologram.html +3 -0
  131. package/docs/api/module-hierarchical_upcast.html +3 -0
  132. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  133. package/docs/api/module-holosphere.html +3 -0
  134. package/docs/api/module-lib_ai-methods.html +3 -0
  135. package/docs/api/module-lib_contract-methods.html +3 -0
  136. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  137. package/docs/api/module-lib_errors-ValidationError.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.html +3 -0
  141. package/docs/api/module-lib_federation-methods.html +3 -0
  142. package/docs/api/module-lib_index.html +3 -0
  143. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  144. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  145. package/docs/api/module-schema_validator.html +3 -0
  146. package/docs/api/module-spatial_h3-operations.html +4 -0
  147. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  148. package/docs/api/module-storage_backend-factory.html +3 -0
  149. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  150. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  151. package/docs/api/module-storage_backend-interface.html +3 -0
  152. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  153. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  154. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  155. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  156. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  157. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  158. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  159. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  160. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  161. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  162. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  163. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  164. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  165. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  166. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  167. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  168. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  169. package/docs/api/module-storage_filesystem-storage.html +3 -0
  170. package/docs/api/module-storage_global-tables.html +3 -0
  171. package/docs/api/module-storage_gun-async.html +3 -0
  172. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  173. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  174. package/docs/api/module-storage_gun-auth.html +3 -0
  175. package/docs/api/module-storage_gun-federation.html +3 -0
  176. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  177. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  178. package/docs/api/module-storage_gun-references.html +3 -0
  179. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  180. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  181. package/docs/api/module-storage_gun-schema.html +3 -0
  182. package/docs/api/module-storage_gun-wrapper.html +11 -0
  183. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  184. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  185. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  186. package/docs/api/module-storage_key-storage-simple.html +3 -0
  187. package/docs/api/module-storage_key-storage.html +4 -0
  188. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  189. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  190. package/docs/api/module-storage_memory-storage.html +3 -0
  191. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  192. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  193. package/docs/api/module-storage_migration.html +3 -0
  194. package/docs/api/module-storage_nostr-async.html +18 -0
  195. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  196. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  197. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  198. package/docs/api/module-storage_nostr-client.html +6 -0
  199. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  200. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  201. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  202. package/docs/api/module-storage_outbox-queue.html +3 -0
  203. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  204. package/docs/api/module-storage_persistent-storage.html +4 -0
  205. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  206. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  207. package/docs/api/module-storage_sync-service.html +3 -0
  208. package/docs/api/module-storage_unified-storage.html +3 -0
  209. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  210. package/docs/api/module-subscriptions_manager.html +3 -0
  211. package/docs/api/schema_validator.js.html +113 -0
  212. package/docs/api/scripts/core.js +726 -0
  213. package/docs/api/scripts/core.min.js +23 -0
  214. package/docs/api/scripts/resize.js +90 -0
  215. package/docs/api/scripts/search.js +265 -0
  216. package/docs/api/scripts/search.min.js +6 -0
  217. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  218. package/docs/api/scripts/third-party/fuse.js +9 -0
  219. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  220. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  221. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  222. package/docs/api/scripts/third-party/hljs.js +1 -0
  223. package/docs/api/scripts/third-party/popper.js +5 -0
  224. package/docs/api/scripts/third-party/tippy.js +1 -0
  225. package/docs/api/scripts/third-party/tocbot.js +672 -0
  226. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  227. package/docs/api/spatial_h3-operations.js.html +129 -0
  228. package/docs/api/storage_backend-factory.js.html +133 -0
  229. package/docs/api/storage_backend-interface.js.html +164 -0
  230. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  231. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  232. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  233. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  234. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  235. package/docs/api/storage_filesystem-storage.js.html +207 -0
  236. package/docs/api/storage_global-tables.js.html +116 -0
  237. package/docs/api/storage_gun-async.js.html +344 -0
  238. package/docs/api/storage_gun-auth.js.html +376 -0
  239. package/docs/api/storage_gun-federation.js.html +788 -0
  240. package/docs/api/storage_gun-references.js.html +212 -0
  241. package/docs/api/storage_gun-schema.js.html +309 -0
  242. package/docs/api/storage_gun-wrapper.js.html +645 -0
  243. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  244. package/docs/api/storage_key-storage-simple.js.html +102 -0
  245. package/docs/api/storage_key-storage.js.html +171 -0
  246. package/docs/api/storage_memory-storage.js.html +128 -0
  247. package/docs/api/storage_migration.js.html +354 -0
  248. package/docs/api/storage_nostr-async.js.html +1076 -0
  249. package/docs/api/storage_nostr-client.js.html +1598 -0
  250. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  251. package/docs/api/storage_outbox-queue.js.html +248 -0
  252. package/docs/api/storage_persistent-storage.js.html +160 -0
  253. package/docs/api/storage_sync-service.js.html +201 -0
  254. package/docs/api/storage_unified-storage.js.html +157 -0
  255. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  256. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  257. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  258. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  259. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  260. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  261. package/docs/api/subscriptions_manager.js.html +162 -0
  262. package/docs/contracts/api-interface.md +793 -0
  263. package/docs/data-model.md +476 -0
  264. package/docs/gun-async-usage.md +338 -0
  265. package/docs/plan.md +349 -0
  266. package/docs/quickstart.md +674 -0
  267. package/docs/research.md +362 -0
  268. package/docs/spec.md +244 -0
  269. package/docs/storage-backends.md +326 -0
  270. package/docs/tasks.md +947 -0
  271. package/examples/demo.html +47 -0
  272. package/examples/holosphere-widget.js +1242 -0
  273. package/examples/widget-demo.html +274 -0
  274. package/examples/widget.html +703 -0
  275. package/jsdoc.json +26 -0
  276. package/package.json +25 -7
  277. package/src/ai/aggregation.js +13 -2
  278. package/src/ai/breakdown.js +12 -2
  279. package/src/ai/classifier.js +14 -3
  280. package/src/ai/council.js +22 -7
  281. package/src/ai/embeddings.js +37 -15
  282. package/src/ai/federation-ai.js +13 -2
  283. package/src/ai/h3-ai.js +14 -2
  284. package/src/ai/index.js +16 -7
  285. package/src/ai/json-ops.js +18 -5
  286. package/src/ai/llm-service.js +62 -31
  287. package/src/ai/nl-query.js +12 -2
  288. package/src/ai/relationships.js +13 -2
  289. package/src/ai/schema-extractor.js +24 -10
  290. package/src/ai/spatial.js +13 -2
  291. package/src/ai/tts.js +25 -8
  292. package/src/cdn-entry.js +22 -0
  293. package/src/content/social-protocols.js +34 -25
  294. package/src/contracts/abis/Appreciative.json +1280 -0
  295. package/src/contracts/abis/AppreciativeFactory.json +101 -0
  296. package/src/contracts/abis/Bundle.json +1438 -0
  297. package/src/contracts/abis/BundleFactory.json +106 -0
  298. package/src/contracts/abis/Holon.json +881 -0
  299. package/src/contracts/abis/Holons.json +330 -0
  300. package/src/contracts/abis/Managed.json +1262 -0
  301. package/src/contracts/abis/ManagedFactory.json +149 -0
  302. package/src/contracts/abis/Membrane.json +261 -0
  303. package/src/contracts/abis/Splitter.json +1624 -0
  304. package/src/contracts/abis/SplitterFactory.json +220 -0
  305. package/src/contracts/abis/TestToken.json +321 -0
  306. package/src/contracts/abis/Zoned.json +1461 -0
  307. package/src/contracts/abis/ZonedFactory.json +154 -0
  308. package/src/contracts/chain-manager.js +403 -0
  309. package/src/contracts/deployer.js +500 -0
  310. package/src/contracts/event-listener.js +539 -0
  311. package/src/contracts/holon-contracts.js +359 -0
  312. package/src/contracts/index.js +82 -0
  313. package/src/contracts/networks.js +229 -0
  314. package/src/contracts/operations.js +687 -0
  315. package/src/contracts/queries.js +638 -0
  316. package/src/core/holosphere.js +487 -6
  317. package/src/crypto/nostr-utils.js +303 -0
  318. package/src/crypto/secp256k1.js +7 -2
  319. package/src/federation/handshake.js +475 -0
  320. package/src/federation/hologram.js +117 -3
  321. package/src/hierarchical/upcast.js +40 -25
  322. package/src/index.js +1547 -1912
  323. package/src/lib/ai-methods.js +657 -0
  324. package/src/lib/contract-methods.js +442 -0
  325. package/src/lib/errors.js +53 -0
  326. package/src/lib/federation-methods.js +345 -0
  327. package/src/lib/index.js +30 -0
  328. package/src/schema/validator.js +22 -3
  329. package/src/spatial/h3-operations.js +19 -3
  330. package/src/storage/backend-factory.js +7 -2
  331. package/src/storage/backend-interface.js +21 -2
  332. package/src/storage/backends/activitypub/server.js +25 -3
  333. package/src/storage/backends/activitypub-backend.js +25 -2
  334. package/src/storage/backends/gundb-backend.js +692 -50
  335. package/src/storage/backends/nostr-backend.js +116 -1
  336. package/src/storage/filesystem-storage-browser.js +42 -2
  337. package/src/storage/filesystem-storage.js +72 -5
  338. package/src/storage/global-tables.js +35 -3
  339. package/src/storage/gun-async.js +75 -15
  340. package/src/storage/gun-auth.js +373 -0
  341. package/src/storage/gun-federation.js +785 -0
  342. package/src/storage/gun-references.js +209 -0
  343. package/src/storage/gun-schema.js +306 -0
  344. package/src/storage/gun-wrapper.js +475 -54
  345. package/src/storage/indexeddb-storage.js +112 -13
  346. package/src/storage/key-storage-simple.js +32 -9
  347. package/src/storage/key-storage.js +45 -13
  348. package/src/storage/memory-storage.js +68 -2
  349. package/src/storage/migration.js +20 -7
  350. package/src/storage/nostr-async.js +412 -122
  351. package/src/storage/nostr-client.js +749 -76
  352. package/src/storage/nostr-wrapper.js +6 -2
  353. package/src/storage/outbox-queue.js +55 -18
  354. package/src/storage/persistent-storage.js +62 -14
  355. package/src/storage/sync-service.js +51 -17
  356. package/src/storage/unified-storage.js +154 -0
  357. package/src/subscriptions/manager.js +34 -17
  358. package/types/index.d.ts +133 -0
  359. package/vite.config.cdn.js +60 -0
  360. package/tests/unit/ai/aggregation.test.js +0 -295
  361. package/tests/unit/ai/breakdown.test.js +0 -446
  362. package/tests/unit/ai/classifier.test.js +0 -294
  363. package/tests/unit/ai/council.test.js +0 -262
  364. package/tests/unit/ai/embeddings.test.js +0 -384
  365. package/tests/unit/ai/federation-ai.test.js +0 -344
  366. package/tests/unit/ai/h3-ai.test.js +0 -458
  367. package/tests/unit/ai/index.test.js +0 -304
  368. package/tests/unit/ai/json-ops.test.js +0 -307
  369. package/tests/unit/ai/llm-service.test.js +0 -390
  370. package/tests/unit/ai/nl-query.test.js +0 -383
  371. package/tests/unit/ai/relationships.test.js +0 -311
  372. package/tests/unit/ai/schema-extractor.test.js +0 -384
  373. package/tests/unit/ai/spatial.test.js +0 -279
  374. package/tests/unit/ai/tts.test.js +0 -279
  375. package/tests/unit/content.test.js +0 -332
  376. package/tests/unit/contract/core.test.js +0 -88
  377. package/tests/unit/contract/crypto.test.js +0 -198
  378. package/tests/unit/contract/data.test.js +0 -223
  379. package/tests/unit/contract/federation.test.js +0 -181
  380. package/tests/unit/contract/hierarchical.test.js +0 -113
  381. package/tests/unit/contract/schema.test.js +0 -114
  382. package/tests/unit/contract/social.test.js +0 -217
  383. package/tests/unit/contract/spatial.test.js +0 -110
  384. package/tests/unit/contract/subscriptions.test.js +0 -128
  385. package/tests/unit/contract/utils.test.js +0 -159
  386. package/tests/unit/core.test.js +0 -152
  387. package/tests/unit/crypto.test.js +0 -328
  388. package/tests/unit/federation.test.js +0 -234
  389. package/tests/unit/gun-async.test.js +0 -252
  390. package/tests/unit/hierarchical.test.js +0 -399
  391. package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
  392. package/tests/unit/integration/scenario-02-federation.test.js +0 -76
  393. package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
  394. package/tests/unit/integration/scenario-04-validation.test.js +0 -129
  395. package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
  396. package/tests/unit/integration/scenario-06-social.test.js +0 -135
  397. package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
  398. package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
  399. package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
  400. package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
  401. package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
  402. package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
  403. package/tests/unit/performance/benchmark.test.js +0 -85
  404. package/tests/unit/schema.test.js +0 -213
  405. package/tests/unit/spatial.test.js +0 -158
  406. package/tests/unit/storage.test.js +0 -195
  407. package/tests/unit/subscriptions.test.js +0 -328
  408. package/tests/unit/test-data-permanence-debug.js +0 -197
  409. package/tests/unit/test-data-permanence.js +0 -340
  410. package/tests/unit/test-key-persistence-fixed.js +0 -148
  411. package/tests/unit/test-key-persistence.js +0 -172
  412. package/tests/unit/test-relay-permanence.js +0 -376
  413. package/tests/unit/test-second-node.js +0 -95
  414. package/tests/unit/test-simple-write.js +0 -89
  415. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  416. /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
- });