@dxos/app-framework 0.8.4-main.c1de068 → 0.8.4-main.c85a9c8dae

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 (472) hide show
  1. package/.storybook/main.mts +9 -0
  2. package/.storybook/preview.mts +8 -0
  3. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  4. package/dist/lib/browser/capability-2GL5JAGJ.mjs +37 -0
  5. package/dist/lib/browser/capability-2GL5JAGJ.mjs.map +7 -0
  6. package/dist/lib/browser/capability-7RLVE42K.mjs +34 -0
  7. package/dist/lib/browser/capability-7RLVE42K.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-4CTRO67U.mjs +703 -0
  9. package/dist/lib/browser/chunk-4CTRO67U.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-5RJNZV7K.mjs +44 -0
  11. package/dist/lib/browser/chunk-5RJNZV7K.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
  13. package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-FNKT2QQ2.mjs +145 -0
  15. package/dist/lib/browser/chunk-FNKT2QQ2.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-HE27PNNQ.mjs +824 -0
  17. package/dist/lib/browser/chunk-HE27PNNQ.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  19. package/dist/lib/browser/chunk-NPUEVX42.mjs +34 -0
  20. package/dist/lib/browser/chunk-NPUEVX42.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
  22. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-REORGDJT.mjs +80 -0
  24. package/dist/lib/browser/chunk-REORGDJT.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-YAFEA4GV.mjs +1 -0
  26. package/dist/lib/browser/chunk-YNFPIQGB.mjs +76 -0
  27. package/dist/lib/browser/chunk-YNFPIQGB.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-ZRWBPIZG.mjs +170 -0
  29. package/dist/lib/browser/chunk-ZRWBPIZG.mjs.map +7 -0
  30. package/dist/lib/browser/cli/index.mjs +89 -0
  31. package/dist/lib/browser/cli/index.mjs.map +7 -0
  32. package/dist/lib/browser/common/activation-events.mjs +23 -0
  33. package/dist/lib/browser/common/capabilities.mjs +45 -0
  34. package/dist/lib/browser/core/activation-event.mjs +20 -0
  35. package/dist/lib/browser/core/activation-event.mjs.map +7 -0
  36. package/dist/lib/browser/core/capability.mjs +28 -0
  37. package/dist/lib/browser/core/capability.mjs.map +7 -0
  38. package/dist/lib/browser/core/plugin-manager.mjs +15 -0
  39. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  40. package/dist/lib/browser/core/plugin.mjs +27 -0
  41. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  42. package/dist/lib/browser/index.mjs +87 -156
  43. package/dist/lib/browser/index.mjs.map +4 -4
  44. package/dist/lib/browser/invoker-capability-BNLVNYHU.mjs +36 -0
  45. package/dist/lib/browser/invoker-capability-BNLVNYHU.mjs.map +7 -0
  46. package/dist/lib/browser/meta.json +1 -1
  47. package/dist/lib/browser/testing/index.mjs +89 -39
  48. package/dist/lib/browser/testing/index.mjs.map +4 -4
  49. package/dist/lib/browser/ui/index.mjs +45 -0
  50. package/dist/lib/browser/ui/index.mjs.map +7 -0
  51. package/dist/lib/node-esm/capability-CHIMU6LX.mjs +38 -0
  52. package/dist/lib/node-esm/capability-CHIMU6LX.mjs.map +7 -0
  53. package/dist/lib/node-esm/capability-EVZK4REM.mjs +35 -0
  54. package/dist/lib/node-esm/capability-EVZK4REM.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-2A4PRBIX.mjs +171 -0
  56. package/dist/lib/node-esm/chunk-2A4PRBIX.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-7CPNAEGV.mjs +704 -0
  58. package/dist/lib/node-esm/chunk-7CPNAEGV.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
  60. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-CJCQS2YL.mjs +146 -0
  62. package/dist/lib/node-esm/chunk-CJCQS2YL.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-DTCHT2X2.mjs +825 -0
  64. package/dist/lib/node-esm/chunk-DTCHT2X2.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  66. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-JAZVHID3.mjs +35 -0
  68. package/dist/lib/node-esm/chunk-JAZVHID3.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-SB5ODNPX.mjs +77 -0
  70. package/dist/lib/node-esm/chunk-SB5ODNPX.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
  72. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-UFW652GS.mjs +81 -0
  74. package/dist/lib/node-esm/chunk-UFW652GS.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-VUIUFIGT.mjs +45 -0
  76. package/dist/lib/node-esm/chunk-VUIUFIGT.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs +2 -0
  78. package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs.map +7 -0
  79. package/dist/lib/node-esm/cli/index.mjs +90 -0
  80. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  81. package/dist/lib/node-esm/common/activation-events.mjs +24 -0
  82. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  83. package/dist/lib/node-esm/common/capabilities.mjs +46 -0
  84. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  85. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  86. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  87. package/dist/lib/node-esm/core/capability.mjs +29 -0
  88. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  89. package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
  90. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  91. package/dist/lib/node-esm/core/plugin.mjs +28 -0
  92. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  93. package/dist/lib/node-esm/index.mjs +87 -156
  94. package/dist/lib/node-esm/index.mjs.map +4 -4
  95. package/dist/lib/node-esm/invoker-capability-VF6SP44V.mjs +37 -0
  96. package/dist/lib/node-esm/invoker-capability-VF6SP44V.mjs.map +7 -0
  97. package/dist/lib/node-esm/meta.json +1 -1
  98. package/dist/lib/node-esm/testing/index.mjs +89 -39
  99. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  100. package/dist/lib/node-esm/ui/index.mjs +46 -0
  101. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  102. package/dist/types/src/cli/cli.d.ts +39 -0
  103. package/dist/types/src/cli/cli.d.ts.map +1 -0
  104. package/dist/types/src/cli/index.d.ts +2 -0
  105. package/dist/types/src/cli/index.d.ts.map +1 -0
  106. package/dist/types/src/common/activation-events.d.ts +27 -0
  107. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  108. package/dist/types/src/common/capabilities.d.ts +114 -123
  109. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  110. package/dist/types/src/common/index.d.ts +4 -8
  111. package/dist/types/src/common/index.d.ts.map +1 -1
  112. package/dist/types/src/common/operations.d.ts +33 -0
  113. package/dist/types/src/common/operations.d.ts.map +1 -0
  114. package/dist/types/src/common/translations.d.ts +8 -8
  115. package/dist/types/src/common/translations.d.ts.map +1 -1
  116. package/dist/types/src/context.d.ts +5 -0
  117. package/dist/types/src/context.d.ts.map +1 -0
  118. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +6 -6
  119. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  120. package/dist/types/src/core/capability-manager.d.ts +43 -0
  121. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  122. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  123. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  124. package/dist/types/src/core/capability.d.ts +150 -0
  125. package/dist/types/src/core/capability.d.ts.map +1 -0
  126. package/dist/types/src/core/index.d.ts +5 -4
  127. package/dist/types/src/core/index.d.ts.map +1 -1
  128. package/dist/types/src/core/plugin-manager.d.ts +66 -0
  129. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  130. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  131. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  132. package/dist/types/src/core/plugin.d.ts +97 -32
  133. package/dist/types/src/core/plugin.d.ts.map +1 -1
  134. package/dist/types/src/index.d.ts +3 -4
  135. package/dist/types/src/index.d.ts.map +1 -1
  136. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
  137. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
  138. package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
  139. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
  140. package/dist/types/src/plugin-operation/history/errors.d.ts +5 -0
  141. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
  142. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
  143. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
  144. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
  145. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
  146. package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
  147. package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
  148. package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
  149. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
  150. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +101 -0
  151. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
  152. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
  153. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
  154. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
  155. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
  156. package/dist/types/src/plugin-operation/index.d.ts +3 -0
  157. package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
  158. package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
  159. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
  160. package/dist/types/src/plugin-operation/meta.d.ts +3 -0
  161. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
  162. package/dist/types/src/plugin-operation/testing.d.ts +109 -0
  163. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
  164. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
  165. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
  166. package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
  167. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
  168. package/dist/types/src/plugin-runtime/index.d.ts +2 -0
  169. package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
  170. package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
  171. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
  172. package/dist/types/src/testing/index.d.ts +1 -0
  173. package/dist/types/src/testing/index.d.ts.map +1 -1
  174. package/dist/types/src/testing/service.d.ts +8 -0
  175. package/dist/types/src/testing/service.d.ts.map +1 -0
  176. package/dist/types/src/testing/withPluginManager.d.ts +11 -10
  177. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  178. package/dist/types/src/testing/withPluginManager.stories.d.ts +9 -3
  179. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  180. package/dist/types/src/ui/components/App/App.d.ts +8 -0
  181. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  182. package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
  183. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  184. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  185. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  186. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts +13 -0
  187. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  188. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
  189. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  190. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  191. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  192. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +12 -0
  193. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  194. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts +14 -0
  195. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  196. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
  197. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  198. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  199. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  200. package/dist/types/src/ui/components/Surface/index.d.ts +20 -0
  201. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  202. package/dist/types/src/ui/components/Surface/types.d.ts +96 -0
  203. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  204. package/dist/types/src/ui/components/index.d.ts +4 -0
  205. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  206. package/dist/types/src/ui/hooks/index.d.ts +7 -0
  207. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  208. package/dist/types/src/{App.d.ts → ui/hooks/useApp.d.ts} +21 -14
  209. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  210. package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
  211. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  212. package/dist/types/src/ui/hooks/useLoading.d.ts +18 -0
  213. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  214. package/dist/types/src/ui/hooks/useOperationResolver.d.ts +19 -0
  215. package/dist/types/src/ui/hooks/useOperationResolver.d.ts.map +1 -0
  216. package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
  217. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  218. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  219. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  220. package/dist/types/src/ui/index.d.ts +3 -0
  221. package/dist/types/src/ui/index.d.ts.map +1 -0
  222. package/dist/types/tsconfig.tsbuildinfo +1 -1
  223. package/moon.yml +11 -3
  224. package/package.json +113 -44
  225. package/src/cli/cli.ts +107 -0
  226. package/src/{playground/layout → cli}/index.ts +1 -1
  227. package/src/common/activation-events.ts +44 -0
  228. package/src/common/capabilities.ts +174 -114
  229. package/src/common/index.ts +4 -8
  230. package/src/common/operations.ts +38 -0
  231. package/src/common/translations.ts +18 -10
  232. package/src/context.ts +9 -0
  233. package/src/core/{events.ts → activation-event.ts} +5 -5
  234. package/src/core/capability-manager.test.ts +151 -0
  235. package/src/core/capability-manager.ts +171 -0
  236. package/src/core/capability.ts +236 -0
  237. package/src/core/index.ts +5 -4
  238. package/src/core/plugin-manager.test.ts +845 -0
  239. package/src/core/plugin-manager.ts +715 -0
  240. package/src/core/plugin.ts +230 -36
  241. package/src/helpers.test.ts +1 -1
  242. package/src/index.ts +3 -4
  243. package/src/plugin-operation/OperationPlugin.ts +25 -0
  244. package/src/plugin-operation/history/capability.ts +37 -0
  245. package/src/plugin-operation/history/errors.ts +11 -0
  246. package/src/plugin-operation/history/history-tracker.test.ts +380 -0
  247. package/src/plugin-operation/history/history-tracker.ts +129 -0
  248. package/src/plugin-operation/history/index.ts +9 -0
  249. package/src/plugin-operation/history/types.ts +17 -0
  250. package/src/plugin-operation/history/undo-mapping.ts +135 -0
  251. package/src/plugin-operation/history/undo-registry.test.ts +73 -0
  252. package/src/plugin-operation/history/undo-registry.ts +54 -0
  253. package/src/plugin-operation/index.ts +6 -0
  254. package/src/plugin-operation/invoker-capability.ts +40 -0
  255. package/src/plugin-operation/meta.ts +11 -0
  256. package/src/plugin-operation/testing.ts +174 -0
  257. package/src/plugin-runtime/RuntimePlugin.ts +20 -0
  258. package/src/plugin-runtime/capability.ts +53 -0
  259. package/src/{playground/debug → plugin-runtime}/index.ts +1 -1
  260. package/src/plugin-runtime/meta.ts +11 -0
  261. package/src/testing/index.ts +1 -0
  262. package/src/testing/service.ts +52 -0
  263. package/src/testing/withPluginManager.stories.tsx +15 -11
  264. package/src/testing/withPluginManager.tsx +47 -45
  265. package/src/ui/components/App/App.stories.tsx +92 -0
  266. package/src/ui/components/App/App.tsx +57 -0
  267. package/src/{playground/logger → ui/components/App}/index.ts +1 -1
  268. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +183 -0
  269. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
  270. package/src/ui/components/PluginManager/index.ts +5 -0
  271. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +143 -0
  272. package/src/ui/components/Surface/SurfaceComponent.tsx +247 -0
  273. package/src/ui/components/Surface/SurfaceInfo.tsx +107 -0
  274. package/src/ui/components/Surface/context.ts +12 -0
  275. package/src/ui/components/Surface/index.ts +20 -0
  276. package/src/ui/components/Surface/types.ts +117 -0
  277. package/src/ui/components/index.ts +7 -0
  278. package/src/ui/hooks/index.ts +10 -0
  279. package/src/ui/hooks/useApp.tsx +213 -0
  280. package/src/ui/hooks/useCapabilities.ts +67 -0
  281. package/src/ui/hooks/useLoading.tsx +68 -0
  282. package/src/ui/hooks/useOperationResolver.ts +40 -0
  283. package/src/ui/hooks/useSettingsState.ts +26 -0
  284. package/src/ui/hooks/useSurface.ts +13 -0
  285. package/src/ui/index.ts +6 -0
  286. package/tsconfig.json +14 -30
  287. package/tsconfig.node.json +1 -3
  288. package/typedoc.json +2 -4
  289. package/vitest.config.ts +8 -6
  290. package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
  291. package/.swc/plugins/v7_linux_x86_64_13.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429 +0 -0
  292. package/dist/lib/browser/app-graph-builder-LYF7EKNN.mjs +0 -137
  293. package/dist/lib/browser/app-graph-builder-LYF7EKNN.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-FMN65HSW.mjs +0 -1519
  295. package/dist/lib/browser/chunk-FMN65HSW.mjs.map +0 -7
  296. package/dist/lib/browser/chunk-FO2PH7M3.mjs +0 -415
  297. package/dist/lib/browser/chunk-FO2PH7M3.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-ORWHM7CO.mjs +0 -32
  299. package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
  300. package/dist/lib/browser/intent-dispatcher-LSYQZSEB.mjs +0 -11
  301. package/dist/lib/browser/intent-resolver-ZTNOSO3A.mjs +0 -39
  302. package/dist/lib/browser/intent-resolver-ZTNOSO3A.mjs.map +0 -7
  303. package/dist/lib/browser/store-KML2R4IE.mjs +0 -30
  304. package/dist/lib/browser/store-KML2R4IE.mjs.map +0 -7
  305. package/dist/lib/browser/worker.mjs +0 -79
  306. package/dist/lib/node-esm/app-graph-builder-SAOWGJDK.mjs +0 -138
  307. package/dist/lib/node-esm/app-graph-builder-SAOWGJDK.mjs.map +0 -7
  308. package/dist/lib/node-esm/chunk-73HGSHKE.mjs +0 -416
  309. package/dist/lib/node-esm/chunk-73HGSHKE.mjs.map +0 -7
  310. package/dist/lib/node-esm/chunk-UMZQERLE.mjs +0 -34
  311. package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
  312. package/dist/lib/node-esm/chunk-ZEZ4FVEU.mjs +0 -1521
  313. package/dist/lib/node-esm/chunk-ZEZ4FVEU.mjs.map +0 -7
  314. package/dist/lib/node-esm/intent-dispatcher-6CYNGPSW.mjs +0 -12
  315. package/dist/lib/node-esm/intent-resolver-W7Z7WFFM.mjs +0 -40
  316. package/dist/lib/node-esm/intent-resolver-W7Z7WFFM.mjs.map +0 -7
  317. package/dist/lib/node-esm/store-QEXGXLWZ.mjs +0 -31
  318. package/dist/lib/node-esm/store-QEXGXLWZ.mjs.map +0 -7
  319. package/dist/lib/node-esm/worker.mjs +0 -80
  320. package/dist/types/src/App.d.ts.map +0 -1
  321. package/dist/types/src/common/collaboration.d.ts +0 -19
  322. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  323. package/dist/types/src/common/events.d.ts +0 -52
  324. package/dist/types/src/common/events.d.ts.map +0 -1
  325. package/dist/types/src/common/file.d.ts +0 -14
  326. package/dist/types/src/common/file.d.ts.map +0 -1
  327. package/dist/types/src/common/graph.d.ts +0 -21
  328. package/dist/types/src/common/graph.d.ts.map +0 -1
  329. package/dist/types/src/common/layout.d.ts +0 -281
  330. package/dist/types/src/common/layout.d.ts.map +0 -1
  331. package/dist/types/src/common/surface.d.ts +0 -65
  332. package/dist/types/src/common/surface.d.ts.map +0 -1
  333. package/dist/types/src/core/capabilities.d.ts +0 -114
  334. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  335. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  336. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  337. package/dist/types/src/core/events.d.ts.map +0 -1
  338. package/dist/types/src/core/manager.d.ts +0 -122
  339. package/dist/types/src/core/manager.d.ts.map +0 -1
  340. package/dist/types/src/core/manager.test.d.ts +0 -2
  341. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  342. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  343. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  344. package/dist/types/src/playground/debug/index.d.ts +0 -2
  345. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  346. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  347. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  348. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  349. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  350. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  351. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  352. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  353. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  354. package/dist/types/src/playground/generator/index.d.ts +0 -3
  355. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  356. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  357. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  358. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  359. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  360. package/dist/types/src/playground/layout/index.d.ts +0 -2
  361. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  362. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  363. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  364. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  365. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  366. package/dist/types/src/playground/logger/index.d.ts +0 -2
  367. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  368. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  369. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  370. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  371. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  372. package/dist/types/src/playground/playground.stories.d.ts +0 -10
  373. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  374. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  375. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  376. package/dist/types/src/plugin-intent/actions.d.ts +0 -38
  377. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  378. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  379. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  380. package/dist/types/src/plugin-intent/index.d.ts +0 -5
  381. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  382. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  383. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  384. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  385. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  386. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  387. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  388. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
  389. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  390. package/dist/types/src/plugin-settings/actions.d.ts +0 -27
  391. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  392. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
  393. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  394. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  395. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  396. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  397. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  398. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  399. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  400. package/dist/types/src/plugin-settings/translations.d.ts +0 -10
  401. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  402. package/dist/types/src/react/ErrorBoundary.d.ts +0 -31
  403. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  404. package/dist/types/src/react/IntentContext.d.ts +0 -8
  405. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  406. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  407. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  408. package/dist/types/src/react/Surface.d.ts +0 -12
  409. package/dist/types/src/react/Surface.d.ts.map +0 -1
  410. package/dist/types/src/react/Surface.stories.d.ts +0 -16
  411. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  412. package/dist/types/src/react/common.d.ts +0 -13
  413. package/dist/types/src/react/common.d.ts.map +0 -1
  414. package/dist/types/src/react/index.d.ts +0 -7
  415. package/dist/types/src/react/index.d.ts.map +0 -1
  416. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  417. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  418. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  419. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  420. package/dist/types/src/worker.d.ts +0 -4
  421. package/dist/types/src/worker.d.ts.map +0 -1
  422. package/src/App.tsx +0 -276
  423. package/src/common/collaboration.ts +0 -21
  424. package/src/common/events.ts +0 -77
  425. package/src/common/file.ts +0 -22
  426. package/src/common/graph.ts +0 -30
  427. package/src/common/layout.ts +0 -278
  428. package/src/common/surface.ts +0 -86
  429. package/src/core/capabilities.test.ts +0 -136
  430. package/src/core/capabilities.ts +0 -254
  431. package/src/core/manager.test.ts +0 -515
  432. package/src/core/manager.ts +0 -519
  433. package/src/playground/debug/Debug.tsx +0 -39
  434. package/src/playground/debug/plugin.ts +0 -17
  435. package/src/playground/generator/Main.tsx +0 -71
  436. package/src/playground/generator/Toolbar.tsx +0 -46
  437. package/src/playground/generator/generator.ts +0 -48
  438. package/src/playground/generator/index.ts +0 -6
  439. package/src/playground/generator/plugin.ts +0 -23
  440. package/src/playground/layout/Layout.tsx +0 -33
  441. package/src/playground/layout/plugin.ts +0 -17
  442. package/src/playground/logger/Toolbar.tsx +0 -29
  443. package/src/playground/logger/plugin.ts +0 -36
  444. package/src/playground/logger/schema.ts +0 -12
  445. package/src/playground/playground.stories.tsx +0 -42
  446. package/src/plugin-intent/IntentPlugin.ts +0 -20
  447. package/src/plugin-intent/actions.ts +0 -33
  448. package/src/plugin-intent/errors.ts +0 -39
  449. package/src/plugin-intent/index.ts +0 -8
  450. package/src/plugin-intent/intent-dispatcher.test.ts +0 -279
  451. package/src/plugin-intent/intent-dispatcher.ts +0 -333
  452. package/src/plugin-intent/intent.ts +0 -154
  453. package/src/plugin-settings/SettingsPlugin.ts +0 -35
  454. package/src/plugin-settings/actions.ts +0 -29
  455. package/src/plugin-settings/app-graph-builder.ts +0 -157
  456. package/src/plugin-settings/index.ts +0 -6
  457. package/src/plugin-settings/intent-resolver.ts +0 -34
  458. package/src/plugin-settings/store.ts +0 -33
  459. package/src/plugin-settings/translations.ts +0 -19
  460. package/src/react/ErrorBoundary.tsx +0 -45
  461. package/src/react/IntentContext.tsx +0 -34
  462. package/src/react/Surface.stories.tsx +0 -96
  463. package/src/react/Surface.tsx +0 -77
  464. package/src/react/common.ts +0 -12
  465. package/src/react/index.ts +0 -10
  466. package/src/react/useCapabilities.ts +0 -30
  467. package/src/react/useIntentResolver.ts +0 -22
  468. package/src/worker.ts +0 -11
  469. /package/dist/lib/browser/{intent-dispatcher-LSYQZSEB.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  470. /package/dist/lib/browser/{worker.mjs.map → chunk-YAFEA4GV.mjs.map} +0 -0
  471. /package/dist/lib/{node-esm/intent-dispatcher-6CYNGPSW.mjs.map → browser/common/activation-events.mjs.map} +0 -0
  472. /package/dist/lib/{node-esm/worker.mjs.map → browser/common/capabilities.mjs.map} +0 -0
@@ -0,0 +1,824 @@
1
+ import {
2
+ eventKey,
3
+ getEvents,
4
+ isAllOf
5
+ } from "./chunk-PKQT6C53.mjs";
6
+ import {
7
+ Service as Service2
8
+ } from "./chunk-FNKT2QQ2.mjs";
9
+ import {
10
+ Service
11
+ } from "./chunk-YNFPIQGB.mjs";
12
+ import {
13
+ __export
14
+ } from "./chunk-J5LGTIGS.mjs";
15
+
16
+ // src/core/plugin-manager.ts
17
+ var plugin_manager_exports = {};
18
+ __export(plugin_manager_exports, {
19
+ ManagerTypeId: () => ManagerTypeId,
20
+ isManager: () => isManager,
21
+ make: () => make5
22
+ });
23
+ import { Atom as Atom2, Registry } from "@effect-atom/atom-react";
24
+ import * as Array from "effect/Array";
25
+ import * as Cause from "effect/Cause";
26
+ import * as Deferred2 from "effect/Deferred";
27
+ import * as Duration from "effect/Duration";
28
+ import * as Effect2 from "effect/Effect";
29
+ import * as Fiber from "effect/Fiber";
30
+ import * as Function from "effect/Function";
31
+ import * as HashSet from "effect/HashSet";
32
+ import * as PubSub from "effect/PubSub";
33
+ import * as Ref from "effect/Ref";
34
+ import { runAndForwardErrors } from "@dxos/effect";
35
+ import { Performance } from "@dxos/effect";
36
+ import { log as log2 } from "@dxos/log";
37
+
38
+ // src/core/capability-manager.ts
39
+ var capability_manager_exports = {};
40
+ __export(capability_manager_exports, {
41
+ make: () => make2
42
+ });
43
+ import { Atom } from "@effect-atom/atom-react";
44
+ import * as Deferred from "effect/Deferred";
45
+ import * as Effect from "effect/Effect";
46
+ import { invariant } from "@dxos/invariant";
47
+ import { log } from "@dxos/log";
48
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/capability-manager.ts";
49
+ var CapabilityManagerImpl = class {
50
+ _registry;
51
+ _capabilityEntries = Atom.family(() => {
52
+ return Atom.make([]).pipe(Atom.keepAlive);
53
+ });
54
+ _capabilities = Atom.family((id) => {
55
+ return Atom.make((get) => {
56
+ const current = get(this._capabilityEntries(id));
57
+ return current.map((c) => c.implementation);
58
+ });
59
+ });
60
+ _capability = Atom.family((id) => {
61
+ return Atom.make((get) => {
62
+ const current = get(this._capabilities(id));
63
+ invariant(current.length > 0, `No capability found for ${id}`, {
64
+ F: __dxlog_file,
65
+ L: 84,
66
+ S: this,
67
+ A: [
68
+ "current.length > 0",
69
+ "`No capability found for ${id}`"
70
+ ]
71
+ });
72
+ return current[0];
73
+ });
74
+ });
75
+ constructor({ registry }) {
76
+ this._registry = registry;
77
+ }
78
+ contribute({ module: moduleId, interface: interfaceDef, implementation }) {
79
+ const current = this._registry.get(this._capabilityEntries(interfaceDef.identifier));
80
+ const isDuplicate = current.some((c) => c.moduleId === moduleId && c.implementation === implementation);
81
+ if (isDuplicate) {
82
+ log("capability already contributed, skipping", {
83
+ id: interfaceDef.identifier,
84
+ moduleId
85
+ }, {
86
+ F: __dxlog_file,
87
+ L: 105,
88
+ S: this,
89
+ C: (f, a) => f(...a)
90
+ });
91
+ return;
92
+ }
93
+ const entry = {
94
+ moduleId,
95
+ implementation
96
+ };
97
+ this._registry.set(this._capabilityEntries(interfaceDef.identifier), [
98
+ ...current,
99
+ entry
100
+ ]);
101
+ log("capability contributed", {
102
+ id: interfaceDef.identifier,
103
+ moduleId,
104
+ count: current.length
105
+ }, {
106
+ F: __dxlog_file,
107
+ L: 111,
108
+ S: this,
109
+ C: (f, a) => f(...a)
110
+ });
111
+ }
112
+ remove(interfaceDef, implementation) {
113
+ const current = this._registry.get(this._capabilityEntries(interfaceDef.identifier));
114
+ if (current.length === 0) {
115
+ return;
116
+ }
117
+ const next = current.filter((c) => c.implementation !== implementation);
118
+ if (next.length !== current.length) {
119
+ this._registry.set(this._capabilityEntries(interfaceDef.identifier), next);
120
+ log("capability removed", {
121
+ id: interfaceDef.identifier,
122
+ count: current.length
123
+ }, {
124
+ F: __dxlog_file,
125
+ L: 127,
126
+ S: this,
127
+ C: (f, a) => f(...a)
128
+ });
129
+ } else {
130
+ log.warn("capability not removed", {
131
+ id: interfaceDef.identifier
132
+ }, {
133
+ F: __dxlog_file,
134
+ L: 129,
135
+ S: this,
136
+ C: (f, a) => f(...a)
137
+ });
138
+ }
139
+ }
140
+ atom(interfaceDef) {
141
+ return this._capabilities(interfaceDef.identifier);
142
+ }
143
+ getAll(interfaceDef) {
144
+ return this._registry.get(this.atom(interfaceDef));
145
+ }
146
+ get(interfaceDef) {
147
+ const capabilities = this.getAll(interfaceDef);
148
+ invariant(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`, {
149
+ F: __dxlog_file,
150
+ L: 144,
151
+ S: this,
152
+ A: [
153
+ "capabilities.length > 0",
154
+ "`No capability found for ${interfaceDef.identifier}`"
155
+ ]
156
+ });
157
+ return capabilities[0];
158
+ }
159
+ waitFor(interfaceDef) {
160
+ return Effect.gen(this, function* () {
161
+ const [capability] = this.getAll(interfaceDef);
162
+ if (capability) {
163
+ return capability;
164
+ }
165
+ const deferred = yield* Deferred.make();
166
+ const cancel = this._registry.subscribe(this.atom(interfaceDef), (capabilities) => {
167
+ if (capabilities.length > 0) {
168
+ Effect.runSync(Deferred.succeed(deferred, capabilities[0]));
169
+ }
170
+ });
171
+ const result = yield* Deferred.await(deferred);
172
+ cancel();
173
+ return result;
174
+ });
175
+ }
176
+ };
177
+ var make2 = (options) => new CapabilityManagerImpl(options);
178
+
179
+ // src/core/plugin-manager.ts
180
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/plugin-manager.ts";
181
+ var ManagerTypeId = /* @__PURE__ */ Symbol.for("@dxos/app-framework/Manager");
182
+ var isManager = (value) => {
183
+ return typeof value === "object" && value !== null && ManagerTypeId in value;
184
+ };
185
+ var ManagerImpl = class {
186
+ [ManagerTypeId] = ManagerTypeId;
187
+ activation = Effect2.runSync(PubSub.unbounded());
188
+ capabilities;
189
+ registry;
190
+ _pluginsAtom;
191
+ _coreAtom;
192
+ _enabledAtom;
193
+ _modulesAtom;
194
+ _activeAtom;
195
+ _eventsFiredAtom;
196
+ _pendingResetAtom;
197
+ _pluginLoader;
198
+ _capabilities = /* @__PURE__ */ new Map();
199
+ _moduleMemoMap = /* @__PURE__ */ new Map();
200
+ _moduleSemaphores = /* @__PURE__ */ new Map();
201
+ _activatingEvents = Effect2.runSync(Ref.make([]));
202
+ _activatingModules = Effect2.runSync(Ref.make([]));
203
+ constructor({ pluginLoader, plugins = [], core = plugins.map(({ meta }) => meta.id), enabled = [], registry }) {
204
+ this.registry = registry ?? Registry.make();
205
+ this.capabilities = make2({
206
+ registry: this.registry
207
+ });
208
+ this._pluginLoader = pluginLoader;
209
+ this._pluginsAtom = Atom2.make(plugins).pipe(Atom2.keepAlive);
210
+ this._coreAtom = Atom2.make(core).pipe(Atom2.keepAlive);
211
+ this._enabledAtom = Atom2.make(enabled).pipe(Atom2.keepAlive);
212
+ this._modulesAtom = Atom2.make([]).pipe(Atom2.keepAlive);
213
+ this._activeAtom = Atom2.make([]).pipe(Atom2.keepAlive);
214
+ this._eventsFiredAtom = Atom2.make([]).pipe(Atom2.keepAlive);
215
+ this._pendingResetAtom = Atom2.make([]).pipe(Atom2.keepAlive);
216
+ plugins.forEach((plugin) => this._addPlugin(plugin));
217
+ void Effect2.all([
218
+ ...core,
219
+ ...enabled
220
+ ].map((id) => this.enable(id))).pipe(runAndForwardErrors);
221
+ }
222
+ get plugins() {
223
+ return this._pluginsAtom;
224
+ }
225
+ get core() {
226
+ return this._coreAtom;
227
+ }
228
+ /**
229
+ * Ids of plugins that are currently enabled.
230
+ */
231
+ get enabled() {
232
+ return this._enabledAtom;
233
+ }
234
+ /**
235
+ * Modules of plugins which are currently enabled.
236
+ */
237
+ get modules() {
238
+ return this._modulesAtom;
239
+ }
240
+ /**
241
+ * Ids of modules which are currently active.
242
+ */
243
+ get active() {
244
+ return this._activeAtom;
245
+ }
246
+ /**
247
+ * Ids of events which have been fired.
248
+ */
249
+ get eventsFired() {
250
+ return this._eventsFiredAtom;
251
+ }
252
+ /**
253
+ * Ids of modules which are pending reset.
254
+ */
255
+ get pendingReset() {
256
+ return this._pendingResetAtom;
257
+ }
258
+ getPlugins() {
259
+ return this._get(this._pluginsAtom);
260
+ }
261
+ getCore() {
262
+ return this._get(this._coreAtom);
263
+ }
264
+ getEnabled() {
265
+ return this._get(this._enabledAtom);
266
+ }
267
+ getModules() {
268
+ return this._get(this._modulesAtom);
269
+ }
270
+ getActive() {
271
+ return this._get(this._activeAtom);
272
+ }
273
+ getEventsFired() {
274
+ return this._get(this._eventsFiredAtom);
275
+ }
276
+ getPendingReset() {
277
+ return this._get(this._pendingResetAtom);
278
+ }
279
+ /**
280
+ * Adds a plugin to the manager via the plugin loader.
281
+ * @param id The id of the plugin.
282
+ */
283
+ add(id) {
284
+ return Effect2.gen(this, function* () {
285
+ log2("add plugin", {
286
+ id
287
+ }, {
288
+ F: __dxlog_file2,
289
+ L: 211,
290
+ S: this,
291
+ C: (f, a) => f(...a)
292
+ });
293
+ const plugin = yield* this._pluginLoader(id);
294
+ this._addPlugin(plugin);
295
+ return yield* this.enable(id);
296
+ });
297
+ }
298
+ /**
299
+ * Enables a plugin.
300
+ * @param id The id of the plugin.
301
+ */
302
+ enable(id) {
303
+ return Effect2.gen(this, function* () {
304
+ log2("enable plugin", {
305
+ id
306
+ }, {
307
+ F: __dxlog_file2,
308
+ L: 224,
309
+ S: this,
310
+ C: (f, a) => f(...a)
311
+ });
312
+ const plugin = this._getPlugin(id);
313
+ if (!plugin) {
314
+ return false;
315
+ }
316
+ this._update(this._enabledAtom, (enabled) => enabled.includes(id) ? enabled : [
317
+ ...enabled,
318
+ id
319
+ ]);
320
+ plugin.modules.forEach((module) => {
321
+ this._addModule(module);
322
+ this._setPendingResetByModule(module);
323
+ });
324
+ log2("pending reset", {
325
+ events: [
326
+ ...this.getPendingReset()
327
+ ]
328
+ }, {
329
+ F: __dxlog_file2,
330
+ L: 237,
331
+ S: this,
332
+ C: (f, a) => f(...a)
333
+ });
334
+ yield* Effect2.all(this.getPendingReset().map((event) => this.activate(event)), {
335
+ concurrency: "unbounded"
336
+ });
337
+ return true;
338
+ });
339
+ }
340
+ /**
341
+ * Removes a plugin from the manager.
342
+ * @param id The id of the plugin.
343
+ */
344
+ remove(id) {
345
+ log2("remove plugin", {
346
+ id
347
+ }, {
348
+ F: __dxlog_file2,
349
+ L: 252,
350
+ S: this,
351
+ C: (f, a) => f(...a)
352
+ });
353
+ const result = this.disable(id);
354
+ if (!result) {
355
+ return false;
356
+ }
357
+ this._removePlugin(id);
358
+ return true;
359
+ }
360
+ /**
361
+ * Disables a plugin.
362
+ * @param id The id of the plugin.
363
+ */
364
+ disable(id) {
365
+ return Effect2.gen(this, function* () {
366
+ log2("disable plugin", {
367
+ id
368
+ }, {
369
+ F: __dxlog_file2,
370
+ L: 268,
371
+ S: this,
372
+ C: (f, a) => f(...a)
373
+ });
374
+ if (this._get(this._coreAtom).includes(id)) {
375
+ return false;
376
+ }
377
+ const plugin = this._getPlugin(id);
378
+ if (!plugin) {
379
+ return false;
380
+ }
381
+ const enabledIndex = this._get(this._enabledAtom).findIndex((enabled) => enabled === id);
382
+ if (enabledIndex !== -1) {
383
+ this._update(this._enabledAtom, (enabled) => enabled.filter((item) => item !== id));
384
+ yield* this.deactivate(id);
385
+ plugin.modules.forEach((module) => {
386
+ this._removeModule(module.id);
387
+ });
388
+ }
389
+ return true;
390
+ });
391
+ }
392
+ /**
393
+ * Activates plugins based on the activation event.
394
+ * @param event The activation event.
395
+ * @returns Whether the activation was successful.
396
+ */
397
+ activate(event, params) {
398
+ const key = typeof event === "string" ? event : eventKey(event);
399
+ return Effect2.gen(this, function* () {
400
+ log2("activating", {
401
+ key,
402
+ ...params
403
+ }, {
404
+ F: __dxlog_file2,
405
+ L: 303,
406
+ S: this,
407
+ C: (f, a) => f(...a)
408
+ });
409
+ yield* Ref.update(this._activatingEvents, (activating) => Array.append(activating, key));
410
+ const pendingIndex = this._get(this._pendingResetAtom).findIndex((event2) => event2 === key);
411
+ if (pendingIndex !== -1) {
412
+ this._update(this._pendingResetAtom, (pending) => pending.filter((event2) => event2 !== key));
413
+ }
414
+ const activatingEvents = yield* this._activatingEvents;
415
+ const activatingModules = yield* this._activatingModules;
416
+ const modules = this._getInactiveModulesByEvent(key).filter((module) => {
417
+ const allOf = isAllOf(module.activatesOn);
418
+ if (!allOf) {
419
+ return true;
420
+ }
421
+ const events = getEvents(module.activatesOn).filter((event2) => eventKey(event2) !== key);
422
+ return events.every((event2) => this._get(this._eventsFiredAtom).includes(eventKey(event2)) || activatingEvents.includes(eventKey(event2))) && !activatingModules.includes(module.id);
423
+ });
424
+ yield* Ref.update(this._activatingModules, (activating) => Array.appendAll(activating, modules.map((module) => module.id)));
425
+ if (modules.length === 0) {
426
+ log2("no modules to activate", {
427
+ key
428
+ }, {
429
+ F: __dxlog_file2,
430
+ L: 338,
431
+ S: this,
432
+ C: (f, a) => f(...a)
433
+ });
434
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
435
+ this._update(this._eventsFiredAtom, (events) => [
436
+ ...events,
437
+ key
438
+ ]);
439
+ }
440
+ return false;
441
+ }
442
+ log2("activating modules", {
443
+ key,
444
+ modules: modules.map((module) => module.id)
445
+ }, {
446
+ F: __dxlog_file2,
447
+ L: 345,
448
+ S: this,
449
+ C: (f, a) => f(...a)
450
+ });
451
+ yield* PubSub.publish(this.activation, {
452
+ event: key,
453
+ state: "activating"
454
+ });
455
+ const beforeEvents = Function.pipe(modules, Array.flatMap((module) => module.activatesBefore ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event2) => !activatingEvents.includes(eventKey(event2))));
456
+ yield* Function.pipe(beforeEvents, Array.map((event2) => this.activate(event2, {
457
+ before: key
458
+ })), Effect2.allWith({
459
+ concurrency: "unbounded"
460
+ }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("activatesBefore is taking a long time", {
461
+ event: key,
462
+ beforeEvents: beforeEvents.map(eventKey)
463
+ }, {
464
+ F: __dxlog_file2,
465
+ L: 364,
466
+ S: this,
467
+ C: (f, a) => f(...a)
468
+ }))))));
469
+ const getCapabilities = yield* Function.pipe(modules, Array.map((mod) => this._loadModule(mod)), Effect2.allWith({
470
+ concurrency: "unbounded"
471
+ }), Effect2.catchAll((error) => {
472
+ return Effect2.gen(this, function* () {
473
+ yield* PubSub.publish(this.activation, {
474
+ event: key,
475
+ state: "error",
476
+ error
477
+ });
478
+ return yield* Effect2.fail(error);
479
+ });
480
+ }));
481
+ yield* Function.pipe(
482
+ modules,
483
+ Array.zip(getCapabilities),
484
+ Array.map(([module, capabilities]) => this._contributeCapabilities(module, capabilities)),
485
+ Effect2.all
486
+ );
487
+ const afterEvents = Function.pipe(modules, Array.flatMap((module) => module.activatesAfter ?? []), HashSet.fromIterable, HashSet.toValues, Array.filter((event2) => !activatingEvents.includes(eventKey(event2))));
488
+ yield* Function.pipe(afterEvents, Array.map((event2) => this.activate(event2, {
489
+ after: key
490
+ })), Effect2.allWith({
491
+ concurrency: "unbounded"
492
+ }), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("activatesAfter is taking a long time", {
493
+ event: key,
494
+ afterEvents: afterEvents.map(eventKey)
495
+ }, {
496
+ F: __dxlog_file2,
497
+ L: 413,
498
+ S: this,
499
+ C: (f, a) => f(...a)
500
+ }))))));
501
+ yield* Ref.update(this._activatingEvents, (activating) => Array.filter(activating, (event2) => event2 !== key));
502
+ yield* Ref.update(this._activatingModules, (activating) => Array.filter(activating, (module) => !modules.map((module2) => module2.id).includes(module)));
503
+ if (!this._get(this._eventsFiredAtom).includes(key)) {
504
+ this._update(this._eventsFiredAtom, (events) => [
505
+ ...events,
506
+ key
507
+ ]);
508
+ }
509
+ yield* PubSub.publish(this.activation, {
510
+ event: key,
511
+ state: "activated"
512
+ });
513
+ log2("activated", {
514
+ key
515
+ }, {
516
+ F: __dxlog_file2,
517
+ L: 433,
518
+ S: this,
519
+ C: (f, a) => f(...a)
520
+ });
521
+ return true;
522
+ }).pipe(together(Effect2.sleep(Duration.seconds(15)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn("event activation is taking a long time", {
523
+ event: key
524
+ }, {
525
+ F: __dxlog_file2,
526
+ L: 439,
527
+ S: this,
528
+ C: (f, a) => f(...a)
529
+ }))))), Performance.addTrackEntry({
530
+ name: typeof event === "string" ? event : eventKey(event),
531
+ devtools: {
532
+ dataType: "track-entry",
533
+ track: "Event Activation",
534
+ trackGroup: "Composer",
535
+ color: "primary"
536
+ }
537
+ }));
538
+ }
539
+ /**
540
+ * Deactivates all of the modules for a plugin.
541
+ * @param id The id of the plugin.
542
+ * @returns Whether the deactivation was successful.
543
+ */
544
+ deactivate(id) {
545
+ return Effect2.gen(this, function* () {
546
+ const plugin = this._getPlugin(id);
547
+ if (!plugin) {
548
+ return false;
549
+ }
550
+ const modules = plugin.modules;
551
+ const results = yield* Effect2.all(modules.map((module) => this._deactivateModule(module)), {
552
+ concurrency: "unbounded"
553
+ });
554
+ return results.every((result) => result);
555
+ });
556
+ }
557
+ /**
558
+ * Re-activates the modules that were activated by the event.
559
+ * @param event The activation event.
560
+ * @returns Whether the reset was successful.
561
+ */
562
+ reset(event) {
563
+ return Effect2.gen(this, function* () {
564
+ const key = typeof event === "string" ? event : eventKey(event);
565
+ log2("reset", {
566
+ key
567
+ }, {
568
+ F: __dxlog_file2,
569
+ L: 483,
570
+ S: this,
571
+ C: (f, a) => f(...a)
572
+ });
573
+ const modules = this._getActiveModulesByEvent(key);
574
+ const results = yield* Effect2.all(modules.map((module) => this._deactivateModule(module)), {
575
+ concurrency: "unbounded"
576
+ });
577
+ if (results.every((result) => result)) {
578
+ return yield* this.activate(key);
579
+ } else {
580
+ return false;
581
+ }
582
+ });
583
+ }
584
+ _get(atom) {
585
+ return this.registry.get(atom);
586
+ }
587
+ _set(atom, value) {
588
+ this.registry.set(atom, value);
589
+ }
590
+ _update(atom, updater) {
591
+ this._set(atom, updater(this._get(atom)));
592
+ }
593
+ _addPlugin(plugin) {
594
+ log2("add plugin", {
595
+ id: plugin.meta.id
596
+ }, {
597
+ F: __dxlog_file2,
598
+ L: 511,
599
+ S: this,
600
+ C: (f, a) => f(...a)
601
+ });
602
+ this._update(this._pluginsAtom, (plugins) => plugins.includes(plugin) ? plugins : [
603
+ ...plugins,
604
+ plugin
605
+ ]);
606
+ }
607
+ _removePlugin(id) {
608
+ log2("remove plugin", {
609
+ id
610
+ }, {
611
+ F: __dxlog_file2,
612
+ L: 517,
613
+ S: this,
614
+ C: (f, a) => f(...a)
615
+ });
616
+ this._update(this._pluginsAtom, (plugins) => plugins.filter((plugin) => plugin.meta.id !== id));
617
+ }
618
+ _addModule(module) {
619
+ log2("add module", {
620
+ id: module.id
621
+ }, {
622
+ F: __dxlog_file2,
623
+ L: 522,
624
+ S: this,
625
+ C: (f, a) => f(...a)
626
+ });
627
+ this._update(this._modulesAtom, (modules) => modules.includes(module) ? modules : [
628
+ ...modules,
629
+ module
630
+ ]);
631
+ }
632
+ _removeModule(id) {
633
+ log2("remove module", {
634
+ id
635
+ }, {
636
+ F: __dxlog_file2,
637
+ L: 528,
638
+ S: this,
639
+ C: (f, a) => f(...a)
640
+ });
641
+ this._update(this._modulesAtom, (modules) => modules.filter((module) => module.id !== id));
642
+ }
643
+ _getPlugin(id) {
644
+ return this._get(this._pluginsAtom).find((plugin) => plugin.meta.id === id);
645
+ }
646
+ _getActiveModules() {
647
+ const active = this._get(this._activeAtom);
648
+ return this._get(this._modulesAtom).filter((module) => active.includes(module.id));
649
+ }
650
+ _getInactiveModules() {
651
+ const active = this._get(this._activeAtom);
652
+ return this._get(this._modulesAtom).filter((module) => !active.includes(module.id));
653
+ }
654
+ _getActiveModulesByEvent(key) {
655
+ return this._getActiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
656
+ }
657
+ _getInactiveModulesByEvent(key) {
658
+ return this._getInactiveModules().filter((module) => getEvents(module.activatesOn).map(eventKey).includes(key));
659
+ }
660
+ _setPendingResetByModule(module) {
661
+ const activationEvents = getEvents(module.activatesOn).map(eventKey).filter((key) => this._get(this._eventsFiredAtom).includes(key));
662
+ const pendingReset = Array.fromIterable(new Set(activationEvents)).filter((event) => {
663
+ const pending = this._get(this._pendingResetAtom);
664
+ return !pending.includes(event);
665
+ });
666
+ if (pendingReset.length > 0) {
667
+ log2("pending reset", {
668
+ events: pendingReset
669
+ }, {
670
+ F: __dxlog_file2,
671
+ L: 568,
672
+ S: this,
673
+ C: (f, a) => f(...a)
674
+ });
675
+ this._update(this._pendingResetAtom, (current) => [
676
+ ...current,
677
+ ...pendingReset
678
+ ]);
679
+ }
680
+ }
681
+ _getModuleSemaphore(moduleId) {
682
+ let semaphore = this._moduleSemaphores.get(moduleId);
683
+ if (!semaphore) {
684
+ semaphore = Effect2.runSync(Effect2.makeSemaphore(1));
685
+ this._moduleSemaphores.set(moduleId, semaphore);
686
+ }
687
+ return semaphore;
688
+ }
689
+ _loadModule = (module) => Effect2.gen(this, function* () {
690
+ const semaphore = this._getModuleSemaphore(module.id);
691
+ const deferredToAwait = yield* Effect2.gen(this, function* () {
692
+ const existing = this._moduleMemoMap.get(module.id);
693
+ if (existing) {
694
+ return existing;
695
+ }
696
+ const deferred = yield* Deferred2.make();
697
+ this._moduleMemoMap.set(module.id, deferred);
698
+ const loadEffect = Effect2.gen(this, function* () {
699
+ log2("loading module", {
700
+ module: module.id
701
+ }, {
702
+ F: __dxlog_file2,
703
+ L: 598,
704
+ S: this,
705
+ C: (f, a) => f(...a)
706
+ });
707
+ const [duration, capabilities] = yield* module.activate().pipe(Effect2.provideService(Service, this.capabilities), Effect2.provideService(Service2, this), Effect2.timed);
708
+ const normalized = capabilities == null ? [] : Array.isArray(capabilities) ? capabilities : [
709
+ capabilities
710
+ ];
711
+ log2("loaded module", {
712
+ module: module.id,
713
+ elapsed: Duration.toMillis(duration),
714
+ failed: false
715
+ }, {
716
+ F: __dxlog_file2,
717
+ L: 607,
718
+ S: this,
719
+ C: (f, a) => f(...a)
720
+ });
721
+ return normalized;
722
+ }).pipe(Effect2.withSpan("PluginManager._loadModule"), together(Effect2.sleep(Duration.seconds(10)).pipe(Effect2.andThen(Effect2.sync(() => log2.warn(`module is taking a long time to activate`, {
723
+ module: module.id
724
+ }, {
725
+ F: __dxlog_file2,
726
+ L: 618,
727
+ S: this,
728
+ C: (f, a) => f(...a)
729
+ }))))), Performance.addTrackEntry({
730
+ name: module.id,
731
+ devtools: {
732
+ dataType: "track-entry",
733
+ track: "Module Activation",
734
+ trackGroup: "Composer",
735
+ color: "primary"
736
+ }
737
+ }));
738
+ yield* Effect2.forkDaemon(loadEffect.pipe(Effect2.tap((result) => Deferred2.succeed(deferred, result)), Effect2.catchAllCause((cause) => {
739
+ const error = Cause.squash(cause);
740
+ log2.error("module failed to activate", {
741
+ module: module.id,
742
+ error: error instanceof Error ? error.message : String(error),
743
+ stack: error instanceof Error ? error.stack : void 0,
744
+ isDefect: !Cause.isFailure(cause)
745
+ }, {
746
+ F: __dxlog_file2,
747
+ L: 639,
748
+ S: this,
749
+ C: (f, a) => f(...a)
750
+ });
751
+ return Deferred2.fail(deferred, error instanceof Error ? error : new Error(String(error)));
752
+ })));
753
+ return deferred;
754
+ }).pipe(semaphore.withPermits(1));
755
+ return yield* Deferred2.await(deferredToAwait);
756
+ });
757
+ _contributeCapabilities(module, capabilities) {
758
+ return Effect2.gen(this, function* () {
759
+ capabilities.forEach((capability) => {
760
+ this.capabilities.contribute({
761
+ module: module.id,
762
+ ...capability
763
+ });
764
+ });
765
+ this._update(this._activeAtom, (active) => [
766
+ ...active,
767
+ module.id
768
+ ]);
769
+ this._capabilities.set(module.id, capabilities);
770
+ });
771
+ }
772
+ _deactivateModule(module) {
773
+ return Effect2.gen(this, function* () {
774
+ const id = module.id;
775
+ log2("deactivating", {
776
+ id
777
+ }, {
778
+ F: __dxlog_file2,
779
+ L: 673,
780
+ S: this,
781
+ C: (f, a) => f(...a)
782
+ });
783
+ this._moduleMemoMap.delete(id);
784
+ const capabilities = this._capabilities.get(id);
785
+ if (capabilities) {
786
+ for (const capability of capabilities) {
787
+ this.capabilities.remove(capability.interface, capability.implementation);
788
+ const program = capability.deactivate?.() ?? Effect2.succeed(void 0);
789
+ yield* program;
790
+ }
791
+ this._capabilities.delete(id);
792
+ }
793
+ const activeIndex = this._get(this._activeAtom).findIndex((event) => event === id);
794
+ if (activeIndex !== -1) {
795
+ this._update(this._activeAtom, (active) => active.filter((event) => event !== id));
796
+ }
797
+ log2("deactivated", {
798
+ id
799
+ }, {
800
+ F: __dxlog_file2,
801
+ L: 691,
802
+ S: this,
803
+ C: (f, a) => f(...a)
804
+ });
805
+ return true;
806
+ });
807
+ }
808
+ };
809
+ var make5 = (options) => new ManagerImpl(options);
810
+ var together = (togetherEffect) => (effect) => Effect2.gen(function* () {
811
+ const togetherFiber = yield* Effect2.fork(togetherEffect);
812
+ const result = yield* effect;
813
+ yield* Fiber.interrupt(togetherFiber);
814
+ return result;
815
+ });
816
+
817
+ export {
818
+ capability_manager_exports,
819
+ ManagerTypeId,
820
+ isManager,
821
+ make5 as make,
822
+ plugin_manager_exports
823
+ };
824
+ //# sourceMappingURL=chunk-HE27PNNQ.mjs.map