holosphere 2.0.0-alpha0 → 2.0.0-alpha10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/FEATURES.md +431 -0
  3. package/LICENSE +29 -42
  4. package/LICENSE-AGPL.md +180 -0
  5. package/README.md +97 -16
  6. package/dist/2019-D2OG2idw.js +6680 -0
  7. package/dist/2019-D2OG2idw.js.map +1 -0
  8. package/dist/2019-EION3wKo.cjs +8 -0
  9. package/dist/2019-EION3wKo.cjs.map +1 -0
  10. package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
  11. package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
  12. package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
  13. package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
  14. package/dist/browser-BSniCNqO.js +3058 -0
  15. package/dist/browser-BSniCNqO.js.map +1 -0
  16. package/dist/browser-Cq59Ij19.cjs +2 -0
  17. package/dist/browser-Cq59Ij19.cjs.map +1 -0
  18. package/dist/cdn/holosphere.min.js +55 -0
  19. package/dist/cdn/holosphere.min.js.map +1 -0
  20. package/dist/cjs/holosphere.cjs +2 -0
  21. package/dist/cjs/holosphere.cjs.map +1 -0
  22. package/dist/esm/holosphere.js +53 -0
  23. package/dist/esm/holosphere.js.map +1 -0
  24. package/dist/index-DDGt_V9o.cjs +12 -0
  25. package/dist/index-DDGt_V9o.cjs.map +1 -0
  26. package/dist/index-DJXftyvB.js +39841 -0
  27. package/dist/index-DJXftyvB.js.map +1 -0
  28. package/dist/index-DMbdcMtK.cjs +18 -0
  29. package/dist/index-DMbdcMtK.cjs.map +1 -0
  30. package/dist/index-DeZ1xz_s.js +15104 -0
  31. package/dist/index-DeZ1xz_s.js.map +1 -0
  32. package/dist/indexeddb-storage-BFt6hMeF.js +176 -0
  33. package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
  34. package/dist/indexeddb-storage-BK5tv4Sh.cjs +2 -0
  35. package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
  36. package/dist/memory-storage-C9HuoL2E.js +91 -0
  37. package/dist/memory-storage-C9HuoL2E.js.map +1 -0
  38. package/dist/memory-storage-Dao7jfYG.cjs +2 -0
  39. package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
  40. package/dist/secp256k1-BbKzbLtD.cjs +12 -0
  41. package/dist/secp256k1-BbKzbLtD.cjs.map +1 -0
  42. package/dist/secp256k1-CreY7Pcl.js +1890 -0
  43. package/dist/secp256k1-CreY7Pcl.js.map +1 -0
  44. package/docs/CONTRACTS.md +797 -0
  45. package/docs/FOSDEM_PROPOSAL.md +388 -0
  46. package/docs/LOCALFIRST.md +266 -0
  47. package/docs/api/ai_aggregation.js.html +333 -0
  48. package/docs/api/ai_breakdown.js.html +524 -0
  49. package/docs/api/ai_classifier.js.html +231 -0
  50. package/docs/api/ai_council.js.html +246 -0
  51. package/docs/api/ai_embeddings.js.html +304 -0
  52. package/docs/api/ai_federation-ai.js.html +338 -0
  53. package/docs/api/ai_h3-ai.js.html +970 -0
  54. package/docs/api/ai_index.js.html +124 -0
  55. package/docs/api/ai_json-ops.js.html +241 -0
  56. package/docs/api/ai_llm-service.js.html +239 -0
  57. package/docs/api/ai_nl-query.js.html +236 -0
  58. package/docs/api/ai_relationships.js.html +367 -0
  59. package/docs/api/ai_schema-extractor.js.html +235 -0
  60. package/docs/api/ai_spatial.js.html +307 -0
  61. package/docs/api/ai_tts.js.html +214 -0
  62. package/docs/api/content_social-protocols.js.html +180 -0
  63. package/docs/api/core_holosphere.js.html +757 -0
  64. package/docs/api/crypto_nostr-utils.js.html +306 -0
  65. package/docs/api/crypto_secp256k1.js.html +267 -0
  66. package/docs/api/data/search.json +1 -0
  67. package/docs/api/federation_discovery.js.html +337 -0
  68. package/docs/api/federation_handshake.js.html +478 -0
  69. package/docs/api/federation_hologram.js.html +1053 -0
  70. package/docs/api/federation_registry.js.html +389 -0
  71. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  72. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  73. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  74. package/docs/api/global.html +3 -0
  75. package/docs/api/hierarchical_upcast.js.html +128 -0
  76. package/docs/api/index.html +265 -0
  77. package/docs/api/index.js.html +1868 -0
  78. package/docs/api/lib_ai-methods.js.html +660 -0
  79. package/docs/api/lib_contract-methods.js.html +445 -0
  80. package/docs/api/lib_errors.js.html +56 -0
  81. package/docs/api/lib_federation-methods.js.html +348 -0
  82. package/docs/api/lib_index.js.html +33 -0
  83. package/docs/api/module-ai.html +5 -0
  84. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  85. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  86. package/docs/api/module-ai_aggregation.html +3 -0
  87. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  88. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  89. package/docs/api/module-ai_breakdown.html +3 -0
  90. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  91. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  92. package/docs/api/module-ai_classifier.html +3 -0
  93. package/docs/api/module-ai_council-Council.html +6 -0
  94. package/docs/api/module-ai_council.Council.html +3 -0
  95. package/docs/api/module-ai_council.html +3 -0
  96. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  97. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  98. package/docs/api/module-ai_embeddings.html +3 -0
  99. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  100. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  101. package/docs/api/module-ai_federation-ai.html +3 -0
  102. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  103. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  104. package/docs/api/module-ai_h3-ai.html +3 -0
  105. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  106. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  107. package/docs/api/module-ai_json-ops.html +3 -0
  108. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  109. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  110. package/docs/api/module-ai_llm-service.html +3 -0
  111. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  112. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  113. package/docs/api/module-ai_nl-query.html +3 -0
  114. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  115. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  116. package/docs/api/module-ai_relationships.html +3 -0
  117. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  118. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  119. package/docs/api/module-ai_schema-extractor.html +3 -0
  120. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  121. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  122. package/docs/api/module-ai_spatial.html +3 -0
  123. package/docs/api/module-ai_tts-TTS.html +5 -0
  124. package/docs/api/module-ai_tts.TTS.html +3 -0
  125. package/docs/api/module-ai_tts.html +3 -0
  126. package/docs/api/module-content_social-protocols.html +3 -0
  127. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  128. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  129. package/docs/api/module-core_holosphere.html +3 -0
  130. package/docs/api/module-crypto_nostr-utils.html +3 -0
  131. package/docs/api/module-crypto_secp256k1.html +3 -0
  132. package/docs/api/module-federation_hologram.html +3 -0
  133. package/docs/api/module-hierarchical_upcast.html +3 -0
  134. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  135. package/docs/api/module-holosphere.html +3 -0
  136. package/docs/api/module-lib_ai-methods.html +3 -0
  137. package/docs/api/module-lib_contract-methods.html +3 -0
  138. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  139. package/docs/api/module-lib_errors-ValidationError.html +3 -0
  140. package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
  141. package/docs/api/module-lib_errors.ValidationError.html +3 -0
  142. package/docs/api/module-lib_errors.html +3 -0
  143. package/docs/api/module-lib_federation-methods.html +3 -0
  144. package/docs/api/module-lib_index.html +3 -0
  145. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  146. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  147. package/docs/api/module-schema_validator.html +3 -0
  148. package/docs/api/module-spatial_h3-operations.html +4 -0
  149. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  150. package/docs/api/module-storage_backend-factory.html +3 -0
  151. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  152. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  153. package/docs/api/module-storage_backend-interface.html +3 -0
  154. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  155. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  156. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  157. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  158. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  159. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  160. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  161. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  162. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  163. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  164. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  165. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  166. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  167. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  168. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  169. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  170. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  171. package/docs/api/module-storage_filesystem-storage.html +3 -0
  172. package/docs/api/module-storage_global-tables.html +3 -0
  173. package/docs/api/module-storage_gun-async.html +3 -0
  174. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  175. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  176. package/docs/api/module-storage_gun-auth.html +3 -0
  177. package/docs/api/module-storage_gun-federation.html +3 -0
  178. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  179. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  180. package/docs/api/module-storage_gun-references.html +3 -0
  181. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  182. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  183. package/docs/api/module-storage_gun-schema.html +3 -0
  184. package/docs/api/module-storage_gun-wrapper.html +11 -0
  185. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  186. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  187. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  188. package/docs/api/module-storage_key-storage-simple.html +3 -0
  189. package/docs/api/module-storage_key-storage.html +4 -0
  190. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  191. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  192. package/docs/api/module-storage_memory-storage.html +3 -0
  193. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  194. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  195. package/docs/api/module-storage_migration.html +3 -0
  196. package/docs/api/module-storage_nostr-async.html +18 -0
  197. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  198. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  199. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  200. package/docs/api/module-storage_nostr-client.html +6 -0
  201. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  202. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  203. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  204. package/docs/api/module-storage_outbox-queue.html +3 -0
  205. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  206. package/docs/api/module-storage_persistent-storage.html +4 -0
  207. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  208. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  209. package/docs/api/module-storage_sync-service.html +3 -0
  210. package/docs/api/module-storage_unified-storage.html +3 -0
  211. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  212. package/docs/api/module-subscriptions_manager.html +3 -0
  213. package/docs/api/schema_validator.js.html +113 -0
  214. package/docs/api/scripts/core.js +726 -0
  215. package/docs/api/scripts/core.min.js +23 -0
  216. package/docs/api/scripts/resize.js +90 -0
  217. package/docs/api/scripts/search.js +265 -0
  218. package/docs/api/scripts/search.min.js +6 -0
  219. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  220. package/docs/api/scripts/third-party/fuse.js +9 -0
  221. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  222. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  223. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  224. package/docs/api/scripts/third-party/hljs.js +1 -0
  225. package/docs/api/scripts/third-party/popper.js +5 -0
  226. package/docs/api/scripts/third-party/tippy.js +1 -0
  227. package/docs/api/scripts/third-party/tocbot.js +672 -0
  228. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  229. package/docs/api/spatial_h3-operations.js.html +129 -0
  230. package/docs/api/storage_backend-factory.js.html +133 -0
  231. package/docs/api/storage_backend-interface.js.html +164 -0
  232. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  233. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  234. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  235. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  236. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  237. package/docs/api/storage_filesystem-storage.js.html +207 -0
  238. package/docs/api/storage_global-tables.js.html +116 -0
  239. package/docs/api/storage_gun-async.js.html +344 -0
  240. package/docs/api/storage_gun-auth.js.html +376 -0
  241. package/docs/api/storage_gun-federation.js.html +788 -0
  242. package/docs/api/storage_gun-references.js.html +212 -0
  243. package/docs/api/storage_gun-schema.js.html +309 -0
  244. package/docs/api/storage_gun-wrapper.js.html +645 -0
  245. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  246. package/docs/api/storage_key-storage-simple.js.html +102 -0
  247. package/docs/api/storage_key-storage.js.html +171 -0
  248. package/docs/api/storage_memory-storage.js.html +128 -0
  249. package/docs/api/storage_migration.js.html +354 -0
  250. package/docs/api/storage_nostr-async.js.html +1076 -0
  251. package/docs/api/storage_nostr-client.js.html +1598 -0
  252. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  253. package/docs/api/storage_outbox-queue.js.html +248 -0
  254. package/docs/api/storage_persistent-storage.js.html +160 -0
  255. package/docs/api/storage_sync-service.js.html +201 -0
  256. package/docs/api/storage_unified-storage.js.html +157 -0
  257. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  258. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  259. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  260. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  261. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  262. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  263. package/docs/api/subscriptions_manager.js.html +162 -0
  264. package/docs/contracts/api-interface.md +793 -0
  265. package/docs/data-model.md +476 -0
  266. package/docs/gun-async-usage.md +338 -0
  267. package/docs/plan.md +349 -0
  268. package/docs/quickstart.md +674 -0
  269. package/docs/research.md +362 -0
  270. package/docs/spec.md +244 -0
  271. package/docs/storage-backends.md +326 -0
  272. package/docs/tasks.md +947 -0
  273. package/examples/demo.html +47 -0
  274. package/examples/holosphere-widget.js +1242 -0
  275. package/examples/widget-demo.html +274 -0
  276. package/examples/widget.html +703 -0
  277. package/jsdoc.json +26 -0
  278. package/package.json +25 -7
  279. package/src/ai/aggregation.js +13 -2
  280. package/src/ai/breakdown.js +12 -2
  281. package/src/ai/classifier.js +14 -3
  282. package/src/ai/council.js +22 -7
  283. package/src/ai/embeddings.js +37 -15
  284. package/src/ai/federation-ai.js +13 -2
  285. package/src/ai/h3-ai.js +14 -2
  286. package/src/ai/index.js +16 -7
  287. package/src/ai/json-ops.js +18 -5
  288. package/src/ai/llm-service.js +62 -31
  289. package/src/ai/nl-query.js +12 -2
  290. package/src/ai/relationships.js +13 -2
  291. package/src/ai/schema-extractor.js +24 -10
  292. package/src/ai/spatial.js +13 -2
  293. package/src/ai/tts.js +25 -8
  294. package/src/cdn-entry.js +22 -0
  295. package/src/content/social-protocols.js +34 -25
  296. package/src/contracts/abis/Appreciative.json +1280 -0
  297. package/src/contracts/abis/AppreciativeFactory.json +101 -0
  298. package/src/contracts/abis/Bundle.json +1438 -0
  299. package/src/contracts/abis/BundleFactory.json +106 -0
  300. package/src/contracts/abis/Holon.json +881 -0
  301. package/src/contracts/abis/Holons.json +330 -0
  302. package/src/contracts/abis/Managed.json +1262 -0
  303. package/src/contracts/abis/ManagedFactory.json +149 -0
  304. package/src/contracts/abis/Membrane.json +261 -0
  305. package/src/contracts/abis/Splitter.json +1624 -0
  306. package/src/contracts/abis/SplitterFactory.json +220 -0
  307. package/src/contracts/abis/TestToken.json +321 -0
  308. package/src/contracts/abis/Zoned.json +1461 -0
  309. package/src/contracts/abis/ZonedFactory.json +154 -0
  310. package/src/contracts/chain-manager.js +403 -0
  311. package/src/contracts/deployer.js +500 -0
  312. package/src/contracts/event-listener.js +539 -0
  313. package/src/contracts/holon-contracts.js +359 -0
  314. package/src/contracts/index.js +82 -0
  315. package/src/contracts/networks.js +229 -0
  316. package/src/contracts/operations.js +687 -0
  317. package/src/contracts/queries.js +638 -0
  318. package/src/core/holosphere.js +487 -6
  319. package/src/crypto/nostr-utils.js +303 -0
  320. package/src/crypto/secp256k1.js +7 -2
  321. package/src/federation/handshake.js +475 -0
  322. package/src/federation/hologram.js +117 -3
  323. package/src/hierarchical/upcast.js +40 -25
  324. package/src/index.js +1501 -1909
  325. package/src/lib/ai-methods.js +657 -0
  326. package/src/lib/contract-methods.js +442 -0
  327. package/src/lib/errors.js +53 -0
  328. package/src/lib/federation-methods.js +345 -0
  329. package/src/lib/index.js +30 -0
  330. package/src/schema/validator.js +22 -3
  331. package/src/spatial/h3-operations.js +19 -3
  332. package/src/storage/backend-factory.js +7 -2
  333. package/src/storage/backend-interface.js +21 -2
  334. package/src/storage/backends/activitypub/server.js +25 -3
  335. package/src/storage/backends/activitypub-backend.js +25 -2
  336. package/src/storage/backends/gundb-backend.js +692 -50
  337. package/src/storage/backends/nostr-backend.js +116 -1
  338. package/src/storage/filesystem-storage-browser.js +42 -2
  339. package/src/storage/filesystem-storage.js +72 -5
  340. package/src/storage/global-tables.js +35 -3
  341. package/src/storage/gun-async.js +75 -15
  342. package/src/storage/gun-auth.js +373 -0
  343. package/src/storage/gun-federation.js +785 -0
  344. package/src/storage/gun-references.js +209 -0
  345. package/src/storage/gun-schema.js +306 -0
  346. package/src/storage/gun-wrapper.js +475 -54
  347. package/src/storage/indexeddb-storage.js +112 -13
  348. package/src/storage/key-storage-simple.js +32 -9
  349. package/src/storage/key-storage.js +45 -13
  350. package/src/storage/memory-storage.js +68 -2
  351. package/src/storage/migration.js +20 -7
  352. package/src/storage/nostr-async.js +412 -122
  353. package/src/storage/nostr-client.js +749 -76
  354. package/src/storage/nostr-wrapper.js +6 -2
  355. package/src/storage/outbox-queue.js +55 -18
  356. package/src/storage/persistent-storage.js +62 -14
  357. package/src/storage/sync-service.js +51 -17
  358. package/src/storage/unified-storage.js +154 -0
  359. package/src/subscriptions/manager.js +34 -17
  360. package/types/index.d.ts +133 -0
  361. package/vite.config.cdn.js +60 -0
  362. package/tests/unit/ai/aggregation.test.js +0 -295
  363. package/tests/unit/ai/breakdown.test.js +0 -446
  364. package/tests/unit/ai/classifier.test.js +0 -294
  365. package/tests/unit/ai/council.test.js +0 -262
  366. package/tests/unit/ai/embeddings.test.js +0 -384
  367. package/tests/unit/ai/federation-ai.test.js +0 -344
  368. package/tests/unit/ai/h3-ai.test.js +0 -458
  369. package/tests/unit/ai/index.test.js +0 -304
  370. package/tests/unit/ai/json-ops.test.js +0 -307
  371. package/tests/unit/ai/llm-service.test.js +0 -390
  372. package/tests/unit/ai/nl-query.test.js +0 -383
  373. package/tests/unit/ai/relationships.test.js +0 -311
  374. package/tests/unit/ai/schema-extractor.test.js +0 -384
  375. package/tests/unit/ai/spatial.test.js +0 -279
  376. package/tests/unit/ai/tts.test.js +0 -279
  377. package/tests/unit/content.test.js +0 -332
  378. package/tests/unit/contract/core.test.js +0 -88
  379. package/tests/unit/contract/crypto.test.js +0 -198
  380. package/tests/unit/contract/data.test.js +0 -223
  381. package/tests/unit/contract/federation.test.js +0 -181
  382. package/tests/unit/contract/hierarchical.test.js +0 -113
  383. package/tests/unit/contract/schema.test.js +0 -114
  384. package/tests/unit/contract/social.test.js +0 -217
  385. package/tests/unit/contract/spatial.test.js +0 -110
  386. package/tests/unit/contract/subscriptions.test.js +0 -128
  387. package/tests/unit/contract/utils.test.js +0 -159
  388. package/tests/unit/core.test.js +0 -152
  389. package/tests/unit/crypto.test.js +0 -328
  390. package/tests/unit/federation.test.js +0 -234
  391. package/tests/unit/gun-async.test.js +0 -252
  392. package/tests/unit/hierarchical.test.js +0 -399
  393. package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
  394. package/tests/unit/integration/scenario-02-federation.test.js +0 -76
  395. package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
  396. package/tests/unit/integration/scenario-04-validation.test.js +0 -129
  397. package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
  398. package/tests/unit/integration/scenario-06-social.test.js +0 -135
  399. package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
  400. package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
  401. package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
  402. package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
  403. package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
  404. package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
  405. package/tests/unit/performance/benchmark.test.js +0 -85
  406. package/tests/unit/schema.test.js +0 -213
  407. package/tests/unit/spatial.test.js +0 -158
  408. package/tests/unit/storage.test.js +0 -195
  409. package/tests/unit/subscriptions.test.js +0 -328
  410. package/tests/unit/test-data-permanence-debug.js +0 -197
  411. package/tests/unit/test-data-permanence.js +0 -340
  412. package/tests/unit/test-key-persistence-fixed.js +0 -148
  413. package/tests/unit/test-key-persistence.js +0 -172
  414. package/tests/unit/test-relay-permanence.js +0 -376
  415. package/tests/unit/test-second-node.js +0 -95
  416. package/tests/unit/test-simple-write.js +0 -89
  417. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  418. /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
