holosphere 2.0.0-alpha0 → 2.0.0-alpha10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/FEATURES.md +431 -0
  3. package/LICENSE +29 -42
  4. package/LICENSE-AGPL.md +180 -0
  5. package/README.md +97 -16
  6. package/dist/2019-D2OG2idw.js +6680 -0
  7. package/dist/2019-D2OG2idw.js.map +1 -0
  8. package/dist/2019-EION3wKo.cjs +8 -0
  9. package/dist/2019-EION3wKo.cjs.map +1 -0
  10. package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
  11. package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
  12. package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
  13. package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
  14. package/dist/browser-BSniCNqO.js +3058 -0
  15. package/dist/browser-BSniCNqO.js.map +1 -0
  16. package/dist/browser-Cq59Ij19.cjs +2 -0
  17. package/dist/browser-Cq59Ij19.cjs.map +1 -0
  18. package/dist/cdn/holosphere.min.js +55 -0
  19. package/dist/cdn/holosphere.min.js.map +1 -0
  20. package/dist/cjs/holosphere.cjs +2 -0
  21. package/dist/cjs/holosphere.cjs.map +1 -0
  22. package/dist/esm/holosphere.js +53 -0
  23. package/dist/esm/holosphere.js.map +1 -0
  24. package/dist/index-DDGt_V9o.cjs +12 -0
  25. package/dist/index-DDGt_V9o.cjs.map +1 -0
  26. package/dist/index-DJXftyvB.js +39841 -0
  27. package/dist/index-DJXftyvB.js.map +1 -0
  28. package/dist/index-DMbdcMtK.cjs +18 -0
  29. package/dist/index-DMbdcMtK.cjs.map +1 -0
  30. package/dist/index-DeZ1xz_s.js +15104 -0
  31. package/dist/index-DeZ1xz_s.js.map +1 -0
  32. package/dist/indexeddb-storage-BFt6hMeF.js +176 -0
  33. package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
  34. package/dist/indexeddb-storage-BK5tv4Sh.cjs +2 -0
  35. package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
  36. package/dist/memory-storage-C9HuoL2E.js +91 -0
  37. package/dist/memory-storage-C9HuoL2E.js.map +1 -0
  38. package/dist/memory-storage-Dao7jfYG.cjs +2 -0
  39. package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
  40. package/dist/secp256k1-BbKzbLtD.cjs +12 -0
  41. package/dist/secp256k1-BbKzbLtD.cjs.map +1 -0
  42. package/dist/secp256k1-CreY7Pcl.js +1890 -0
  43. package/dist/secp256k1-CreY7Pcl.js.map +1 -0
  44. package/docs/CONTRACTS.md +797 -0
  45. package/docs/FOSDEM_PROPOSAL.md +388 -0
  46. package/docs/LOCALFIRST.md +266 -0
  47. package/docs/api/ai_aggregation.js.html +333 -0
  48. package/docs/api/ai_breakdown.js.html +524 -0
  49. package/docs/api/ai_classifier.js.html +231 -0
  50. package/docs/api/ai_council.js.html +246 -0
  51. package/docs/api/ai_embeddings.js.html +304 -0
  52. package/docs/api/ai_federation-ai.js.html +338 -0
  53. package/docs/api/ai_h3-ai.js.html +970 -0
  54. package/docs/api/ai_index.js.html +124 -0
  55. package/docs/api/ai_json-ops.js.html +241 -0
  56. package/docs/api/ai_llm-service.js.html +239 -0
  57. package/docs/api/ai_nl-query.js.html +236 -0
  58. package/docs/api/ai_relationships.js.html +367 -0
  59. package/docs/api/ai_schema-extractor.js.html +235 -0
  60. package/docs/api/ai_spatial.js.html +307 -0
  61. package/docs/api/ai_tts.js.html +214 -0
  62. package/docs/api/content_social-protocols.js.html +180 -0
  63. package/docs/api/core_holosphere.js.html +757 -0
  64. package/docs/api/crypto_nostr-utils.js.html +306 -0
  65. package/docs/api/crypto_secp256k1.js.html +267 -0
  66. package/docs/api/data/search.json +1 -0
  67. package/docs/api/federation_discovery.js.html +337 -0
  68. package/docs/api/federation_handshake.js.html +478 -0
  69. package/docs/api/federation_hologram.js.html +1053 -0
  70. package/docs/api/federation_registry.js.html +389 -0
  71. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  72. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  73. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  74. package/docs/api/global.html +3 -0
  75. package/docs/api/hierarchical_upcast.js.html +128 -0
  76. package/docs/api/index.html +265 -0
  77. package/docs/api/index.js.html +1868 -0
  78. package/docs/api/lib_ai-methods.js.html +660 -0
  79. package/docs/api/lib_contract-methods.js.html +445 -0
  80. package/docs/api/lib_errors.js.html +56 -0
  81. package/docs/api/lib_federation-methods.js.html +348 -0
  82. package/docs/api/lib_index.js.html +33 -0
  83. package/docs/api/module-ai.html +5 -0
  84. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  85. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  86. package/docs/api/module-ai_aggregation.html +3 -0
  87. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  88. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  89. package/docs/api/module-ai_breakdown.html +3 -0
  90. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  91. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  92. package/docs/api/module-ai_classifier.html +3 -0
  93. package/docs/api/module-ai_council-Council.html +6 -0
  94. package/docs/api/module-ai_council.Council.html +3 -0
  95. package/docs/api/module-ai_council.html +3 -0
  96. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  97. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  98. package/docs/api/module-ai_embeddings.html +3 -0
  99. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  100. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  101. package/docs/api/module-ai_federation-ai.html +3 -0
  102. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  103. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  104. package/docs/api/module-ai_h3-ai.html +3 -0
  105. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  106. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  107. package/docs/api/module-ai_json-ops.html +3 -0
  108. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  109. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  110. package/docs/api/module-ai_llm-service.html +3 -0
  111. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  112. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  113. package/docs/api/module-ai_nl-query.html +3 -0
  114. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  115. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  116. package/docs/api/module-ai_relationships.html +3 -0
  117. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  118. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  119. package/docs/api/module-ai_schema-extractor.html +3 -0
  120. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  121. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  122. package/docs/api/module-ai_spatial.html +3 -0
  123. package/docs/api/module-ai_tts-TTS.html +5 -0
  124. package/docs/api/module-ai_tts.TTS.html +3 -0
  125. package/docs/api/module-ai_tts.html +3 -0
  126. package/docs/api/module-content_social-protocols.html +3 -0
  127. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  128. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  129. package/docs/api/module-core_holosphere.html +3 -0
  130. package/docs/api/module-crypto_nostr-utils.html +3 -0
  131. package/docs/api/module-crypto_secp256k1.html +3 -0
  132. package/docs/api/module-federation_hologram.html +3 -0
  133. package/docs/api/module-hierarchical_upcast.html +3 -0
  134. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  135. package/docs/api/module-holosphere.html +3 -0
  136. package/docs/api/module-lib_ai-methods.html +3 -0
  137. package/docs/api/module-lib_contract-methods.html +3 -0
  138. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  139. package/docs/api/module-lib_errors-ValidationError.html +3 -0
  140. package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
  141. package/docs/api/module-lib_errors.ValidationError.html +3 -0
  142. package/docs/api/module-lib_errors.html +3 -0
  143. package/docs/api/module-lib_federation-methods.html +3 -0
  144. package/docs/api/module-lib_index.html +3 -0
  145. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  146. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  147. package/docs/api/module-schema_validator.html +3 -0
  148. package/docs/api/module-spatial_h3-operations.html +4 -0
  149. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  150. package/docs/api/module-storage_backend-factory.html +3 -0
  151. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  152. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  153. package/docs/api/module-storage_backend-interface.html +3 -0
  154. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  155. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  156. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  157. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  158. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  159. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  160. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  161. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  162. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  163. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  164. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  165. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  166. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  167. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  168. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  169. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  170. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  171. package/docs/api/module-storage_filesystem-storage.html +3 -0
  172. package/docs/api/module-storage_global-tables.html +3 -0
  173. package/docs/api/module-storage_gun-async.html +3 -0
  174. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  175. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  176. package/docs/api/module-storage_gun-auth.html +3 -0
  177. package/docs/api/module-storage_gun-federation.html +3 -0
  178. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  179. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  180. package/docs/api/module-storage_gun-references.html +3 -0
  181. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  182. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  183. package/docs/api/module-storage_gun-schema.html +3 -0
  184. package/docs/api/module-storage_gun-wrapper.html +11 -0
  185. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  186. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  187. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  188. package/docs/api/module-storage_key-storage-simple.html +3 -0
  189. package/docs/api/module-storage_key-storage.html +4 -0
  190. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  191. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  192. package/docs/api/module-storage_memory-storage.html +3 -0
  193. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  194. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  195. package/docs/api/module-storage_migration.html +3 -0
  196. package/docs/api/module-storage_nostr-async.html +18 -0
  197. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  198. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  199. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  200. package/docs/api/module-storage_nostr-client.html +6 -0
  201. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  202. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  203. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  204. package/docs/api/module-storage_outbox-queue.html +3 -0
  205. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  206. package/docs/api/module-storage_persistent-storage.html +4 -0
  207. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  208. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  209. package/docs/api/module-storage_sync-service.html +3 -0
  210. package/docs/api/module-storage_unified-storage.html +3 -0
  211. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  212. package/docs/api/module-subscriptions_manager.html +3 -0
  213. package/docs/api/schema_validator.js.html +113 -0
  214. package/docs/api/scripts/core.js +726 -0
  215. package/docs/api/scripts/core.min.js +23 -0
  216. package/docs/api/scripts/resize.js +90 -0
  217. package/docs/api/scripts/search.js +265 -0
  218. package/docs/api/scripts/search.min.js +6 -0
  219. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  220. package/docs/api/scripts/third-party/fuse.js +9 -0
  221. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  222. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  223. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  224. package/docs/api/scripts/third-party/hljs.js +1 -0
  225. package/docs/api/scripts/third-party/popper.js +5 -0
  226. package/docs/api/scripts/third-party/tippy.js +1 -0
  227. package/docs/api/scripts/third-party/tocbot.js +672 -0
  228. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  229. package/docs/api/spatial_h3-operations.js.html +129 -0
  230. package/docs/api/storage_backend-factory.js.html +133 -0
  231. package/docs/api/storage_backend-interface.js.html +164 -0
  232. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  233. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  234. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  235. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  236. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  237. package/docs/api/storage_filesystem-storage.js.html +207 -0
  238. package/docs/api/storage_global-tables.js.html +116 -0
  239. package/docs/api/storage_gun-async.js.html +344 -0
  240. package/docs/api/storage_gun-auth.js.html +376 -0
  241. package/docs/api/storage_gun-federation.js.html +788 -0
  242. package/docs/api/storage_gun-references.js.html +212 -0
  243. package/docs/api/storage_gun-schema.js.html +309 -0
  244. package/docs/api/storage_gun-wrapper.js.html +645 -0
  245. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  246. package/docs/api/storage_key-storage-simple.js.html +102 -0
  247. package/docs/api/storage_key-storage.js.html +171 -0
  248. package/docs/api/storage_memory-storage.js.html +128 -0
  249. package/docs/api/storage_migration.js.html +354 -0
  250. package/docs/api/storage_nostr-async.js.html +1076 -0
  251. package/docs/api/storage_nostr-client.js.html +1598 -0
  252. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  253. package/docs/api/storage_outbox-queue.js.html +248 -0
  254. package/docs/api/storage_persistent-storage.js.html +160 -0
  255. package/docs/api/storage_sync-service.js.html +201 -0
  256. package/docs/api/storage_unified-storage.js.html +157 -0
  257. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  258. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  259. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  260. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  261. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  262. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  263. package/docs/api/subscriptions_manager.js.html +162 -0
  264. package/docs/contracts/api-interface.md +793 -0
  265. package/docs/data-model.md +476 -0
  266. package/docs/gun-async-usage.md +338 -0
  267. package/docs/plan.md +349 -0
  268. package/docs/quickstart.md +674 -0
  269. package/docs/research.md +362 -0
  270. package/docs/spec.md +244 -0
  271. package/docs/storage-backends.md +326 -0
  272. package/docs/tasks.md +947 -0
  273. package/examples/demo.html +47 -0
  274. package/examples/holosphere-widget.js +1242 -0
  275. package/examples/widget-demo.html +274 -0
  276. package/examples/widget.html +703 -0
  277. package/jsdoc.json +26 -0
  278. package/package.json +25 -7
  279. package/src/ai/aggregation.js +13 -2
  280. package/src/ai/breakdown.js +12 -2
  281. package/src/ai/classifier.js +14 -3
  282. package/src/ai/council.js +22 -7
  283. package/src/ai/embeddings.js +37 -15
  284. package/src/ai/federation-ai.js +13 -2
  285. package/src/ai/h3-ai.js +14 -2
  286. package/src/ai/index.js +16 -7
  287. package/src/ai/json-ops.js +18 -5
  288. package/src/ai/llm-service.js +62 -31
  289. package/src/ai/nl-query.js +12 -2
  290. package/src/ai/relationships.js +13 -2
  291. package/src/ai/schema-extractor.js +24 -10
  292. package/src/ai/spatial.js +13 -2
  293. package/src/ai/tts.js +25 -8
  294. package/src/cdn-entry.js +22 -0
  295. package/src/content/social-protocols.js +34 -25
  296. package/src/contracts/abis/Appreciative.json +1280 -0
  297. package/src/contracts/abis/AppreciativeFactory.json +101 -0
  298. package/src/contracts/abis/Bundle.json +1438 -0
  299. package/src/contracts/abis/BundleFactory.json +106 -0
  300. package/src/contracts/abis/Holon.json +881 -0
  301. package/src/contracts/abis/Holons.json +330 -0
  302. package/src/contracts/abis/Managed.json +1262 -0
  303. package/src/contracts/abis/ManagedFactory.json +149 -0
  304. package/src/contracts/abis/Membrane.json +261 -0
  305. package/src/contracts/abis/Splitter.json +1624 -0
  306. package/src/contracts/abis/SplitterFactory.json +220 -0
  307. package/src/contracts/abis/TestToken.json +321 -0
  308. package/src/contracts/abis/Zoned.json +1461 -0
  309. package/src/contracts/abis/ZonedFactory.json +154 -0
  310. package/src/contracts/chain-manager.js +403 -0
  311. package/src/contracts/deployer.js +500 -0
  312. package/src/contracts/event-listener.js +539 -0
  313. package/src/contracts/holon-contracts.js +359 -0
  314. package/src/contracts/index.js +82 -0
  315. package/src/contracts/networks.js +229 -0
  316. package/src/contracts/operations.js +687 -0
  317. package/src/contracts/queries.js +638 -0
  318. package/src/core/holosphere.js +487 -6
  319. package/src/crypto/nostr-utils.js +303 -0
  320. package/src/crypto/secp256k1.js +7 -2
  321. package/src/federation/handshake.js +475 -0
  322. package/src/federation/hologram.js +117 -3
  323. package/src/hierarchical/upcast.js +40 -25
  324. package/src/index.js +1501 -1909
  325. package/src/lib/ai-methods.js +657 -0
  326. package/src/lib/contract-methods.js +442 -0
  327. package/src/lib/errors.js +53 -0
  328. package/src/lib/federation-methods.js +345 -0
  329. package/src/lib/index.js +30 -0
  330. package/src/schema/validator.js +22 -3
  331. package/src/spatial/h3-operations.js +19 -3
  332. package/src/storage/backend-factory.js +7 -2
  333. package/src/storage/backend-interface.js +21 -2
  334. package/src/storage/backends/activitypub/server.js +25 -3
  335. package/src/storage/backends/activitypub-backend.js +25 -2
  336. package/src/storage/backends/gundb-backend.js +692 -50
  337. package/src/storage/backends/nostr-backend.js +116 -1
  338. package/src/storage/filesystem-storage-browser.js +42 -2
  339. package/src/storage/filesystem-storage.js +72 -5
  340. package/src/storage/global-tables.js +35 -3
  341. package/src/storage/gun-async.js +75 -15
  342. package/src/storage/gun-auth.js +373 -0
  343. package/src/storage/gun-federation.js +785 -0
  344. package/src/storage/gun-references.js +209 -0
  345. package/src/storage/gun-schema.js +306 -0
  346. package/src/storage/gun-wrapper.js +475 -54
  347. package/src/storage/indexeddb-storage.js +112 -13
  348. package/src/storage/key-storage-simple.js +32 -9
  349. package/src/storage/key-storage.js +45 -13
  350. package/src/storage/memory-storage.js +68 -2
  351. package/src/storage/migration.js +20 -7
  352. package/src/storage/nostr-async.js +412 -122
  353. package/src/storage/nostr-client.js +749 -76
  354. package/src/storage/nostr-wrapper.js +6 -2
  355. package/src/storage/outbox-queue.js +55 -18
  356. package/src/storage/persistent-storage.js +62 -14
  357. package/src/storage/sync-service.js +51 -17
  358. package/src/storage/unified-storage.js +154 -0
  359. package/src/subscriptions/manager.js +34 -17
  360. package/types/index.d.ts +133 -0
  361. package/vite.config.cdn.js +60 -0
  362. package/tests/unit/ai/aggregation.test.js +0 -295
  363. package/tests/unit/ai/breakdown.test.js +0 -446
  364. package/tests/unit/ai/classifier.test.js +0 -294
  365. package/tests/unit/ai/council.test.js +0 -262
  366. package/tests/unit/ai/embeddings.test.js +0 -384
  367. package/tests/unit/ai/federation-ai.test.js +0 -344
  368. package/tests/unit/ai/h3-ai.test.js +0 -458
  369. package/tests/unit/ai/index.test.js +0 -304
  370. package/tests/unit/ai/json-ops.test.js +0 -307
  371. package/tests/unit/ai/llm-service.test.js +0 -390
  372. package/tests/unit/ai/nl-query.test.js +0 -383
  373. package/tests/unit/ai/relationships.test.js +0 -311
  374. package/tests/unit/ai/schema-extractor.test.js +0 -384
  375. package/tests/unit/ai/spatial.test.js +0 -279
  376. package/tests/unit/ai/tts.test.js +0 -279
  377. package/tests/unit/content.test.js +0 -332
  378. package/tests/unit/contract/core.test.js +0 -88
  379. package/tests/unit/contract/crypto.test.js +0 -198
  380. package/tests/unit/contract/data.test.js +0 -223
  381. package/tests/unit/contract/federation.test.js +0 -181
  382. package/tests/unit/contract/hierarchical.test.js +0 -113
  383. package/tests/unit/contract/schema.test.js +0 -114
  384. package/tests/unit/contract/social.test.js +0 -217
  385. package/tests/unit/contract/spatial.test.js +0 -110
  386. package/tests/unit/contract/subscriptions.test.js +0 -128
  387. package/tests/unit/contract/utils.test.js +0 -159
  388. package/tests/unit/core.test.js +0 -152
  389. package/tests/unit/crypto.test.js +0 -328
  390. package/tests/unit/federation.test.js +0 -234
  391. package/tests/unit/gun-async.test.js +0 -252
  392. package/tests/unit/hierarchical.test.js +0 -399
  393. package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
  394. package/tests/unit/integration/scenario-02-federation.test.js +0 -76
  395. package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
  396. package/tests/unit/integration/scenario-04-validation.test.js +0 -129
  397. package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
  398. package/tests/unit/integration/scenario-06-social.test.js +0 -135
  399. package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
  400. package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
  401. package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
  402. package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
  403. package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
  404. package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
  405. package/tests/unit/performance/benchmark.test.js +0 -85
  406. package/tests/unit/schema.test.js +0 -213
  407. package/tests/unit/spatial.test.js +0 -158
  408. package/tests/unit/storage.test.js +0 -195
  409. package/tests/unit/subscriptions.test.js +0 -328
  410. package/tests/unit/test-data-permanence-debug.js +0 -197
  411. package/tests/unit/test-data-permanence.js +0 -340
  412. package/tests/unit/test-key-persistence-fixed.js +0 -148
  413. package/tests/unit/test-key-persistence.js +0 -172
  414. package/tests/unit/test-relay-permanence.js +0 -376
  415. package/tests/unit/test-second-node.js +0 -95
  416. package/tests/unit/test-simple-write.js +0 -89
  417. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  418. /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
