holosphere 2.0.0-alpha1 → 2.0.0-alpha10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/FEATURES.md +431 -0
  3. package/LICENSE +29 -166
  4. package/LICENSE-AGPL.md +180 -0
  5. package/README.md +97 -16
  6. package/dist/2019-D2OG2idw.js +6680 -0
  7. package/dist/2019-D2OG2idw.js.map +1 -0
  8. package/dist/2019-EION3wKo.cjs +8 -0
  9. package/dist/2019-EION3wKo.cjs.map +1 -0
  10. package/dist/_commonjsHelpers-C37NGDzP.cjs +2 -0
  11. package/dist/_commonjsHelpers-C37NGDzP.cjs.map +1 -0
  12. package/dist/_commonjsHelpers-CUmg6egw.js +7 -0
  13. package/dist/_commonjsHelpers-CUmg6egw.js.map +1 -0
  14. package/dist/browser-BSniCNqO.js +3058 -0
  15. package/dist/browser-BSniCNqO.js.map +1 -0
  16. package/dist/browser-Cq59Ij19.cjs +2 -0
  17. package/dist/browser-Cq59Ij19.cjs.map +1 -0
  18. package/dist/cdn/holosphere.min.js +55 -0
  19. package/dist/cdn/holosphere.min.js.map +1 -0
  20. package/dist/cjs/holosphere.cjs +2 -0
  21. package/dist/cjs/holosphere.cjs.map +1 -0
  22. package/dist/esm/holosphere.js +53 -0
  23. package/dist/esm/holosphere.js.map +1 -0
  24. package/dist/index-DDGt_V9o.cjs +12 -0
  25. package/dist/index-DDGt_V9o.cjs.map +1 -0
  26. package/dist/index-DJXftyvB.js +39841 -0
  27. package/dist/index-DJXftyvB.js.map +1 -0
  28. package/dist/index-DMbdcMtK.cjs +18 -0
  29. package/dist/index-DMbdcMtK.cjs.map +1 -0
  30. package/dist/index-DeZ1xz_s.js +15104 -0
  31. package/dist/index-DeZ1xz_s.js.map +1 -0
  32. package/dist/indexeddb-storage-BFt6hMeF.js +176 -0
  33. package/dist/indexeddb-storage-BFt6hMeF.js.map +1 -0
  34. package/dist/indexeddb-storage-BK5tv4Sh.cjs +2 -0
  35. package/dist/indexeddb-storage-BK5tv4Sh.cjs.map +1 -0
  36. package/dist/memory-storage-C9HuoL2E.js +91 -0
  37. package/dist/memory-storage-C9HuoL2E.js.map +1 -0
  38. package/dist/memory-storage-Dao7jfYG.cjs +2 -0
  39. package/dist/memory-storage-Dao7jfYG.cjs.map +1 -0
  40. package/dist/secp256k1-BbKzbLtD.cjs +12 -0
  41. package/dist/secp256k1-BbKzbLtD.cjs.map +1 -0
  42. package/dist/secp256k1-CreY7Pcl.js +1890 -0
  43. package/dist/secp256k1-CreY7Pcl.js.map +1 -0
  44. package/docs/CONTRACTS.md +797 -0
  45. package/docs/FOSDEM_PROPOSAL.md +388 -0
  46. package/docs/LOCALFIRST.md +266 -0
  47. package/docs/api/ai_aggregation.js.html +333 -0
  48. package/docs/api/ai_breakdown.js.html +524 -0
  49. package/docs/api/ai_classifier.js.html +231 -0
  50. package/docs/api/ai_council.js.html +246 -0
  51. package/docs/api/ai_embeddings.js.html +304 -0
  52. package/docs/api/ai_federation-ai.js.html +338 -0
  53. package/docs/api/ai_h3-ai.js.html +970 -0
  54. package/docs/api/ai_index.js.html +124 -0
  55. package/docs/api/ai_json-ops.js.html +241 -0
  56. package/docs/api/ai_llm-service.js.html +239 -0
  57. package/docs/api/ai_nl-query.js.html +236 -0
  58. package/docs/api/ai_relationships.js.html +367 -0
  59. package/docs/api/ai_schema-extractor.js.html +235 -0
  60. package/docs/api/ai_spatial.js.html +307 -0
  61. package/docs/api/ai_tts.js.html +214 -0
  62. package/docs/api/content_social-protocols.js.html +180 -0
  63. package/docs/api/core_holosphere.js.html +757 -0
  64. package/docs/api/crypto_nostr-utils.js.html +306 -0
  65. package/docs/api/crypto_secp256k1.js.html +267 -0
  66. package/docs/api/data/search.json +1 -0
  67. package/docs/api/federation_discovery.js.html +337 -0
  68. package/docs/api/federation_handshake.js.html +478 -0
  69. package/docs/api/federation_hologram.js.html +1053 -0
  70. package/docs/api/federation_registry.js.html +389 -0
  71. package/docs/api/fonts/Inconsolata-Regular.ttf +0 -0
  72. package/docs/api/fonts/OpenSans-Regular.ttf +0 -0
  73. package/docs/api/fonts/WorkSans-Bold.ttf +0 -0
  74. package/docs/api/global.html +3 -0
  75. package/docs/api/hierarchical_upcast.js.html +128 -0
  76. package/docs/api/index.html +265 -0
  77. package/docs/api/index.js.html +1868 -0
  78. package/docs/api/lib_ai-methods.js.html +660 -0
  79. package/docs/api/lib_contract-methods.js.html +445 -0
  80. package/docs/api/lib_errors.js.html +56 -0
  81. package/docs/api/lib_federation-methods.js.html +348 -0
  82. package/docs/api/lib_index.js.html +33 -0
  83. package/docs/api/module-ai.html +5 -0
  84. package/docs/api/module-ai_aggregation-SmartAggregation.html +6 -0
  85. package/docs/api/module-ai_aggregation.SmartAggregation.html +3 -0
  86. package/docs/api/module-ai_aggregation.html +3 -0
  87. package/docs/api/module-ai_breakdown-TaskBreakdown.html +5 -0
  88. package/docs/api/module-ai_breakdown.TaskBreakdown.html +3 -0
  89. package/docs/api/module-ai_breakdown.html +3 -0
  90. package/docs/api/module-ai_classifier-Classifier.html +6 -0
  91. package/docs/api/module-ai_classifier.Classifier.html +3 -0
  92. package/docs/api/module-ai_classifier.html +3 -0
  93. package/docs/api/module-ai_council-Council.html +6 -0
  94. package/docs/api/module-ai_council.Council.html +3 -0
  95. package/docs/api/module-ai_council.html +3 -0
  96. package/docs/api/module-ai_embeddings-Embeddings.html +5 -0
  97. package/docs/api/module-ai_embeddings.Embeddings.html +3 -0
  98. package/docs/api/module-ai_embeddings.html +3 -0
  99. package/docs/api/module-ai_federation-ai-FederationAdvisor.html +6 -0
  100. package/docs/api/module-ai_federation-ai.FederationAdvisor.html +3 -0
  101. package/docs/api/module-ai_federation-ai.html +3 -0
  102. package/docs/api/module-ai_h3-ai-H3AI.html +6 -0
  103. package/docs/api/module-ai_h3-ai.H3AI.html +3 -0
  104. package/docs/api/module-ai_h3-ai.html +3 -0
  105. package/docs/api/module-ai_json-ops-JSONOps.html +5 -0
  106. package/docs/api/module-ai_json-ops.JSONOps.html +3 -0
  107. package/docs/api/module-ai_json-ops.html +3 -0
  108. package/docs/api/module-ai_llm-service-LLMService.html +5 -0
  109. package/docs/api/module-ai_llm-service.LLMService.html +3 -0
  110. package/docs/api/module-ai_llm-service.html +3 -0
  111. package/docs/api/module-ai_nl-query-NLQuery.html +5 -0
  112. package/docs/api/module-ai_nl-query.NLQuery.html +3 -0
  113. package/docs/api/module-ai_nl-query.html +3 -0
  114. package/docs/api/module-ai_relationships-RelationshipDiscovery.html +6 -0
  115. package/docs/api/module-ai_relationships.RelationshipDiscovery.html +3 -0
  116. package/docs/api/module-ai_relationships.html +3 -0
  117. package/docs/api/module-ai_schema-extractor-SchemaExtractor.html +5 -0
  118. package/docs/api/module-ai_schema-extractor.SchemaExtractor.html +3 -0
  119. package/docs/api/module-ai_schema-extractor.html +3 -0
  120. package/docs/api/module-ai_spatial-SpatialAnalysis.html +6 -0
  121. package/docs/api/module-ai_spatial.SpatialAnalysis.html +3 -0
  122. package/docs/api/module-ai_spatial.html +3 -0
  123. package/docs/api/module-ai_tts-TTS.html +5 -0
  124. package/docs/api/module-ai_tts.TTS.html +3 -0
  125. package/docs/api/module-ai_tts.html +3 -0
  126. package/docs/api/module-content_social-protocols.html +3 -0
  127. package/docs/api/module-core_holosphere-HoloSphere.html +6 -0
  128. package/docs/api/module-core_holosphere.HoloSphere.html +3 -0
  129. package/docs/api/module-core_holosphere.html +3 -0
  130. package/docs/api/module-crypto_nostr-utils.html +3 -0
  131. package/docs/api/module-crypto_secp256k1.html +3 -0
  132. package/docs/api/module-federation_hologram.html +3 -0
  133. package/docs/api/module-hierarchical_upcast.html +3 -0
  134. package/docs/api/module-holosphere-HoloSphereBase.html +3 -0
  135. package/docs/api/module-holosphere.html +3 -0
  136. package/docs/api/module-lib_ai-methods.html +3 -0
  137. package/docs/api/module-lib_contract-methods.html +3 -0
  138. package/docs/api/module-lib_errors-AuthorizationError.html +3 -0
  139. package/docs/api/module-lib_errors-ValidationError.html +3 -0
  140. package/docs/api/module-lib_errors.AuthorizationError.html +3 -0
  141. package/docs/api/module-lib_errors.ValidationError.html +3 -0
  142. package/docs/api/module-lib_errors.html +3 -0
  143. package/docs/api/module-lib_federation-methods.html +3 -0
  144. package/docs/api/module-lib_index.html +3 -0
  145. package/docs/api/module-schema_validator-ValidationError.html +3 -0
  146. package/docs/api/module-schema_validator.ValidationError.html +3 -0
  147. package/docs/api/module-schema_validator.html +3 -0
  148. package/docs/api/module-spatial_h3-operations.html +4 -0
  149. package/docs/api/module-storage_backend-factory.BackendFactory.html +3 -0
  150. package/docs/api/module-storage_backend-factory.html +3 -0
  151. package/docs/api/module-storage_backend-interface-StorageBackend.html +3 -0
  152. package/docs/api/module-storage_backend-interface.StorageBackend.html +3 -0
  153. package/docs/api/module-storage_backend-interface.html +3 -0
  154. package/docs/api/module-storage_backends_activitypub-backend-ActivityPubBackend.html +7 -0
  155. package/docs/api/module-storage_backends_activitypub-backend.ActivityPubBackend.html +3 -0
  156. package/docs/api/module-storage_backends_activitypub-backend.html +3 -0
  157. package/docs/api/module-storage_backends_activitypub_server-ActivityPubServer.html +8 -0
  158. package/docs/api/module-storage_backends_activitypub_server.ActivityPubServer.html +3 -0
  159. package/docs/api/module-storage_backends_activitypub_server.html +3 -0
  160. package/docs/api/module-storage_backends_gundb-backend-GunDBBackend.html +7 -0
  161. package/docs/api/module-storage_backends_gundb-backend.GunDBBackend.html +3 -0
  162. package/docs/api/module-storage_backends_gundb-backend.html +3 -0
  163. package/docs/api/module-storage_backends_nostr-backend-NostrBackend.html +8 -0
  164. package/docs/api/module-storage_backends_nostr-backend.NostrBackend.html +3 -0
  165. package/docs/api/module-storage_backends_nostr-backend.html +3 -0
  166. package/docs/api/module-storage_filesystem-storage-FileSystemStorage.html +5 -0
  167. package/docs/api/module-storage_filesystem-storage-browser-FileSystemStorage.html +3 -0
  168. package/docs/api/module-storage_filesystem-storage-browser.FileSystemStorage.html +3 -0
  169. package/docs/api/module-storage_filesystem-storage-browser.html +3 -0
  170. package/docs/api/module-storage_filesystem-storage.FileSystemStorage.html +3 -0
  171. package/docs/api/module-storage_filesystem-storage.html +3 -0
  172. package/docs/api/module-storage_global-tables.html +3 -0
  173. package/docs/api/module-storage_gun-async.html +3 -0
  174. package/docs/api/module-storage_gun-auth-GunAuth.html +5 -0
  175. package/docs/api/module-storage_gun-auth.GunAuth.html +3 -0
  176. package/docs/api/module-storage_gun-auth.html +3 -0
  177. package/docs/api/module-storage_gun-federation.html +3 -0
  178. package/docs/api/module-storage_gun-references-GunReferenceHandler.html +5 -0
  179. package/docs/api/module-storage_gun-references.GunReferenceHandler.html +3 -0
  180. package/docs/api/module-storage_gun-references.html +3 -0
  181. package/docs/api/module-storage_gun-schema-GunSchemaValidator.html +5 -0
  182. package/docs/api/module-storage_gun-schema.GunSchemaValidator.html +3 -0
  183. package/docs/api/module-storage_gun-schema.html +3 -0
  184. package/docs/api/module-storage_gun-wrapper.html +11 -0
  185. package/docs/api/module-storage_indexeddb-storage-IndexedDBStorage.html +5 -0
  186. package/docs/api/module-storage_indexeddb-storage.IndexedDBStorage.html +3 -0
  187. package/docs/api/module-storage_indexeddb-storage.html +3 -0
  188. package/docs/api/module-storage_key-storage-simple.html +3 -0
  189. package/docs/api/module-storage_key-storage.html +4 -0
  190. package/docs/api/module-storage_memory-storage-MemoryStorage.html +5 -0
  191. package/docs/api/module-storage_memory-storage.MemoryStorage.html +3 -0
  192. package/docs/api/module-storage_memory-storage.html +3 -0
  193. package/docs/api/module-storage_migration-MigrationTool.html +6 -0
  194. package/docs/api/module-storage_migration.MigrationTool.html +3 -0
  195. package/docs/api/module-storage_migration.html +3 -0
  196. package/docs/api/module-storage_nostr-async.html +18 -0
  197. package/docs/api/module-storage_nostr-client-LRUCache.html +3 -0
  198. package/docs/api/module-storage_nostr-client-NostrClient.html +7 -0
  199. package/docs/api/module-storage_nostr-client.NostrClient.html +15 -0
  200. package/docs/api/module-storage_nostr-client.html +6 -0
  201. package/docs/api/module-storage_nostr-wrapper.html +3 -0
  202. package/docs/api/module-storage_outbox-queue-OutboxQueue.html +4 -0
  203. package/docs/api/module-storage_outbox-queue.OutboxQueue.html +3 -0
  204. package/docs/api/module-storage_outbox-queue.html +3 -0
  205. package/docs/api/module-storage_persistent-storage-PersistentStorage.html +3 -0
  206. package/docs/api/module-storage_persistent-storage.html +4 -0
  207. package/docs/api/module-storage_sync-service-SyncService.html +5 -0
  208. package/docs/api/module-storage_sync-service.SyncService.html +3 -0
  209. package/docs/api/module-storage_sync-service.html +3 -0
  210. package/docs/api/module-storage_unified-storage.html +3 -0
  211. package/docs/api/module-subscriptions_manager.SubscriptionRegistry.html +3 -0
  212. package/docs/api/module-subscriptions_manager.html +3 -0
  213. package/docs/api/schema_validator.js.html +113 -0
  214. package/docs/api/scripts/core.js +726 -0
  215. package/docs/api/scripts/core.min.js +23 -0
  216. package/docs/api/scripts/resize.js +90 -0
  217. package/docs/api/scripts/search.js +265 -0
  218. package/docs/api/scripts/search.min.js +6 -0
  219. package/docs/api/scripts/third-party/Apache-License-2.0.txt +202 -0
  220. package/docs/api/scripts/third-party/fuse.js +9 -0
  221. package/docs/api/scripts/third-party/hljs-line-num-original.js +369 -0
  222. package/docs/api/scripts/third-party/hljs-line-num.js +1 -0
  223. package/docs/api/scripts/third-party/hljs-original.js +5171 -0
  224. package/docs/api/scripts/third-party/hljs.js +1 -0
  225. package/docs/api/scripts/third-party/popper.js +5 -0
  226. package/docs/api/scripts/third-party/tippy.js +1 -0
  227. package/docs/api/scripts/third-party/tocbot.js +672 -0
  228. package/docs/api/scripts/third-party/tocbot.min.js +1 -0
  229. package/docs/api/spatial_h3-operations.js.html +129 -0
  230. package/docs/api/storage_backend-factory.js.html +133 -0
  231. package/docs/api/storage_backend-interface.js.html +164 -0
  232. package/docs/api/storage_backends_activitypub-backend.js.html +298 -0
  233. package/docs/api/storage_backends_activitypub_server.js.html +678 -0
  234. package/docs/api/storage_backends_gundb-backend.js.html +878 -0
  235. package/docs/api/storage_backends_nostr-backend.js.html +254 -0
  236. package/docs/api/storage_filesystem-storage-browser.js.html +83 -0
  237. package/docs/api/storage_filesystem-storage.js.html +207 -0
  238. package/docs/api/storage_global-tables.js.html +116 -0
  239. package/docs/api/storage_gun-async.js.html +344 -0
  240. package/docs/api/storage_gun-auth.js.html +376 -0
  241. package/docs/api/storage_gun-federation.js.html +788 -0
  242. package/docs/api/storage_gun-references.js.html +212 -0
  243. package/docs/api/storage_gun-schema.js.html +309 -0
  244. package/docs/api/storage_gun-wrapper.js.html +645 -0
  245. package/docs/api/storage_indexeddb-storage.js.html +224 -0
  246. package/docs/api/storage_key-storage-simple.js.html +102 -0
  247. package/docs/api/storage_key-storage.js.html +171 -0
  248. package/docs/api/storage_memory-storage.js.html +128 -0
  249. package/docs/api/storage_migration.js.html +354 -0
  250. package/docs/api/storage_nostr-async.js.html +1076 -0
  251. package/docs/api/storage_nostr-client.js.html +1598 -0
  252. package/docs/api/storage_nostr-wrapper.js.html +218 -0
  253. package/docs/api/storage_outbox-queue.js.html +248 -0
  254. package/docs/api/storage_persistent-storage.js.html +160 -0
  255. package/docs/api/storage_sync-service.js.html +201 -0
  256. package/docs/api/storage_unified-storage.js.html +157 -0
  257. package/docs/api/styles/clean-jsdoc-theme-base.css +1159 -0
  258. package/docs/api/styles/clean-jsdoc-theme-dark.css +412 -0
  259. package/docs/api/styles/clean-jsdoc-theme-light.css +482 -0
  260. package/docs/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  261. package/docs/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  262. package/docs/api/styles/clean-jsdoc-theme.min.css +1 -0
  263. package/docs/api/subscriptions_manager.js.html +162 -0
  264. package/docs/contracts/api-interface.md +793 -0
  265. package/docs/data-model.md +476 -0
  266. package/docs/gun-async-usage.md +338 -0
  267. package/docs/plan.md +349 -0
  268. package/docs/quickstart.md +674 -0
  269. package/docs/research.md +362 -0
  270. package/docs/spec.md +244 -0
  271. package/docs/storage-backends.md +326 -0
  272. package/docs/tasks.md +947 -0
  273. package/examples/demo.html +47 -0
  274. package/examples/holosphere-widget.js +1242 -0
  275. package/examples/widget-demo.html +274 -0
  276. package/examples/widget.html +703 -0
  277. package/jsdoc.json +26 -0
  278. package/package.json +25 -7
  279. package/src/ai/aggregation.js +13 -2
  280. package/src/ai/breakdown.js +12 -2
  281. package/src/ai/classifier.js +14 -3
  282. package/src/ai/council.js +22 -7
  283. package/src/ai/embeddings.js +37 -15
  284. package/src/ai/federation-ai.js +13 -2
  285. package/src/ai/h3-ai.js +14 -2
  286. package/src/ai/index.js +16 -7
  287. package/src/ai/json-ops.js +18 -5
  288. package/src/ai/llm-service.js +62 -31
  289. package/src/ai/nl-query.js +12 -2
  290. package/src/ai/relationships.js +13 -2
  291. package/src/ai/schema-extractor.js +24 -10
  292. package/src/ai/spatial.js +13 -2
  293. package/src/ai/tts.js +25 -8
  294. package/src/cdn-entry.js +22 -0
  295. package/src/content/social-protocols.js +34 -25
  296. package/src/contracts/abis/Appreciative.json +1280 -0
  297. package/src/contracts/abis/AppreciativeFactory.json +101 -0
  298. package/src/contracts/abis/Bundle.json +1438 -0
  299. package/src/contracts/abis/BundleFactory.json +106 -0
  300. package/src/contracts/abis/Holon.json +881 -0
  301. package/src/contracts/abis/Holons.json +330 -0
  302. package/src/contracts/abis/Managed.json +1262 -0
  303. package/src/contracts/abis/ManagedFactory.json +149 -0
  304. package/src/contracts/abis/Membrane.json +261 -0
  305. package/src/contracts/abis/Splitter.json +1624 -0
  306. package/src/contracts/abis/SplitterFactory.json +220 -0
  307. package/src/contracts/abis/TestToken.json +321 -0
  308. package/src/contracts/abis/Zoned.json +1461 -0
  309. package/src/contracts/abis/ZonedFactory.json +154 -0
  310. package/src/contracts/chain-manager.js +403 -0
  311. package/src/contracts/deployer.js +500 -0
  312. package/src/contracts/event-listener.js +539 -0
  313. package/src/contracts/holon-contracts.js +359 -0
  314. package/src/contracts/index.js +82 -0
  315. package/src/contracts/networks.js +229 -0
  316. package/src/contracts/operations.js +687 -0
  317. package/src/contracts/queries.js +638 -0
  318. package/src/core/holosphere.js +487 -6
  319. package/src/crypto/nostr-utils.js +303 -0
  320. package/src/crypto/secp256k1.js +7 -2
  321. package/src/federation/handshake.js +475 -0
  322. package/src/federation/hologram.js +117 -3
  323. package/src/hierarchical/upcast.js +40 -25
  324. package/src/index.js +1501 -1909
  325. package/src/lib/ai-methods.js +657 -0
  326. package/src/lib/contract-methods.js +442 -0
  327. package/src/lib/errors.js +53 -0
  328. package/src/lib/federation-methods.js +345 -0
  329. package/src/lib/index.js +30 -0
  330. package/src/schema/validator.js +22 -3
  331. package/src/spatial/h3-operations.js +19 -3
  332. package/src/storage/backend-factory.js +7 -2
  333. package/src/storage/backend-interface.js +21 -2
  334. package/src/storage/backends/activitypub/server.js +25 -3
  335. package/src/storage/backends/activitypub-backend.js +25 -2
  336. package/src/storage/backends/gundb-backend.js +692 -50
  337. package/src/storage/backends/nostr-backend.js +116 -1
  338. package/src/storage/filesystem-storage-browser.js +42 -2
  339. package/src/storage/filesystem-storage.js +72 -5
  340. package/src/storage/global-tables.js +35 -3
  341. package/src/storage/gun-async.js +75 -15
  342. package/src/storage/gun-auth.js +373 -0
  343. package/src/storage/gun-federation.js +785 -0
  344. package/src/storage/gun-references.js +209 -0
  345. package/src/storage/gun-schema.js +306 -0
  346. package/src/storage/gun-wrapper.js +475 -54
  347. package/src/storage/indexeddb-storage.js +112 -13
  348. package/src/storage/key-storage-simple.js +32 -9
  349. package/src/storage/key-storage.js +45 -13
  350. package/src/storage/memory-storage.js +68 -2
  351. package/src/storage/migration.js +20 -7
  352. package/src/storage/nostr-async.js +412 -122
  353. package/src/storage/nostr-client.js +749 -76
  354. package/src/storage/nostr-wrapper.js +6 -2
  355. package/src/storage/outbox-queue.js +55 -18
  356. package/src/storage/persistent-storage.js +62 -14
  357. package/src/storage/sync-service.js +51 -17
  358. package/src/storage/unified-storage.js +154 -0
  359. package/src/subscriptions/manager.js +34 -17
  360. package/types/index.d.ts +133 -0
  361. package/vite.config.cdn.js +60 -0
  362. package/tests/unit/ai/aggregation.test.js +0 -295
  363. package/tests/unit/ai/breakdown.test.js +0 -446
  364. package/tests/unit/ai/classifier.test.js +0 -294
  365. package/tests/unit/ai/council.test.js +0 -262
  366. package/tests/unit/ai/embeddings.test.js +0 -384
  367. package/tests/unit/ai/federation-ai.test.js +0 -344
  368. package/tests/unit/ai/h3-ai.test.js +0 -458
  369. package/tests/unit/ai/index.test.js +0 -304
  370. package/tests/unit/ai/json-ops.test.js +0 -307
  371. package/tests/unit/ai/llm-service.test.js +0 -390
  372. package/tests/unit/ai/nl-query.test.js +0 -383
  373. package/tests/unit/ai/relationships.test.js +0 -311
  374. package/tests/unit/ai/schema-extractor.test.js +0 -384
  375. package/tests/unit/ai/spatial.test.js +0 -279
  376. package/tests/unit/ai/tts.test.js +0 -279
  377. package/tests/unit/content.test.js +0 -332
  378. package/tests/unit/contract/core.test.js +0 -88
  379. package/tests/unit/contract/crypto.test.js +0 -198
  380. package/tests/unit/contract/data.test.js +0 -223
  381. package/tests/unit/contract/federation.test.js +0 -181
  382. package/tests/unit/contract/hierarchical.test.js +0 -113
  383. package/tests/unit/contract/schema.test.js +0 -114
  384. package/tests/unit/contract/social.test.js +0 -217
  385. package/tests/unit/contract/spatial.test.js +0 -110
  386. package/tests/unit/contract/subscriptions.test.js +0 -128
  387. package/tests/unit/contract/utils.test.js +0 -159
  388. package/tests/unit/core.test.js +0 -152
  389. package/tests/unit/crypto.test.js +0 -328
  390. package/tests/unit/federation.test.js +0 -234
  391. package/tests/unit/gun-async.test.js +0 -252
  392. package/tests/unit/hierarchical.test.js +0 -399
  393. package/tests/unit/integration/scenario-01-geographic-storage.test.js +0 -74
  394. package/tests/unit/integration/scenario-02-federation.test.js +0 -76
  395. package/tests/unit/integration/scenario-03-subscriptions.test.js +0 -102
  396. package/tests/unit/integration/scenario-04-validation.test.js +0 -129
  397. package/tests/unit/integration/scenario-05-hierarchy.test.js +0 -125
  398. package/tests/unit/integration/scenario-06-social.test.js +0 -135
  399. package/tests/unit/integration/scenario-07-persistence.test.js +0 -130
  400. package/tests/unit/integration/scenario-08-authorization.test.js +0 -161
  401. package/tests/unit/integration/scenario-09-cross-dimensional.test.js +0 -139
  402. package/tests/unit/integration/scenario-10-cross-holosphere-capabilities.test.js +0 -357
  403. package/tests/unit/integration/scenario-11-cross-holosphere-federation.test.js +0 -410
  404. package/tests/unit/integration/scenario-12-capability-federated-read.test.js +0 -719
  405. package/tests/unit/performance/benchmark.test.js +0 -85
  406. package/tests/unit/schema.test.js +0 -213
  407. package/tests/unit/spatial.test.js +0 -158
  408. package/tests/unit/storage.test.js +0 -195
  409. package/tests/unit/subscriptions.test.js +0 -328
  410. package/tests/unit/test-data-permanence-debug.js +0 -197
  411. package/tests/unit/test-data-permanence.js +0 -340
  412. package/tests/unit/test-key-persistence-fixed.js +0 -148
  413. package/tests/unit/test-key-persistence.js +0 -172
  414. package/tests/unit/test-relay-permanence.js +0 -376
  415. package/tests/unit/test-second-node.js +0 -95
  416. package/tests/unit/test-simple-write.js +0 -89
  417. /package/{cleanup-test-data.js → scripts/cleanup-test-data.js} +0 -0
  418. /package/{test-ai-real-api.js → scripts/test-ai-real-api.js} +0 -0
