holosphere 2.0.0-alpha7 → 2.0.0-alpha9

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 (327) hide show
  1. package/CHANGELOG.md +446 -0
  2. package/FEATURES.md +431 -0
  3. package/LICENSE +29 -166
  4. package/LICENSE-AGPL.md +180 -0
  5. package/dist/cdn/holosphere.min.js +55 -0
  6. package/dist/cdn/holosphere.min.js.map +1 -0
  7. package/dist/cjs/holosphere.cjs +1 -1
  8. package/dist/esm/holosphere.js +1 -1
  9. package/dist/{index-C-IlLYlk.cjs → index-DDGt_V9o.cjs} +2 -2
  10. package/dist/{index-C-IlLYlk.cjs.map → index-DDGt_V9o.cjs.map} +1 -1
  11. package/dist/{index-d6f4RJBM.js → index-DJXftyvB.js} +2253 -387
  12. package/dist/index-DJXftyvB.js.map +1 -0
  13. package/dist/index-DMbdcMtK.cjs +18 -0
  14. package/dist/index-DMbdcMtK.cjs.map +1 -0
  15. package/dist/{index-jmTHEbR2.js → index-DeZ1xz_s.js} +2 -2
  16. package/dist/{index-jmTHEbR2.js.map → index-DeZ1xz_s.js.map} +1 -1
  17. package/dist/{indexeddb-storage-D8kOl0oK.js → indexeddb-storage-BFt6hMeF.js} +48 -4
  18. package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
  19. package/dist/{indexeddb-storage-a8GipaDr.cjs → indexeddb-storage-BK5tv4Sh.cjs} +2 -2
  20. package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
  21. package/dist/{memory-storage-DBQK622V.js → memory-storage-C9HuoL2E.js} +44 -4
  22. package/dist/memory-storage-C9HuoL2E.js.map +1 -0
  23. package/dist/{memory-storage-gfRovk2O.cjs → memory-storage-Dao7jfYG.cjs} +2 -2
  24. package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
  25. package/dist/{secp256k1-BCAPF45D.cjs → secp256k1-BbKzbLtD.cjs} +2 -2
  26. package/dist/{secp256k1-BCAPF45D.cjs.map → secp256k1-BbKzbLtD.cjs.map} +1 -1
  27. package/dist/{secp256k1-DYm_CMqW.js → secp256k1-CreY7Pcl.js} +2 -2
  28. package/dist/{secp256k1-DYm_CMqW.js.map → secp256k1-CreY7Pcl.js.map} +1 -1
  29. package/docs/api/ai_aggregation.js.html +333 -0
  30. package/docs/api/ai_breakdown.js.html +524 -0
  31. package/docs/api/ai_classifier.js.html +231 -0
  32. package/docs/api/ai_council.js.html +246 -0
  33. package/docs/api/ai_embeddings.js.html +304 -0
  34. package/docs/api/ai_federation-ai.js.html +338 -0
  35. package/docs/api/ai_h3-ai.js.html +970 -0
  36. package/docs/api/ai_index.js.html +124 -0
  37. package/docs/api/ai_json-ops.js.html +241 -0
  38. package/docs/api/ai_llm-service.js.html +239 -0
  39. package/docs/api/ai_nl-query.js.html +236 -0
  40. package/docs/api/ai_relationships.js.html +367 -0
  41. package/docs/api/ai_schema-extractor.js.html +235 -0
  42. package/docs/api/ai_spatial.js.html +307 -0
  43. package/docs/api/ai_tts.js.html +214 -0
  44. package/docs/api/content_social-protocols.js.html +180 -0
  45. package/docs/api/core_holosphere.js.html +757 -0
  46. package/docs/api/crypto_nostr-utils.js.html +306 -0
  47. package/docs/api/crypto_secp256k1.js.html +267 -0
  48. package/docs/api/data/search.json +1 -0
  49. package/docs/api/federation_discovery.js.html +337 -0
  50. package/docs/api/federation_handshake.js.html +478 -0
  51. package/docs/api/federation_hologram.js.html +1053 -0
  52. package/docs/api/federation_registry.js.html +389 -0
  53. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  54. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  55. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  56. package/docs/api/global.html +3 -0
  57. package/docs/api/hierarchical_upcast.js.html +128 -0
  58. package/docs/api/index.html +265 -0
  59. package/docs/api/index.js.html +1868 -0
  60. package/docs/api/lib_ai-methods.js.html +660 -0
  61. package/docs/api/lib_contract-methods.js.html +445 -0
  62. package/docs/api/lib_errors.js.html +56 -0
  63. package/docs/api/lib_federation-methods.js.html +348 -0
  64. package/docs/api/lib_index.js.html +33 -0
  65. package/docs/api/module-ai.html +5 -0
  66. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  67. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  68. package/docs/api/module-ai_aggregation.html +3 -0
  69. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  70. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  71. package/docs/api/module-ai_breakdown.html +3 -0
  72. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  73. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  74. package/docs/api/module-ai_classifier.html +3 -0
  75. package/docs/api/module-ai_council-Council.html +6 -0
  76. package/docs/api/module-ai_council.Council.html +3 -0
  77. package/docs/api/module-ai_council.html +3 -0
  78. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  79. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  80. package/docs/api/module-ai_embeddings.html +3 -0
  81. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  82. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  83. package/docs/api/module-ai_federation-ai.html +3 -0
  84. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  85. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  86. package/docs/api/module-ai_h3-ai.html +3 -0
  87. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  88. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  89. package/docs/api/module-ai_json-ops.html +3 -0
  90. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  91. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  92. package/docs/api/module-ai_llm-service.html +3 -0
  93. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  94. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  95. package/docs/api/module-ai_nl-query.html +3 -0
  96. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  97. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  98. package/docs/api/module-ai_relationships.html +3 -0
  99. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  100. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  101. package/docs/api/module-ai_schema-extractor.html +3 -0
  102. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  103. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  104. package/docs/api/module-ai_spatial.html +3 -0
  105. package/docs/api/module-ai_tts-TTS.html +5 -0
  106. package/docs/api/module-ai_tts.TTS.html +3 -0
  107. package/docs/api/module-ai_tts.html +3 -0
  108. package/docs/api/module-content_social-protocols.html +3 -0
  109. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  110. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  111. package/docs/api/module-core_holosphere.html +3 -0
  112. package/docs/api/module-crypto_nostr-utils.html +3 -0
  113. package/docs/api/module-crypto_secp256k1.html +3 -0
  114. package/docs/api/module-federation_hologram.html +3 -0
  115. package/docs/api/module-hierarchical_upcast.html +3 -0
  116. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  117. package/docs/api/module-holosphere.html +3 -0
  118. package/docs/api/module-lib_ai-methods.html +3 -0
  119. package/docs/api/module-lib_contract-methods.html +3 -0
  120. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  121. package/docs/api/module-lib_errors-ValidationError.html +3 -0
  122. package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
  123. package/docs/api/module-lib_errors.ValidationError.html +3 -0
  124. package/docs/api/module-lib_errors.html +3 -0
  125. package/docs/api/module-lib_federation-methods.html +3 -0
  126. package/docs/api/module-lib_index.html +3 -0
  127. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  128. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  129. package/docs/api/module-schema_validator.html +3 -0
  130. package/docs/api/module-spatial_h3-operations.html +4 -0
  131. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  132. package/docs/api/module-storage_backend-factory.html +3 -0
  133. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  134. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  135. package/docs/api/module-storage_backend-interface.html +3 -0
  136. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  137. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  138. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  139. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  140. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  141. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  142. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  143. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  144. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  145. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  146. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  147. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  148. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  149. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  150. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  151. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  152. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  153. package/docs/api/module-storage_filesystem-storage.html +3 -0
  154. package/docs/api/module-storage_global-tables.html +3 -0
  155. package/docs/api/module-storage_gun-async.html +3 -0
  156. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  157. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  158. package/docs/api/module-storage_gun-auth.html +3 -0
  159. package/docs/api/module-storage_gun-federation.html +3 -0
  160. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  161. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  162. package/docs/api/module-storage_gun-references.html +3 -0
  163. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  164. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  165. package/docs/api/module-storage_gun-schema.html +3 -0
  166. package/docs/api/module-storage_gun-wrapper.html +11 -0
  167. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  168. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  169. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  170. package/docs/api/module-storage_key-storage-simple.html +3 -0
  171. package/docs/api/module-storage_key-storage.html +4 -0
  172. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  173. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  174. package/docs/api/module-storage_memory-storage.html +3 -0
  175. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  176. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  177. package/docs/api/module-storage_migration.html +3 -0
  178. package/docs/api/module-storage_nostr-async.html +18 -0
  179. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  180. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  181. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  182. package/docs/api/module-storage_nostr-client.html +6 -0
  183. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  184. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  185. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  186. package/docs/api/module-storage_outbox-queue.html +3 -0
  187. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  188. package/docs/api/module-storage_persistent-storage.html +4 -0
  189. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  190. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  191. package/docs/api/module-storage_sync-service.html +3 -0
  192. package/docs/api/module-storage_unified-storage.html +3 -0
  193. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  194. package/docs/api/module-subscriptions_manager.html +3 -0
  195. package/docs/api/schema_validator.js.html +113 -0
  196. package/docs/api/scripts/core.js +726 -0
  197. package/docs/api/scripts/core.min.js +23 -0
  198. package/docs/api/scripts/resize.js +90 -0
  199. package/docs/api/scripts/search.js +265 -0
  200. package/docs/api/scripts/search.min.js +6 -0
  201. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  202. package/docs/api/scripts/third-party/fuse.js +9 -0
  203. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  204. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  205. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  206. package/docs/api/scripts/third-party/hljs.js +1 -0
  207. package/docs/api/scripts/third-party/popper.js +5 -0
  208. package/docs/api/scripts/third-party/tippy.js +1 -0
  209. package/docs/api/scripts/third-party/tocbot.js +672 -0
  210. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  211. package/docs/api/spatial_h3-operations.js.html +129 -0
  212. package/docs/api/storage_backend-factory.js.html +133 -0
  213. package/docs/api/storage_backend-interface.js.html +164 -0
  214. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  215. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  216. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  217. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  218. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  219. package/docs/api/storage_filesystem-storage.js.html +207 -0
  220. package/docs/api/storage_global-tables.js.html +116 -0
  221. package/docs/api/storage_gun-async.js.html +344 -0
  222. package/docs/api/storage_gun-auth.js.html +376 -0
  223. package/docs/api/storage_gun-federation.js.html +788 -0
  224. package/docs/api/storage_gun-references.js.html +212 -0
  225. package/docs/api/storage_gun-schema.js.html +309 -0
  226. package/docs/api/storage_gun-wrapper.js.html +645 -0
  227. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  228. package/docs/api/storage_key-storage-simple.js.html +102 -0
  229. package/docs/api/storage_key-storage.js.html +171 -0
  230. package/docs/api/storage_memory-storage.js.html +128 -0
  231. package/docs/api/storage_migration.js.html +354 -0
  232. package/docs/api/storage_nostr-async.js.html +1076 -0
  233. package/docs/api/storage_nostr-client.js.html +1598 -0
  234. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  235. package/docs/api/storage_outbox-queue.js.html +248 -0
  236. package/docs/api/storage_persistent-storage.js.html +160 -0
  237. package/docs/api/storage_sync-service.js.html +201 -0
  238. package/docs/api/storage_unified-storage.js.html +157 -0
  239. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  240. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  241. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  242. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  243. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  244. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  245. package/docs/api/subscriptions_manager.js.html +162 -0
  246. package/examples/holosphere-widget.js +1242 -0
  247. package/examples/widget-demo.html +274 -0
  248. package/examples/widget.html +703 -0
  249. package/jsdoc.json +26 -0
  250. package/package.json +16 -3
  251. package/src/ai/aggregation.js +13 -2
  252. package/src/ai/breakdown.js +12 -2
  253. package/src/ai/classifier.js +14 -3
  254. package/src/ai/council.js +22 -7
  255. package/src/ai/embeddings.js +37 -15
  256. package/src/ai/federation-ai.js +13 -2
  257. package/src/ai/h3-ai.js +14 -2
  258. package/src/ai/index.js +16 -7
  259. package/src/ai/json-ops.js +18 -5
  260. package/src/ai/llm-service.js +62 -31
  261. package/src/ai/nl-query.js +12 -2
  262. package/src/ai/relationships.js +13 -2
  263. package/src/ai/schema-extractor.js +24 -10
  264. package/src/ai/spatial.js +13 -2
  265. package/src/ai/tts.js +25 -8
  266. package/src/cdn-entry.js +22 -0
  267. package/src/content/social-protocols.js +34 -25
  268. package/src/contracts/chain-manager.js +68 -40
  269. package/src/contracts/deployer.js +70 -42
  270. package/src/contracts/event-listener.js +61 -29
  271. package/src/contracts/holon-contracts.js +46 -31
  272. package/src/contracts/index.js +5 -6
  273. package/src/contracts/networks.js +19 -14
  274. package/src/contracts/operations.js +58 -41
  275. package/src/contracts/queries.js +70 -21
  276. package/src/core/holosphere.js +37 -8
  277. package/src/crypto/nostr-utils.js +105 -65
  278. package/src/crypto/secp256k1.js +7 -2
  279. package/src/federation/handshake.js +23 -11
  280. package/src/federation/hologram.js +9 -1
  281. package/src/hierarchical/upcast.js +34 -20
  282. package/src/index.js +671 -7
  283. package/src/lib/ai-methods.js +352 -3
  284. package/src/lib/contract-methods.js +152 -3
  285. package/src/lib/errors.js +31 -1
  286. package/src/lib/federation-methods.js +110 -3
  287. package/src/lib/index.js +9 -5
  288. package/src/schema/validator.js +22 -3
  289. package/src/spatial/h3-operations.js +17 -1
  290. package/src/storage/backend-factory.js +7 -2
  291. package/src/storage/backend-interface.js +21 -2
  292. package/src/storage/backends/activitypub/server.js +25 -3
  293. package/src/storage/backends/activitypub-backend.js +25 -2
  294. package/src/storage/backends/gundb-backend.js +322 -11
  295. package/src/storage/backends/nostr-backend.js +116 -1
  296. package/src/storage/filesystem-storage-browser.js +42 -2
  297. package/src/storage/filesystem-storage.js +72 -5
  298. package/src/storage/global-tables.js +7 -2
  299. package/src/storage/gun-async.js +20 -11
  300. package/src/storage/gun-auth.js +15 -4
  301. package/src/storage/gun-federation.js +14 -5
  302. package/src/storage/gun-references.js +16 -5
  303. package/src/storage/gun-schema.js +25 -10
  304. package/src/storage/gun-wrapper.js +160 -49
  305. package/src/storage/indexeddb-storage.js +65 -4
  306. package/src/storage/key-storage-simple.js +32 -9
  307. package/src/storage/key-storage.js +45 -13
  308. package/src/storage/memory-storage.js +65 -4
  309. package/src/storage/migration.js +20 -7
  310. package/src/storage/nostr-async.js +195 -90
  311. package/src/storage/nostr-client.js +173 -49
  312. package/src/storage/nostr-wrapper.js +6 -2
  313. package/src/storage/outbox-queue.js +55 -18
  314. package/src/storage/persistent-storage.js +56 -13
  315. package/src/storage/sync-service.js +51 -17
  316. package/src/storage/unified-storage.js +38 -3
  317. package/src/subscriptions/manager.js +33 -16
  318. package/vite.config.cdn.js +60 -0
  319. package/dist/index-Bvwyvd0T.cjs +0 -5
  320. package/dist/index-Bvwyvd0T.cjs.map +0 -1
  321. package/dist/index-d6f4RJBM.js.map +0 -1
  322. package/dist/indexeddb-storage-D8kOl0oK.js.map +0 -1
  323. package/dist/indexeddb-storage-a8GipaDr.cjs.map +0 -1
  324. package/dist/memory-storage-DBQK622V.js.map +0 -1
  325. package/dist/memory-storage-gfRovk2O.cjs.map +0 -1
  326. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  327. /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
