holosphere 2.0.0-alpha1 → 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 -166
  4. package/LICENSE-AGPL.md +180 -0
  5. package/README.md +97 -16
  6. package/dist/2019-D2OG2idw.js +6680 -0
  7. package/dist/2019-D2OG2idw.js.map +1 -0
  8. package/dist/2019-EION3wKo.cjs +8 -0
  9. package/dist/2019-EION3wKo.cjs.map +1 -0
  10. package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
  11. package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
  12. package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
  13. package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
  14. package/dist/browser-BSniCNqO.js +3058 -0
  15. package/dist/browser-BSniCNqO.js.map +1 -0
  16. package/dist/browser-Cq59Ij19.cjs +2 -0
  17. package/dist/browser-Cq59Ij19.cjs.map +1 -0
  18. package/dist/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,345 @@
1
+ /**
2
+ * @fileoverview Federation methods mixin for cross-HoloSphere federation and Nostr discovery.
3
+ * Provides federated data access, capability-based authorization, and federation request protocols
4
+ * for connecting multiple HoloSphere instances.
5
+ * @module lib/federation-methods
6
+ */
7
+
8
+ import * as registry from '../federation/registry.js';
9
+ import * as discovery from '../federation/discovery.js';
10
+ import * as federation from '../federation/hologram.js';
11
+ import * as storage from '../storage/unified-storage.js';
12
+ import * as nostrAsync from '../storage/nostr-async.js';
13
+ import * as crypto from '../crypto/secp256k1.js';
14
+ import { ValidationError, AuthorizationError } from './errors.js';
15
+ import { sha256 } from '@noble/hashes/sha256';
16
+ import { bytesToHex } from '@noble/hashes/utils';
17
+
18
+ /**
19
+ * Mixin that adds federation methods to a HoloSphere class.
20
+ * Enables cross-HoloSphere federation with capability-based access control,
21
+ * hologram creation, and Nostr-based discovery protocols.
22
+ * @param {Class} Base - Base class to extend
23
+ * @returns {Class} Extended class with federation methods
24
+ */
25
+ export function withFederationMethods(Base) {
26
+ return class extends Base {
27
+ // === Cross-Holosphere Federation ===
28
+
29
+ /**
30
+ * Add a federated HoloSphere partner by public key.
31
+ * @param {string} pubKey - Public key (hex) of the federated HoloSphere
32
+ * @param {Object} [options={}] - Federation options (metadata, capabilities, etc.)
33
+ * @returns {Promise<Object>} Federation registration result
34
+ * @throws {ValidationError} If pubKey is invalid
35
+ */
36
+ async addFederatedHolosphere(pubKey, options = {}) {
37
+ if (!pubKey || typeof pubKey !== 'string') {
38
+ throw new ValidationError('pubKey must be a valid public key string');
39
+ }
40
+ return registry.addFederatedPartner(
41
+ this.client,
42
+ this.config.appName,
43
+ pubKey,
44
+ options
45
+ );
46
+ }
47
+
48
+ /**
49
+ * Remove a federated HoloSphere partner.
50
+ * @param {string} pubKey - Public key of the partner to remove
51
+ * @returns {Promise<void>}
52
+ */
53
+ async removeFederatedHolosphere(pubKey) {
54
+ return registry.removeFederatedPartner(
55
+ this.client,
56
+ this.config.appName,
57
+ pubKey
58
+ );
59
+ }
60
+
61
+ /**
62
+ * Get all federated HoloSphere public keys.
63
+ * @returns {Promise<string[]>} Array of federated public keys
64
+ */
65
+ async getFederatedHolospheres() {
66
+ return registry.getFederatedAuthors(
67
+ this.client,
68
+ this.config.appName
69
+ );
70
+ }
71
+
72
+ /**
73
+ * Get the complete federation registry.
74
+ * @returns {Promise<Object>} Federation registry with all partners and capabilities
75
+ */
76
+ async getFederationRegistry() {
77
+ return registry.getFederationRegistry(
78
+ this.client,
79
+ this.config.appName
80
+ );
81
+ }
82
+
83
+ /**
84
+ * Store an inbound capability token from a federated partner.
85
+ * @param {string} partnerPubKey - Partner's public key
86
+ * @param {Object} capabilityInfo - Capability token and metadata
87
+ * @returns {Promise<void>}
88
+ */
89
+ async storeInboundCapability(partnerPubKey, capabilityInfo) {
90
+ return registry.storeInboundCapability(
91
+ this.client,
92
+ this.config.appName,
93
+ partnerPubKey,
94
+ capabilityInfo
95
+ );
96
+ }
97
+
98
+ /**
99
+ * Read data from a federated source with capability verification.
100
+ * @param {string} sourcePubKey - Source HoloSphere public key
101
+ * @param {string} holonId - Holon ID to read from
102
+ * @param {string} lensName - Lens name to read from
103
+ * @param {string|null} [dataId=null] - Optional specific data ID (null for all)
104
+ * @returns {Promise<Object|Object[]>} Data from federated source
105
+ * @throws {AuthorizationError} If capability verification fails
106
+ */
107
+ async readFromFederatedSource(sourcePubKey, holonId, lensName, dataId = null) {
108
+ const capabilityEntry = await registry.getCapabilityForAuthor(
109
+ this.client,
110
+ this.config.appName,
111
+ sourcePubKey,
112
+ { holonId, lensName, dataId }
113
+ );
114
+
115
+ if (!capabilityEntry) {
116
+ throw new AuthorizationError('No valid capability for federated source', 'read');
117
+ }
118
+
119
+ const isValid = await this.verifyCapability(
120
+ capabilityEntry.token,
121
+ 'read',
122
+ { holonId, lensName, dataId }
123
+ );
124
+
125
+ if (!isValid) {
126
+ throw new AuthorizationError('Capability verification failed', 'read');
127
+ }
128
+
129
+ if (dataId) {
130
+ const path = storage.buildPath(this.config.appName, holonId, lensName, dataId);
131
+ return nostrAsync.nostrGet(this.client, path, 30000, {
132
+ authors: [sourcePubKey],
133
+ includeAuthor: true,
134
+ });
135
+ } else {
136
+ const path = storage.buildPath(this.config.appName, holonId, lensName);
137
+ return nostrAsync.nostrGetAll(this.client, path, 30000, {
138
+ authors: [sourcePubKey],
139
+ includeAuthor: true,
140
+ });
141
+ }
142
+ }
143
+
144
+ /**
145
+ * Create a cross-HoloSphere hologram reference.
146
+ * Links data from another HoloSphere into this one using capability-based access.
147
+ * @param {string} sourcePubKey - Source HoloSphere public key
148
+ * @param {string} sourceHolon - Source holon ID
149
+ * @param {string} lensName - Lens name
150
+ * @param {string} dataId - Data ID
151
+ * @param {string} targetHolon - Target holon in this HoloSphere
152
+ * @param {Object} [options={}] - Hologram options
153
+ * @param {boolean} [options.embedCapability=true] - Embed capability in hologram
154
+ * @returns {Promise<Object>} Created hologram
155
+ * @throws {AuthorizationError} If no valid capability exists
156
+ */
157
+ async createCrossHolosphereHologram(sourcePubKey, sourceHolon, lensName, dataId, targetHolon, options = {}) {
158
+ const { embedCapability = true } = options;
159
+
160
+ const capabilityEntry = await registry.getCapabilityForAuthor(
161
+ this.client,
162
+ this.config.appName,
163
+ sourcePubKey,
164
+ { holonId: sourceHolon, lensName, dataId }
165
+ );
166
+
167
+ if (!capabilityEntry) {
168
+ throw new AuthorizationError('No valid capability for cross-holosphere hologram', 'read');
169
+ }
170
+
171
+ const hologram = federation.createHologram(
172
+ sourceHolon,
173
+ targetHolon,
174
+ lensName,
175
+ dataId,
176
+ this.config.appName,
177
+ {
178
+ authorPubKey: sourcePubKey,
179
+ capability: embedCapability ? capabilityEntry.token : null,
180
+ }
181
+ );
182
+
183
+ const targetPath = storage.buildPath(this.config.appName, targetHolon, lensName, dataId);
184
+ await storage.write(this.client, targetPath, hologram);
185
+
186
+ return hologram;
187
+ }
188
+
189
+ /**
190
+ * Issue a capability token for federated access.
191
+ * Grants another HoloSphere permission to access data with specified scope.
192
+ * @param {string} targetPubKey - Target HoloSphere public key to grant access to
193
+ * @param {Object} scope - Access scope (holonId, lensName, dataId patterns)
194
+ * @param {string[]} permissions - Array of permissions ('read', 'write', etc.)
195
+ * @param {Object} [options={}] - Capability options
196
+ * @param {number} [options.expiresIn=3600000] - Expiration time in milliseconds
197
+ * @param {boolean} [options.trackInRegistry=true] - Store in federation registry
198
+ * @returns {Promise<string>} Capability token
199
+ */
200
+ async issueCapabilityForFederation(targetPubKey, scope, permissions, options = {}) {
201
+ const { expiresIn = 3600000, trackInRegistry = true } = options;
202
+
203
+ const token = await crypto.issueCapability(
204
+ permissions,
205
+ scope,
206
+ targetPubKey,
207
+ {
208
+ expiresIn,
209
+ issuerKey: this.client.privateKey,
210
+ }
211
+ );
212
+
213
+ if (trackInRegistry) {
214
+ const partner = await registry.getFederatedPartner(
215
+ this.client,
216
+ this.config.appName,
217
+ targetPubKey
218
+ );
219
+
220
+ if (!partner) {
221
+ await registry.addFederatedPartner(
222
+ this.client,
223
+ this.config.appName,
224
+ targetPubKey,
225
+ { addedVia: 'capability_issued' }
226
+ );
227
+ }
228
+
229
+ await registry.storeOutboundCapability(
230
+ this.client,
231
+ this.config.appName,
232
+ targetPubKey,
233
+ {
234
+ tokenHash: await this._hashToken(token),
235
+ scope,
236
+ permissions,
237
+ expires: Date.now() + expiresIn,
238
+ }
239
+ );
240
+ }
241
+
242
+ return token;
243
+ }
244
+
245
+ /**
246
+ * Hash a capability token for storage.
247
+ * @private
248
+ * @param {string} token - Capability token to hash
249
+ * @returns {Promise<string>} SHA256 hash of token
250
+ */
251
+ async _hashToken(token) {
252
+ const encoder = new TextEncoder();
253
+ return bytesToHex(sha256(encoder.encode(token)));
254
+ }
255
+
256
+ // === Nostr Discovery Protocol ===
257
+
258
+ /**
259
+ * Send a federation request to another HoloSphere via Nostr.
260
+ * @param {string} targetPubKey - Target HoloSphere public key
261
+ * @param {Object} [options={}] - Request options (message, metadata, etc.)
262
+ * @returns {Promise<Object>} Request event
263
+ */
264
+ async sendFederationRequest(targetPubKey, options = {}) {
265
+ return discovery.sendFederationRequest(
266
+ this.client,
267
+ this.config.appName,
268
+ targetPubKey,
269
+ options
270
+ );
271
+ }
272
+
273
+ /**
274
+ * Subscribe to incoming federation requests.
275
+ * @param {Function} callback - Callback function (request) => void
276
+ * @returns {Promise<Object>} Subscription object with unsubscribe method
277
+ */
278
+ async subscribeFederationRequests(callback) {
279
+ return discovery.subscribeFederationRequests(this.client, callback);
280
+ }
281
+
282
+ /**
283
+ * Accept a federation request and establish partnership.
284
+ * @param {Object} request - Federation request object
285
+ * @param {Object} [options={}] - Acceptance options (capabilities to grant, etc.)
286
+ * @returns {Promise<Object>} Acceptance event
287
+ */
288
+ async acceptFederationRequest(request, options = {}) {
289
+ return discovery.acceptFederationRequest(
290
+ this.client,
291
+ this.config.appName,
292
+ request,
293
+ options
294
+ );
295
+ }
296
+
297
+ /**
298
+ * Decline a federation request.
299
+ * @param {Object} request - Federation request object
300
+ * @param {string} [reason=''] - Optional reason for declining
301
+ * @returns {Promise<Object>} Decline event
302
+ */
303
+ async declineFederationRequest(request, reason = '') {
304
+ return discovery.declineFederationRequest(
305
+ this.client,
306
+ this.config.appName,
307
+ request,
308
+ reason
309
+ );
310
+ }
311
+
312
+ /**
313
+ * Subscribe to federation request acceptances.
314
+ * @param {Function} callback - Callback function (acceptance) => void
315
+ * @returns {Promise<Object>} Subscription object with unsubscribe method
316
+ */
317
+ async subscribeFederationAcceptances(callback) {
318
+ return discovery.subscribeFederationAcceptances(
319
+ this.client,
320
+ this.config.appName,
321
+ callback
322
+ );
323
+ }
324
+
325
+ /**
326
+ * Subscribe to federation request declines.
327
+ * @param {Function} callback - Callback function (decline) => void
328
+ * @returns {Promise<Object>} Subscription object with unsubscribe method
329
+ */
330
+ async subscribeFederationDeclines(callback) {
331
+ return discovery.subscribeFederationDeclines(this.client, callback);
332
+ }
333
+
334
+ /**
335
+ * Get all pending federation requests.
336
+ * @param {Object} [options={}] - Query options (limit, since, etc.)
337
+ * @returns {Promise<Object[]>} Array of pending requests
338
+ */
339
+ async getPendingFederationRequests(options = {}) {
340
+ return discovery.getPendingFederationRequests(this.client, options);
341
+ }
342
+ };
343
+ }
344
+
345
+ export default withFederationMethods;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @fileoverview HoloSphere library modules and mixin composition utilities.
3
+ * Exports AI, contract, and federation method mixins for extending the base HoloSphere class.
4
+ * @module lib/index
5
+ */
6
+
7
+ export { withAIMethods } from './ai-methods.js';
8
+ export { withContractMethods } from './contract-methods.js';
9
+ export { withFederationMethods } from './federation-methods.js';
10
+ export { AuthorizationError, ValidationError } from './errors.js';
11
+
12
+ /**
13
+ * Compose multiple mixins into a single class.
14
+ * Applies mixins in order from left to right.
15
+ * @param {Class} BaseClass - Base class to extend
16
+ * @param {...Function} mixins - Mixin functions to apply sequentially
17
+ * @returns {Class} Composed class with all mixins applied
18
+ * @example
19
+ * const EnhancedClass = compose(BaseClass, withAIMethods, withContractMethods);
20
+ */
21
+ export function compose(BaseClass, ...mixins) {
22
+ return mixins.reduce((acc, mixin) => mixin(acc), BaseClass);
23
+ }
24
+
25
+ export default {
26
+ withAIMethods,
27
+ withContractMethods,
28
+ withFederationMethods,
29
+ compose
30
+ };
@@ -1,17 +1,36 @@
1
1
  /**
2
- * JSON Schema Validation with Ajv and caching
2
+ * @fileoverview JSON Schema Validation with Ajv and caching.
3
+ *
4
+ * Provides JSON Schema validation using Ajv (Another JSON Schema Validator)
5
+ * with schema compilation caching for improved performance on repeated validations.
6
+ *
7
+ * @module schema/validator
3
8
  */