@@ -1,446 +0,0 @@
1
- import { describe, it, expect, beforeEach, vi } from 'vitest';
2
- import { TaskBreakdown } from '../../../src/ai/breakdown.js';
3
-
4
- describe('Unit: TaskBreakdown', () => {
5
- let breakdown;
6
- let mockLLM;
7
- let mockHolosphere;
8
-
9
- beforeEach(() => {
10
- vi.clearAllMocks();
11
-
12
- mockLLM = {
13
- getJSON: vi.fn()
14
- };
15
-
16
- mockHolosphere = {
17
- getAll: vi.fn().mockResolvedValue([]),
18
- getSchema: vi.fn().mockResolvedValue(null),
19
- write: vi.fn().mockResolvedValue({ success: true }),
20
- update: vi.fn().mockResolvedValue({ success: true })
21
- };
22
-
23
- breakdown = new TaskBreakdown(mockLLM, mockHolosphere);
24
- });
25
-
26
- describe('Constructor', () => {
27
- it('should initialize with LLM service', () => {
28
- const b = new TaskBreakdown(mockLLM);
29
- expect(b.llm).toBe(mockLLM);
30
- expect(b.holosphere).toBeNull();
31
- });
32
-
33
- it('should accept optional HoloSphere instance', () => {
34
- expect(breakdown.holosphere).toBe(mockHolosphere);
35
- });
36
- });
37
-
38
- describe('setHoloSphere', () => {
39
- it('should set HoloSphere instance', () => {
40
- const b = new TaskBreakdown(mockLLM);
41
- b.setHoloSphere(mockHolosphere);
42
- expect(b.holosphere).toBe(mockHolosphere);
43
- });
44
- });
45
-
46
- describe('breakdown', () => {
47
- it('should break down item into subtasks', async () => {
48
- mockLLM.getJSON.mockResolvedValue([
49
- { id: 'task1-1', title: 'Subtask 1', description: 'First step', parent: 'task1', dependencies: [], status: 'pending' },
50
- { id: 'task1-2', title: 'Subtask 2', description: 'Second step', parent: 'task1', dependencies: ['task1-1'], status: 'pending' }
51
- ]);
52
-
53
- const item = { id: 'task1', title: 'Main Task', description: 'Build something' };
54
- const result = await breakdown.breakdown(item, 'holon1', 'tasks');
55
-
56
- expect(result.original).toBe(item);
57
- expect(result.holonId).toBe('holon1');
58
- expect(result.lensName).toBe('tasks');
59
- expect(result.breakdown).toBeDefined();
60
- expect(result.totalSubtasks).toBeGreaterThan(0);
61
- });
62
-
63
- it('should throw error if item has no id', async () => {
64
- await expect(breakdown.breakdown({ title: 'No ID' }, 'holon', 'lens'))
65
- .rejects.toThrow('Item must have an id property');
66
-
67
- await expect(breakdown.breakdown(null, 'holon', 'lens'))
68
- .rejects.toThrow('Item must have an id property');
69
- });
70
-
71
- it('should respect depth option', async () => {
72
- mockLLM.getJSON.mockResolvedValue([
73
- { id: 'task1-1', title: 'Subtask', status: 'pending' }
74
- ]);
75
-
76
- const result = await breakdown.breakdown(
77
- { id: 'task1' },
78
- 'holon',
79
- 'lens',
80
- { depth: 1 }
81
- );
82
-
83
- expect(result.maxDepth).toBe(1);
84
- });
85
-
86
- it('should store subtasks when storeResults is true', async () => {
87
- mockLLM.getJSON.mockResolvedValue([
88
- { id: 'task1-1', title: 'Subtask', status: 'pending' }
89
- ]);
90
-
91
- await breakdown.breakdown(
92
- { id: 'task1' },
93
- 'holon',
94
- 'lens',
95
- { storeResults: true, depth: 1 }
96
- );
97
-
98
- expect(mockHolosphere.write).toHaveBeenCalled();
99
- });
100
-
101
- it('should use context from other items', async () => {
102
- mockHolosphere.getAll.mockResolvedValue([
103
- { id: 'other1', title: 'Other Task' },
104
- { id: 'other2', title: 'Another Task' }
105
- ]);
106
-
107
- mockLLM.getJSON.mockResolvedValue([]);
108
-
109
- await breakdown.breakdown(
110
- { id: 'task1' },
111
- 'holon',
112
- 'lens',
113
- { useContext: true, depth: 1 }
114
- );
115
-
116
- const call = mockLLM.getJSON.mock.calls[0];
117
- expect(call[0]).toContain('context');
118
- });
119
-
120
- it('should normalize stepsPerLevel number to object', async () => {
121
- mockLLM.getJSON.mockResolvedValue([]);
122
-
123
- await breakdown.breakdown(
124
- { id: 'task1' },
125
- 'holon',
126
- 'lens',
127
- { stepsPerLevel: 5, depth: 1 }
128
- );
129
-
130
- const call = mockLLM.getJSON.mock.calls[0];
131
- expect(call[0]).toContain('5');
132
- });
133
- });
134
-
135
- describe('_generateSubtasks', () => {
136
- it('should generate subtasks with proper structure', async () => {
137
- mockLLM.getJSON.mockResolvedValue([
138
- { id: 'p-1', title: 'Step 1', description: 'Do step 1', parent: 'parent', dependencies: [], status: 'pending' },
139
- { id: 'p-2', title: 'Step 2', description: 'Do step 2', parent: 'parent', dependencies: ['p-1'], status: 'pending' }
140
- ]);
141
-
142
- const parent = { id: 'parent', title: 'Parent Task' };
143
- const result = await breakdown._generateSubtasks(
144
- parent,
145
- [],
146
- null,
147
- { min: 2, max: 4 },
148
- 'dependencies',
149
- 'parent'
150
- );
151
-
152
- expect(result).toHaveLength(2);
153
- expect(result[0].parent).toBe('parent');
154
- expect(result[0]._meta.generatedFrom).toBe('parent');
155
- });
156
-
157
- it('should handle LLM errors gracefully', async () => {
158
- mockLLM.getJSON.mockRejectedValue(new Error('API Error'));
159
-
160
- const result = await breakdown._generateSubtasks(
161
- { id: 'parent' },
162
- [],
163
- null,
164
- { min: 3, max: 5 },
165
- 'dependencies',
166
- 'parent'
167
- );
168
-
169
- expect(result).toEqual([]);
170
- });
171
-
172
- it('should ensure all subtasks have required fields', async () => {
173
- mockLLM.getJSON.mockResolvedValue([
174
- { title: 'Missing ID and status' }
175
- ]);
176
-
177
- const result = await breakdown._generateSubtasks(
178
- { id: 'parent' },
179
- [],
180
- null,
181
- { min: 1, max: 1 },
182
- 'dependencies',
183
- 'parent'
184
- );
185
-
186
- expect(result[0].id).toBeDefined();
187
- expect(result[0].parent).toBe('parent');
188
- expect(result[0].status).toBe('pending');
189
- });
190
- });
191
-
192
- describe('_countSubtasks', () => {
193
- it('should count all subtasks in tree', () => {
194
- const tree = {
195
- item: { id: 'root' },
196
- children: [
197
- {
198
- item: { id: 'c1' },
199
- children: [
200
- { item: { id: 'c1-1' }, children: [] },
201
- { item: { id: 'c1-2' }, children: [] }
202
- ]
203
- },
204
- {
205
- item: { id: 'c2' },
206
- children: []
207
- }
208
- ]
209
- };
210
-
211
- expect(breakdown._countSubtasks(tree)).toBe(4);
212
- });
213
-
214
- it('should return 0 for node without children', () => {
215
- const tree = { item: { id: 'leaf' }, children: [] };
216
- expect(breakdown._countSubtasks(tree)).toBe(0);
217
- });
218
- });
219
-
220
- describe('flatten', () => {
221
- it('should flatten breakdown tree into list', () => {
222
- const breakdownResult = {
223
- breakdown: {
224
- item: { id: 'root' },
225
- children: [
226
- { item: { id: 'c1' }, children: [] },
227
- { item: { id: 'c2' }, children: [] }
228
- ]
229
- }
230
- };
231
-
232
- const flat = breakdown.flatten(breakdownResult);
233
-
234
- expect(flat).toHaveLength(3);
235
- expect(flat.map(i => i.id)).toContain('root');
236
- expect(flat.map(i => i.id)).toContain('c1');
237
- expect(flat.map(i => i.id)).toContain('c2');
238
- });
239
-
240
- it('should handle empty breakdown', () => {
241
- const flat = breakdown.flatten({});
242
- expect(flat).toEqual([]);
243
- });
244
- });
245
-
246
- describe('getDependencyOrder', () => {
247
- it('should order items by depth and dependencies', () => {
248
- const breakdownResult = {
249
- breakdown: {
250
- item: { id: 'root', _meta: { depth: 0 } },
251
- children: [
252
- { item: { id: 'c1', _meta: { depth: 1 }, dependencies: [] }, children: [] },
253
- { item: { id: 'c2', _meta: { depth: 1 }, dependencies: ['c1'] }, children: [] }
254
- ]
255
- }
256
- };
257
-
258
- const ordered = breakdown.getDependencyOrder(breakdownResult);
259
-
260
- const c1Index = ordered.findIndex(i => i.id === 'c1');
261
- const c2Index = ordered.findIndex(i => i.id === 'c2');
262
- expect(c1Index).toBeLessThan(c2Index);
263
- });
264
- });
265
-
266
- describe('suggestStrategy', () => {
267
- it('should suggest breakdown strategy', async () => {
268
- mockLLM.getJSON.mockResolvedValue({
269
- complexity: 'complex',
270
- recommendedDepth: 3,
271
- recommendedStepsPerLevel: { min: 3, max: 5 },
272
- focusAreas: ['Planning', 'Implementation'],
273
- potentialChallenges: ['Resource constraints'],
274
- estimatedTotalSubtasks: 15,
275
- reasoning: 'Complex project needs thorough breakdown'
276
- });
277
-
278
- const item = { id: 'project1', title: 'Big Project', description: 'Complex undertaking' };
279
- const result = await breakdown.suggestStrategy(item);
280
-
281
- expect(result.complexity).toBe('complex');
282
- expect(result.recommendedDepth).toBe(3);
283
- expect(result.focusAreas).toContain('Planning');
284
- });
285
- });
286
-
287
- describe('rebalance', () => {
288
- it('should rebalance breakdown tree', async () => {
289
- mockLLM.getJSON.mockResolvedValue({
290
- tasks: [
291
- { id: 'new1', title: 'Merged Task' },
292
- { id: 'new2', title: 'Split Task A' },
293
- { id: 'new3', title: 'Split Task B' }
294
- ],
295
- changes: [
296
- { type: 'merge', description: 'Merged granular tasks' },
297
- { type: 'split', description: 'Split large task' }
298
- ],
299
- summary: 'Rebalanced for 3-5 items per level'
300
- });
301
-
302
- const breakdownResult = {
303
- breakdown: {
304
- item: { id: 'root' },
305
- children: [
306
- { item: { id: 'c1' }, children: [] }
307
- ]
308
- }
309
- };
310
-
311
- const result = await breakdown.rebalance(breakdownResult);
312
-
313
- expect(result.tasks).toHaveLength(3);
314
- expect(result.changes).toHaveLength(2);
315
- });
316
- });
317
-
318
- describe('getProgress', () => {
319
- it('should calculate progress on breakdown tree', async () => {
320
- mockHolosphere.getAll.mockResolvedValue([
321
- { id: 'root', title: 'Main Task', status: 'in_progress' },
322
- { id: 'c1', title: 'Subtask 1', parent: 'root', status: 'completed' },
323
- { id: 'c2', title: 'Subtask 2', parent: 'root', status: 'pending' },
324
- { id: 'c3', title: 'Subtask 3', parent: 'root', status: 'in_progress', dependencies: ['c1'] }
325
- ]);
326
-
327
- const result = await breakdown.getProgress('holon', 'lens', 'root');
328
-
329
- expect(result.itemId).toBe('root');
330
- expect(result.total).toBe(3);
331
- expect(result.completed).toBe(1);
332
- expect(result.inProgress).toBe(1);
333
- expect(result.pending).toBe(1);
334
- expect(result.percentComplete).toBe(33);
335
- });
336
-
337
- it('should throw error if HoloSphere not available', async () => {
338
- const b = new TaskBreakdown(mockLLM);
339
-
340
- await expect(b.getProgress('holon', 'lens', 'id'))
341
- .rejects.toThrow('HoloSphere instance required');
342
- });
343
-
344
- it('should throw error if item not found', async () => {
345
- mockHolosphere.getAll.mockResolvedValue([]);
346
-
347
- await expect(breakdown.getProgress('holon', 'lens', 'nonexistent'))
348
- .rejects.toThrow('Item nonexistent not found');
349
- });
350
-
351
- it('should find blockers', async () => {
352
- mockHolosphere.getAll.mockResolvedValue([
353
- { id: 'root', title: 'Main', status: 'pending' },
354
- { id: 'c1', title: 'Blocker', parent: 'root', status: 'pending' },
355
- { id: 'c2', title: 'Blocked', parent: 'root', status: 'pending', dependencies: ['c1'] }
356
- ]);
357
-
358
- const result = await breakdown.getProgress('holon', 'lens', 'root');
359
-
360
- expect(result.blockers).toHaveLength(1);
361
- expect(result.blockers[0].id).toBe('c2');
362
- });
363
-
364
- it('should find next tasks ready to work on', async () => {
365
- mockHolosphere.getAll.mockResolvedValue([
366
- { id: 'root', title: 'Main', status: 'pending' },
367
- { id: 'c1', title: 'Ready', parent: 'root', status: 'pending', dependencies: [] },
368
- { id: 'c2', title: 'Also Ready', parent: 'root', status: 'pending' }
369
- ]);
370
-
371
- const result = await breakdown.getProgress('holon', 'lens', 'root');
372
-
373
- expect(result.nextUp.length).toBeGreaterThan(0);
374
- expect(result.nextUp.map(t => t.id)).toContain('c1');
375
- });
376
- });
377
-
378
- describe('_findDescendants', () => {
379
- it('should find all descendants', () => {
380
- const items = [
381
- { id: 'c1', parent: 'root' },
382
- { id: 'c2', parent: 'root' },
383
- { id: 'c1-1', parent: 'c1' },
384
- { id: 'other', parent: 'different' }
385
- ];
386
-
387
- const descendants = breakdown._findDescendants('root', items);
388
-
389
- expect(descendants).toHaveLength(3);
390
- expect(descendants.map(d => d.id)).toContain('c1');
391
- expect(descendants.map(d => d.id)).toContain('c1-1');
392
- });
393
- });
394
-
395
- describe('_findBlockers', () => {
396
- it('should find blocked tasks', () => {
397
- const items = [
398
- { id: 'c1', status: 'pending' },
399
- { id: 'c2', status: 'pending', dependencies: ['c1'] }
400
- ];
401
-
402
- const blockers = breakdown._findBlockers(items);
403
-
404
- expect(blockers).toHaveLength(1);
405
- expect(blockers[0].id).toBe('c2');
406
- });
407
-
408
- it('should not include tasks with completed dependencies', () => {
409
- const items = [
410
- { id: 'c1', status: 'completed' },
411
- { id: 'c2', status: 'pending', dependencies: ['c1'] }
412
- ];
413
-
414
- const blockers = breakdown._findBlockers(items);
415
-
416
- expect(blockers).toHaveLength(0);
417
- });
418
- });
419
-
420
- describe('_findNextTasks', () => {
421
- it('should find tasks ready to start', () => {
422
- const items = [
423
- { id: 'c1', status: 'pending' },
424
- { id: 'c2', status: 'pending', dependencies: ['c1'] }
425
- ];
426
-
427
- const next = breakdown._findNextTasks(items);
428
-
429
- expect(next).toHaveLength(1);
430
- expect(next[0].id).toBe('c1');
431
- });
432
-
433
- it('should exclude completed and in-progress tasks', () => {
434
- const items = [
435
- { id: 'c1', status: 'completed' },
436
- { id: 'c2', status: 'in_progress' },
437
- { id: 'c3', status: 'pending' }
438
- ];
439
-
440
- const next = breakdown._findNextTasks(items);
441
-
442
- expect(next.map(t => t.id)).not.toContain('c1');
443
- expect(next.map(t => t.id)).not.toContain('c2');
444
- });
445
- });
446
- });