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
@@ -0,0 +1,209 @@
1
+ /**
2
+ * @fileoverview GunDB Reference Handler.
3
+ *
4
+ * Handles creation and resolution of data references for federation.
5
+ * References use a "soul" pattern: appname/holon/lens/key
6
+ * This allows lightweight propagation without data duplication.
7
+ *
8
+ * @module storage/gun-references
9
+ */
10
+
11
+ import { read } from './gun-wrapper.js';
12
+
13
+ /**
14
+ * Reference handler for GunDB backend.
15
+ *
16
+ * Manages creation, detection, and resolution of data references.
17
+ *
18
+ * @class GunReferenceHandler
19
+ * @example
20
+ * const handler = new GunReferenceHandler('myapp');
21
+ * const ref = handler.createReference('holon1', 'items', { id: '123', name: 'Test' });
22
+ * const resolved = await handler.resolveReference(gun, ref);
23
+ */
24
+ export class GunReferenceHandler {
25
+ /**
26
+ * Create a new reference handler.
27
+ *
28
+ * @param {string} appname - Application namespace
29
+ */
30
+ constructor(appname) {
31
+ this.appname = appname;
32
+ }
33
+
34
+ /**
35
+ * Create a reference to data
36
+ * @param {string} holon - Holon ID
37
+ * @param {string} lens - Lens name
38
+ * @param {Object} data - Data object (must have 'id' field)
39
+ * @returns {Object} Reference object with id and soul
40
+ */
41
+ createReference(holon, lens, data) {
42
+ if (!data || !data.id) {
43
+ throw new Error('createReference: data must have an id field');
44
+ }
45
+ return {
46
+ id: data.id,
47
+ soul: `${this.appname}/${holon}/${lens}/${data.id}`
48
+ };
49
+ }
50
+
51
+ /**
52
+ * Check if data is a reference
53
+ * @param {Object} data - Data to check
54
+ * @returns {boolean} True if data is a reference
55
+ */
56
+ isReference(data) {
57
+ if (!data) return false;
58
+
59
+ // Simple reference format: { id, soul }
60
+ if (data.soul && data.id && Object.keys(data).filter(k => !k.startsWith('_')).length <= 2) {
61
+ return true;
62
+ }
63
+
64
+ // Legacy reference format: { _federation: { isReference: true } }
65
+ if (data._federation && data._federation.isReference) {
66
+ return true;
67
+ }
68
+
69
+ // Gun internal reference format: { _: { "#": "path/to/data" } }
70
+ if (data._ && data._['#']) {
71
+ return true;
72
+ }
73
+
74
+ return false;
75
+ }
76
+
77
+ /**
78
+ * Parse a soul path into its components
79
+ * @param {string} soul - Soul path (appname/holon/lens/key)
80
+ * @returns {Object|null} Parsed components or null if invalid
81
+ */
82
+ parseSoulPath(soul) {
83
+ if (!soul || typeof soul !== 'string') {
84
+ return null;
85
+ }
86
+
87
+ const parts = soul.split('/');
88
+ if (parts.length < 4) {
89
+ return null;
90
+ }
91
+
92
+ return {
93
+ appname: parts[0],
94
+ holon: parts[1],
95
+ lens: parts[2],
96
+ key: parts.slice(3).join('/') // Handle keys with slashes
97
+ };
98
+ }
99
+
100
+ /**
101
+ * Resolve a reference to get the actual data
102
+ * @param {Object} gun - Gun instance
103
+ * @param {Object} reference - Reference object
104
+ * @param {Object} options - Resolution options
105
+ * @param {boolean} options.followReferences - Whether to recursively resolve nested references (default: true)
106
+ * @returns {Promise<Object|null>} Resolved data or null if not found
107
+ */
108
+ async resolveReference(gun, reference, options = {}) {
109
+ const { followReferences = true } = options;
110
+
111
+ if (!reference) {
112
+ return null;
113
+ }
114
+
115
+ let soul = null;
116
+ let originInfo = null;
117
+
118
+ // Handle simple reference format { id, soul }
119
+ if (reference.soul) {
120
+ soul = reference.soul;
121
+ }
122
+ // Handle legacy reference format { _federation: { isReference: true, origin, lens } }
123
+ else if (reference._federation && reference._federation.isReference) {
124
+ const fed = reference._federation;
125
+ if (fed.origin && fed.lens && reference.id) {
126
+ soul = `${this.appname}/${fed.origin}/${fed.lens}/${reference.id}`;
127
+ originInfo = fed;
128
+ }
129
+ }
130
+ // Handle Gun internal reference format { _: { "#": "path/to/data" } }
131
+ else if (reference._ && reference._['#']) {
132
+ soul = reference._['#'];
133
+ }
134
+
135
+ if (!soul) {
136
+ return null;
137
+ }
138
+
139
+ // Parse soul to get path components
140
+ const parsed = this.parseSoulPath(soul);
141
+ if (!parsed) {
142
+ return null;
143
+ }
144
+
145
+ try {
146
+ // Build path and read data
147
+ const path = `${parsed.appname}/${parsed.holon}/${parsed.lens}/${parsed.key}`;
148
+ const data = await read(gun, path);
149
+
150
+ if (!data) {
151
+ return null;
152
+ }
153
+
154
+ // Check if resolved data is also a reference and we should follow
155
+ if (followReferences && this.isReference(data)) {
156
+ const nested = await this.resolveReference(gun, data, { followReferences: true });
157
+ if (nested) {
158
+ return {
159
+ ...nested,
160
+ _federation: {
161
+ resolved: true,
162
+ soul: soul,
163
+ origin: parsed.holon,
164
+ lens: parsed.lens,
165
+ timestamp: Date.now()
166
+ }
167
+ };
168
+ }
169
+ }
170
+
171
+ // Add federation metadata to resolved data
172
+ return {
173
+ ...data,
174
+ _federation: {
175
+ resolved: true,
176
+ soul: soul,
177
+ origin: originInfo?.origin || parsed.holon,
178
+ lens: originInfo?.lens || parsed.lens,
179
+ timestamp: Date.now()
180
+ }
181
+ };
182
+ } catch (error) {
183
+ console.warn('Error resolving reference:', error);
184
+ return null;
185
+ }
186
+ }
187
+
188
+ /**
189
+ * Get the soul path for data
190
+ * @param {string} holon - Holon ID
191
+ * @param {string} lens - Lens name
192
+ * @param {string} key - Data key
193
+ * @returns {string} Soul path
194
+ */
195
+ getSoul(holon, lens, key) {
196
+ return `${this.appname}/${holon}/${lens}/${key}`;
197
+ }
198
+ }
199
+
200
+ /**
201
+ * Create a reference handler instance
202
+ * @param {string} appname - Application namespace
203
+ * @returns {GunReferenceHandler} Reference handler instance
204
+ */
205
+ export function createReferenceHandler(appname) {
206
+ return new GunReferenceHandler(appname);
207
+ }
208
+
209
+ export default GunReferenceHandler;
@@ -0,0 +1,306 @@
1
+ /**
2
+ * @fileoverview GunDB Schema Validator.
3
+ *
4
+ * Handles JSON Schema validation for data stored in GunDB.
5
+ * Schemas are stored in the global 'schemas' table.
6
+ * Validation uses AJV (Another JSON Schema Validator) with JSON Schema 2019.
7
+ *
8
+ * @module storage/gun-schema
9
+ */
10
+
11
+ import { writeGlobal, readGlobal, readAllGlobal, deleteGlobal } from './gun-wrapper.js';
12
+
13
+ /**
14
+ * Default meta-schema for validating schema definitions.
15
+ * @private
16
+ * @constant {Object}
17
+ */
18
+ const META_SCHEMA = {
19
+ type: 'object',
20
+ required: ['type'],
21
+ properties: {
22
+ $schema: { type: 'string' },
23
+ $id: { type: 'string' },
24
+ type: { type: 'string' },
25
+ properties: { type: 'object' },
26
+ required: { type: 'array', items: { type: 'string' } },
27
+ additionalProperties: { type: 'boolean' }
28
+ }
29
+ };
30
+
31
+ /**
32
+ * Schema validator for GunDB backend.
33
+ *
34
+ * Provides JSON Schema validation with caching and lazy-loaded AJV.
35
+ *
36
+ * @class GunSchemaValidator
37
+ * @example
38
+ * const validator = new GunSchemaValidator({ strict: true });
39
+ * await validator.init();
40
+ * await validator.setSchema(gun, 'myapp', 'user', { type: 'object', properties: { name: { type: 'string' } } });
41
+ */
42
+ export class GunSchemaValidator {
43
+ /**
44
+ * Create a new schema validator.
45
+ *
46
+ * @param {Object} [options={}] - Validator options
47
+ * @param {boolean} [options.strict=false] - Whether to enforce strict validation
48
+ * @param {number} [options.cacheMaxAge=3600000] - Schema cache TTL in ms (1 hour)
49
+ */
50
+ constructor(options = {}) {
51
+ this.strict = options.strict || false;
52
+ this.cacheMaxAge = options.cacheMaxAge || 3600000; // 1 hour
53
+ this.schemaCache = new Map();
54
+ this.validator = null;
55
+ this.Ajv = null;
56
+ }
57
+
58
+ /**
59
+ * Initialize the validator (lazy load AJV)
60
+ * @returns {Promise<boolean>} True if initialized successfully
61
+ */
62
+ async init() {
63
+ if (this.validator) {
64
+ return true;
65
+ }
66
+
67
+ try {
68
+ // Dynamically import AJV to avoid requiring it if not needed
69
+ const AjvModule = await import('ajv/dist/2019.js');
70
+ this.Ajv = AjvModule.default || AjvModule;
71
+
72
+ this.validator = new this.Ajv({
73
+ allErrors: true,
74
+ strict: false,
75
+ validateSchema: true
76
+ });
77
+
78
+ return true;
79
+ } catch (error) {
80
+ console.warn('AJV not available, schema validation disabled:', error.message);
81
+ return false;
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Set a schema for a lens
87
+ * @param {Object} gun - Gun instance
88
+ * @param {string} appname - Application namespace
89
+ * @param {string} lens - Lens name
90
+ * @param {Object} schema - JSON Schema definition
91
+ * @returns {Promise<boolean>} Success indicator
92
+ */
93
+ async setSchema(gun, appname, lens, schema) {
94
+ if (!schema || typeof schema !== 'object') {
95
+ throw new Error('setSchema: schema must be an object');
96
+ }
97
+
98
+ // Validate the schema against meta-schema
99
+ if (this.strict && this.validator) {
100
+ const isValid = this.validateSchema(META_SCHEMA, schema);
101
+ if (!isValid) {
102
+ throw new Error('setSchema: Invalid schema definition');
103
+ }
104
+ }
105
+
106
+ // Store schema in global 'schemas' table
107
+ const schemaRecord = {
108
+ id: lens,
109
+ lens: lens,
110
+ schema: schema,
111
+ timestamp: Date.now()
112
+ };
113
+
114
+ await writeGlobal(gun, appname, 'schemas', schemaRecord);
115
+
116
+ // Update cache
117
+ this.schemaCache.set(lens, {
118
+ schema: schema,
119
+ timestamp: Date.now()
120
+ });
121
+
122
+ return true;
123
+ }
124
+
125
+ /**
126
+ * Get a schema for a lens
127
+ * @param {Object} gun - Gun instance
128
+ * @param {string} appname - Application namespace
129
+ * @param {string} lens - Lens name
130
+ * @param {Object} options - Options
131
+ * @param {boolean} options.useCache - Whether to use cache (default: true)
132
+ * @returns {Promise<Object|null>} Schema or null if not found
133
+ */
134
+ async getSchema(gun, appname, lens, options = {}) {
135
+ const { useCache = true } = options;
136
+
137
+ // Check cache first
138
+ if (useCache) {
139
+ const cached = this.schemaCache.get(lens);
140
+ if (cached && (Date.now() - cached.timestamp) < this.cacheMaxAge) {
141
+ return cached.schema;
142
+ }
143
+ }
144
+
145
+ // Fetch from storage
146
+ const schemaRecord = await readGlobal(gun, appname, 'schemas', lens);
147
+
148
+ if (schemaRecord && schemaRecord.schema) {
149
+ // Update cache
150
+ this.schemaCache.set(lens, {
151
+ schema: schemaRecord.schema,
152
+ timestamp: Date.now()
153
+ });
154
+ return schemaRecord.schema;
155
+ }
156
+
157
+ return null;
158
+ }
159
+
160
+ /**
161
+ * Get all schemas
162
+ * @param {Object} gun - Gun instance
163
+ * @param {string} appname - Application namespace
164
+ * @returns {Promise<Object[]>} Array of schema records
165
+ */
166
+ async getAllSchemas(gun, appname) {
167
+ return readAllGlobal(gun, appname, 'schemas');
168
+ }
169
+
170
+ /**
171
+ * Delete a schema
172
+ * @param {Object} gun - Gun instance
173
+ * @param {string} appname - Application namespace
174
+ * @param {string} lens - Lens name
175
+ * @returns {Promise<boolean>} Success indicator
176
+ */
177
+ async deleteSchema(gun, appname, lens) {
178
+ // Remove from cache
179
+ this.schemaCache.delete(lens);
180
+
181
+ // Delete from storage
182
+ return deleteGlobal(gun, appname, 'schemas', lens);
183
+ }
184
+
185
+ /**
186
+ * Validate data against a schema
187
+ * @param {Object} schema - JSON Schema definition
188
+ * @param {Object} data - Data to validate
189
+ * @returns {Object} Validation result { valid: boolean, errors: Array }
190
+ */
191
+ validate(schema, data) {
192
+ if (!this.validator) {
193
+ // If validator not available, skip validation
194
+ return { valid: true, errors: [] };
195
+ }
196
+
197
+ try {
198
+ const validate = this.validator.compile(schema);
199
+ const valid = validate(data);
200
+
201
+ return {
202
+ valid: valid,
203
+ errors: valid ? [] : this.formatErrors(validate.errors)
204
+ };
205
+ } catch (error) {
206
+ return {
207
+ valid: false,
208
+ errors: [{ message: error.message, path: '' }]
209
+ };
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Validate data against a lens schema (fetch schema from storage)
215
+ * @param {Object} gun - Gun instance
216
+ * @param {string} appname - Application namespace
217
+ * @param {string} lens - Lens name
218
+ * @param {Object} data - Data to validate
219
+ * @returns {Promise<Object>} Validation result { valid: boolean, errors: Array }
220
+ */
221
+ async validateData(gun, appname, lens, data) {
222
+ const schema = await this.getSchema(gun, appname, lens);
223
+
224
+ if (!schema) {
225
+ // No schema defined, validation passes
226
+ return { valid: true, errors: [] };
227
+ }
228
+
229
+ return this.validate(schema, data);
230
+ }
231
+
232
+ /**
233
+ * Validate a schema definition against meta-schema
234
+ * @param {Object} metaSchema - Meta schema to validate against
235
+ * @param {Object} schema - Schema to validate
236
+ * @returns {boolean} True if valid
237
+ */
238
+ validateSchema(metaSchema, schema) {
239
+ if (!this.validator) {
240
+ return true;
241
+ }
242
+
243
+ try {
244
+ const validate = this.validator.compile(metaSchema);
245
+ return validate(schema);
246
+ } catch (error) {
247
+ return false;
248
+ }
249
+ }
250
+
251
+ /**
252
+ * Format validation errors into a consistent structure
253
+ * @private
254
+ * @param {Array} errors - AJV error objects
255
+ * @returns {Array} Formatted errors
256
+ */
257
+ formatErrors(errors) {
258
+ if (!errors) return [];
259
+
260
+ return errors.map(err => ({
261
+ message: err.message || 'Validation error',
262
+ path: err.instancePath || err.dataPath || '',
263
+ keyword: err.keyword,
264
+ params: err.params
265
+ }));
266
+ }
267
+
268
+ /**
269
+ * Clear the schema cache
270
+ * @param {string} lens - Specific lens to clear, or null for all
271
+ */
272
+ clearCache(lens = null) {
273
+ if (lens) {
274
+ this.schemaCache.delete(lens);
275
+ } else {
276
+ this.schemaCache.clear();
277
+ }
278
+ }
279
+
280
+ /**
281
+ * Check if strict mode is enabled
282
+ * @returns {boolean} True if strict mode enabled
283
+ */
284
+ isStrict() {
285
+ return this.strict;
286
+ }
287
+
288
+ /**
289
+ * Enable or disable strict mode
290
+ * @param {boolean} strict - Whether to enable strict mode
291
+ */
292
+ setStrict(strict) {
293
+ this.strict = strict;
294
+ }
295
+ }
296
+
297
+ /**
298
+ * Create a schema validator instance
299
+ * @param {Object} options - Validator options
300
+ * @returns {GunSchemaValidator} Validator instance
301
+ */
302
+ export function createSchemaValidator(options = {}) {
303
+ return new GunSchemaValidator(options);
304
+ }
305
+
306
+ export default GunSchemaValidator;