@@ -1,458 +0,0 @@
1
- import { describe, it, expect, beforeEach, vi } from 'vitest';
2
- import { H3AI } from '../../../src/ai/h3-ai.js';
3
-
4
- // Mock h3-js
5
- vi.mock('h3-js', () => ({
6
- isValidCell: vi.fn().mockReturnValue(true),
7
- getResolution: vi.fn().mockReturnValue(7),
8
- cellToParent: vi.fn().mockReturnValue('parent_cell'),
9
- cellToChildren: vi.fn().mockReturnValue(['child1', 'child2', 'child3']),
10
- gridDisk: vi.fn().mockReturnValue(['center', 'neighbor1', 'neighbor2']),
11
- cellToLatLng: vi.fn().mockReturnValue([41.9028, 12.4964]),
12
- cellToBoundary: vi.fn().mockReturnValue([[0, 0], [0, 1], [1, 1], [1, 0]]),
13
- cellArea: vi.fn().mockReturnValue(5.16)
14
- }));
15
-
16
- describe('Unit: H3AI', () => {
17
- let h3ai;
18
- let mockLLM;
19
- let mockHolosphere;
20
-
21
- beforeEach(async () => {
22
- vi.clearAllMocks();
23
-
24
- mockLLM = {
25
- getJSON: vi.fn()
26
- };
27
-
28
- mockHolosphere = {
29
- getAll: vi.fn().mockResolvedValue([])
30
- };
31
-
32
- h3ai = new H3AI(mockLLM, mockHolosphere);
33
- });
34
-
35
- describe('Constructor', () => {
36
- it('should initialize with LLM service', () => {
37
- const h = new H3AI(mockLLM);
38
- expect(h.llm).toBe(mockLLM);
39
- expect(h.holosphere).toBeNull();
40
- });
41
-
42
- it('should accept optional HoloSphere instance', () => {
43
- expect(h3ai.holosphere).toBe(mockHolosphere);
44
- });
45
- });
46
-
47
- describe('setHoloSphere', () => {
48
- it('should set HoloSphere instance', () => {
49
- const h = new H3AI(mockLLM);
50
- h.setHoloSphere(mockHolosphere);
51
- expect(h.holosphere).toBe(mockHolosphere);
52
- });
53
- });
54
-
55
- describe('suggestResolution', () => {
56
- it('should suggest optimal H3 resolution', async () => {
57
- mockLLM.getJSON.mockResolvedValue({
58
- recommendedResolution: 8,
59
- reasoning: 'Project scope covers neighborhood area',
60
- alternativeResolutions: [
61
- { resolution: 7, useCase: 'Broader community' },
62
- { resolution: 9, useCase: 'More focused blocks' }
63
- ],
64
- geographicScope: '~1 km area',
65
- scaleSuggestions: {
66
- expansion: { resolution: 6, reason: 'Regional collaboration' },
67
- contraction: { resolution: 9, reason: 'Local focus' }
68
- }
69
- });
70
-
71
- const item = { title: 'Neighborhood Garden Project', scope: 'local' };
72
- const result = await h3ai.suggestResolution(item);
73
-
74
- expect(result.recommendedResolution).toBe(8);
75
- expect(result.reasoning).toBeDefined();
76
- expect(result.alternativeResolutions).toHaveLength(2);
77
- });
78
-
79
- it('should include current resolution in prompt when provided', async () => {
80
- mockLLM.getJSON.mockResolvedValue({ recommendedResolution: 7 });
81
-
82
- await h3ai.suggestResolution({ title: 'Project' }, { currentResolution: 5 });
83
-
84
- const call = mockLLM.getJSON.mock.calls[0];
85
- expect(call[0]).toContain('Current resolution: 5');
86
- });
87
-
88
- it('should include context when provided', async () => {
89
- mockLLM.getJSON.mockResolvedValue({ recommendedResolution: 7 });
90
-
91
- await h3ai.suggestResolution({ title: 'Project' }, { context: { similarProjects: 10 } });
92
-
93
- const call = mockLLM.getJSON.mock.calls[0];
94
- expect(call[0]).toContain('similarProjects');
95
- });
96
- });
97
-
98
- describe('analyzeDistribution', () => {
99
- it('should analyze data distribution across H3 cells', async () => {
100
- mockHolosphere.getAll
101
- .mockResolvedValueOnce([{ id: 1 }, { id: 2 }]) // parent
102
- .mockResolvedValueOnce([{ id: 3 }]) // child1
103
- .mockResolvedValueOnce([]) // child2
104
- .mockResolvedValueOnce([{ id: 4 }]); // child3
105
-
106
- mockLLM.getJSON.mockResolvedValue({
107
- distribution: { pattern: 'clustered', density: 'medium', coverage: 0.6 },
108
- hotspots: [{ holonId: 'child1', reason: 'Most activity' }],
109
- gaps: [{ description: 'Child2 area', suggestedAction: 'Outreach' }],
110
- clusters: [{ theme: 'Active areas', holons: ['child1', 'child3'] }],
111
- recommendations: ['Expand to child2'],
112
- summary: 'Moderate distribution with gaps'
113
- });
114
-
115
- const result = await h3ai.analyzeDistribution('holon1', 'projects');
116
-
117
- expect(result.holonId).toBe('holon1');
118
- expect(result.parentDataCount).toBe(2);
119
- expect(result.analysis.distribution.pattern).toBe('clustered');
120
- });
121
-
122
- it('should throw error if HoloSphere not available', async () => {
123
- const h = new H3AI(mockLLM);
124
-
125
- await expect(h.analyzeDistribution('holon', 'lens'))
126
- .rejects.toThrow('HoloSphere instance required');
127
- });
128
-
129
- it('should skip children analysis when includeChildren is false', async () => {
130
- mockHolosphere.getAll.mockResolvedValue([{ id: 1 }]);
131
- mockLLM.getJSON.mockResolvedValue({ distribution: {} });
132
-
133
- await h3ai.analyzeDistribution('holon1', 'lens', { includeChildren: false });
134
-
135
- expect(mockHolosphere.getAll).toHaveBeenCalledTimes(1);
136
- });
137
- });
138
-
139
- describe('findNeighborRelevance', () => {
140
- it('should find relevant data from neighboring cells', async () => {
141
- mockHolosphere.getAll
142
- .mockResolvedValueOnce([{ id: 1, title: 'Center item' }])
143
- .mockResolvedValueOnce([{ id: 2, title: 'Neighbor item' }])
144
- .mockResolvedValueOnce([]);
145
-
146
- mockLLM.getJSON.mockResolvedValue({
147
- relevantNeighbors: [
148
- {
149
- holonId: 'neighbor1',
150
- relevanceScore: 0.8,
151
- relevantItems: [{ id: 2, reason: 'Similar topic' }],
152
- collaborationPotential: 'High potential for collaboration'
153
- }
154
- ],
155
- crossBoundaryOpportunities: [
156
- { description: 'Joint project', involvedHolons: ['center', 'neighbor1'] }
157
- ],
158
- geographicPatterns: ['Activity cluster'],
159
- summary: 'Strong neighbor relevance'
160
- });
161
-
162
- const result = await h3ai.findNeighborRelevance('center', 'projects');
163
-
164
- expect(result.holonId).toBe('center');
165
- expect(result.analysis.relevantNeighbors).toHaveLength(1);
166
- });
167
-
168
- it('should throw error if HoloSphere not available', async () => {
169
- const h = new H3AI(mockLLM);
170
-
171
- await expect(h.findNeighborRelevance('holon', 'lens'))
172
- .rejects.toThrow('HoloSphere instance required');
173
- });
174
-
175
- it('should filter by relevance threshold', async () => {
176
- mockHolosphere.getAll.mockResolvedValue([{ id: 1 }]);
177
-
178
- mockLLM.getJSON.mockResolvedValue({
179
- relevantNeighbors: [
180
- { holonId: 'n1', relevanceScore: 0.9 },
181
- { holonId: 'n2', relevanceScore: 0.3 }
182
- ]
183
- });
184
-
185
- const result = await h3ai.findNeighborRelevance('center', 'lens', { relevanceThreshold: 0.5 });
186
-
187
- expect(result.analysis.relevantNeighbors).toHaveLength(1);
188
- });
189
-
190
- it('should return empty if no neighbor data', async () => {
191
- mockHolosphere.getAll.mockResolvedValue([{ id: 1 }]);
192
-
193
- // Center has data, neighbors don't
194
- mockHolosphere.getAll
195
- .mockResolvedValueOnce([{ id: 1 }])
196
- .mockResolvedValue([]);
197
-
198
- const result = await h3ai.findNeighborRelevance('center', 'lens');
199
-
200
- expect(result.neighbors).toEqual([]);
201
- });
202
- });
203
-
204
- describe('suggestGeographicScope', () => {
205
- it('should suggest expansion or contraction', async () => {
206
- mockHolosphere.getAll
207
- .mockResolvedValueOnce([{ id: 1 }]) // parent
208
- .mockResolvedValueOnce([{ id: 2 }]); // child
209
-
210
- mockLLM.getJSON.mockResolvedValue({
211
- currentScopeAssessment: { appropriate: false, reasoning: 'Too narrow' },
212
- expansionRecommendation: {
213
- recommended: true,
214
- targetResolution: 6,
215
- reasoning: 'Project has regional impact',
216
- benefits: ['More visibility'],
217
- risks: ['Diluted focus']
218
- },
219
- contractionRecommendation: {
220
- recommended: false,
221
- targetResolution: 8,
222
- reasoning: 'Already focused',
223
- benefits: [],
224
- risks: []
225
- },
226
- optimalAction: 'expand',
227
- summary: 'Consider expanding scope'
228
- });
229
-
230
- const result = await h3ai.suggestGeographicScope(
231
- { title: 'Regional Project' },
232
- 'current_cell',
233
- 'projects'
234
- );
235
-
236
- expect(result.optimalAction).toBe('expand');
237
- expect(result.expansionRecommendation.recommended).toBe(true);
238
- });
239
-
240
- it('should throw error if HoloSphere not available', async () => {
241
- const h = new H3AI(mockLLM);
242
-
243
- await expect(h.suggestGeographicScope({}, 'cell', 'lens'))
244
- .rejects.toThrow('HoloSphere instance required');
245
- });
246
- });
247
-
248
- describe('analyzeCoverage', () => {
249
- it('should analyze coverage gaps in region', async () => {
250
- mockHolosphere.getAll
251
- .mockResolvedValueOnce([{ id: 1 }]) // child1
252
- .mockResolvedValueOnce([]) // child2
253
- .mockResolvedValueOnce([{ id: 2 }]); // child3
254
-
255
- mockLLM.getJSON.mockResolvedValue({
256
- coverageScore: 0.67,
257
- coverageQuality: 'moderate',
258
- patterns: { type: 'scattered', description: 'Patchy coverage' },
259
- gaps: { count: 1, significance: 'medium', likelyReasons: ['New area'] },
260
- recommendations: [{ action: 'Outreach', priority: 'high' }],
261
- summary: 'Moderate coverage with gaps'
262
- });
263
-
264
- const result = await h3ai.analyzeCoverage('parent_cell', 'projects');
265
-
266
- expect(result.coverage.ratio).toBeCloseTo(0.67, 1);
267
- expect(result.analysis.coverageQuality).toBe('moderate');
268
- });
269
-
270
- it('should throw error if HoloSphere not available', async () => {
271
- const h = new H3AI(mockLLM);
272
-
273
- await expect(h.analyzeCoverage('cell', 'lens'))
274
- .rejects.toThrow('HoloSphere instance required');
275
- });
276
- });
277
-
278
- describe('crossResolutionInsights', () => {
279
- it('should find patterns across H3 resolutions', async () => {
280
- mockHolosphere.getAll.mockResolvedValue([{ id: 1 }]);
281
-
282
- mockLLM.getJSON.mockResolvedValue({
283
- scalePatterns: [
284
- { pattern: 'Local clustering', visibleAt: [8, 9], significance: 'Community focus' }
285
- ],
286
- themeEvolution: {
287
- localThemes: ['Gardening'],
288
- regionalThemes: ['Food security'],
289
- consistentThemes: ['Sustainability']
290
- },
291
- optimalResolutions: {
292
- forCollaboration: 7,
293
- forResources: 8,
294
- forCommunity: 9,
295
- reasoning: 'Different scales for different needs'
296
- },
297
- insights: ['Multi-scale approach recommended'],
298
- recommendations: ['Focus on resolution 8 for main activities'],
299
- summary: 'Rich multi-scale patterns'
300
- });
301
-
302
- const result = await h3ai.crossResolutionInsights('cell', 'projects');
303
-
304
- expect(result.scalePatterns).toBeDefined();
305
- expect(result.optimalResolutions).toBeDefined();
306
- });
307
-
308
- it('should throw error if HoloSphere not available', async () => {
309
- const h = new H3AI(mockLLM);
310
-
311
- await expect(h.crossResolutionInsights('cell', 'lens'))
312
- .rejects.toThrow('HoloSphere instance required');
313
- });
314
- });
315
-
316
- describe('suggestMigration', () => {
317
- it('should suggest item migration between cells', async () => {
318
- mockHolosphere.getAll
319
- .mockResolvedValueOnce([{ id: 'nearby', title: 'Similar project' }])
320
- .mockResolvedValueOnce([{ id: 'parent', title: 'Parent data' }]);
321
-
322
- mockLLM.getJSON.mockResolvedValue({
323
- currentFit: { score: 0.5, reasoning: 'Marginal fit' },
324
- migrationRecommended: true,
325
- suggestedDestinations: [
326
- {
327
- holonId: 'neighbor1',
328
- fitScore: 0.9,
329
- reasoning: 'Better thematic match',
330
- benefits: ['More visibility'],
331
- drawbacks: ['Smaller community']
332
- }
333
- ],
334
- stayReasons: ['Established presence'],
335
- moveReasons: ['Better fit elsewhere'],
336
- recommendation: 'move',
337
- summary: 'Consider moving to neighbor1'
338
- });
339
-
340
- const result = await h3ai.suggestMigration(
341
- { id: 'item1', title: 'Project' },
342
- 'current_cell',
343
- 'projects'
344
- );
345
-
346
- expect(result.migrationRecommended).toBe(true);
347
- expect(result.recommendation).toBe('move');
348
- });
349
-
350
- it('should throw error if HoloSphere not available', async () => {
351
- const h = new H3AI(mockLLM);
352
-
353
- await expect(h.suggestMigration({}, 'cell', 'lens'))
354
- .rejects.toThrow('HoloSphere instance required');
355
- });
356
- });
357
-
358
- describe('generateGeographicReport', () => {
359
- it('should generate comprehensive geographic report', async () => {
360
- mockHolosphere.getAll
361
- .mockResolvedValueOnce([{ id: 1 }]) // projects
362
- .mockResolvedValueOnce([{ id: 2 }]) // quests
363
- .mockResolvedValueOnce([]); // events
364
-
365
- mockLLM.getJSON.mockResolvedValue({
366
- title: 'Region Report',
367
- executiveSummary: 'Active region with 2 items',
368
- activityOverview: { totalItems: 2, categorySummaries: { projects: '1 project' } },
369
- highlights: [{ title: 'Growth', description: 'Increasing activity', category: 'projects' }],
370
- geographicPatterns: ['Central clustering'],
371
- strengths: ['Active community'],
372
- challenges: ['Limited resources'],
373
- opportunities: ['Expansion potential'],
374
- recommendations: [{ priority: 'high', action: 'Recruit', rationale: 'Grow team' }],
375
- metrics: { activityLevel: 'medium', diversity: 'low', growth: 'growing' }
376
- });
377
-
378
- const result = await h3ai.generateGeographicReport('cell');
379
-
380
- expect(result.holonId).toBe('cell');
381
- expect(result.geoContext).toBeDefined();
382
- expect(result.report.title).toBe('Region Report');
383
- });
384
-
385
- it('should throw error if HoloSphere not available', async () => {
386
- const h = new H3AI(mockLLM);
387
-
388
- await expect(h.generateGeographicReport('cell'))
389
- .rejects.toThrow('HoloSphere instance required');
390
- });
391
- });
392
-
393
- describe('findGeographicClusters', () => {
394
- it('should find thematic clusters in spatial data', async () => {
395
- mockHolosphere.getAll
396
- .mockResolvedValueOnce([{ id: 1, theme: 'A' }])
397
- .mockResolvedValueOnce([{ id: 2, theme: 'A' }])
398
- .mockResolvedValueOnce([{ id: 3, theme: 'B' }]);
399
-
400
- mockLLM.getJSON.mockResolvedValue({
401
- clusters: [
402
- { name: 'Theme A cluster', theme: 'A', cells: ['child1', 'child2'], strength: 0.9 }
403
- ],
404
- isolatedCells: [{ cellId: 'child3', uniqueAspect: 'Different theme' }],
405
- interClusterConnections: [],
406
- spatialPatterns: ['Eastern concentration'],
407
- recommendations: ['Connect isolated cell']
408
- });
409
-
410
- const result = await h3ai.findGeographicClusters('parent', 'lens');
411
-
412
- expect(result.analysis.clusters).toHaveLength(1);
413
- expect(result.analysis.isolatedCells).toHaveLength(1);
414
- });
415
-
416
- it('should throw error if HoloSphere not available', async () => {
417
- const h = new H3AI(mockLLM);
418
-
419
- await expect(h.findGeographicClusters('cell', 'lens'))
420
- .rejects.toThrow('HoloSphere instance required');
421
- });
422
-
423
- it('should return message if not enough data', async () => {
424
- // Only one child has data (cellToChildren returns 3, we need less than 2 with data)
425
- mockHolosphere.getAll
426
- .mockResolvedValueOnce([{ id: 1 }]) // child1 has data
427
- .mockResolvedValueOnce([]) // child2 empty
428
- .mockResolvedValueOnce([]); // child3 empty
429
-
430
- const result = await h3ai.findGeographicClusters('parent', 'lens');
431
-
432
- expect(result.message).toBe('Not enough data for clustering');
433
- });
434
- });
435
-
436
- describe('analyzeGeographicImpact', () => {
437
- it('should analyze geographic impact of item', async () => {
438
- mockLLM.getJSON.mockResolvedValue({
439
- directImpact: { areaKm2: 5.16, description: 'Immediate neighborhood', affectedPopulation: '~500' },
440
- indirectImpact: { estimatedReach: 20, mechanisms: ['Word of mouth'], neighboringAreas: ['Area B'] },
441
- potentialReach: { ifExpanded: { maxAreaKm2: 50, optimalResolution: 5, limitingFactors: ['Resources'] } },
442
- geographicFactors: { enablers: ['Good transport'], barriers: ['Physical barriers'] },
443
- impactScore: { local: 0.8, regional: 0.4, network: 0.6 },
444
- recommendations: ['Expand to adjacent areas'],
445
- summary: 'Strong local impact with expansion potential'
446
- });
447
-
448
- const result = await h3ai.analyzeGeographicImpact(
449
- { id: 'item1', title: 'Community Project' },
450
- 'cell',
451
- 'projects'
452
- );
453
-
454
- expect(result.directImpact.areaKm2).toBe(5.16);
455
- expect(result.impactScore.local).toBe(0.8);
456
- });
457
- });
458
- });