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,476 @@
1
+ # Data Model: HoloSphere
2
+
3
+ **Feature**: HoloSphere - Holonic Geospatial Communication Infrastructure
4
+ **Date**: 2025-10-07
5
+ **Status**: Complete
6
+
7
+ ## Overview
8
+ This document defines the core data entities and their relationships for HoloSphere. The model supports both geographic and noospheric organization with decentralized storage via GunDB.
9
+
10
+ ---
11
+
12
+ ## Core Entities
13
+
14
+ ### 1. Holon
15
+ **Definition**: A location in either geographic space (H3 hexagonal cell) or noospheric space (URI/URL identified concept).
16
+
17
+ **Geographic Holon**:
18
+ ```javascript
19
+ {
20
+ id: string, // H3 cell ID (15+ chars, starts with '8')
21
+ type: 'geographic', // Discriminator
22
+ resolution: number, // H3 resolution level (0-15)
23
+ center: { // Optional: lat/lng of cell center
24
+ lat: number,
25
+ lng: number
26
+ },
27
+ parents: string[], // Parent H3 cells (derived from hierarchy)
28
+ children: string[] // Child H3 cells (derived from hierarchy)
29
+ }
30
+ ```
31
+
32
+ **Noospheric Holon**:
33
+ ```javascript
34
+ {
35
+ id: string, // URI/URL (e.g., "nostr://topic/123", "ap://community/abc")
36
+ type: 'noospheric', // Discriminator
37
+ scheme: string, // Protocol/namespace (e.g., "nostr", "ap", "concept")
38
+ namespace: string, // Namespace/domain
39
+ identifier: string // Unique ID within namespace
40
+ }
41
+ ```
42
+
43
+ **Validation Rules**:
44
+ - Geographic: ID must be valid H3 format (validated via h3-js `h3IsValid()`)
45
+ - Noospheric: ID must be valid URI per RFC 3986
46
+ - Both types support identical federation and lens operations
47
+
48
+ **State Transitions**: Immutable structure (holons are location identifiers, not mutable entities)
49
+
50
+ **Storage Path**: Holons themselves are identifiers, not stored objects. Data is stored within holon/lens paths.
51
+
52
+ ---
53
+
54
+ ### 2. Lens
55
+ **Definition**: A categorical data collection within a holon (e.g., "temperature", "events", "social").
56
+
57
+ **Structure**:
58
+ ```javascript
59
+ {
60
+ name: string, // Unique lens identifier within holon
61
+ schemaUri?: string, // Optional: URI to JSON Schema for validation
62
+ strict?: boolean, // Validation mode: true = blocking, false = logging
63
+ federation?: { // Optional: Federation configuration
64
+ inbound: string[], // Holons to receive data from
65
+ outbound: string[] // Holons to send data to
66
+ },
67
+ _meta?: {
68
+ created: timestamp,
69
+ updated: timestamp,
70
+ itemCount: number // Optional: Cached count
71
+ }
72
+ }
73
+ ```
74
+
75
+ **Validation Rules**:
76
+ - Name must be non-empty string
77
+ - Schema validation only occurs if `schemaUri` is set
78
+ - Federation arrays contain valid holon IDs (H3 or URIs)
79
+
80
+ **State Transitions**:
81
+ - Created: When first data item written to holon/lens path
82
+ - Updated: When schema or federation config changes
83
+ - No deletion (lenses persist even if empty)
84
+
85
+ **Storage Path**: `{appname}/{holonId}/{lensName}/_config`
86
+
87
+ ---
88
+
89
+ ### 3. Data Object
90
+ **Definition**: Individual data record within a lens.
91
+
92
+ **Structure**:
93
+ ```javascript
94
+ {
95
+ id: string, // Required: Unique identifier (auto-generated if not provided)
96
+ [customFields]: any, // User-defined fields (validated against schema if present)
97
+ _meta?: { // Optional: System metadata
98
+ timestamp: number, // Creation/update timestamp (Unix epoch ms)
99
+ resolution?: number, // H3 resolution (geographic holons only)
100
+ source?: string, // Originating holon (for federated data)
101
+ hologram?: boolean // True if this is a reference, not original data
102
+ }
103
+ }
104
+ ```
105
+
106
+ **Validation Rules**:
107
+ - `id` is required (generated via crypto.randomUUID() if missing)
108
+ - Custom fields validated against lens schema if strict mode enabled
109
+ - `_meta` fields are reserved and managed by system
110
+
111
+ **State Transitions**:
112
+ - Created: Written to Gun at path `{appname}/{holonId}/{lensName}/{id}`
113
+ - Updated: Modified in place (Gun handles conflict resolution)
114
+ - Deleted: Marked as null in Gun (tombstone for sync)
115
+
116
+ **Storage Path**: `{appname}/{holonId}/{lensName}/{id}`
117
+
118
+ ---
119
+
120
+ ### 4. Hologram
121
+ **Definition**: Lightweight reference to data stored in another holon/lens.
122
+
123
+ **Structure**:
124
+ ```javascript
125
+ {
126
+ id: string, // Reference ID (unique within current lens)
127
+ hologram: true, // Discriminator flag
128
+ soul: string, // Gun soul path to original data
129
+ target: { // Parsed reference components
130
+ appname: string,
131
+ holonId: string,
132
+ lensName: string,
133
+ dataId: string
134
+ },
135
+ _meta: {
136
+ created: timestamp,
137
+ sourceHolon: string // Holon where original data lives
138
+ }
139
+ }
140
+ ```
141
+
142
+ **Validation Rules**:
143
+ - `soul` must be valid Gun path format
144
+ - Target components must parse from soul
145
+ - Circular reference detection during resolution
146
+
147
+ **State Transitions**:
148
+ - Created: When federation propagates data as reference
149
+ - Resolved: Dereferenced to actual data on read
150
+ - Deleted: When original data is deleted
151
+
152
+ **Resolution Algorithm**:
153
+ ```
154
+ 1. Check if hologram flag is true
155
+ 2. Parse soul path to target components
156
+ 3. Track visited souls to prevent infinite loops
157
+ 4. Fetch data from Gun at soul path
158
+ 5. If result is also hologram, recurse (max depth: 10)
159
+ 6. Return final resolved data or null
160
+ ```
161
+
162
+ **Storage Path**: Same as data objects (stored in lens, distinguished by `hologram: true` flag)
163
+
164
+ ---
165
+
166
+ ### 5. Federation
167
+ **Definition**: Bidirectional data sharing relationship between two holons.
168
+
169
+ **Structure**:
170
+ ```javascript
171
+ {
172
+ id: string, // Federation relationship ID
173
+ sourceHolon: string, // Sending holon ID
174
+ targetHolon: string, // Receiving holon ID
175
+ lenses: { // Per-lens configuration
176
+ [lensName]: {
177
+ direction: 'inbound' | 'outbound' | 'bidirectional',
178
+ mode: 'reference' | 'copy', // Default: reference
179
+ filter?: Function, // Optional: Custom filter for selective propagation
180
+ transform?: Function // Optional: Transform data during federation
181
+ }
182
+ },
183
+ _meta: {
184
+ established: timestamp,
185
+ lastSync: timestamp
186
+ }
187
+ }
188
+ ```
189
+
190
+ **Validation Rules**:
191
+ - Source and target must be valid holon IDs
192
+ - Cannot federate holon with itself
193
+ - Lens names must exist in source holon
194
+
195
+ **State Transitions**:
196
+ - Established: Configuration created
197
+ - Active: Data propagating based on rules
198
+ - Suspended: Temporarily disabled (federation config exists but inactive)
199
+ - Terminated: Removed (holograms persist but no new propagation)
200
+
201
+ **Behavior**:
202
+ - **Reference mode (default)**: Creates hologram in target, original data in source
203
+ - **Copy mode**: Duplicates data to target (used when target must be self-sufficient)
204
+ - **Bidirectional**: Both holons have inbound and outbound configured for same lens
205
+
206
+ **Storage Path**: `{appname}/_federation/{federationId}`
207
+
208
+ ---
209
+
210
+ ### 6. Schema
211
+ **Definition**: JSON Schema (2019 draft) validation rules for a lens.
212
+
213
+ **Structure**:
214
+ ```javascript
215
+ {
216
+ uri: string, // Unique schema identifier (URI format)
217
+ lensName: string, // Associated lens
218
+ schema: object, // JSON Schema 2019 object
219
+ strict: boolean, // Validation mode
220
+ _cache: { // Cached compiled validator
221
+ validator: Function, // Ajv compiled validator
222
+ cachedAt: timestamp, // Cache timestamp
223
+ ttl: number // Time-to-live (default: 3600000ms = 1 hour)
224
+ }
225
+ }
226
+ ```
227
+
228
+ **Validation Rules**:
229
+ - Schema must be valid JSON Schema 2019 format
230
+ - URI must be unique across application
231
+ - TTL must be positive integer (milliseconds)
232
+
233
+ **State Transitions**:
234
+ - Defined: Schema created and stored
235
+ - Cached: Validator compiled and cached
236
+ - Expired: Cache TTL exceeded, recompile on next use
237
+ - Updated: Schema modified, cache invalidated
238
+
239
+ **Storage Path**: `{appname}/_schemas/{schemaUri}`
240
+
241
+ ---
242
+
243
+ ### 7. Subscription
244
+ **Definition**: Real-time change notification for a holon/lens combination.
245
+
246
+ **Structure** (runtime only, not persisted):
247
+ ```javascript
248
+ {
249
+ id: string, // Subscription ID (generated)
250
+ holonId: string, // Holon to monitor
251
+ lensName: string, // Lens to monitor
252
+ callback: Function, // User-provided callback(data, key)
253
+ options: {
254
+ includeFederated?: boolean, // Include data from federated holons
255
+ filter?: Function, // Optional filter predicate
256
+ throttle?: number // Milliseconds between updates
257
+ },
258
+ _internal: {
259
+ gunListener: Function, // Gun .on() reference for cleanup
260
+ active: boolean, // Subscription state
261
+ createdAt: timestamp
262
+ }
263
+ }
264
+ ```
265
+
266
+ **Validation Rules**:
267
+ - Holon ID must be valid
268
+ - Lens name must be non-empty
269
+ - Callback must be a function
270
+ - Throttle must be ≥0
271
+
272
+ **State Transitions**:
273
+ - Subscribed: Listener attached to Gun path
274
+ - Active: Receiving and invoking callbacks
275
+ - Unsubscribed: Listener removed, no longer active
276
+
277
+ **Lifecycle**:
278
+ ```javascript
279
+ // Subscribe
280
+ const subscription = holosphere.subscribe(holonId, lensName, (data, key) => {
281
+ console.log('Data changed:', data);
282
+ });
283
+
284
+ // Unsubscribe
285
+ subscription.unsubscribe();
286
+ ```
287
+
288
+ **Storage**: Not persisted (runtime only)
289
+
290
+ ---
291
+
292
+ ### 8. Capability Token
293
+ **Definition**: Cryptographic authorization token for permissions.
294
+
295
+ **Structure**:
296
+ ```javascript
297
+ {
298
+ id: string, // Token ID (generated)
299
+ issuer: string, // Public key of issuer
300
+ recipient: string, // Public key of recipient
301
+ permissions: string[], // Array: 'read', 'write', 'delete', 'modify'
302
+ scope: { // What this token grants access to
303
+ holonId?: string, // Specific holon (or wildcard '*')
304
+ lensName?: string // Specific lens (or wildcard '*')
305
+ },
306
+ expires: timestamp, // Expiration timestamp
307
+ signature: string, // secp256k1 signature of token
308
+ _meta: {
309
+ issued: timestamp,
310
+ nonce: string // Prevents replay attacks
311
+ }
312
+ }
313
+ ```
314
+
315
+ **Validation Rules**:
316
+ - Issuer and recipient must be valid secp256k1 public keys
317
+ - Permissions must be from allowed set
318
+ - Expires must be future timestamp
319
+ - Signature must verify against issuer's public key
320
+ - Nonce must be unique (prevents replay)
321
+
322
+ **State Transitions**:
323
+ - Issued: Token created and signed
324
+ - Active: Within validity period
325
+ - Expired: Past expiration timestamp
326
+ - Revoked: Manually invalidated (requires revocation list)
327
+
328
+ **Verification Algorithm**:
329
+ ```
330
+ 1. Check token.expires > Date.now()
331
+ 2. Verify signature against issuer public key
332
+ 3. Check nonce hasn't been used (replay protection)
333
+ 4. Validate scope matches requested operation
334
+ 5. Confirm permissions include required permission
335
+ ```
336
+
337
+ **Storage Path**: `{appname}/_capabilities/{tokenId}` (optional, tokens can be passed directly)
338
+
339
+ ---
340
+
341
+ ### 9. Social Content
342
+ **Definition**: Protocol-agnostic social data (Nostr events, ActivityPub objects).
343
+
344
+ **Nostr Event**:
345
+ ```javascript
346
+ {
347
+ id: string, // Nostr event ID (hex)
348
+ pubkey: string, // Author public key (hex)
349
+ created_at: number, // Unix timestamp
350
+ kind: number, // Nostr event kind (e.g., 1 = text note)
351
+ tags: string[][], // Nostr tags
352
+ content: string, // Event content
353
+ sig: string, // secp256k1 signature
354
+ _holosphere: { // HoloSphere metadata
355
+ holonId: string, // Geographic/noospheric location
356
+ lensName: string, // Storage lens
357
+ accessLevel: 'public' | 'protected' | 'private'
358
+ }
359
+ }
360
+ ```
361
+
362
+ **ActivityPub Object**:
363
+ ```javascript
364
+ {
365
+ "@context": string | string[],
366
+ id: string, // ActivityPub object URI
367
+ type: string, // Object type (e.g., "Note", "Article")
368
+ actor: string, // Actor URI
369
+ published: string, // ISO 8601 timestamp
370
+ content: string, // Object content
371
+ signature: object, // JSON-LD signature
372
+ _holosphere: { // HoloSphere metadata
373
+ holonId: string,
374
+ lensName: string,
375
+ accessLevel: 'public' | 'protected' | 'private'
376
+ }
377
+ }
378
+ ```
379
+
380
+ **Validation Rules**:
381
+ - Nostr: Signature must verify per NIP-01
382
+ - ActivityPub: JSON-LD signature must verify
383
+ - Access level determines visibility in queries
384
+
385
+ **State Transitions**:
386
+ - Published: Created with valid signature
387
+ - Federated: Propagated to other holons
388
+ - Deleted: Marked with deletion event (protocol-specific)
389
+
390
+ **Storage Path**: `{appname}/{holonId}/social/{eventId}` (default lens: "social")
391
+
392
+ ---
393
+
394
+ ## Entity Relationships
395
+
396
+ ```
397
+ Holon (1) ──── (N) Lens
398
+ │ │
399
+ │ │
400
+ │ └──── (N) Data Object
401
+ │ │
402
+ │ └──── (N) Hologram (references Data Object)
403
+
404
+ └──── (N) Federation ──── (N) Holon
405
+
406
+ └──── configures ──── (N) Lens
407
+
408
+ Schema (1) ──── validates ──── (N) Lens
409
+
410
+ Subscription ──── monitors ──── (1) Holon + (1) Lens
411
+
412
+ Capability Token ──── grants access to ──── Holon/Lens scope
413
+
414
+ Social Content ──── stored as ──── Data Object in Lens
415
+ ```
416
+
417
+ ---
418
+
419
+ ## Storage Patterns
420
+
421
+ ### Gun Graph Structure
422
+ ```
423
+ {appname}
424
+ ├── {holonId}
425
+ │ ├── {lensName}
426
+ │ │ ├── {dataId} # Data objects
427
+ │ │ ├── {dataId} # More data objects
428
+ │ │ └── _config # Lens configuration
429
+ │ └── {anotherLens}
430
+ │ └── ...
431
+ ├── _federation
432
+ │ └── {federationId} # Federation configs
433
+ ├── _schemas
434
+ │ └── {schemaUri} # Schema definitions
435
+ └── _capabilities
436
+ └── {tokenId} # Capability tokens (optional)
437
+ ```
438
+
439
+ ### Path Examples
440
+ ```
441
+ // Geographic data
442
+ "myapp/8928342e20fffff/temperature/sensor-001"
443
+
444
+ // Noospheric data
445
+ "myapp/nostr:~2Ftopic~2F123/discussions/thread-456"
446
+
447
+ // Federation config
448
+ "myapp/_federation/geo-to-concept-link"
449
+
450
+ // Schema
451
+ "myapp/_schemas/https:~2F~2Fschema.example.com~2Ftemperature.json"
452
+ ```
453
+
454
+ **Note**: Gun encodes special characters in paths (e.g., `/` → `~2F`, `:` → `~3A`)
455
+
456
+ ---
457
+
458
+ ## Validation Summary
459
+
460
+ | Entity | Required Fields | Unique Constraints | References |
461
+ |--------|----------------|-------------------|------------|
462
+ | Holon | id, type | id | - |
463
+ | Lens | name | name within holon | Holon |
464
+ | Data Object | id | id within lens | Lens, optionally Schema |
465
+ | Hologram | id, soul, target | id within lens | Data Object (target) |
466
+ | Federation | id, sourceHolon, targetHolon | id | Holon (source & target) |
467
+ | Schema | uri, schema | uri | Lens |
468
+ | Subscription | id, holonId, lensName, callback | - | Holon, Lens |
469
+ | Capability Token | id, issuer, recipient, expires | id | - |
470
+ | Social Content | (protocol-specific) | id/event ID | Data Object, Lens |
471
+
472
+ ---
473
+
474
+ ## Next Steps
475
+ ✅ Data model complete with all entities, relationships, and validation rules
476
+ ➡️ Proceed to API contract generation