holosphere 2.0.0-alpha1 → 2.0.0-alpha11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/FEATURES.md +431 -0
  3. package/LICENSE +29 -166
  4. package/LICENSE-AGPL.md +180 -0
  5. package/README.md +97 -16
  6. package/dist/2019-D2OG2idw.js +6680 -0
  7. package/dist/2019-D2OG2idw.js.map +1 -0
  8. package/dist/2019-EION3wKo.cjs +8 -0
  9. package/dist/2019-EION3wKo.cjs.map +1 -0
  10. package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
  11. package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
  12. package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
  13. package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
  14. package/dist/browser-BSniCNqO.js +3058 -0
  15. package/dist/browser-BSniCNqO.js.map +1 -0
  16. package/dist/browser-Cq59Ij19.cjs +2 -0
  17. package/dist/browser-Cq59Ij19.cjs.map +1 -0
  18. package/dist/cjs/holosphere.cjs +2 -0
  19. package/dist/cjs/holosphere.cjs.map +1 -0
  20. package/dist/esm/holosphere.js +53 -0
  21. package/dist/esm/holosphere.js.map +1 -0
  22. package/dist/index-Bl6rM1NW.js +15104 -0
  23. package/dist/index-Bl6rM1NW.js.map +1 -0
  24. package/dist/index-Bwg3OzRM.cjs +12 -0
  25. package/dist/index-Bwg3OzRM.cjs.map +1 -0
  26. package/dist/index-D-jZhliX.js +40274 -0
  27. package/dist/index-D-jZhliX.js.map +1 -0
  28. package/dist/index-Dc6Z8Aob.cjs +18 -0
  29. package/dist/index-Dc6Z8Aob.cjs.map +1 -0
  30. package/dist/indexeddb-storage-5eiUNsHC.js +176 -0
  31. package/dist/indexeddb-storage-5eiUNsHC.js.map +1 -0
  32. package/dist/indexeddb-storage-FNFUVvTJ.cjs +2 -0
  33. package/dist/indexeddb-storage-FNFUVvTJ.cjs.map +1 -0
  34. package/dist/memory-storage-CI-gfmuG.js +91 -0
  35. package/dist/memory-storage-CI-gfmuG.js.map +1 -0
  36. package/dist/memory-storage-DMt36uZO.cjs +2 -0
  37. package/dist/memory-storage-DMt36uZO.cjs.map +1 -0
  38. package/dist/secp256k1-CEwJNcfV.js +1890 -0
  39. package/dist/secp256k1-CEwJNcfV.js.map +1 -0
  40. package/dist/secp256k1-CiEONUnj.cjs +12 -0
  41. package/dist/secp256k1-CiEONUnj.cjs.map +1 -0
  42. package/docs/CONTRACTS.md +797 -0
  43. package/docs/FOSDEM_PROPOSAL.md +388 -0
  44. package/docs/LOCALFIRST.md +266 -0
  45. package/docs/api/ai_aggregation.js.html +333 -0
  46. package/docs/api/ai_breakdown.js.html +524 -0
  47. package/docs/api/ai_classifier.js.html +231 -0
  48. package/docs/api/ai_council.js.html +246 -0
  49. package/docs/api/ai_embeddings.js.html +304 -0
  50. package/docs/api/ai_federation-ai.js.html +338 -0
  51. package/docs/api/ai_h3-ai.js.html +970 -0
  52. package/docs/api/ai_index.js.html +124 -0
  53. package/docs/api/ai_json-ops.js.html +241 -0
  54. package/docs/api/ai_llm-service.js.html +239 -0
  55. package/docs/api/ai_nl-query.js.html +236 -0
  56. package/docs/api/ai_relationships.js.html +367 -0
  57. package/docs/api/ai_schema-extractor.js.html +235 -0
  58. package/docs/api/ai_spatial.js.html +307 -0
  59. package/docs/api/ai_tts.js.html +214 -0
  60. package/docs/api/content_social-protocols.js.html +180 -0
  61. package/docs/api/core_holosphere.js.html +757 -0
  62. package/docs/api/crypto_nostr-utils.js.html +306 -0
  63. package/docs/api/crypto_secp256k1.js.html +267 -0
  64. package/docs/api/data/search.json +1 -0
  65. package/docs/api/federation_discovery.js.html +337 -0
  66. package/docs/api/federation_handshake.js.html +478 -0
  67. package/docs/api/federation_hologram.js.html +1053 -0
  68. package/docs/api/federation_registry.js.html +389 -0
  69. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  70. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  71. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  72. package/docs/api/global.html +3 -0
  73. package/docs/api/hierarchical_upcast.js.html +128 -0
  74. package/docs/api/index.html +265 -0
  75. package/docs/api/index.js.html +1868 -0
  76. package/docs/api/lib_ai-methods.js.html +660 -0
  77. package/docs/api/lib_contract-methods.js.html +445 -0
  78. package/docs/api/lib_errors.js.html +56 -0
  79. package/docs/api/lib_federation-methods.js.html +348 -0
  80. package/docs/api/lib_index.js.html +33 -0
  81. package/docs/api/module-ai.html +5 -0
  82. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  83. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  84. package/docs/api/module-ai_aggregation.html +3 -0
  85. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  86. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  87. package/docs/api/module-ai_breakdown.html +3 -0
  88. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  89. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  90. package/docs/api/module-ai_classifier.html +3 -0
  91. package/docs/api/module-ai_council-Council.html +6 -0
  92. package/docs/api/module-ai_council.Council.html +3 -0
  93. package/docs/api/module-ai_council.html +3 -0
  94. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  95. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  96. package/docs/api/module-ai_embeddings.html +3 -0
  97. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  98. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  99. package/docs/api/module-ai_federation-ai.html +3 -0
  100. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  101. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  102. package/docs/api/module-ai_h3-ai.html +3 -0
  103. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  104. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  105. package/docs/api/module-ai_json-ops.html +3 -0
  106. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  107. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  108. package/docs/api/module-ai_llm-service.html +3 -0
  109. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  110. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  111. package/docs/api/module-ai_nl-query.html +3 -0
  112. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  113. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  114. package/docs/api/module-ai_relationships.html +3 -0
  115. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  116. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  117. package/docs/api/module-ai_schema-extractor.html +3 -0
  118. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  119. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  120. package/docs/api/module-ai_spatial.html +3 -0
  121. package/docs/api/module-ai_tts-TTS.html +5 -0
  122. package/docs/api/module-ai_tts.TTS.html +3 -0
  123. package/docs/api/module-ai_tts.html +3 -0
  124. package/docs/api/module-content_social-protocols.html +3 -0
  125. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  126. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  127. package/docs/api/module-core_holosphere.html +3 -0
  128. package/docs/api/module-crypto_nostr-utils.html +3 -0
  129. package/docs/api/module-crypto_secp256k1.html +3 -0
  130. package/docs/api/module-federation_hologram.html +3 -0
  131. package/docs/api/module-hierarchical_upcast.html +3 -0
  132. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  133. package/docs/api/module-holosphere.html +3 -0
  134. package/docs/api/module-lib_ai-methods.html +3 -0
  135. package/docs/api/module-lib_contract-methods.html +3 -0
  136. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  137. package/docs/api/module-lib_errors-ValidationError.html +3 -0
  138. package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
  139. package/docs/api/module-lib_errors.ValidationError.html +3 -0
  140. package/docs/api/module-lib_errors.html +3 -0
  141. package/docs/api/module-lib_federation-methods.html +3 -0
  142. package/docs/api/module-lib_index.html +3 -0
  143. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  144. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  145. package/docs/api/module-schema_validator.html +3 -0
  146. package/docs/api/module-spatial_h3-operations.html +4 -0
  147. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  148. package/docs/api/module-storage_backend-factory.html +3 -0
  149. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  150. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  151. package/docs/api/module-storage_backend-interface.html +3 -0
  152. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  153. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  154. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  155. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  156. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  157. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  158. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  159. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  160. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  161. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  162. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  163. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  164. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  165. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  166. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  167. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  168. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  169. package/docs/api/module-storage_filesystem-storage.html +3 -0
  170. package/docs/api/module-storage_global-tables.html +3 -0
  171. package/docs/api/module-storage_gun-async.html +3 -0
  172. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  173. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  174. package/docs/api/module-storage_gun-auth.html +3 -0
  175. package/docs/api/module-storage_gun-federation.html +3 -0
  176. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  177. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  178. package/docs/api/module-storage_gun-references.html +3 -0
  179. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  180. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  181. package/docs/api/module-storage_gun-schema.html +3 -0
  182. package/docs/api/module-storage_gun-wrapper.html +11 -0
  183. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  184. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  185. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  186. package/docs/api/module-storage_key-storage-simple.html +3 -0
  187. package/docs/api/module-storage_key-storage.html +4 -0
  188. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  189. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  190. package/docs/api/module-storage_memory-storage.html +3 -0
  191. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  192. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  193. package/docs/api/module-storage_migration.html +3 -0
  194. package/docs/api/module-storage_nostr-async.html +18 -0
  195. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  196. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  197. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  198. package/docs/api/module-storage_nostr-client.html +6 -0
  199. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  200. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  201. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  202. package/docs/api/module-storage_outbox-queue.html +3 -0
  203. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  204. package/docs/api/module-storage_persistent-storage.html +4 -0
  205. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  206. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  207. package/docs/api/module-storage_sync-service.html +3 -0
  208. package/docs/api/module-storage_unified-storage.html +3 -0
  209. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  210. package/docs/api/module-subscriptions_manager.html +3 -0
  211. package/docs/api/schema_validator.js.html +113 -0
  212. package/docs/api/scripts/core.js +726 -0
  213. package/docs/api/scripts/core.min.js +23 -0
  214. package/docs/api/scripts/resize.js +90 -0
  215. package/docs/api/scripts/search.js +265 -0
  216. package/docs/api/scripts/search.min.js +6 -0
  217. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  218. package/docs/api/scripts/third-party/fuse.js +9 -0
  219. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  220. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  221. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  222. package/docs/api/scripts/third-party/hljs.js +1 -0
  223. package/docs/api/scripts/third-party/popper.js +5 -0
  224. package/docs/api/scripts/third-party/tippy.js +1 -0
  225. package/docs/api/scripts/third-party/tocbot.js +672 -0
  226. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  227. package/docs/api/spatial_h3-operations.js.html +129 -0
  228. package/docs/api/storage_backend-factory.js.html +133 -0
  229. package/docs/api/storage_backend-interface.js.html +164 -0
  230. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  231. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  232. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  233. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  234. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  235. package/docs/api/storage_filesystem-storage.js.html +207 -0
  236. package/docs/api/storage_global-tables.js.html +116 -0
  237. package/docs/api/storage_gun-async.js.html +344 -0
  238. package/docs/api/storage_gun-auth.js.html +376 -0
  239. package/docs/api/storage_gun-federation.js.html +788 -0
  240. package/docs/api/storage_gun-references.js.html +212 -0
  241. package/docs/api/storage_gun-schema.js.html +309 -0
  242. package/docs/api/storage_gun-wrapper.js.html +645 -0
  243. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  244. package/docs/api/storage_key-storage-simple.js.html +102 -0
  245. package/docs/api/storage_key-storage.js.html +171 -0
  246. package/docs/api/storage_memory-storage.js.html +128 -0
  247. package/docs/api/storage_migration.js.html +354 -0
  248. package/docs/api/storage_nostr-async.js.html +1076 -0
  249. package/docs/api/storage_nostr-client.js.html +1598 -0
  250. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  251. package/docs/api/storage_outbox-queue.js.html +248 -0
  252. package/docs/api/storage_persistent-storage.js.html +160 -0
  253. package/docs/api/storage_sync-service.js.html +201 -0
  254. package/docs/api/storage_unified-storage.js.html +157 -0
  255. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  256. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  257. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  258. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  259. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  260. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  261. package/docs/api/subscriptions_manager.js.html +162 -0
  262. package/docs/contracts/api-interface.md +793 -0
  263. package/docs/data-model.md +476 -0
  264. package/docs/gun-async-usage.md +338 -0
  265. package/docs/plan.md +349 -0
  266. package/docs/quickstart.md +674 -0
  267. package/docs/research.md +362 -0
  268. package/docs/spec.md +244 -0
  269. package/docs/storage-backends.md +326 -0
  270. package/docs/tasks.md +947 -0
  271. package/examples/demo.html +47 -0
  272. package/examples/holosphere-widget.js +1242 -0
  273. package/examples/widget-demo.html +274 -0
  274. package/examples/widget.html +703 -0
  275. package/jsdoc.json +26 -0
  276. package/package.json +25 -7
  277. package/src/ai/aggregation.js +13 -2
  278. package/src/ai/breakdown.js +12 -2
  279. package/src/ai/classifier.js +14 -3
  280. package/src/ai/council.js +22 -7
  281. package/src/ai/embeddings.js +37 -15
  282. package/src/ai/federation-ai.js +13 -2
  283. package/src/ai/h3-ai.js +14 -2
  284. package/src/ai/index.js +16 -7
  285. package/src/ai/json-ops.js +18 -5
  286. package/src/ai/llm-service.js +62 -31
  287. package/src/ai/nl-query.js +12 -2
  288. package/src/ai/relationships.js +13 -2
  289. package/src/ai/schema-extractor.js +24 -10
  290. package/src/ai/spatial.js +13 -2
  291. package/src/ai/tts.js +25 -8
  292. package/src/cdn-entry.js +22 -0
  293. package/src/content/social-protocols.js +34 -25
  294. package/src/contracts/abis/Appreciative.json +1280 -0
  295. package/src/contracts/abis/AppreciativeFactory.json +101 -0
  296. package/src/contracts/abis/Bundle.json +1438 -0
  297. package/src/contracts/abis/BundleFactory.json +106 -0
  298. package/src/contracts/abis/Holon.json +881 -0
  299. package/src/contracts/abis/Holons.json +330 -0
  300. package/src/contracts/abis/Managed.json +1262 -0
  301. package/src/contracts/abis/ManagedFactory.json +149 -0
  302. package/src/contracts/abis/Membrane.json +261 -0
  303. package/src/contracts/abis/Splitter.json +1624 -0
  304. package/src/contracts/abis/SplitterFactory.json +220 -0
  305. package/src/contracts/abis/TestToken.json +321 -0
  306. package/src/contracts/abis/Zoned.json +1461 -0
  307. package/src/contracts/abis/ZonedFactory.json +154 -0
  308. package/src/contracts/chain-manager.js +403 -0
  309. package/src/contracts/deployer.js +500 -0
  310. package/src/contracts/event-listener.js +539 -0
  311. package/src/contracts/holon-contracts.js +359 -0
  312. package/src/contracts/index.js +82 -0
  313. package/src/contracts/networks.js +229 -0
  314. package/src/contracts/operations.js +687 -0
  315. package/src/contracts/queries.js +638 -0
  316. package/src/core/holosphere.js +487 -6
  317. package/src/crypto/nostr-utils.js +303 -0
  318. package/src/crypto/secp256k1.js +7 -2
  319. package/src/federation/handshake.js +475 -0
  320. package/src/federation/hologram.js +117 -3
  321. package/src/hierarchical/upcast.js +40 -25
  322. package/src/index.js +1547 -1912
  323. package/src/lib/ai-methods.js +657 -0
  324. package/src/lib/contract-methods.js +442 -0
  325. package/src/lib/errors.js +53 -0
  326. package/src/lib/federation-methods.js +345 -0
  327. package/src/lib/index.js +30 -0
  328. package/src/schema/validator.js +22 -3
  329. package/src/spatial/h3-operations.js +19 -3
  330. package/src/storage/backend-factory.js +7 -2
  331. package/src/storage/backend-interface.js +21 -2
  332. package/src/storage/backends/activitypub/server.js +25 -3
  333. package/src/storage/backends/activitypub-backend.js +25 -2
  334. package/src/storage/backends/gundb-backend.js +692 -50
  335. package/src/storage/backends/nostr-backend.js +116 -1
  336. package/src/storage/filesystem-storage-browser.js +42 -2
  337. package/src/storage/filesystem-storage.js +72 -5
  338. package/src/storage/global-tables.js +35 -3
  339. package/src/storage/gun-async.js +75 -15
  340. package/src/storage/gun-auth.js +373 -0
  341. package/src/storage/gun-federation.js +785 -0
  342. package/src/storage/gun-references.js +209 -0
  343. package/src/storage/gun-schema.js +306 -0
  344. package/src/storage/gun-wrapper.js +475 -54
  345. package/src/storage/indexeddb-storage.js +112 -13
  346. package/src/storage/key-storage-simple.js +32 -9
  347. package/src/storage/key-storage.js +45 -13
  348. package/src/storage/memory-storage.js +68 -2
  349. package/src/storage/migration.js +20 -7
  350. package/src/storage/nostr-async.js +412 -122
  351. package/src/storage/nostr-client.js +749 -76
  352. package/src/storage/nostr-wrapper.js +6 -2
  353. package/src/storage/outbox-queue.js +55 -18
  354. package/src/storage/persistent-storage.js +62 -14
  355. package/src/storage/sync-service.js +51 -17
  356. package/src/storage/unified-storage.js +154 -0
  357. package/src/subscriptions/manager.js +34 -17
  358. package/types/index.d.ts +133 -0
  359. package/vite.config.cdn.js +60 -0
  360. package/tests/unit/ai/aggregation.test.js +0 -295
  361. package/tests/unit/ai/breakdown.test.js +0 -446
  362. package/tests/unit/ai/classifier.test.js +0 -294
  363. package/tests/unit/ai/council.test.js +0 -262
  364. package/tests/unit/ai/embeddings.test.js +0 -384
  365. package/tests/unit/ai/federation-ai.test.js +0 -344
  366. package/tests/unit/ai/h3-ai.test.js +0 -458
  367. package/tests/unit/ai/index.test.js +0 -304
  368. package/tests/unit/ai/json-ops.test.js +0 -307
  369. package/tests/unit/ai/llm-service.test.js +0 -390
  370. package/tests/unit/ai/nl-query.test.js +0 -383
  371. package/tests/unit/ai/relationships.test.js +0 -311
  372. package/tests/unit/ai/schema-extractor.test.js +0 -384
  373. package/tests/unit/ai/spatial.test.js +0 -279
  374. package/tests/unit/ai/tts.test.js +0 -279
  375. package/tests/unit/content.test.js +0 -332
  376. package/tests/unit/contract/core.test.js +0 -88
  377. package/tests/unit/contract/crypto.test.js +0 -198
  378. package/tests/unit/contract/data.test.js +0 -223
  379. package/tests/unit/contract/federation.test.js +0 -181
  380. package/tests/unit/contract/hierarchical.test.js +0 -113
  381. package/tests/unit/contract/schema.test.js +0 -114
  382. package/tests/unit/contract/social.test.js +0 -217
  383. package/tests/unit/contract/spatial.test.js +0 -110
  384. package/tests/unit/contract/subscriptions.test.js +0 -128
  385. package/tests/unit/contract/utils.test.js +0 -159
  386. package/tests/unit/core.test.js +0 -152
  387. package/tests/unit/crypto.test.js +0 -328
  388. package/tests/unit/federation.test.js +0 -234
  389. package/tests/unit/gun-async.test.js +0 -252
  390. package/tests/unit/hierarchical.test.js +0 -399
  391. package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
  392. package/tests/unit/integration/scenario-02-federation.test.js +0 -76
  393. package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
  394. package/tests/unit/integration/scenario-04-validation.test.js +0 -129
  395. package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
  396. package/tests/unit/integration/scenario-06-social.test.js +0 -135
  397. package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
  398. package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
  399. package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
  400. package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
  401. package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
  402. package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
  403. package/tests/unit/performance/benchmark.test.js +0 -85
  404. package/tests/unit/schema.test.js +0 -213
  405. package/tests/unit/spatial.test.js +0 -158
  406. package/tests/unit/storage.test.js +0 -195
  407. package/tests/unit/subscriptions.test.js +0 -328
  408. package/tests/unit/test-data-permanence-debug.js +0 -197
  409. package/tests/unit/test-data-permanence.js +0 -340
  410. package/tests/unit/test-key-persistence-fixed.js +0 -148
  411. package/tests/unit/test-key-persistence.js +0 -172
  412. package/tests/unit/test-relay-permanence.js +0 -376
  413. package/tests/unit/test-second-node.js +0 -95
  414. package/tests/unit/test-simple-write.js +0 -89
  415. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  416. /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
@@ -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;