@@ -1,9 +1,18 @@
1
1
  /**
2
- * Schema Extractor - Extract structured data from text using JSON schemas
2
+ * @fileoverview Extract structured data from unstructured text using JSON schemas.
3
+ * Provides schema-based data extraction, validation, and field completion.
4
+ * @module ai/schema-extractor
3
5
  */
4
6
 
5
7
  /**
6
- * Schema Extractor class
8
+ * Service class for extracting structured data from text using JSON schemas.
9
+ * Leverages LLM to parse unstructured content and map it to defined schemas.
10
+ *
11
+ * @class SchemaExtractor
12
+ * @example
13
+ * const extractor = new SchemaExtractor(llmService);
14
+ * const schema = { properties: { name: { type: "string" }, age: { type: "number" } } };
15
+ * const data = await extractor.extractToSchema(text, schema);
7
16
  */
8
17
  export class SchemaExtractor {
9
18
  /**
@@ -14,10 +23,13 @@ export class SchemaExtractor {
14
23
  }
15
24
 
16
25
  /**
17
- * Extract data from text based on JSON schema
18
- * @param {string} text - Text to extract from
19
- * @param {Object} schema - JSON schema defining expected structure
20
- * @param {Object} options - Extraction options
26
+ * Extract structured data from text according to a JSON schema.
27
+ * Uses LLM to intelligently parse unstructured text and map to schema fields.
28
+ *
29
+ * @param {string} text - Unstructured text to extract from
30
+ * @param {Object} schema - JSON schema defining target structure
31
+ * @param {Object} [options={}] - Extraction options
32
+ * @param {number} [options.maxTokens=2000] - Maximum tokens for response
21
33
  * @returns {Promise<Object>} Extracted data conforming to schema
22
34
  */
23
35
  async extractToSchema(text, schema, options = {}) {
@@ -157,10 +169,12 @@ Return JSON with ONLY the missing fields that you can extract. Do not modify exi
157
169
  }
158
170
 
159
171
  /**
160
- * Validate extracted data against schema
161
- * @param {Object} data - Extracted data
162
- * @param {Object} schema - JSON schema
163
- * @returns {{valid: boolean, errors: string[]}}
172
+ * Validate extracted data against a JSON schema.
173
+ * Performs basic type checking and required field validation.
174
+ *
175
+ * @param {Object} data - Extracted data to validate
176
+ * @param {Object} schema - JSON schema to validate against
177
+ * @returns {{valid: boolean, errors: string[]}} Validation result with error list
164
178
  */
165
179
  validateExtraction(data, schema) {
166
180
  const errors = [];
package/src/ai/spatial.js CHANGED
@@ -1,9 +1,20 @@
1
1
  /**
2
- * Spatial Analysis - AI-powered analysis of data patterns across geographic regions
2
+ * @fileoverview AI-powered spatial analysis of data patterns across geographic regions.
3
+ * Provides region analysis, comparison, trend detection, hotspot identification, and reporting.
4
+ * @module ai/spatial
3
5
  */
4
6
 
5
7
  /**
6
- * Spatial Analysis class
8
+ * Service class for analyzing spatial data patterns across geographic regions.
9
+ * Identifies trends, compares regions, finds hotspots, and generates comprehensive
10
+ * spatial reports using AI-driven analysis.
11
+ *
12
+ * @class SpatialAnalysis
13
+ * @example
14
+ * const spatial = new SpatialAnalysis(llmService, holosphere);
15
+ * const analysis = await spatial.analyzeRegion(holonId, 'projects', 'activity');
16
+ * const comparison = await spatial.compareRegions(holon1, holon2, 'quests');
17
+ * const trends = await spatial.spatialTrends(holonId, 'events', { start: '2024-01-01' });
7
18
  */
8
19
  export class SpatialAnalysis {
9
20
  /**
package/src/ai/tts.js CHANGED
@@ -1,9 +1,12 @@
1
1
  /**
2
- * Text-to-Speech - OpenAI TTS integration
2
+ * @fileoverview OpenAI text-to-speech integration for audio generation.
3
+ * Provides methods for converting text to speech with various voices and formats.
4
+ * @module ai/tts
3
5
  */
4
6
 
5
7
  /**
6
- * Available voices for TTS
8
+ * Available voice options for text-to-speech.
9
+ * @enum {string}
7
10
  */
8
11
  export const VOICES = {
9
12
  ALLOY: 'alloy',
@@ -15,7 +18,8 @@ export const VOICES = {
15
18
  };
16
19
 
17
20
  /**
18
- * Available TTS models
21
+ * Available TTS model options.
22
+ * @enum {string}
19
23
  */
20
24
  export const MODELS = {
21
25
  TTS_1: 'tts-1',
@@ -23,7 +27,14 @@ export const MODELS = {
23
27
  };
24
28
 
25
29
  /**
26
- * TTS class for text-to-speech conversion
30
+ * Service class for converting text to speech using OpenAI's TTS API.
31
+ * Supports multiple voices, output formats, and handles long text with automatic chunking.
32
+ *
33
+ * @class TTS
34
+ * @example
35
+ * const tts = new TTS(openaiClient);
36
+ * const audioBuffer = await tts.speak("Hello world", { voice: VOICES.NOVA });
37
+ * const dataUrl = await tts.speakDataUrl("Hello", { voice: VOICES.ECHO });
27
38
  */
28
39
  export class TTS {
29
40
  /**
@@ -36,10 +47,16 @@ export class TTS {
36
47
  }
37
48
 
38
49
  /**
39
- * Convert text to speech
40
- * @param {string} text - Text to convert
41
- * @param {Object} options - TTS options
42
- * @returns {Promise<Buffer>} Audio buffer (MP3)
50
+ * Convert text to speech audio.
51
+ *
52
+ * @param {string} text - Text to convert to speech
53
+ * @param {Object} [options={}] - TTS generation options
54
+ * @param {string} [options.voice] - Voice to use (from VOICES enum)
55
+ * @param {string} [options.model] - Model to use (from MODELS enum)
56
+ * @param {number} [options.speed=1.0] - Speech speed (0.25 to 4.0)
57
+ * @param {string} [options.responseFormat='mp3'] - Audio format (mp3, opus, aac, flac)
58
+ * @returns {Promise<Buffer>} Audio buffer
59
+ * @throws {Error} If TTS generation fails
43
60
  */
44
61
  async speak(text, options = {}) {
45
62
  const {
@@ -0,0 +1,22 @@
1
+ /**
2
+ * CDN Entry Point for HoloSphere
3
+ *
4
+ * This file creates a clean global API for browser usage.
5
+ * After including the script, use: new HoloSphere({ appName: 'my-app' })
6
+ *
7
+ * Also exposes h3 library as window.h3 for hexagon visualization.
8
+ */
9
+
10
+ // Import the main class
11
+ import { HoloSphere } from './index.js';
12
+
13
+ // Import h3-js for hexagon boundary visualization
14
+ import * as h3 from 'h3-js';
15
+
16
+ // Expose h3 globally for widget use
17
+ if (typeof window !== 'undefined') {
18
+ window.h3 = h3;
19
+ }
20
+
21
+ // Export only the main class as default
22
+ export default HoloSphere;
@@ -1,16 +1,20 @@
1
1
  /**
2
- * Social Protocol Adapters (Nostr, ActivityPub)
2
+ * @fileoverview Social protocol adapters for Nostr (NIP-01) and ActivityPub formats.
3
+ * Provides validation, transformation, and filtering utilities for social content integration.
4
+ * @module content/social-protocols
3
5
  */
4
6
 
5
7
  // Import ValidationError from the validator module
6
8
  import { ValidationError } from '../schema/validator.js';
7
9
 
8
10
  /**
9
- * Validate Nostr NIP-01 event format
10
- * @param {Object} event - Nostr event
11
- * @param {boolean} partial - Allow partial events (missing id, pubkey, sig)
12
- * @returns {boolean} True if valid
13
- * @throws {ValidationError} If strict validation fails
11
+ * Validate Nostr NIP-01 event format.
12
+ * Checks required fields (kind, tags, content, created_at) and optionally id, pubkey, sig.
13
+ * @param {Object} event - Nostr event object to validate
14
+ * @param {boolean} [partial=true] - Allow partial events (missing id, pubkey, sig for signing)
15
+ * @param {boolean} [throwOnError=false] - Throw ValidationError on failure instead of returning false
16
+ * @returns {boolean} True if valid, false otherwise (unless throwOnError is true)
17
+ * @throws {ValidationError} If validation fails and throwOnError is true
14
18
  */
15
19
  export function validateNostrEvent(event, partial = true, throwOnError = false) {
16
20
  if (!event || typeof event !== 'object') {
@@ -56,12 +60,13 @@ export function validateNostrEvent(event, partial = true, throwOnError = false)
56
60
  }
57
61
 
58
62
  /**
59
- * Validate ActivityPub object format
60
- * @param {Object} object - ActivityPub object
61
- * @param {boolean} throwOnError - Throw ValidationError on failure
62
- * @param {boolean} requireId - Require id field (default: false, will be auto-generated)
63
- * @returns {boolean} True if valid
64
- * @throws {ValidationError} If strict validation fails
63
+ * Validate ActivityPub object format.
64
+ * Checks for required @context and type fields, optionally validates id field.
65
+ * @param {Object} object - ActivityPub object to validate
66
+ * @param {boolean} [throwOnError=false] - Throw ValidationError on failure instead of returning false
67
+ * @param {boolean} [requireId=false] - Require id field (default: false, will be auto-generated)
68
+ * @returns {boolean} True if valid, false otherwise (unless throwOnError is true)
69
+ * @throws {ValidationError} If validation fails and throwOnError is true
65
70
  */
66
71
  export function validateActivityPubObject(object, throwOnError = false, requireId = false) {
67
72
  if (!object || typeof object !== 'object') {
@@ -85,9 +90,10 @@ export function validateActivityPubObject(object, throwOnError = false, requireI
85
90
  }
86
91
 
87
92
  /**
88
- * Transform Nostr event to HoloSphere format
89
- * @param {Object} event - Nostr event
90
- * @returns {Object} HoloSphere data object
93
+ * Transform Nostr event to HoloSphere storage format.
94
+ * Normalizes Nostr events and adds metadata for HoloSphere compatibility.
95
+ * @param {Object} event - Nostr NIP-01 event object
96
+ * @returns {Object} HoloSphere data object with protocol metadata
91
97
  */
92
98
  export function transformNostrEvent(event) {
93
99
  // Generate missing fields if needed
@@ -115,9 +121,10 @@ export function transformNostrEvent(event) {
115
121
  }
116
122
 
117
123
  /**
118
- * Transform ActivityPub object to HoloSphere format
124
+ * Transform ActivityPub object to HoloSphere storage format.
125
+ * Normalizes ActivityPub objects and adds metadata for HoloSphere compatibility.
119
126
  * @param {Object} object - ActivityPub object
120
- * @returns {Object} HoloSphere data object
127
+ * @returns {Object} HoloSphere data object with protocol metadata
121
128
  */
122
129
  export function transformActivityPubObject(object) {
123
130
  // Generate ID if not provided
@@ -139,10 +146,11 @@ export function transformActivityPubObject(object) {
139
146
  }
140
147
 
141
148
  /**
142
- * Filter social content by access level
143
- * @param {Object[]} content - Social content array
144
- * @param {string} accessLevel - Access level filter
145
- * @returns {Object[]} Filtered content
149
+ * Filter social content by access level.
150
+ * Returns items matching the specified access level or all items if no level specified.
151
+ * @param {Object[]} content - Array of social content items
152
+ * @param {string} accessLevel - Access level to filter by (e.g., 'public', 'private')
153
+ * @returns {Object[]} Filtered content array
146
154
  */
147
155
  export function filterByAccessLevel(content, accessLevel) {
148
156
  if (!accessLevel) return content;
@@ -153,10 +161,11 @@ export function filterByAccessLevel(content, accessLevel) {
153
161
  }
154
162
 
155
163
  /**
156
- * Filter social content by protocol
157
- * @param {Object[]} content - Social content array
158
- * @param {string} protocol - Protocol filter ('nostr' or 'activitypub')
159
- * @returns {Object[]} Filtered content
164
+ * Filter social content by protocol type.
165
+ * Returns items matching the specified protocol or all items if 'all' is specified.
166
+ * @param {Object[]} content - Array of social content items
167
+ * @param {string} protocol - Protocol to filter by ('nostr', 'activitypub', or 'all')
168
+ * @returns {Object[]} Filtered content array
160
169
  */
161
170
  export function filterByProtocol(content, protocol) {
162
171
  if (!protocol || protocol === 'all') return content;
@@ -1,11 +1,21 @@
1
1
  /**
2
- * ChainManager - Multi-chain connection management for Holosphere contracts
3
- * Handles provider/signer setup, network switching, and wallet management
2
+ * @fileoverview Multi-chain connection manager for Holosphere smart contracts.
3
+ * Handles provider/signer setup, network switching, and wallet management across EVM chains.
4
+ * @module contracts/chain-manager
4
5
  */
5
6
 
6
7
  import { NETWORKS, getNetwork, isNetworkSupported } from './networks.js';
7
8
 
9
+ /**
10
+ * Multi-chain connection manager for Holosphere contracts.
11
+ * Supports both RPC providers and browser wallets (MetaMask, etc.).
12
+ * @class
13
+ */
8
14
  export class ChainManager {
15
+ /**
16
+ * Create a new ChainManager instance.
17
+ * @param {Object} [config={}] - Configuration options
18
+ */
9
19
  constructor(config = {}) {
10
20
  this.config = config;
11
21
  this.provider = null;
@@ -17,8 +27,9 @@ export class ChainManager {
17
27
  }
18
28
 
19
29
  /**
20
- * Initialize ethers.js (lazy load)
30
+ * Initialize ethers.js library (lazy load).
21
31
  * @private
32
+ * @returns {Promise<Object>} Ethers.js module
22
33
  */
23
34
  async _loadEthers() {
24
35
  if (!this.ethers) {
@@ -30,11 +41,12 @@ export class ChainManager {
30
41
  }
31
42
 
32
43
  /**
33
- * Connect to a network
44
+ * Connect to a network using RPC provider.
34
45
  * @param {string} networkName - Network name (e.g., 'sepolia', 'polygon')
35
46
  * @param {string} [privateKey] - Private key for signing transactions
36
47
  * @param {string} [rpcUrl] - Custom RPC URL (overrides default)
37
- * @returns {Promise<{provider, signer, network}>}
48
+ * @returns {Promise<{provider: Object, signer: Object|null, network: Object, networkName: string, config: Object}>} Connection details
49
+ * @throws {Error} If network is unsupported and no custom RPC URL provided
38
50
  */
39
51
  async connect(networkName, privateKey, rpcUrl) {
40
52
  const ethers = await this._loadEthers();
@@ -78,9 +90,10 @@ export class ChainManager {
78
90
  }
79
91
 
80
92
  /**
81
- * Connect using browser wallet (MetaMask, etc.)
93
+ * Connect using browser wallet (MetaMask, etc.).
82
94
  * @param {string} [networkName] - Optionally switch to this network
83
- * @returns {Promise<{provider, signer, network, address}>}
95
+ * @returns {Promise<{provider: Object, signer: Object, network: Object, address: string}>} Connection details including user address
96
+ * @throws {Error} If no browser wallet is detected
84
97
  */
85
98
  async connectBrowser(networkName) {
86
99
  const ethers = await this._loadEthers();
@@ -117,8 +130,11 @@ export class ChainManager {
117
130
  }
118
131
 
119
132
  /**
120
- * Switch to a different network (browser wallet only)
133
+ * Switch to a different network (browser wallet only).
134
+ * Adds the network to the wallet if it doesn't exist.
121
135
  * @param {string} networkName - Target network name
136
+ * @returns {Promise<void>}
137
+ * @throws {Error} If not using a browser wallet or network is unknown
122
138
  */
123
139
  async switchNetwork(networkName) {
124
140
  if (typeof window === 'undefined' || !window.ethereum) {
@@ -165,8 +181,9 @@ export class ChainManager {
165
181
  }
166
182
 
167
183
  /**
168
- * Get the current provider
169
- * @returns {Provider}
184
+ * Get the current provider.
185
+ * @returns {Object} Ethers.js provider instance
186
+ * @throws {Error} If not initialized
170
187
  */
171
188
  getProvider() {
172
189
  this._requireInitialized();
@@ -174,8 +191,9 @@ export class ChainManager {
174
191
  }
175
192
 
176
193
  /**
177
- * Get the current signer
178
- * @returns {Signer}
194
+ * Get the current signer.
195
+ * @returns {Object} Ethers.js signer instance
196
+ * @throws {Error} If not initialized or no signer available
179
197
  */
180
198
  getSigner() {
181
199
  this._requireInitialized();
@@ -186,8 +204,9 @@ export class ChainManager {
186
204
  }
187
205
 
188
206
  /**
189
- * Get the connected address
190
- * @returns {Promise<string>}
207
+ * Get the connected wallet address.
208
+ * @returns {Promise<string>} Ethereum address
209
+ * @throws {Error} If no signer available
191
210
  */
192
211
  async getAddress() {
193
212
  const signer = this.getSigner();
@@ -195,9 +214,10 @@ export class ChainManager {
195
214
  }
196
215
 
197
216
  /**
198
- * Get ETH balance of an address
217
+ * Get ETH balance of an address.
199
218
  * @param {string} [address] - Address to check (defaults to signer)
200
- * @returns {Promise<string>} Balance in ETH
219
+ * @returns {Promise<string>} Balance in ETH as decimal string
220
+ * @throws {Error} If not initialized or no address/signer available
201
221
  */
202
222
  async getBalance(address) {
203
223
  this._requireInitialized();
@@ -211,8 +231,9 @@ export class ChainManager {
211
231
  }
212
232
 
213
233
  /**
214
- * Get current network configuration
215
- * @returns {Object}
234
+ * Get current network configuration.
235
+ * @returns {Object} Network configuration object
236
+ * @throws {Error} If not initialized
216
237
  */
217
238
  getNetworkConfig() {
218
239
  this._requireInitialized();
@@ -220,8 +241,9 @@ export class ChainManager {
220
241
  }
221
242
 
222
243
  /**
223
- * Get current chain ID
224
- * @returns {number}
244
+ * Get current chain ID.
245
+ * @returns {number} Chain ID as number
246
+ * @throws {Error} If not initialized
225
247
  */
226
248
  getChainId() {
227
249
  this._requireInitialized();
@@ -229,9 +251,9 @@ export class ChainManager {
229
251
  }
230
252
 
231
253
  /**
232
- * Check if connected to the expected network
254
+ * Check if connected to the expected network.
233
255
  * @param {string} expectedNetwork - Expected network name
234
- * @returns {boolean}
256
+ * @returns {boolean} True if on expected network
235
257
  */
236
258
  isOnNetwork(expectedNetwork) {
237
259
  if (!this._initialized) return false;
@@ -241,11 +263,12 @@ export class ChainManager {
241
263
  }
242
264
 
243
265
  /**
244
- * Create a contract instance
266
+ * Create a contract instance.
245
267
  * @param {string} address - Contract address
246
268
  * @param {Array} abi - Contract ABI
247
269
  * @param {boolean} [useSigner=true] - Use signer for write operations
248
- * @returns {Contract}
270
+ * @returns {Promise<Object>} Ethers.js Contract instance
271
+ * @throws {Error} If not initialized
249
272
  */
250
273
  async getContract(address, abi, useSigner = true) {
251
274
  this._requireInitialized();
@@ -255,11 +278,12 @@ export class ChainManager {
255
278
  }
256
279
 
257
280
  /**
258
- * Deploy a contract
281
+ * Deploy a contract.
259
282
  * @param {Array} abi - Contract ABI
260
283
  * @param {string} bytecode - Contract bytecode
261
284
  * @param {Array} [constructorArgs=[]] - Constructor arguments
262
- * @returns {Promise<{contract, address, deployTx}>}
285
+ * @returns {Promise<{contract: Object, address: string, deployTx: Object, txHash: string}>} Deployment details
286
+ * @throws {Error} If not initialized or no signer available
263
287
  */
264
288
  async deployContract(abi, bytecode, constructorArgs = []) {
265
289
  this._requireInitialized();
@@ -285,10 +309,11 @@ export class ChainManager {
285
309
  }
286
310
 
287
311
  /**
288
- * Wait for a transaction to be mined
312
+ * Wait for a transaction to be mined.
289
313
  * @param {string} txHash - Transaction hash
290
314
  * @param {number} [confirmations=1] - Number of confirmations to wait for
291
- * @returns {Promise<TransactionReceipt>}
315
+ * @returns {Promise<Object>} Transaction receipt
316
+ * @throws {Error} If not initialized
292
317
  */
293
318
  async waitForTransaction(txHash, confirmations = 1) {
294
319
  this._requireInitialized();
@@ -296,9 +321,10 @@ export class ChainManager {
296
321
  }
297
322
 
298
323
  /**
299
- * Estimate gas for a transaction
324
+ * Estimate gas for a transaction.
300
325
  * @param {Object} tx - Transaction object
301
- * @returns {Promise<bigint>}
326
+ * @returns {Promise<bigint>} Estimated gas amount
327
+ * @throws {Error} If not initialized
302
328
  */
303
329
  async estimateGas(tx) {
304
330
  this._requireInitialized();
@@ -306,8 +332,9 @@ export class ChainManager {
306
332
  }
307
333
 
308
334
  /**
309
- * Get current gas price
310
- * @returns {Promise<{gasPrice: string, maxFeePerGas: string, maxPriorityFeePerGas: string}>}
335
+ * Get current gas price and fee data.
336
+ * @returns {Promise<{gasPrice: string|null, maxFeePerGas: string|null, maxPriorityFeePerGas: string|null}>} Fee data in gwei
337
+ * @throws {Error} If not initialized
311
338
  */
312
339
  async getGasPrice() {
313
340
  this._requireInitialized();
@@ -321,10 +348,10 @@ export class ChainManager {
321
348
  }
322
349
 
323
350
  /**
324
- * Parse units (e.g., ETH to wei)
351
+ * Parse units (e.g., ETH to wei).
325
352
  * @param {string|number} value - Value to parse
326
353
  * @param {string|number} [unit='ether'] - Unit name or decimals
327
- * @returns {bigint}
354
+ * @returns {Promise<bigint>} Parsed value as bigint
328
355
  */
329
356
  async parseUnits(value, unit = 'ether') {
330
357
  const ethers = await this._loadEthers();
@@ -332,10 +359,10 @@ export class ChainManager {
332
359
  }
333
360
 
334
361
  /**
335
- * Format units (e.g., wei to ETH)
362
+ * Format units (e.g., wei to ETH).
336
363
  * @param {bigint|string} value - Value to format
337
364
  * @param {string|number} [unit='ether'] - Unit name or decimals
338
- * @returns {string}
365
+ * @returns {Promise<string>} Formatted value as decimal string
339
366
  */
340
367
  async formatUnits(value, unit = 'ether') {
341
368
  const ethers = await this._loadEthers();
@@ -343,8 +370,9 @@ export class ChainManager {
343
370
  }
344
371
 
345
372
  /**
346
- * Check if manager is initialized
373
+ * Check if manager is initialized.
347
374
  * @private
375
+ * @throws {Error} If not initialized
348
376
  */
349
377
  _requireInitialized() {
350
378
  if (!this._initialized) {
@@ -353,15 +381,15 @@ export class ChainManager {
353
381
  }
354
382
 
355
383
  /**
356
- * Check if connected
357
- * @returns {boolean}
384
+ * Check if connected to a network.
385
+ * @returns {boolean} True if connected
358
386
  */
359
387
  isConnected() {
360
388
  return this._initialized && this.provider !== null;
361
389
  }
362
390
 
363
391
  /**
364
- * Disconnect and clean up
392
+ * Disconnect and clean up resources.
365
393
  */
366
394
  disconnect() {
367
395
  this.provider = null;