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,198 +0,0 @@
1
- import { describe, it, expect, beforeEach } from 'vitest';
2
- import HoloSphere from '../../../src/index.js';
3
-
4
- describe('Contract: Cryptographic Operations', () => {
5
- let hs;
6
- let privateKey;
7
- let publicKey;
8
-
9
- beforeEach(async () => {
10
- hs = new HoloSphere({ relays: [], appName: 'test-crypto' });
11
- // Generate valid secp256k1 keys
12
- privateKey = '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef';
13
- publicKey = await hs.getPublicKey(privateKey);
14
- });
15
-
16
- describe('sign()', () => {
17
- it('should sign object content and return hex signature', async () => {
18
- const content = { message: 'Hello, HoloSphere!' };
19
- const signature = await hs.sign(content, privateKey);
20
-
21
- expect(typeof signature).toBe('string');
22
- expect(signature).toMatch(/^[0-9a-f]+$/);
23
- });
24
-
25
- it('should sign string content', async () => {
26
- const content = 'Hello, HoloSphere!';
27
- const signature = await hs.sign(content, privateKey);
28
-
29
- expect(typeof signature).toBe('string');
30
- expect(signature).toMatch(/^[0-9a-f]+$/);
31
- });
32
-
33
- it('should throw Error for invalid private key', async () => {
34
- await expect(
35
- hs.sign({ message: 'Test' }, 'invalid-key')
36
- ).rejects.toThrow(Error);
37
- });
38
-
39
- it('should lazy load crypto module on first call', async () => {
40
- // First call should trigger lazy load
41
- const signature = await hs.sign({ message: 'Test' }, privateKey);
42
- expect(typeof signature).toBe('string');
43
- });
44
- });
45
-
46
- describe('verify()', () => {
47
- it('should return true for valid signature', async () => {
48
- const content = { message: 'Hello, HoloSphere!' };
49
- const signature = await hs.sign(content, privateKey);
50
-
51
- const isValid = await hs.verify(content, signature, publicKey);
52
- expect(isValid).toBe(true);
53
- });
54
-
55
- it('should return false for tampered content', async () => {
56
- const content = { message: 'Hello, HoloSphere!' };
57
- const signature = await hs.sign(content, privateKey);
58
-
59
- const tamperedContent = { message: 'Tampered message' };
60
- const isValid = await hs.verify(tamperedContent, signature, publicKey);
61
- expect(isValid).toBe(false);
62
- });
63
-
64
- it('should return false for invalid signature', async () => {
65
- const content = { message: 'Hello, HoloSphere!' };
66
- const invalidSignature = 'invalid';
67
-
68
- const isValid = await hs.verify(content, invalidSignature, publicKey);
69
- expect(isValid).toBe(false);
70
- });
71
-
72
- it('should return false for wrong public key', async () => {
73
- const content = { message: 'Hello, HoloSphere!' };
74
- const signature = await hs.sign(content, privateKey);
75
-
76
- const wrongPublicKey = '04' + 'fedcba9876543210'.repeat(8);
77
- const isValid = await hs.verify(content, signature, wrongPublicKey);
78
- expect(isValid).toBe(false);
79
- });
80
- });
81
-
82
- describe('issueCapability()', () => {
83
- it('should issue capability token with permissions', async () => {
84
- const token = await hs.issueCapability(
85
- ['read', 'write'],
86
- { holonId: '8928342e20fffff', lensName: 'temperature' },
87
- publicKey
88
- );
89
-
90
- expect(typeof token).toBe('string');
91
- expect(token.length).toBeGreaterThan(0);
92
- });
93
-
94
- it('should accept expiresIn option', async () => {
95
- const token = await hs.issueCapability(
96
- ['read'],
97
- { holonId: '8928342e20fffff', lensName: 'temperature' },
98
- publicKey,
99
- { expiresIn: 86400000 } // 24 hours
100
- );
101
-
102
- expect(typeof token).toBe('string');
103
- });
104
-
105
- it('should accept issuerKey option', async () => {
106
- const token = await hs.issueCapability(
107
- ['delete'],
108
- { holonId: '8928342e20fffff', lensName: 'temperature' },
109
- publicKey,
110
- { issuerKey: privateKey }
111
- );
112
-
113
- expect(typeof token).toBe('string');
114
- });
115
-
116
- it('should throw Error for invalid issuer key', async () => {
117
- await expect(
118
- hs.issueCapability(
119
- ['read'],
120
- { holonId: '8928342e20fffff', lensName: 'temperature' },
121
- publicKey,
122
- { issuerKey: 'invalid-key' }
123
- )
124
- ).rejects.toThrow(Error);
125
- });
126
-
127
- it('should support multiple permissions', async () => {
128
- const token = await hs.issueCapability(
129
- ['read', 'write', 'delete'],
130
- { holonId: '8928342e20fffff', lensName: 'temperature' },
131
- publicKey
132
- );
133
-
134
- expect(typeof token).toBe('string');
135
- });
136
- });
137
-
138
- describe('verifyCapability()', () => {
139
- it('should return true for valid token with required permission', async () => {
140
- const token = await hs.issueCapability(
141
- ['read', 'write', 'delete'],
142
- { holonId: '8928342e20fffff', lensName: 'temperature' },
143
- publicKey
144
- );
145
-
146
- const isValid = await hs.verifyCapability(
147
- token,
148
- 'delete',
149
- { holonId: '8928342e20fffff', lensName: 'temperature' }
150
- );
151
-
152
- expect(isValid).toBe(true);
153
- });
154
-
155
- it('should return false for token without required permission', async () => {
156
- const token = await hs.issueCapability(
157
- ['read', 'write'],
158
- { holonId: '8928342e20fffff', lensName: 'temperature' },
159
- publicKey
160
- );
161
-
162
- const isValid = await hs.verifyCapability(
163
- token,
164
- 'delete',
165
- { holonId: '8928342e20fffff', lensName: 'temperature' }
166
- );
167
-
168
- expect(isValid).toBe(false);
169
- });
170
-
171
- it('should return false for expired token', async () => {
172
- const token = await hs.issueCapability(
173
- ['read'],
174
- { holonId: '8928342e20fffff', lensName: 'temperature' },
175
- publicKey,
176
- { expiresIn: -1000 } // Already expired
177
- );
178
-
179
- const isValid = await hs.verifyCapability(
180
- token,
181
- 'read',
182
- { holonId: '8928342e20fffff', lensName: 'temperature' }
183
- );
184
-
185
- expect(isValid).toBe(false);
186
- });
187
-
188
- it('should return false for invalid token format', async () => {
189
- const isValid = await hs.verifyCapability(
190
- 'invalid-token',
191
- 'read',
192
- { holonId: '8928342e20fffff', lensName: 'temperature' }
193
- );
194
-
195
- expect(isValid).toBe(false);
196
- });
197
- });
198
- });
@@ -1,223 +0,0 @@
1
- import { describe, it, expect, beforeEach } from 'vitest';
2
- import HoloSphere from '../../../src/index.js';
3
-
4
- describe('Contract: Data Operations (CRUD)', () => {
5
- let hs;
6
- let testHolonId;
7
-
8
- beforeEach(async () => {
9
- hs = new HoloSphere({ relays: [], appName: 'test-data' });
10
- testHolonId = await hs.toHolon(37.7749, -122.4194, 9);
11
- });
12
-
13
- describe('write()', () => {
14
- it('should write data with explicit ID', async () => {
15
- const success = await hs.write(testHolonId, 'temperature', {
16
- id: 'sensor-001',
17
- value: 72.5,
18
- unit: 'F'
19
- });
20
- expect(success).toBe(true);
21
- });
22
-
23
- it('should write data without ID (auto-generated)', async () => {
24
- const success = await hs.write(testHolonId, 'temperature', {
25
- value: 73.0,
26
- unit: 'F'
27
- });
28
- expect(success).toBe(true);
29
- });
30
-
31
- it('should accept options parameter', async () => {
32
- const success = await hs.write(
33
- testHolonId,
34
- 'temperature',
35
- { id: 'sensor-002', value: 74.0 },
36
- { validate: false, strict: false }
37
- );
38
- expect(success).toBe(true);
39
- });
40
-
41
- it('should throw ValidationError in strict mode with invalid data', async () => {
42
- const schema = {
43
- type: 'object',
44
- properties: {
45
- id: { type: 'string' },
46
- value: { type: 'number' }
47
- },
48
- required: ['id', 'value']
49
- };
50
- await hs.setSchema('temperature', schema, true);
51
- await expect(
52
- hs.write(
53
- testHolonId,
54
- 'temperature',
55
- { id: 'bad', value: 'invalid' },
56
- { strict: true }
57
- )
58
- ).rejects.toThrow('ValidationError');
59
- });
60
-
61
- it('should throw AuthorizationError with invalid capability token', async () => {
62
- await expect(
63
- hs.write(
64
- testHolonId,
65
- 'temperature',
66
- { id: 'sensor-003', value: 75.0 },
67
- { capability: 'invalid-token' }
68
- )
69
- ).rejects.toThrow('AuthorizationError');
70
- });
71
-
72
- it('should throw ValidationError with invalid holonId', async () => {
73
- // Test with invalid holonId to trigger validation error
74
- await expect(
75
- hs.write('', 'temperature', { id: 'x' })
76
- ).rejects.toThrow('ValidationError');
77
- });
78
- });
79
-
80
- describe('read()', () => {
81
- it('should read specific data item by ID', async () => {
82
- await hs.write(testHolonId, 'temperature', {
83
- id: 'sensor-001',
84
- value: 72.5
85
- });
86
-
87
- const data = await hs.read(testHolonId, 'temperature', 'sensor-001');
88
- expect(data).toMatchObject({ id: 'sensor-001', value: 72.5 });
89
- });
90
-
91
- it('should read all items in lens when dataId omitted', async () => {
92
- await hs.write(testHolonId, 'temperature', { id: 'sensor-001', value: 72.5 });
93
- await hs.write(testHolonId, 'temperature', { id: 'sensor-002', value: 73.0 });
94
-
95
- const data = await hs.read(testHolonId, 'temperature');
96
- expect(Array.isArray(data)).toBe(true);
97
- expect(data.length).toBeGreaterThanOrEqual(2);
98
- });
99
-
100
- it('should return null for non-existent data', async () => {
101
- const data = await hs.read(testHolonId, 'temperature', 'nonexistent');
102
- expect(data).toBe(null);
103
- });
104
-
105
- it('should throw Error for invalid holonId', async () => {
106
- await expect(hs.read('', 'temperature')).rejects.toThrow(Error);
107
- });
108
-
109
- it('should throw Error for invalid lensName', async () => {
110
- await expect(hs.read(testHolonId, '')).rejects.toThrow(Error);
111
- });
112
- });
113
-
114
- describe('update()', () => {
115
- it('should update existing data by merging updates', async () => {
116
- await hs.write(testHolonId, 'temperature', {
117
- id: 'sensor-001',
118
- value: 72.5,
119
- unit: 'F'
120
- });
121
-
122
- const success = await hs.update(
123
- testHolonId,
124
- 'temperature',
125
- 'sensor-001',
126
- { value: 73.0 }
127
- );
128
- expect(success).toBe(true);
129
-
130
- const updated = await hs.read(testHolonId, 'temperature', 'sensor-001');
131
- expect(updated.value).toBe(73.0);
132
- expect(updated.unit).toBe('F'); // Original field preserved
133
- });
134
-
135
- it('should return false for non-existent item', async () => {
136
- const success = await hs.update(
137
- testHolonId,
138
- 'temperature',
139
- 'nonexistent',
140
- { value: 99 }
141
- );
142
- expect(success).toBe(false);
143
- });
144
-
145
- it('should accept options parameter', async () => {
146
- await hs.write(testHolonId, 'temperature', { id: 'sensor-001', value: 72 });
147
-
148
- const success = await hs.update(
149
- testHolonId,
150
- 'temperature',
151
- 'sensor-001',
152
- { value: 73 },
153
- { validate: true, strict: false }
154
- );
155
- expect(success).toBe(true);
156
- });
157
-
158
- it('should throw ValidationError in strict mode', async () => {
159
- const schema = {
160
- type: 'object',
161
- properties: {
162
- id: { type: 'string' },
163
- value: { type: 'number' }
164
- },
165
- required: ['id', 'value']
166
- };
167
- await hs.setSchema('temperature', schema, true);
168
- await hs.write(testHolonId, 'temperature', { id: 'sensor-001', value: 72 });
169
-
170
- await expect(
171
- hs.update(
172
- testHolonId,
173
- 'temperature',
174
- 'sensor-001',
175
- { value: 'invalid' },
176
- { strict: true }
177
- )
178
- ).rejects.toThrow('ValidationError');
179
- });
180
- });
181
-
182
- describe('delete()', () => {
183
- it('should delete own data without capability token', async () => {
184
- await hs.write(testHolonId, 'temperature', { id: 'sensor-001', value: 72 });
185
-
186
- const success = await hs.delete(testHolonId, 'temperature', 'sensor-001');
187
- expect(success).toBe(true);
188
-
189
- const deleted = await hs.read(testHolonId, 'temperature', 'sensor-001');
190
- expect(deleted).toBe(null);
191
- });
192
-
193
- it('should return false when deleting non-existent data', async () => {
194
- // Deleting non-existent data returns false
195
- const success = await hs.delete(testHolonId, 'temperature', 'others-data');
196
- expect(success).toBe(false);
197
- });
198
-
199
- it('should delete with valid capability token', async () => {
200
- // First create the data to delete
201
- await hs.write(testHolonId, 'temperature', { id: 'sensor-001', value: 72 });
202
-
203
- const token = await hs.issueCapability(
204
- ['delete'],
205
- { holonId: testHolonId, lensName: 'temperature' },
206
- hs.client.publicKey
207
- );
208
-
209
- const success = await hs.delete(
210
- testHolonId,
211
- 'temperature',
212
- 'sensor-001',
213
- { capability: token }
214
- );
215
- expect(success).toBe(true);
216
- });
217
-
218
- it('should return false on delete failure', async () => {
219
- const success = await hs.delete(testHolonId, 'temperature', 'nonexistent');
220
- expect(success).toBe(false);
221
- });
222
- });
223
- });
@@ -1,181 +0,0 @@
1
- import { describe, it, expect, beforeEach } from 'vitest';
2
- import HoloSphere from '../../../src/index.js';
3
-
4
- describe('Contract: Federation Operations', () => {
5
- let hs;
6
- let sourceHolon;
7
- let targetHolon;
8
-
9
- beforeEach(async () => {
10
- hs = new HoloSphere({ relays: [], appName: 'test-federation' });
11
- sourceHolon = await hs.toHolon(37.7749, -122.4194, 9);
12
- targetHolon = await hs.toHolon(37.7749, -122.4194, 7);
13
- });
14
-
15
- describe('federate()', () => {
16
- it('should establish federation between two holons', async () => {
17
- const success = await hs.federate(sourceHolon, targetHolon, 'events');
18
- expect(success).toBe(true);
19
- });
20
-
21
- it('should accept direction option: outbound', async () => {
22
- const success = await hs.federate(
23
- sourceHolon,
24
- targetHolon,
25
- 'events',
26
- { direction: 'outbound' }
27
- );
28
- expect(success).toBe(true);
29
- });
30
-
31
- it('should accept direction option: inbound', async () => {
32
- const success = await hs.federate(
33
- sourceHolon,
34
- targetHolon,
35
- 'events',
36
- { direction: 'inbound' }
37
- );
38
- expect(success).toBe(true);
39
- });
40
-
41
- it('should accept direction option: bidirectional', async () => {
42
- const success = await hs.federate(
43
- sourceHolon,
44
- targetHolon,
45
- 'events',
46
- { direction: 'bidirectional' }
47
- );
48
- expect(success).toBe(true);
49
- });
50
-
51
- it('should accept mode option: reference (default)', async () => {
52
- const success = await hs.federate(
53
- sourceHolon,
54
- targetHolon,
55
- 'events',
56
- { mode: 'reference' }
57
- );
58
- expect(success).toBe(true);
59
- });
60
-
61
- it('should accept mode option: copy', async () => {
62
- const success = await hs.federate(
63
- sourceHolon,
64
- targetHolon,
65
- 'events',
66
- { mode: 'copy' }
67
- );
68
- expect(success).toBe(true);
69
- });
70
-
71
- it('should accept filter function option', async () => {
72
- const success = await hs.federate(
73
- sourceHolon,
74
- targetHolon,
75
- 'events',
76
- { filter: (data) => data.priority === 'high' }
77
- );
78
- expect(success).toBe(true);
79
- });
80
-
81
- it('should throw Error when source equals target', async () => {
82
- await expect(
83
- hs.federate(sourceHolon, sourceHolon, 'events')
84
- ).rejects.toThrow(Error);
85
- });
86
-
87
- it('should succeed even with non-standard holonId', async () => {
88
- // Federation setup writes config data, which succeeds even for non-H3 IDs
89
- const success = await hs.federate('invalid', targetHolon, 'events');
90
- expect(success).toBe(true);
91
- });
92
-
93
- it('should support cross-dimensional federation (geographic to noospheric)', async () => {
94
- const noospheric = 'nostr://topic/climate';
95
- const success = await hs.federate(sourceHolon, noospheric, 'temperature');
96
- expect(success).toBe(true);
97
- });
98
- });
99
-
100
- describe('getFederatedData()', () => {
101
- it('should return combined local and federated data', async () => {
102
- await hs.write(sourceHolon, 'events', { id: 'local-1', name: 'Local Event' });
103
- await hs.federate(sourceHolon, targetHolon, 'events');
104
-
105
- const data = await hs.getFederatedData(targetHolon, 'events');
106
- expect(Array.isArray(data)).toBe(true);
107
- expect(data.length).toBeGreaterThanOrEqual(1);
108
- });
109
-
110
- it('should accept resolveHolograms option (default: true)', async () => {
111
- await hs.federate(sourceHolon, targetHolon, 'events');
112
-
113
- const data = await hs.getFederatedData(
114
- targetHolon,
115
- 'events',
116
- { resolveHolograms: true }
117
- );
118
- expect(Array.isArray(data)).toBe(true);
119
- });
120
-
121
- it('should accept deduplicate option (default: true)', async () => {
122
- await hs.federate(sourceHolon, targetHolon, 'events');
123
-
124
- const data = await hs.getFederatedData(
125
- targetHolon,
126
- 'events',
127
- { deduplicate: true }
128
- );
129
- expect(Array.isArray(data)).toBe(true);
130
- });
131
-
132
- it('should return empty array if no data exists', async () => {
133
- const data = await hs.getFederatedData(targetHolon, 'nonexistent');
134
- expect(data).toEqual([]);
135
- });
136
-
137
- it('should include _meta field with source holon for federated data', async () => {
138
- await hs.write(sourceHolon, 'events', { id: 'event-1', name: 'Test' });
139
- await hs.federate(sourceHolon, targetHolon, 'events');
140
-
141
- const data = await hs.getFederatedData(targetHolon, 'events');
142
- const federatedItem = data.find(item => item._meta);
143
-
144
- if (federatedItem) {
145
- expect(federatedItem._meta).toHaveProperty('source');
146
- }
147
- });
148
-
149
- it('should return local-only data for non-federated holon', async () => {
150
- await hs.write(sourceHolon, 'events', { id: 'local-1', name: 'Local' });
151
-
152
- const data = await hs.getFederatedData(sourceHolon, 'events');
153
- expect(Array.isArray(data)).toBe(true);
154
- });
155
- });
156
-
157
- describe('unfederate()', () => {
158
- it('should remove federation relationship', async () => {
159
- await hs.federate(sourceHolon, targetHolon, 'events');
160
-
161
- const success = await hs.unfederate(sourceHolon, targetHolon, 'events');
162
- expect(success).toBe(true);
163
- });
164
-
165
- it('should be idempotent (no error if not federated)', async () => {
166
- const success = await hs.unfederate(sourceHolon, targetHolon, 'events');
167
- expect(success).toBe(true);
168
- });
169
-
170
- it('should keep existing holograms after unfederate', async () => {
171
- await hs.write(sourceHolon, 'events', { id: 'event-1', name: 'Test' });
172
- await hs.federate(sourceHolon, targetHolon, 'events');
173
- await hs.unfederate(sourceHolon, targetHolon, 'events');
174
-
175
- // Unfederate removes federation config but doesn't delete already-propagated holograms
176
- const data = await hs.getFederatedData(targetHolon, 'events');
177
- const hasFederatedData = data.some(item => item._meta?.source === sourceHolon);
178
- expect(hasFederatedData).toBe(true); // Holograms remain
179
- });
180
- });
181
- });