@@ -0,0 +1,657 @@
1
+ /**
2
+ * @fileoverview AI methods mixin providing comprehensive AI-powered operations for HoloSphere.
3
+ * Includes LLM operations, embeddings, semantic search, natural language queries, spatial analysis,
4
+ * and specialized AI features for geographic and hierarchical data processing.
5
+ * @module lib/ai-methods
6
+ */
7
+
8
+ /**
9
+ * Mixin that adds AI methods to a HoloSphere class.
10
+ * Provides access to LLM, embeddings, semantic search, council, classification,
11
+ * spatial analysis, aggregation, federation advisor, relationships, and task breakdown.
12
+ * @param {Class} Base - Base class to extend
13
+ * @returns {Class} Extended class with AI methods
14
+ */
15
+ export function withAIMethods(Base) {
16
+ return class extends Base {
17
+ /**
18
+ * Internal method to ensure AI services are initialized.
19
+ * @private
20
+ * @throws {Error} If AI services are not initialized
21
+ */
22
+ _requireAI() {
23
+ if (!this._ai) {
24
+ throw new Error('AI services not initialized. Provide openaiKey in config.');
25
+ }
26
+ }
27
+
28
+ // --- Core LLM Methods ---
29
+
30
+ /**
31
+ * Summarize text using AI.
32
+ * @param {string} text - Text content to summarize
33
+ * @param {Object} [options={}] - Summarization options (model, maxLength, etc.)
34
+ * @returns {Promise<string>} Generated summary
35
+ */
36
+ async summarize(text, options = {}) {
37
+ this._requireAI();
38
+ return this._ai.llm.summarize(text, options);
39
+ }
40
+
41
+ /**
42
+ * Analyze text for a specific aspect using AI.
43
+ * @param {string} text - Text content to analyze
44
+ * @param {string} aspect - Aspect to analyze (e.g., 'sentiment', 'tone', 'themes')
45
+ * @param {Object} [options={}] - Analysis options
46
+ * @returns {Promise<string>} Analysis result
47
+ */
48
+ async analyze(text, aspect, options = {}) {
49
+ this._requireAI();
50
+ return this._ai.llm.analyze(text, aspect, options);
51
+ }
52
+
53
+ /**
54
+ * Extract keywords from text using AI.
55
+ * @param {string} text - Text content to process
56
+ * @param {Object} [options={}] - Extraction options (count, focus, etc.)
57
+ * @returns {Promise<string[]>} Array of extracted keywords
58
+ */
59
+ async extractKeywords(text, options = {}) {
60
+ this._requireAI();
61
+ return this._ai.llm.extractKeywords(text, options);
62
+ }
63
+
64
+ /**
65
+ * Categorize text into one of the provided categories.
66
+ * @param {string} text - Text content to categorize
67
+ * @param {string[]} categories - Array of possible categories
68
+ * @param {Object} [options={}] - Categorization options
69
+ * @returns {Promise<string>} Selected category
70
+ */
71
+ async categorize(text, categories, options = {}) {
72
+ this._requireAI();
73
+ return this._ai.llm.categorize(text, categories, options);
74
+ }
75
+
76
+ /**
77
+ * Translate text to target language using AI.
78
+ * @param {string} text - Text to translate
79
+ * @param {string} targetLanguage - Target language (e.g., 'Spanish', 'French')
80
+ * @param {Object} [options={}] - Translation options
81
+ * @returns {Promise<string>} Translated text
82
+ */
83
+ async translate(text, targetLanguage, options = {}) {
84
+ this._requireAI();
85
+ return this._ai.llm.translate(text, targetLanguage, options);
86
+ }
87
+
88
+ /**
89
+ * Generate questions from text using AI.
90
+ * @param {string} text - Text content to generate questions from
91
+ * @param {Object} [options={}] - Generation options (count, type, etc.)
92
+ * @returns {Promise<string[]>} Array of generated questions
93
+ */
94
+ async generateQuestions(text, options = {}) {
95
+ this._requireAI();
96
+ return this._ai.llm.generateQuestions(text, options);
97
+ }
98
+
99
+ // --- Schema Extraction ---
100
+
101
+ /**
102
+ * Extract structured data from text according to a lens schema.
103
+ * @param {string} text - Text to extract data from
104
+ * @param {string} lensName - Name of lens with defined schema
105
+ * @param {Object} [options={}] - Extraction options
106
+ * @returns {Promise<Object>} Extracted data matching schema
107
+ * @throws {Error} If schema not found for lens
108
+ */
109
+ async extractToSchema(text, lensName, options = {}) {
110
+ this._requireAI();
111
+ const schemaObj = await this.getSchema(lensName);
112
+ if (!schemaObj) {
113
+ throw new Error(`No schema found for lens: ${lensName}`);
114
+ }
115
+ return this._ai.schemaExtractor.extractToSchema(text, schemaObj, options);
116
+ }
117
+
118
+ // --- Fuzzy JSON Operations ---
119
+
120
+ /**
121
+ * AI-powered fuzzy addition of JSON objects.
122
+ * @param {Object} obj1 - First object
123
+ * @param {Object} obj2 - Second object
124
+ * @param {Object} [options={}] - Operation options
125
+ * @returns {Promise<Object>} Result of fuzzy addition
126
+ */
127
+ async jsonAdd(obj1, obj2, options = {}) {
128
+ this._requireAI();
129
+ return this._ai.jsonOps.add(obj1, obj2, options);
130
+ }
131
+
132
+ /**
133
+ * AI-powered fuzzy subtraction of JSON objects.
134
+ * @param {Object} obj1 - Object to subtract from
135
+ * @param {Object} obj2 - Object to subtract
136
+ * @param {Object} [options={}] - Operation options
137
+ * @returns {Promise<Object>} Result of fuzzy subtraction
138
+ */
139
+ async jsonSubtract(obj1, obj2, options = {}) {
140
+ this._requireAI();
141
+ return this._ai.jsonOps.subtract(obj1, obj2, options);
142
+ }
143
+
144
+ /**
145
+ * AI-powered fuzzy union of JSON objects.
146
+ * @param {Object} obj1 - First object
147
+ * @param {Object} obj2 - Second object
148
+ * @param {Object} [options={}] - Operation options
149
+ * @returns {Promise<Object>} Result of fuzzy union
150
+ */
151
+ async jsonUnion(obj1, obj2, options = {}) {
152
+ this._requireAI();
153
+ return this._ai.jsonOps.union(obj1, obj2, options);
154
+ }
155
+
156
+ /**
157
+ * AI-powered fuzzy difference of JSON objects.
158
+ * @param {Object} obj1 - First object
159
+ * @param {Object} obj2 - Second object
160
+ * @param {Object} [options={}] - Operation options
161
+ * @returns {Promise<Object>} Result of fuzzy difference
162
+ */
163
+ async jsonDifference(obj1, obj2, options = {}) {
164
+ this._requireAI();
165
+ return this._ai.jsonOps.difference(obj1, obj2, options);
166
+ }
167
+
168
+ /**
169
+ * AI-powered fuzzy concatenation of JSON objects.
170
+ * @param {Object} obj1 - First object
171
+ * @param {Object} obj2 - Second object
172
+ * @param {Object} [options={}] - Operation options
173
+ * @returns {Promise<Object>} Result of fuzzy concatenation
174
+ */
175
+ async jsonConcatenate(obj1, obj2, options = {}) {
176
+ this._requireAI();
177
+ return this._ai.jsonOps.concatenate(obj1, obj2, options);
178
+ }
179
+
180
+ // --- Embeddings & Semantic Search ---
181
+
182
+ /**
183
+ * Generate embedding vector for text.
184
+ * @param {string} text - Text to embed
185
+ * @returns {Promise<number[]>} Embedding vector
186
+ */
187
+ async embed(text) {
188
+ this._requireAI();
189
+ return this._ai.embeddings.embed(text);
190
+ }
191
+
192
+ /**
193
+ * Perform semantic search on holon data using embeddings.
194
+ * @param {string} query - Search query text
195
+ * @param {string} holonId - Holon to search within
196
+ * @param {string} lensName - Lens to search within
197
+ * @param {Object} [options={}] - Search options (limit, threshold, etc.)
198
+ * @returns {Promise<Object[]>} Ranked search results
199
+ */
200
+ async semanticSearch(query, holonId, lensName, options = {}) {
201
+ this._requireAI();
202
+ return this._ai.embeddings.semanticSearch(query, holonId, lensName, options);
203
+ }
204
+
205
+ /**
206
+ * Store data with automatically generated embedding.
207
+ * @param {string} holonId - Holon ID to store in
208
+ * @param {string} lensName - Lens name to store under
209
+ * @param {Object} data - Data object to store
210
+ * @param {string} [textField='description'] - Field to use for embedding generation
211
+ * @returns {Promise<Object>} Stored data with embedding
212
+ */
213
+ async storeWithEmbedding(holonId, lensName, data, textField = 'description') {
214
+ this._requireAI();
215
+ return this._ai.embeddings.storeWithEmbedding(holonId, lensName, data, textField);
216
+ }
217
+
218
+ // --- Multi-Perspective Council ---
219
+
220
+ /**
221
+ * Ask a question to the multi-perspective AI council.
222
+ * @param {string} question - Question to ask
223
+ * @param {Object} [options={}] - Council options (perspectives, synthesis, etc.)
224
+ * @returns {Promise<Object>} Council responses and synthesis
225
+ */
226
+ async askCouncil(question, options = {}) {
227
+ this._requireAI();
228
+ return this._ai.council.ask(question, options);
229
+ }
230
+
231
+ /**
232
+ * Ask a question to a custom set of perspectives.
233
+ * @param {string} question - Question to ask
234
+ * @param {string[]} perspectives - Array of perspective descriptions
235
+ * @param {Object} [options={}] - Council options
236
+ * @returns {Promise<Object>} Custom council responses and synthesis
237
+ */
238
+ async askCouncilCustom(question, perspectives, options = {}) {
239
+ this._requireAI();
240
+ return this._ai.council.askCustom(question, perspectives, options);
241
+ }
242
+
243
+ // --- Text-to-Speech ---
244
+
245
+ /**
246
+ * Convert text to speech audio.
247
+ * @param {string} text - Text to convert to speech
248
+ * @param {string} [voice='nova'] - Voice to use (alloy, echo, fable, onyx, nova, shimmer)
249
+ * @param {Object} [options={}] - TTS options (speed, format, etc.)
250
+ * @returns {Promise<Buffer>} Audio buffer
251
+ */
252
+ async textToSpeech(text, voice = 'nova', options = {}) {
253
+ this._requireAI();
254
+ return this._ai.tts.speak(text, voice, options);
255
+ }
256
+
257
+ /**
258
+ * Convert text to speech audio (base64 encoded).
259
+ * @param {string} text - Text to convert to speech
260
+ * @param {string} [voice='nova'] - Voice to use
261
+ * @param {Object} [options={}] - TTS options
262
+ * @returns {Promise<string>} Base64-encoded audio
263
+ */
264
+ async textToSpeechBase64(text, voice = 'nova', options = {}) {
265
+ this._requireAI();
266
+ return this._ai.tts.speakBase64(text, voice, options);
267
+ }
268
+
269
+ // --- Natural Language Queries ---
270
+
271
+ /**
272
+ * Execute a natural language query on holon data.
273
+ * @param {string} query - Natural language query
274
+ * @param {string|null} [holonId=null] - Optional holon to query
275
+ * @param {string|null} [lensName=null] - Optional lens to query
276
+ * @param {Object} [options={}] - Query options
277
+ * @returns {Promise<Object>} Query results
278
+ */
279
+ async nlQuery(query, holonId = null, lensName = null, options = {}) {
280
+ this._requireAI();
281
+ return this._ai.nlQuery.execute(query, holonId, lensName, options);
282
+ }
283
+
284
+ /**
285
+ * Parse a natural language query into structured components.
286
+ * @param {string} query - Natural language query
287
+ * @returns {Promise<Object>} Parsed query structure
288
+ */
289
+ async parseNLQuery(query) {
290
+ this._requireAI();
291
+ return this._ai.nlQuery.parse(query);
292
+ }
293
+
294
+ // --- Auto-Classification ---
295
+
296
+ /**
297
+ * Classify content to determine appropriate lens.
298
+ * @param {string|Object} content - Content to classify
299
+ * @param {Object} [options={}] - Classification options
300
+ * @returns {Promise<string>} Recommended lens name
301
+ */
302
+ async classifyToLens(content, options = {}) {
303
+ this._requireAI();
304
+ return this._ai.classifier.classifyToLens(content, options);
305
+ }
306
+
307
+ /**
308
+ * Automatically classify and store content in appropriate lens.
309
+ * @param {string} holonId - Holon to store in
310
+ * @param {string|Object} content - Content to classify and store
311
+ * @param {Object} [options={}] - Storage options
312
+ * @returns {Promise<Object>} Stored data with classification info
313
+ */
314
+ async autoStore(holonId, content, options = {}) {
315
+ this._requireAI();
316
+ return this._ai.classifier.autoStore(holonId, content, options);
317
+ }
318
+
319
+ /**
320
+ * Register a lens for auto-classification.
321
+ * @param {string} lensName - Lens name to register
322
+ * @param {string} description - Lens description for classification
323
+ * @param {string[]} [keywords=[]] - Keywords associated with lens
324
+ */
325
+ registerLensForClassification(lensName, description, keywords = []) {
326
+ this._requireAI();
327
+ this._ai.classifier.registerLens(lensName, description, keywords);
328
+ }
329
+
330
+ // --- Spatial Analysis ---
331
+
332
+ /**
333
+ * Analyze a geographic region using AI.
334
+ * @param {string} holonId - H3 holon ID to analyze
335
+ * @param {string|null} [lensName=null] - Optional lens to focus on
336
+ * @param {string|null} [aspect=null] - Optional aspect to analyze
337
+ * @param {Object} [options={}] - Analysis options
338
+ * @returns {Promise<Object>} Region analysis
339
+ */
340
+ async analyzeRegion(holonId, lensName = null, aspect = null, options = {}) {
341
+ this._requireAI();
342
+ return this._ai.spatial.analyzeRegion(holonId, lensName, aspect, options);
343
+ }
344
+
345
+ /**
346
+ * Compare two geographic regions using AI.
347
+ * @param {string} holon1 - First H3 holon ID
348
+ * @param {string} holon2 - Second H3 holon ID
349
+ * @param {string|null} [lensName=null] - Optional lens to focus comparison
350
+ * @returns {Promise<Object>} Comparison analysis
351
+ */
352
+ async compareRegions(holon1, holon2, lensName = null) {
353
+ this._requireAI();
354
+ return this._ai.spatial.compareRegions(holon1, holon2, lensName);
355
+ }
356
+
357
+ /**
358
+ * Analyze spatial trends over time.
359
+ * @param {string} holonId - H3 holon ID
360
+ * @param {string} lensName - Lens to analyze trends for
361
+ * @param {Object|null} [timeRange=null] - Time range for trend analysis
362
+ * @returns {Promise<Object>} Trend analysis
363
+ */
364
+ async spatialTrends(holonId, lensName, timeRange = null) {
365
+ this._requireAI();
366
+ return this._ai.spatial.spatialTrends(holonId, lensName, timeRange);
367
+ }
368
+
369
+ // --- Smart Aggregation ---
370
+
371
+ /**
372
+ * Intelligently upcast data with AI-powered aggregation.
373
+ * @param {string} holonId - H3 holon ID to upcast from
374
+ * @param {string} lensName - Lens to upcast
375
+ * @param {Object} [options={}] - Upcast options
376
+ * @returns {Promise<Object>} Smart upcast result
377
+ */
378
+ async smartUpcast(holonId, lensName, options = {}) {
379
+ this._requireAI();
380
+ return this._ai.aggregation.smartUpcast(holonId, lensName, options);
381
+ }
382
+
383
+ /**
384
+ * Generate AI-powered summary of holon data.
385
+ * @param {string} holonId - Holon ID to summarize
386
+ * @returns {Promise<string>} Generated holon summary
387
+ */
388
+ async generateHolonSummary(holonId) {
389
+ this._requireAI();
390
+ return this._ai.aggregation.generateHolonSummary(holonId);
391
+ }
392
+
393
+ // --- Federation Advisor ---
394
+
395
+ /**
396
+ * Get AI suggestions for holon federations.
397
+ * @param {string} holonId - Holon to analyze for federation
398
+ * @param {Object} [options={}] - Suggestion options
399
+ * @returns {Promise<Object[]>} Array of federation suggestions
400
+ */
401
+ async suggestFederations(holonId, options = {}) {
402
+ this._requireAI();
403
+ return this._ai.federationAdvisor.suggestFederations(holonId, options);
404
+ }
405
+
406
+ /**
407
+ * Analyze health of holon's federations.
408
+ * @param {string} holonId - Holon to analyze
409
+ * @returns {Promise<Object>} Federation health report
410
+ */
411
+ async analyzeFederationHealth(holonId) {
412
+ this._requireAI();
413
+ return this._ai.federationAdvisor.analyzeFederationHealth(holonId);
414
+ }
415
+
416
+ /**
417
+ * Get AI recommendations for optimizing federations.
418
+ * @param {string} holonId - Holon to optimize
419
+ * @returns {Promise<Object>} Optimization recommendations
420
+ */
421
+ async optimizeFederation(holonId) {
422
+ this._requireAI();
423
+ return this._ai.federationAdvisor.optimizeFederation(holonId);
424
+ }
425
+
426
+ // --- Relationship Discovery ---
427
+
428
+ /**
429
+ * Discover relationships between data items using AI.
430
+ * @param {string} holonId - Holon to analyze
431
+ * @param {string|null} [lensName=null] - Optional lens to focus on
432
+ * @returns {Promise<Object[]>} Discovered relationships
433
+ */
434
+ async discoverRelationships(holonId, lensName = null) {
435
+ this._requireAI();
436
+ return this._ai.relationships.discoverRelationships(holonId, lensName);
437
+ }
438
+
439
+ /**
440
+ * Find similar items using AI and embeddings.
441
+ * @param {Object} item - Item to find similar items for
442
+ * @param {string} holonId - Holon to search within
443
+ * @param {string|null} [lensName=null] - Optional lens to search
444
+ * @param {Object} [options={}] - Search options (limit, threshold, etc.)
445
+ * @returns {Promise<Object[]>} Similar items
446
+ */
447
+ async findSimilar(item, holonId, lensName = null, options = {}) {
448
+ this._requireAI();
449
+ return this._ai.relationships.findSimilar(item, holonId, lensName, options);
450
+ }
451
+
452
+ /**
453
+ * Build relationship graph for holon data.
454
+ * @param {string} holonId - Holon ID
455
+ * @param {string} lensName - Lens to build graph for
456
+ * @returns {Promise<Object>} Relationship graph structure
457
+ */
458
+ async buildRelationshipGraph(holonId, lensName) {
459
+ this._requireAI();
460
+ return this._ai.relationships.buildGraph(holonId, lensName);
461
+ }
462
+
463
+ /**
464
+ * Get AI suggestions for connecting an item to others.
465
+ * @param {Object} item - Item to suggest connections for
466
+ * @param {string} holonId - Holon context
467
+ * @param {string} lensName - Lens context
468
+ * @returns {Promise<Object[]>} Connection suggestions
469
+ */
470
+ async suggestConnections(item, holonId, lensName) {
471
+ this._requireAI();
472
+ return this._ai.relationships.suggestConnections(item, holonId, lensName);
473
+ }
474
+
475
+ // --- Task Breakdown ---
476
+
477
+ /**
478
+ * Break down complex item into subtasks using AI.
479
+ * @param {Object} item - Item to break down
480
+ * @param {string} holonId - Holon to store breakdown in
481
+ * @param {string} lensName - Lens to use for subtasks
482
+ * @param {Object} [options={}] - Breakdown options (depth, strategy, etc.)
483
+ * @returns {Promise<Object>} Breakdown structure
484
+ */
485
+ async breakdown(item, holonId, lensName, options = {}) {
486
+ this._requireAI();
487
+ return this._ai.taskBreakdown.breakdown(item, holonId, lensName, options);
488
+ }
489
+
490
+ /**
491
+ * Get AI suggestion for breakdown strategy.
492
+ * @param {Object} item - Item to analyze
493
+ * @returns {Promise<Object>} Suggested breakdown strategy
494
+ */
495
+ async suggestBreakdownStrategy(item) {
496
+ this._requireAI();
497
+ return this._ai.taskBreakdown.suggestStrategy(item);
498
+ }
499
+
500
+ /**
501
+ * Flatten hierarchical breakdown into linear array.
502
+ * @param {Object} breakdownResult - Breakdown structure to flatten
503
+ * @returns {Object[]} Flattened breakdown items
504
+ */
505
+ flattenBreakdown(breakdownResult) {
506
+ this._requireAI();
507
+ return this._ai.taskBreakdown.flatten(breakdownResult);
508
+ }
509
+
510
+ /**
511
+ * Get dependency-ordered list of breakdown items.
512
+ * @param {Object} breakdownResult - Breakdown structure
513
+ * @returns {Object[]} Items ordered by dependencies
514
+ */
515
+ getBreakdownDependencyOrder(breakdownResult) {
516
+ this._requireAI();
517
+ return this._ai.taskBreakdown.getDependencyOrder(breakdownResult);
518
+ }
519
+
520
+ /**
521
+ * Get progress status of breakdown items.
522
+ * @param {string} holonId - Holon ID
523
+ * @param {string} lensName - Lens name
524
+ * @param {string} itemId - Parent item ID
525
+ * @returns {Promise<Object>} Progress report
526
+ */
527
+ async getBreakdownProgress(holonId, lensName, itemId) {
528
+ this._requireAI();
529
+ return this._ai.taskBreakdown.getProgress(holonId, lensName, itemId);
530
+ }
531
+
532
+ // --- H3 Geospatial AI ---
533
+
534
+ /**
535
+ * Get AI suggestion for optimal H3 resolution for item.
536
+ * @param {Object} item - Item to analyze
537
+ * @param {Object} [options={}] - Analysis options
538
+ * @returns {Promise<number>} Suggested H3 resolution level
539
+ */
540
+ async suggestH3Resolution(item, options = {}) {
541
+ this._requireAI();
542
+ return this._ai.h3ai.suggestResolution(item, options);
543
+ }
544
+
545
+ /**
546
+ * Analyze H3 distribution patterns in data.
547
+ * @param {string} holonId - H3 holon to analyze
548
+ * @param {string} lensName - Lens to analyze
549
+ * @param {Object} [options={}] - Analysis options
550
+ * @returns {Promise<Object>} Distribution analysis
551
+ */
552
+ async analyzeH3Distribution(holonId, lensName, options = {}) {
553
+ this._requireAI();
554
+ return this._ai.h3ai.analyzeDistribution(holonId, lensName, options);
555
+ }
556
+
557
+ /**
558
+ * Find relevance of neighbor H3 cells.
559
+ * @param {string} holonId - H3 holon ID
560
+ * @param {string} lensName - Lens to analyze
561
+ * @param {Object} [options={}] - Analysis options
562
+ * @returns {Promise<Object[]>} Neighbor relevance scores
563
+ */
564
+ async findH3NeighborRelevance(holonId, lensName, options = {}) {
565
+ this._requireAI();
566
+ return this._ai.h3ai.findNeighborRelevance(holonId, lensName, options);
567
+ }
568
+
569
+ /**
570
+ * Get AI suggestion for geographic scope of item.
571
+ * @param {Object} item - Item to analyze
572
+ * @param {string} holonId - Context holon
573
+ * @param {string} lensName - Context lens
574
+ * @param {Object} [options={}] - Analysis options
575
+ * @returns {Promise<Object>} Geographic scope suggestion
576
+ */
577
+ async suggestGeographicScope(item, holonId, lensName, options = {}) {
578
+ this._requireAI();
579
+ return this._ai.h3ai.suggestGeographicScope(item, holonId, lensName, options);
580
+ }
581
+
582
+ /**
583
+ * Analyze H3 coverage patterns.
584
+ * @param {string} holonId - H3 holon to analyze
585
+ * @param {string} lensName - Lens to analyze
586
+ * @param {Object} [options={}] - Analysis options
587
+ * @returns {Promise<Object>} Coverage analysis
588
+ */
589
+ async analyzeH3Coverage(holonId, lensName, options = {}) {
590
+ this._requireAI();
591
+ return this._ai.h3ai.analyzeCoverage(holonId, lensName, options);
592
+ }
593
+
594
+ /**
595
+ * Get insights across different H3 resolutions.
596
+ * @param {string} holonId - H3 holon to analyze
597
+ * @param {string} lensName - Lens to analyze
598
+ * @param {Object} [options={}] - Analysis options
599
+ * @returns {Promise<Object>} Cross-resolution insights
600
+ */
601
+ async crossH3ResolutionInsights(holonId, lensName, options = {}) {
602
+ this._requireAI();
603
+ return this._ai.h3ai.crossResolutionInsights(holonId, lensName, options);
604
+ }
605
+
606
+ /**
607
+ * Get AI suggestion for migrating item to different H3 resolution.
608
+ * @param {Object} item - Item to migrate
609
+ * @param {string} holonId - Current holon
610
+ * @param {string} lensName - Lens context
611
+ * @param {Object} [options={}] - Migration options
612
+ * @returns {Promise<Object>} Migration suggestion
613
+ */
614
+ async suggestH3Migration(item, holonId, lensName, options = {}) {
615
+ this._requireAI();
616
+ return this._ai.h3ai.suggestMigration(item, holonId, lensName, options);
617
+ }
618
+
619
+ /**
620
+ * Generate comprehensive geographic report for holon.
621
+ * @param {string} holonId - H3 holon to report on
622
+ * @param {Object} [options={}] - Report options
623
+ * @returns {Promise<string>} Generated geographic report
624
+ */
625
+ async generateH3Report(holonId, options = {}) {
626
+ this._requireAI();
627
+ return this._ai.h3ai.generateGeographicReport(holonId, options);
628
+ }
629
+
630
+ /**
631
+ * Find geographic clusters in holon data.
632
+ * @param {string} holonId - H3 holon to analyze
633
+ * @param {string} lensName - Lens to analyze
634
+ * @param {Object} [options={}] - Clustering options
635
+ * @returns {Promise<Object[]>} Identified clusters
636
+ */
637
+ async findH3Clusters(holonId, lensName, options = {}) {
638
+ this._requireAI();
639
+ return this._ai.h3ai.findGeographicClusters(holonId, lensName, options);
640
+ }
641
+
642
+ /**
643
+ * Analyze geographic impact of an item.
644
+ * @param {Object} item - Item to analyze impact for
645
+ * @param {string} holonId - Context holon
646
+ * @param {string} lensName - Context lens
647
+ * @param {Object} [options={}] - Analysis options
648
+ * @returns {Promise<Object>} Impact analysis
649
+ */
650
+ async analyzeH3Impact(item, holonId, lensName, options = {}) {
651
+ this._requireAI();
652
+ return this._ai.h3ai.analyzeGeographicImpact(item, holonId, lensName, options);
653
+ }
654
+ };
655
+ }
656
+
657
+ export default withAIMethods;