4
9
 
5
10
  import Ajv from 'ajv';
6
11
 
12
+ /** @type {Ajv} Ajv instance configured for validation */
7
13
  const ajv = new Ajv({ allErrors: true, strict: false });
14
+
15
+ /** @type {Map<string, {validator: Function, timestamp: number}>} Schema cache */
8
16
  const schemaCache = new Map();
9
- const CACHE_TTL = 3600000; // 1 hour in milliseconds
17
+
18
+ /** @constant {number} Cache TTL in milliseconds (1 hour) */
19
+ const CACHE_TTL = 3600000;
10
20
 
11
21
  /**
12
- * Validation Error class
22
+ * Custom error class for validation failures.
23
+ *
24
+ * @class ValidationError
25
+ * @extends Error
13
26
  */
14
27
  export class ValidationError extends Error {
28
+ /**
29
+ * Creates a new ValidationError.
30
+ *
31
+ * @param {string} message - Error message
32
+ * @param {Array} [errors=[]] - Array of Ajv error objects
33
+ */
15
34
  constructor(message, errors = []) {
16
35
  super(message);
17
36
  this.name = 'ValidationError';
@@ -1,3 +1,15 @@
1
+ /**
2
+ * @fileoverview H3 Hexagonal Spatial Operations.
3
+ *
4
+ * Provides functions for working with H3 hexagonal hierarchical spatial indexing.
5
+ * H3 divides the world into hexagonal cells at 16 resolution levels (0-15),
6
+ * where resolution 0 covers the entire globe and resolution 15 provides
7
+ * approximately 0.5 square meter precision.
8
+ *
9
+ * @module spatial/h3-operations
10
+ * @see {@link https://h3geo.org/ H3 Spatial Indexing}
11
+ */
12
+
1
13
  import {
2
14
  latLngToCell,
3
15
  cellToParent,
@@ -7,7 +19,11 @@ import {
7
19
  } from 'h3-js';
8
20
 
9
21
  /**
10
- * Convert geographic coordinates to H3 holon ID
22
+ * Converts geographic coordinates to an H3 holon ID.
23
+ *
24
+ * @example
25
+ * // Get H3 cell for a location at resolution 9
26
+ * const holonId = toHolon(40.7128, -74.0060, 9); // New York City
11
27
  * @param {number} lat - Latitude (-90 to 90)
12
28
  * @param {number} lng - Longitude (-180 to 180)
13
29
  * @param {number} resolution - H3 resolution (0-15)
@@ -92,8 +108,8 @@ export function getChildren(holonId) {
92
108
  */
93
109
  export function isValidH3(holonId) {
94
110
  if (typeof holonId !== 'string') return false;
95
- if (holonId.length < 15) return false;
96
- if (!holonId.startsWith('8')) return false;
111
+ // H3 indexes are 15-character hex strings, but can vary slightly
112
+ // Use h3-js isValidCell for proper validation
97
113
  return isValidCell(holonId);
98
114
  }
99
115
 
@@ -1,8 +1,13 @@
1
1
  /**
2
- * Factory for creating storage backends
3
- * Supports lazy loading of backend implementations
2
+ * @fileoverview Factory for Creating Storage Backends.
3
+ *
4
+ * Provides a factory pattern for creating and managing storage backend instances.
5
+ * Supports lazy loading of backend implementations to reduce initial bundle size.
6
+ *
7
+ * @module storage/backend-factory
4
8
  */
5
9
 
10
+ /** @type {Object<string, string>} Map of backend types to their module paths */
6
11
  const BACKEND_MODULES = {
7
12
  nostr: './backends/nostr-backend.js',
8
13
  gundb: './backends/gundb-backend.js',
@@ -1,8 +1,27 @@
1
1
  /**
2
- * Abstract Storage Backend Interface
3
- * All storage backends must implement this interface
2
+ * @fileoverview Abstract Storage Backend Interface.
3
+ *
4
+ * Defines the contract that all storage backends must implement.
5
+ * Provides a consistent API for CRUD operations, subscriptions,
6
+ * and data migration across different storage technologies.
7
+ *
8
+ * @module storage/backend-interface
9
+ */
10
+
11
+ /**
12
+ * Abstract base class for storage backends.
13
+ * All concrete backends (Nostr, GunDB, ActivityPub) must extend this class.
14
+ *
15
+ * @abstract
16
+ * @class StorageBackend
4
17
  */
5
18
  export class StorageBackend {
19
+ /**
20
+ * Creates a new StorageBackend instance.
21
+ *
22
+ * @param {Object} config - Backend-specific configuration
23
+ * @throws {Error} If instantiated directly (abstract class)
24
+ */
6
25
  constructor(config) {
7
26
  if (new.target === StorageBackend) {
8
27
  throw new Error('StorageBackend is abstract and cannot be instantiated directly');
@@ -1,19 +1,41 @@
1
1
  /**
2
- * Self-hosted ActivityPub server for HoloSphere
3
- * Provides federation with Mastodon, Pleroma, and other ActivityPub servers
2
+ * @fileoverview Self-hosted ActivityPub server for HoloSphere federation.
3
+ * Provides complete ActivityPub protocol support for federation with Mastodon, Pleroma,
4
+ * and other fediverse servers. Includes WebFinger, NodeInfo, actor endpoints, and SSE subscriptions.
5
+ * @module storage/backends/activitypub/server
4
6
  */
5
7
 
6
8
  import express from 'express';
7
9
  import crypto from 'crypto';
8
10
  import { createPersistentStorage } from '../../persistent-storage.js';
9
11
 
12
+ /** @constant {string} ActivityStreams JSON-LD context */
10
13
  const ACTIVITY_STREAMS_CONTEXT = 'https://www.w3.org/ns/activitystreams';
14
+ /** @constant {string} Security vocabulary JSON-LD context */
11
15
  const SECURITY_CONTEXT = 'https://w3id.org/security/v1';
12
16
 
13
17
  /**
14
- * ActivityPub Server for HoloSphere
18
+ * Self-hosted ActivityPub server for HoloSphere data federation.
19
+ * Implements WebFinger discovery, actor endpoints, inbox/outbox, and HoloSphere data API.
20
+ *
21
+ * @class ActivityPubServer
22
+ * @example
23
+ * const server = new ActivityPubServer({
24
+ * port: 3000,
25
+ * domain: 'holon.example.com',
26
+ * dataDir: './data'
27
+ * });
28
+ * await server.start();
15
29
  */
16
30
  export class ActivityPubServer {
31
+ /**
32
+ * Create a new ActivityPub server instance.
33
+ * @param {Object} [config={}] - Server configuration
34
+ * @param {number} [config.port=3000] - HTTP port to listen on
35
+ * @param {string} [config.domain='localhost'] - Server domain for URLs
36
+ * @param {string} [config.protocol='http'] - Protocol (http or https)
37
+ * @param {string} [config.dataDir] - Data directory for persistent storage
38
+ */
17
39
  constructor(config = {}) {
18
40
  this.config = {
19
41
  port: config.port || 3000,
@@ -1,11 +1,34 @@
1
1
  /**
2
- * ActivityPub Storage Backend
3
- * Client adapter for connecting to an ActivityPub server
2
+ * @fileoverview ActivityPub storage backend client adapter.
3
+ * Provides HTTP-based connectivity to an ActivityPub server for federated data storage
4
+ * and real-time subscriptions via Server-Sent Events.
5
+ * @module storage/backends/activitypub-backend
4
6
  */
5
7
 
6
8
  import { StorageBackend } from '../backend-interface.js';
7
9
 
10
+ /**
11
+ * ActivityPub storage backend implementation.
12
+ * Client adapter for connecting to an ActivityPub server via HTTP API
13
+ * with SSE-based real-time subscriptions.
14
+ *
15
+ * @class ActivityPubBackend
16
+ * @extends StorageBackend
17
+ * @example
18
+ * const backend = await BackendFactory.create('activitypub', {
19
+ * serverUrl: 'https://ap.example.com',
20
+ * appName: 'myapp',
21
+ * apiKey: 'secret-key'
22
+ * });
23
+ */
8
24
  export class ActivityPubBackend extends StorageBackend {
25
+ /**
26
+ * Create a new ActivityPub backend instance.
27
+ * @param {Object} config - Backend configuration
28
+ * @param {string} config.serverUrl - ActivityPub server URL
29
+ * @param {string} [config.appName='holosphere'] - Application/actor name
30
+ * @param {string} [config.apiKey] - Optional API key for authentication
31
+ */
9
32
  constructor(config) {
10
33
  super(config);
11
34
  this.serverUrl = config.serverUrl;