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,410 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import HoloSphere, { matchScope, createHologram } from '../../../src/index.js';
3
-
4
- describe('Integration: Scenario 11 - Cross-Holosphere Federation', () => {
5
- // Two distinct private keys for two separate holospheres
6
- const privateKeyA = '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef';
7
- const privateKeyB = 'fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210';
8
-
9
- let holosphereA;
10
- let holosphereB;
11
- let publicKeyA;
12
- let publicKeyB;
13
- let testHolon;
14
-
15
- beforeEach(async () => {
16
- // Create two independent holospheres with different private keys and app namespaces
17
- // Different appNames ensure data isolation in local mode
18
- holosphereA = new HoloSphere({
19
- relays: [],
20
- appName: 'scenario-11-A',
21
- privateKey: privateKeyA,
22
- logLevel: 'ERROR'
23
- });
24
-
25
- holosphereB = new HoloSphere({
26
- relays: [],
27
- appName: 'scenario-11-B',
28
- privateKey: privateKeyB,
29
- logLevel: 'ERROR'
30
- });
31
-
32
- // Get public keys
33
- publicKeyA = holosphereA.client.publicKey;
34
- publicKeyB = holosphereB.client.publicKey;
35
-
36
- // Create a test holon (H3 cell)
37
- testHolon = await holosphereA.toHolon(37.7749, -122.4194, 9);
38
- });
39
-
40
- afterEach(async () => {
41
- if (holosphereA?.client?.close) await holosphereA.client.close();
42
- if (holosphereB?.client?.close) await holosphereB.client.close();
43
- });
44
-
45
- describe('Wildcard Scope Matching', () => {
46
- it('should match exact scope', () => {
47
- const tokenScope = { holonId: 'abc', lensName: 'quests' };
48
- const requestedScope = { holonId: 'abc', lensName: 'quests' };
49
- expect(matchScope(tokenScope, requestedScope)).toBe(true);
50
- });
51
-
52
- it('should match wildcard holonId', () => {
53
- const tokenScope = { holonId: '*', lensName: 'quests' };
54
- const requestedScope = { holonId: 'any-holon-id', lensName: 'quests' };
55
- expect(matchScope(tokenScope, requestedScope)).toBe(true);
56
- });
57
-
58
- it('should match wildcard lensName', () => {
59
- const tokenScope = { holonId: 'abc', lensName: '*' };
60
- const requestedScope = { holonId: 'abc', lensName: 'any-lens' };
61
- expect(matchScope(tokenScope, requestedScope)).toBe(true);
62
- });
63
-
64
- it('should match full wildcard scope', () => {
65
- const tokenScope = { holonId: '*', lensName: '*' };
66
- const requestedScope = { holonId: 'any-holon', lensName: 'any-lens' };
67
- expect(matchScope(tokenScope, requestedScope)).toBe(true);
68
- });
69
-
70
- it('should match item-level scope', () => {
71
- const tokenScope = { holonId: 'abc', lensName: 'quests', dataId: 'quest-001' };
72
- const requestedScope = { holonId: 'abc', lensName: 'quests', dataId: 'quest-001' };
73
- expect(matchScope(tokenScope, requestedScope)).toBe(true);
74
- });
75
-
76
- it('should match wildcard dataId', () => {
77
- const tokenScope = { holonId: 'abc', lensName: 'quests', dataId: '*' };
78
- const requestedScope = { holonId: 'abc', lensName: 'quests', dataId: 'any-id' };
79
- expect(matchScope(tokenScope, requestedScope)).toBe(true);
80
- });
81
-
82
- it('should NOT match different holonId', () => {
83
- const tokenScope = { holonId: 'abc', lensName: 'quests' };
84
- const requestedScope = { holonId: 'xyz', lensName: 'quests' };
85
- expect(matchScope(tokenScope, requestedScope)).toBe(false);
86
- });
87
-
88
- it('should NOT match different lensName', () => {
89
- const tokenScope = { holonId: 'abc', lensName: 'quests' };
90
- const requestedScope = { holonId: 'abc', lensName: 'events' };
91
- expect(matchScope(tokenScope, requestedScope)).toBe(false);
92
- });
93
-
94
- it('should NOT match different dataId when specific', () => {
95
- const tokenScope = { holonId: 'abc', lensName: 'quests', dataId: 'quest-001' };
96
- const requestedScope = { holonId: 'abc', lensName: 'quests', dataId: 'quest-002' };
97
- expect(matchScope(tokenScope, requestedScope)).toBe(false);
98
- });
99
- });
100
-
101
- describe('Federation Registry', () => {
102
- it('should add a federated partner', async () => {
103
- await holosphereA.addFederatedHolosphere(publicKeyB, {
104
- alias: 'Partner B'
105
- });
106
-
107
- const partners = await holosphereA.getFederatedHolospheres();
108
- expect(partners).toContain(publicKeyB);
109
- });
110
-
111
- it('should remove a federated partner', async () => {
112
- await holosphereA.addFederatedHolosphere(publicKeyB);
113
- await holosphereA.removeFederatedHolosphere(publicKeyB);
114
-
115
- const partners = await holosphereA.getFederatedHolospheres();
116
- expect(partners).not.toContain(publicKeyB);
117
- });
118
-
119
- it('should store inbound capabilities', async () => {
120
- // A issues capability to B
121
- const capabilityToken = await holosphereA.issueCapability(
122
- ['read'],
123
- { holonId: testHolon, lensName: 'shared' },
124
- publicKeyB,
125
- { issuerKey: privateKeyA }
126
- );
127
-
128
- // B stores the capability they received
129
- await holosphereB.addFederatedHolosphere(publicKeyA);
130
- await holosphereB.storeInboundCapability(publicKeyA, {
131
- token: capabilityToken,
132
- scope: { holonId: testHolon, lensName: 'shared' },
133
- permissions: ['read'],
134
- expires: Date.now() + 3600000
135
- });
136
-
137
- const registry = await holosphereB.getFederationRegistry();
138
- const partner = registry.federatedWith.find(p => p.pubKey === publicKeyA);
139
- expect(partner).toBeDefined();
140
- expect(partner.inboundCapabilities.length).toBeGreaterThan(0);
141
- });
142
- });
143
-
144
- describe('Capability Verification with Wildcards', () => {
145
- it('should verify wildcard capability for any holon', async () => {
146
- // Issue wildcard capability
147
- const token = await holosphereA.issueCapability(
148
- ['read'],
149
- { holonId: '*', lensName: 'events' },
150
- publicKeyB,
151
- { issuerKey: privateKeyA }
152
- );
153
-
154
- // Should be valid for any holon with 'events' lens
155
- const holon1 = await holosphereA.toHolon(40.7128, -74.0060, 9);
156
- const holon2 = await holosphereA.toHolon(51.5074, -0.1278, 9);
157
-
158
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: holon1, lensName: 'events' })).toBe(true);
159
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: holon2, lensName: 'events' })).toBe(true);
160
- // But not for different lens
161
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: holon1, lensName: 'other' })).toBe(false);
162
- });
163
-
164
- it('should verify full wildcard capability for all data', async () => {
165
- const token = await holosphereA.issueCapability(
166
- ['read', 'write'],
167
- { holonId: '*', lensName: '*' },
168
- publicKeyB,
169
- { issuerKey: privateKeyA }
170
- );
171
-
172
- const randomHolon = await holosphereA.toHolon(35.6762, 139.6503, 9);
173
-
174
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: randomHolon, lensName: 'anything' })).toBe(true);
175
- expect(await holosphereA.verifyCapability(token, 'write', { holonId: randomHolon, lensName: 'something-else' })).toBe(true);
176
- });
177
- });
178
-
179
- describe('Cross-Holosphere Hologram Creation', () => {
180
- it('should create a hologram with embedded capability', () => {
181
- const capabilityToken = 'mock-capability-token';
182
-
183
- const hologram = createHologram(
184
- testHolon, // sourceHolon
185
- 'target-holon', // targetHolon
186
- 'quests', // lensName
187
- 'quest-001', // dataId
188
- 'scenario-11', // appname
189
- {
190
- authorPubKey: publicKeyA,
191
- capability: capabilityToken
192
- }
193
- );
194
-
195
- expect(hologram.hologram).toBe(true);
196
- expect(hologram.crossHolosphere).toBe(true);
197
- expect(hologram.target.authorPubKey).toBe(publicKeyA);
198
- expect(hologram.capability).toBe(capabilityToken);
199
- expect(hologram._meta.sourcePubKey).toBe(publicKeyA);
200
- });
201
-
202
- it('should include correct target information', () => {
203
- const hologram = createHologram(
204
- testHolon,
205
- 'target-holon',
206
- 'events',
207
- 'event-001',
208
- 'my-app',
209
- { authorPubKey: publicKeyA }
210
- );
211
-
212
- expect(hologram.target.holonId).toBe(testHolon);
213
- expect(hologram.target.lensName).toBe('events');
214
- expect(hologram.target.dataId).toBe('event-001');
215
- expect(hologram.target.appname).toBe('my-app');
216
- expect(hologram.target.authorPubKey).toBe(publicKeyA);
217
- });
218
- });
219
-
220
- describe('Issue Capability for Federation', () => {
221
- it('should issue capability and track in registry', async () => {
222
- const token = await holosphereA.issueCapabilityForFederation(
223
- publicKeyB,
224
- { holonId: testHolon, lensName: 'shared' },
225
- ['read'],
226
- { expiresIn: 3600000, trackInRegistry: true }
227
- );
228
-
229
- expect(typeof token).toBe('string');
230
-
231
- const registry = await holosphereA.getFederationRegistry();
232
- const partner = registry.federatedWith.find(p => p.pubKey === publicKeyB);
233
- expect(partner).toBeDefined();
234
- expect(partner.outboundCapabilities.length).toBeGreaterThan(0);
235
- });
236
-
237
- it('should issue capability without tracking when disabled', async () => {
238
- const token = await holosphereA.issueCapabilityForFederation(
239
- publicKeyB,
240
- { holonId: testHolon, lensName: 'private' },
241
- ['read'],
242
- { expiresIn: 3600000, trackInRegistry: false }
243
- );
244
-
245
- expect(typeof token).toBe('string');
246
-
247
- // Should still be a valid token
248
- const isValid = await holosphereA.verifyCapability(
249
- token,
250
- 'read',
251
- { holonId: testHolon, lensName: 'private' }
252
- );
253
- expect(isValid).toBe(true);
254
- });
255
- });
256
-
257
- describe('Complete Cross-Holosphere Workflow', () => {
258
- it('should complete manual federation workflow', async () => {
259
- // === PHASE 1: A writes data ===
260
- const secretData = {
261
- id: 'secret-001',
262
- title: 'Secret Quest',
263
- description: 'Only visible with capability',
264
- _creator: publicKeyA
265
- };
266
- await holosphereA.write(testHolon, 'quests', secretData);
267
-
268
- // Verify A can read their own data
269
- const aData = await holosphereA.read(testHolon, 'quests', 'secret-001');
270
- expect(aData).toBeDefined();
271
- expect(aData.title).toBe('Secret Quest');
272
-
273
- // B cannot see A's data (different holosphere)
274
- const bData = await holosphereB.read(testHolon, 'quests', 'secret-001');
275
- expect(bData).toBeNull();
276
-
277
- // === PHASE 2: A issues capability to B ===
278
- const capabilityToken = await holosphereA.issueCapabilityForFederation(
279
- publicKeyB,
280
- { holonId: testHolon, lensName: 'quests' },
281
- ['read'],
282
- { expiresIn: 3600000 }
283
- );
284
-
285
- expect(typeof capabilityToken).toBe('string');
286
-
287
- // === PHASE 3: B stores the capability ===
288
- await holosphereB.addFederatedHolosphere(publicKeyA, {
289
- alias: 'Holosphere A'
290
- });
291
-
292
- await holosphereB.storeInboundCapability(publicKeyA, {
293
- token: capabilityToken,
294
- scope: { holonId: testHolon, lensName: 'quests' },
295
- permissions: ['read'],
296
- expires: Date.now() + 3600000
297
- });
298
-
299
- // === PHASE 4: Verify B has access ===
300
- const isValid = await holosphereB.verifyCapability(
301
- capabilityToken,
302
- 'read',
303
- { holonId: testHolon, lensName: 'quests' }
304
- );
305
- expect(isValid).toBe(true);
306
-
307
- // === PHASE 5: Verify capability is in B's registry ===
308
- const bRegistry = await holosphereB.getFederationRegistry();
309
- const partnerA = bRegistry.federatedWith.find(p => p.pubKey === publicKeyA);
310
- expect(partnerA).toBeDefined();
311
- expect(partnerA.inboundCapabilities.length).toBeGreaterThan(0);
312
- });
313
-
314
- it('should reject operations without valid capability', async () => {
315
- // A writes data
316
- await holosphereA.write(testHolon, 'protected', {
317
- id: 'protected-001',
318
- content: 'This is protected data'
319
- });
320
-
321
- // B adds A as partner but without capability
322
- await holosphereB.addFederatedHolosphere(publicKeyA);
323
-
324
- // B should not be able to read from A (no capability)
325
- await expect(
326
- holosphereB.readFromFederatedSource(publicKeyA, testHolon, 'protected', 'protected-001')
327
- ).rejects.toThrow('No valid capability for federated source');
328
- });
329
-
330
- it('should reject expired capabilities', async () => {
331
- // Issue already expired capability
332
- const expiredToken = await holosphereA.issueCapability(
333
- ['read'],
334
- { holonId: testHolon, lensName: 'temp' },
335
- publicKeyB,
336
- { expiresIn: -1000, issuerKey: privateKeyA } // Already expired
337
- );
338
-
339
- await holosphereB.addFederatedHolosphere(publicKeyA);
340
- await holosphereB.storeInboundCapability(publicKeyA, {
341
- token: expiredToken,
342
- scope: { holonId: testHolon, lensName: 'temp' },
343
- permissions: ['read'],
344
- expires: Date.now() - 1000 // Already expired
345
- });
346
-
347
- // Verification should fail
348
- const isValid = await holosphereB.verifyCapability(
349
- expiredToken,
350
- 'read',
351
- { holonId: testHolon, lensName: 'temp' }
352
- );
353
- expect(isValid).toBe(false);
354
- });
355
- });
356
-
357
- describe('Scope Boundary Enforcement', () => {
358
- it('should enforce holon boundary', async () => {
359
- const holon1 = await holosphereA.toHolon(40.7128, -74.0060, 9);
360
- const holon2 = await holosphereA.toHolon(51.5074, -0.1278, 9);
361
-
362
- // Issue capability only for holon1
363
- const token = await holosphereA.issueCapability(
364
- ['read'],
365
- { holonId: holon1, lensName: 'events' },
366
- publicKeyB,
367
- { issuerKey: privateKeyA }
368
- );
369
-
370
- // Valid for holon1
371
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: holon1, lensName: 'events' })).toBe(true);
372
-
373
- // Invalid for holon2
374
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: holon2, lensName: 'events' })).toBe(false);
375
- });
376
-
377
- it('should enforce lens boundary', async () => {
378
- const token = await holosphereA.issueCapability(
379
- ['read'],
380
- { holonId: testHolon, lensName: 'quests' },
381
- publicKeyB,
382
- { issuerKey: privateKeyA }
383
- );
384
-
385
- // Valid for 'quests' lens
386
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: testHolon, lensName: 'quests' })).toBe(true);
387
-
388
- // Invalid for 'events' lens
389
- expect(await holosphereA.verifyCapability(token, 'read', { holonId: testHolon, lensName: 'events' })).toBe(false);
390
- });
391
-
392
- it('should enforce permission boundary', async () => {
393
- const readOnlyToken = await holosphereA.issueCapability(
394
- ['read'],
395
- { holonId: testHolon, lensName: 'docs' },
396
- publicKeyB,
397
- { issuerKey: privateKeyA }
398
- );
399
-
400
- // Has read permission
401
- expect(await holosphereA.verifyCapability(readOnlyToken, 'read', { holonId: testHolon, lensName: 'docs' })).toBe(true);
402
-
403
- // Does NOT have write permission
404
- expect(await holosphereA.verifyCapability(readOnlyToken, 'write', { holonId: testHolon, lensName: 'docs' })).toBe(false);
405
-
406
- // Does NOT have delete permission
407
- expect(await holosphereA.verifyCapability(readOnlyToken, 'delete', { holonId: testHolon, lensName: 'docs' })).toBe(false);
408
- });
409
- });
410
- });