@dxos/app-framework 0.8.4-main.937b3ca → 0.8.4-main.9be5663bfe

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 (430) hide show
  1. package/.storybook/main.mts +1 -3
  2. package/dist/lib/browser/{capability-7PCNSWBT.mjs → capability-BBBBAPDI.mjs} +16 -11
  3. package/dist/lib/browser/capability-BBBBAPDI.mjs.map +7 -0
  4. package/dist/lib/browser/capability-OP63CD5N.mjs +35 -0
  5. package/dist/lib/browser/capability-OP63CD5N.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-6Y7PZV72.mjs → chunk-2CKCJ6PN.mjs} +6 -4
  7. package/dist/lib/browser/chunk-2CKCJ6PN.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-7IQHKD4U.mjs → chunk-F7FW2RK2.mjs} +9 -12
  9. package/dist/lib/browser/chunk-F7FW2RK2.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-TCLLRCS3.mjs → chunk-FU4GAFUQ.mjs} +10 -7
  11. package/dist/lib/browser/chunk-FU4GAFUQ.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-FMZN33N4.mjs → chunk-GX4TUNM6.mjs} +343 -187
  13. package/dist/lib/browser/chunk-GX4TUNM6.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-I34GF4NG.mjs +34 -0
  15. package/dist/lib/browser/chunk-I34GF4NG.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-JKWMHZP6.mjs +80 -0
  17. package/dist/lib/browser/chunk-JKWMHZP6.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-LVJW5EFU.mjs +157 -0
  19. package/dist/lib/browser/chunk-LVJW5EFU.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-PKQT6C53.mjs → chunk-QSXYHXCE.mjs} +3 -2
  21. package/dist/lib/browser/chunk-QSXYHXCE.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-RFSO3JRG.mjs +1 -0
  23. package/dist/lib/browser/chunk-T3Y4AEKX.mjs +42 -0
  24. package/dist/lib/browser/chunk-T3Y4AEKX.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-TGX63LTL.mjs +8 -0
  26. package/dist/lib/browser/{chunk-FHQTHCX7.mjs.map → chunk-TGX63LTL.mjs.map} +1 -1
  27. package/dist/lib/browser/chunk-WPE6AL7I.mjs +905 -0
  28. package/dist/lib/browser/chunk-WPE6AL7I.mjs.map +7 -0
  29. package/dist/lib/browser/cli/index.mjs +90 -0
  30. package/dist/lib/browser/cli/index.mjs.map +7 -0
  31. package/dist/lib/browser/common/activation-events.mjs +24 -0
  32. package/dist/lib/browser/common/capabilities.mjs +46 -0
  33. package/dist/lib/browser/core/activation-event.mjs +1 -1
  34. package/dist/lib/browser/core/capability.mjs +3 -1
  35. package/dist/lib/browser/core/plugin-manager.mjs +4 -4
  36. package/dist/lib/browser/core/plugin.mjs +6 -4
  37. package/dist/lib/browser/core/url-loader.mjs +12 -0
  38. package/dist/lib/browser/index.mjs +40 -131
  39. package/dist/lib/browser/index.mjs.map +4 -4
  40. package/dist/lib/browser/invoker-capability-H5PPENOC.mjs +43 -0
  41. package/dist/lib/browser/invoker-capability-H5PPENOC.mjs.map +7 -0
  42. package/dist/lib/browser/meta.json +1 -1
  43. package/dist/lib/browser/testing/index.mjs +56 -34
  44. package/dist/lib/browser/testing/index.mjs.map +3 -3
  45. package/dist/lib/browser/{react → ui}/index.mjs +19 -21
  46. package/dist/lib/browser/ui/index.mjs.map +7 -0
  47. package/dist/lib/node-esm/{capability-CFLQ2QQU.mjs → capability-AWBEMRYR.mjs} +16 -11
  48. package/dist/lib/node-esm/capability-AWBEMRYR.mjs.map +7 -0
  49. package/dist/lib/node-esm/capability-WFEG6CIZ.mjs +36 -0
  50. package/dist/lib/node-esm/capability-WFEG6CIZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-STMXUEPO.mjs → chunk-42KBWDE4.mjs} +6 -4
  52. package/dist/lib/node-esm/chunk-42KBWDE4.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs +158 -0
  54. package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-XYQTBFPA.mjs → chunk-BCEOLX47.mjs} +343 -187
  56. package/dist/lib/node-esm/chunk-BCEOLX47.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs +2 -0
  58. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs → chunk-FKE4Z3D6.mjs} +2 -2
  60. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs.map → chunk-FKE4Z3D6.mjs.map} +1 -1
  61. package/dist/lib/node-esm/chunk-G3RTFSNG.mjs +81 -0
  62. package/dist/lib/node-esm/chunk-G3RTFSNG.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-LQKOTNJW.mjs +906 -0
  64. package/dist/lib/node-esm/chunk-LQKOTNJW.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-GT6OKM5I.mjs → chunk-ULUEXB7Q.mjs} +10 -7
  66. package/dist/lib/node-esm/chunk-ULUEXB7Q.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-663A54LQ.mjs → chunk-URWHJQT2.mjs} +9 -12
  68. package/dist/lib/node-esm/chunk-URWHJQT2.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-VKHGNEDB.mjs +43 -0
  70. package/dist/lib/node-esm/chunk-VKHGNEDB.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs +35 -0
  72. package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs → chunk-ZZ7CKK6W.mjs} +3 -2
  74. package/dist/lib/node-esm/chunk-ZZ7CKK6W.mjs.map +7 -0
  75. package/dist/lib/node-esm/cli/index.mjs +91 -0
  76. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  77. package/dist/lib/node-esm/common/activation-events.mjs +25 -0
  78. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  79. package/dist/lib/node-esm/common/capabilities.mjs +47 -0
  80. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  81. package/dist/lib/node-esm/core/activation-event.mjs +1 -1
  82. package/dist/lib/node-esm/core/capability.mjs +3 -1
  83. package/dist/lib/node-esm/core/plugin-manager.mjs +4 -4
  84. package/dist/lib/node-esm/core/plugin.mjs +6 -4
  85. package/dist/lib/node-esm/core/url-loader.mjs +13 -0
  86. package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
  87. package/dist/lib/node-esm/index.mjs +40 -131
  88. package/dist/lib/node-esm/index.mjs.map +4 -4
  89. package/dist/lib/node-esm/invoker-capability-S3ZA527J.mjs +44 -0
  90. package/dist/lib/node-esm/invoker-capability-S3ZA527J.mjs.map +7 -0
  91. package/dist/lib/node-esm/meta.json +1 -1
  92. package/dist/lib/node-esm/testing/index.mjs +56 -34
  93. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  94. package/dist/lib/node-esm/{react → ui}/index.mjs +19 -21
  95. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  96. package/dist/plugin/node-esm/index.mjs +384 -0
  97. package/dist/plugin/node-esm/index.mjs.map +7 -0
  98. package/dist/plugin/node-esm/meta.json +1 -0
  99. package/dist/types/src/{cli.d.ts → cli/cli.d.ts} +2 -2
  100. package/dist/types/src/cli/cli.d.ts.map +1 -0
  101. package/dist/types/src/cli/index.d.ts +2 -0
  102. package/dist/types/src/cli/index.d.ts.map +1 -0
  103. package/dist/types/src/common/activation-events.d.ts +27 -0
  104. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  105. package/dist/types/src/common/capabilities.d.ts +110 -0
  106. package/dist/types/src/common/capabilities.d.ts.map +1 -0
  107. package/dist/types/src/common/index.d.ts +4 -9
  108. package/dist/types/src/common/index.d.ts.map +1 -1
  109. package/dist/types/src/common/operations.d.ts +8 -369
  110. package/dist/types/src/common/operations.d.ts.map +1 -1
  111. package/dist/types/src/common/translations.d.ts +0 -9
  112. package/dist/types/src/common/translations.d.ts.map +1 -1
  113. package/dist/types/src/core/activation-event.d.ts +1 -1
  114. package/dist/types/src/core/activation-event.d.ts.map +1 -1
  115. package/dist/types/src/core/capability-manager.d.ts +5 -0
  116. package/dist/types/src/core/capability-manager.d.ts.map +1 -1
  117. package/dist/types/src/core/capability.d.ts +13 -7
  118. package/dist/types/src/core/capability.d.ts.map +1 -1
  119. package/dist/types/src/core/index.d.ts +1 -0
  120. package/dist/types/src/core/index.d.ts.map +1 -1
  121. package/dist/types/src/core/plugin-manager.d.ts +9 -2
  122. package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
  123. package/dist/types/src/core/plugin.d.ts +6 -1
  124. package/dist/types/src/core/plugin.d.ts.map +1 -1
  125. package/dist/types/src/core/url-loader.d.ts +25 -0
  126. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  127. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  128. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  129. package/dist/types/src/index.d.ts +1 -3
  130. package/dist/types/src/index.d.ts.map +1 -1
  131. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -1
  132. package/dist/types/src/plugin-operation/history/capability.d.ts +1 -1
  133. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -1
  134. package/dist/types/src/plugin-operation/history/errors.d.ts +30 -3
  135. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -1
  136. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -1
  137. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +11 -3
  138. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -1
  139. package/dist/types/src/plugin-operation/invoker-capability.d.ts +1 -1
  140. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -1
  141. package/dist/types/src/plugin-operation/testing.d.ts +26 -77
  142. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -1
  143. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -1
  144. package/dist/types/src/plugin-runtime/capability.d.ts +2 -2
  145. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -1
  146. package/dist/types/src/testing/withPluginManager.d.ts +1 -1
  147. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  148. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  149. package/dist/types/src/{react → ui/components/App}/App.d.ts +3 -2
  150. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  151. package/dist/types/src/{react/Surface.stories.d.ts → ui/components/App/App.stories.d.ts} +7 -2
  152. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  153. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  154. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  155. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  156. package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerProvider.d.ts +1 -1
  157. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  158. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  159. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  160. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +12 -0
  161. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  162. package/dist/types/src/{react/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  163. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  164. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  165. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  166. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  167. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  168. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  169. package/dist/types/src/ui/components/Surface/index.d.ts +26 -0
  170. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  171. package/dist/types/src/{common/surface.d.ts → ui/components/Surface/types.d.ts} +20 -18
  172. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  173. package/dist/types/src/ui/components/index.d.ts +4 -0
  174. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  175. package/dist/types/src/ui/hooks/index.d.ts +6 -0
  176. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  177. package/dist/types/src/{react → ui/hooks}/useApp.d.ts +26 -9
  178. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  179. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  180. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  181. package/dist/types/src/{react → ui/hooks}/useCapabilities.d.ts +6 -1
  182. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  183. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  184. package/dist/types/src/{react/common.d.ts → ui/hooks/useSettingsState.d.ts} +1 -5
  185. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  186. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  187. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  188. package/dist/types/src/ui/index.d.ts +3 -0
  189. package/dist/types/src/ui/index.d.ts.map +1 -0
  190. package/dist/types/src/vite-plugin/composer-plugin.d.ts +18 -0
  191. package/dist/types/src/vite-plugin/composer-plugin.d.ts.map +1 -0
  192. package/dist/types/src/vite-plugin/import-map-plugin.d.ts +16 -0
  193. package/dist/types/src/vite-plugin/import-map-plugin.d.ts.map +1 -0
  194. package/dist/types/src/vite-plugin/index.d.ts +3 -0
  195. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  196. package/dist/types/src/vite-plugin/packages.d.ts +7 -0
  197. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  198. package/dist/types/tsconfig.tsbuildinfo +1 -1
  199. package/moon.yml +20 -6
  200. package/package.json +91 -64
  201. package/src/{cli.ts → cli/cli.ts} +10 -10
  202. package/src/{playground/debug → cli}/index.ts +1 -1
  203. package/src/common/activation-events.ts +44 -0
  204. package/src/common/capabilities.ts +172 -0
  205. package/src/common/index.ts +4 -9
  206. package/src/common/operations.ts +6 -383
  207. package/src/common/translations.ts +0 -12
  208. package/src/context.ts +1 -1
  209. package/src/core/activation-event.ts +5 -2
  210. package/src/core/capability-manager.test.ts +1 -1
  211. package/src/core/capability-manager.ts +22 -1
  212. package/src/core/capability.ts +21 -10
  213. package/src/core/index.ts +1 -0
  214. package/src/core/plugin-manager.test.ts +314 -46
  215. package/src/core/plugin-manager.ts +344 -157
  216. package/src/core/plugin.ts +10 -2
  217. package/src/core/url-loader.test.ts +79 -0
  218. package/src/core/url-loader.ts +148 -0
  219. package/src/index.ts +1 -3
  220. package/src/plugin-operation/OperationPlugin.ts +5 -6
  221. package/src/plugin-operation/history/capability.ts +5 -6
  222. package/src/plugin-operation/history/errors.ts +2 -6
  223. package/src/plugin-operation/history/history-tracker.test.ts +36 -43
  224. package/src/plugin-operation/history/history-tracker.ts +0 -1
  225. package/src/plugin-operation/history/undo-mapping.ts +6 -3
  226. package/src/plugin-operation/history/undo-registry.test.ts +3 -4
  227. package/src/plugin-operation/invoker-capability.ts +21 -7
  228. package/src/plugin-operation/meta.ts +1 -1
  229. package/src/plugin-operation/testing.ts +25 -45
  230. package/src/plugin-runtime/RuntimePlugin.ts +4 -5
  231. package/src/plugin-runtime/capability.ts +5 -5
  232. package/src/plugin-runtime/meta.ts +1 -1
  233. package/src/testing/service.ts +6 -6
  234. package/src/testing/withPluginManager.stories.tsx +6 -7
  235. package/src/testing/withPluginManager.tsx +44 -19
  236. package/src/ui/components/App/App.stories.tsx +92 -0
  237. package/src/{react → ui/components/App}/App.tsx +9 -11
  238. package/src/{playground/layout → ui/components/App}/index.ts +1 -1
  239. package/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.tsx +13 -14
  240. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +1 -1
  241. package/src/ui/components/PluginManager/index.ts +5 -0
  242. package/src/{react/Surface.stories.tsx → ui/components/Surface/SurfaceComponent.stories.tsx} +31 -28
  243. package/src/{react/Surface.tsx → ui/components/Surface/SurfaceComponent.tsx} +59 -60
  244. package/src/{react → ui/components/Surface}/SurfaceInfo.tsx +2 -2
  245. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  246. package/src/ui/components/Surface/context.ts +12 -0
  247. package/src/ui/components/Surface/index.ts +35 -0
  248. package/src/{common/surface.ts → ui/components/Surface/types.ts} +22 -25
  249. package/src/ui/components/index.ts +7 -0
  250. package/src/ui/hooks/index.ts +9 -0
  251. package/src/ui/hooks/useApp.test.tsx +159 -0
  252. package/src/{react → ui/hooks}/useApp.tsx +110 -30
  253. package/src/{react → ui/hooks}/useCapabilities.ts +9 -5
  254. package/src/{react/common.ts → ui/hooks/useSettingsState.ts} +0 -11
  255. package/src/ui/hooks/useSurface.ts +13 -0
  256. package/src/ui/index.ts +6 -0
  257. package/src/vite-plugin/composer-plugin.ts +128 -0
  258. package/src/vite-plugin/import-map-plugin.ts +314 -0
  259. package/src/vite-plugin/index.ts +6 -0
  260. package/src/vite-plugin/packages.ts +29 -0
  261. package/tsconfig.json +4 -28
  262. package/tsconfig.node.json +2 -4
  263. package/typedoc.json +2 -4
  264. package/vitest.config.ts +1 -1
  265. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +0 -149
  266. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +0 -7
  267. package/dist/lib/browser/capability-7PCNSWBT.mjs.map +0 -7
  268. package/dist/lib/browser/capability-KP3PFEXD.mjs +0 -31
  269. package/dist/lib/browser/capability-KP3PFEXD.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-BLQJSGL3.mjs +0 -732
  273. package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +0 -7
  274. package/dist/lib/browser/chunk-FHQTHCX7.mjs +0 -8
  275. package/dist/lib/browser/chunk-FMZN33N4.mjs.map +0 -7
  276. package/dist/lib/browser/chunk-H4WPA7U7.mjs +0 -77
  277. package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +0 -7
  279. package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-XYNO72GQ.mjs +0 -746
  281. package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +0 -7
  282. package/dist/lib/browser/common/index.mjs +0 -38
  283. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +0 -32
  284. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +0 -7
  285. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +0 -64
  286. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +0 -7
  287. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +0 -150
  288. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +0 -7
  289. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +0 -7
  290. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +0 -32
  291. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +0 -747
  294. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +0 -733
  297. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +0 -7
  298. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +0 -7
  299. package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +0 -78
  301. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +0 -7
  303. package/dist/lib/node-esm/common/index.mjs +0 -39
  304. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +0 -33
  305. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +0 -7
  306. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +0 -65
  307. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +0 -7
  308. package/dist/types/src/cli.d.ts.map +0 -1
  309. package/dist/types/src/common/activation-event.d.ts +0 -66
  310. package/dist/types/src/common/activation-event.d.ts.map +0 -1
  311. package/dist/types/src/common/capability.d.ts +0 -265
  312. package/dist/types/src/common/capability.d.ts.map +0 -1
  313. package/dist/types/src/common/collaboration.d.ts +0 -26
  314. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  315. package/dist/types/src/common/file.d.ts +0 -14
  316. package/dist/types/src/common/file.d.ts.map +0 -1
  317. package/dist/types/src/common/graph.d.ts +0 -21
  318. package/dist/types/src/common/graph.d.ts.map +0 -1
  319. package/dist/types/src/common/plugin.d.ts +0 -201
  320. package/dist/types/src/common/plugin.d.ts.map +0 -1
  321. package/dist/types/src/common/surface.d.ts.map +0 -1
  322. package/dist/types/src/playground/debug/Debug.d.ts +0 -8
  323. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  324. package/dist/types/src/playground/debug/index.d.ts +0 -2
  325. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  326. package/dist/types/src/playground/debug/plugin.d.ts +0 -3
  327. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  328. package/dist/types/src/playground/generator/Main.d.ts +0 -8
  329. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  330. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -8
  331. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  332. package/dist/types/src/playground/generator/generator.d.ts +0 -19
  333. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  334. package/dist/types/src/playground/generator/index.d.ts +0 -3
  335. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  336. package/dist/types/src/playground/generator/plugin.d.ts +0 -3
  337. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  338. package/dist/types/src/playground/layout/Layout.d.ts +0 -10
  339. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  340. package/dist/types/src/playground/layout/index.d.ts +0 -2
  341. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  342. package/dist/types/src/playground/layout/plugin.d.ts +0 -3
  343. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  344. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -8
  345. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  346. package/dist/types/src/playground/logger/index.d.ts +0 -2
  347. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  348. package/dist/types/src/playground/logger/plugin.d.ts +0 -3
  349. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  350. package/dist/types/src/playground/logger/schema.d.ts +0 -27
  351. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  352. package/dist/types/src/playground/playground.stories.d.ts +0 -11
  353. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  354. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -3
  355. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  356. package/dist/types/src/plugin-settings/actions.d.ts +0 -61
  357. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  358. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -6
  359. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  360. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  361. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  362. package/dist/types/src/plugin-settings/meta.d.ts +0 -3
  363. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  364. package/dist/types/src/plugin-settings/operation-resolver.d.ts +0 -6
  365. package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +0 -1
  366. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  367. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  368. package/dist/types/src/react/App.d.ts.map +0 -1
  369. package/dist/types/src/react/App.stories.d.ts.map +0 -1
  370. package/dist/types/src/react/DefaultFallback.d.ts +0 -8
  371. package/dist/types/src/react/DefaultFallback.d.ts.map +0 -1
  372. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  373. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  374. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +0 -1
  375. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  376. package/dist/types/src/react/Surface.d.ts +0 -14
  377. package/dist/types/src/react/Surface.d.ts.map +0 -1
  378. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  379. package/dist/types/src/react/SurfaceInfo.d.ts.map +0 -1
  380. package/dist/types/src/react/common.d.ts.map +0 -1
  381. package/dist/types/src/react/index.d.ts +0 -9
  382. package/dist/types/src/react/index.d.ts.map +0 -1
  383. package/dist/types/src/react/types.d.ts +0 -12
  384. package/dist/types/src/react/types.d.ts.map +0 -1
  385. package/dist/types/src/react/useApp.d.ts.map +0 -1
  386. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  387. package/dist/types/src/react/useLoading.d.ts.map +0 -1
  388. package/dist/types/src/react/useOperationResolver.d.ts +0 -19
  389. package/dist/types/src/react/useOperationResolver.d.ts.map +0 -1
  390. package/src/common/activation-event.ts +0 -99
  391. package/src/common/capability.ts +0 -343
  392. package/src/common/collaboration.ts +0 -31
  393. package/src/common/file.ts +0 -22
  394. package/src/common/graph.ts +0 -30
  395. package/src/common/plugin.ts +0 -364
  396. package/src/playground/debug/Debug.tsx +0 -49
  397. package/src/playground/debug/plugin.ts +0 -16
  398. package/src/playground/generator/Main.tsx +0 -80
  399. package/src/playground/generator/Toolbar.tsx +0 -57
  400. package/src/playground/generator/generator.ts +0 -48
  401. package/src/playground/generator/index.ts +0 -6
  402. package/src/playground/generator/plugin.ts +0 -21
  403. package/src/playground/layout/Layout.tsx +0 -37
  404. package/src/playground/layout/plugin.ts +0 -18
  405. package/src/playground/logger/Toolbar.tsx +0 -33
  406. package/src/playground/logger/index.ts +0 -5
  407. package/src/playground/logger/plugin.ts +0 -42
  408. package/src/playground/logger/schema.ts +0 -22
  409. package/src/playground/playground.stories.tsx +0 -54
  410. package/src/plugin-settings/SettingsPlugin.ts +0 -19
  411. package/src/plugin-settings/actions.ts +0 -64
  412. package/src/plugin-settings/app-graph-builder.ts +0 -140
  413. package/src/plugin-settings/index.ts +0 -6
  414. package/src/plugin-settings/meta.ts +0 -10
  415. package/src/plugin-settings/operation-resolver.ts +0 -55
  416. package/src/plugin-settings/translations.ts +0 -19
  417. package/src/react/App.stories.tsx +0 -63
  418. package/src/react/DefaultFallback.tsx +0 -26
  419. package/src/react/ErrorBoundary.tsx +0 -56
  420. package/src/react/index.ts +0 -14
  421. package/src/react/types.ts +0 -27
  422. package/src/react/useOperationResolver.ts +0 -40
  423. /package/dist/lib/{node-esm/react/index.mjs.map → browser/chunk-RFSO3JRG.mjs.map} +0 -0
  424. /package/dist/lib/{node-esm/common/index.mjs.map → browser/common/activation-events.mjs.map} +0 -0
  425. /package/dist/lib/browser/{react/index.mjs.map → common/capabilities.mjs.map} +0 -0
  426. /package/dist/lib/browser/{common/index.mjs.map → core/url-loader.mjs.map} +0 -0
  427. /package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.d.ts +0 -0
  428. /package/dist/types/src/{react → ui/components/Surface}/SurfaceInfo.d.ts +0 -0
  429. /package/dist/types/src/{react → ui/hooks}/useLoading.d.ts +0 -0
  430. /package/src/{react → ui/hooks}/useLoading.tsx +0 -0
@@ -9,49 +9,39 @@ import * as Ref from 'effect/Ref';
9
9
  import * as Schema from 'effect/Schema';
10
10
  import * as Stream from 'effect/Stream';
11
11
 
12
- import { Operation, type OperationInvoker, OperationResolver } from '@dxos/operation';
12
+ import { Operation, type OperationInvoker } from '@dxos/operation';
13
13
 
14
14
  //
15
15
  // Test Operations
16
16
  //
17
17
 
18
18
  export const Compute = Operation.make({
19
- schema: {
20
- input: Schema.Struct({ value: Schema.Number }),
21
- output: Schema.Struct({ value: Schema.Number }),
22
- },
19
+ input: Schema.Struct({ value: Schema.Number }),
20
+ output: Schema.Struct({ value: Schema.Number }),
23
21
  meta: { key: 'test.compute' },
24
22
  });
25
23
 
26
24
  export const HalveCompute = Operation.make({
27
- schema: {
28
- input: Schema.Struct({ value: Schema.Number }),
29
- output: Schema.Struct({ value: Schema.Number }),
30
- },
25
+ input: Schema.Struct({ value: Schema.Number }),
26
+ output: Schema.Struct({ value: Schema.Number }),
31
27
  meta: { key: 'test.halve-compute' },
32
28
  });
33
29
 
34
30
  export const ToString = Operation.make({
35
- schema: {
36
- input: Schema.Struct({ value: Schema.Number }),
37
- output: Schema.Struct({ string: Schema.String }),
38
- },
31
+ input: Schema.Struct({ value: Schema.Number }),
32
+ output: Schema.Struct({ string: Schema.String }),
39
33
  meta: { key: 'test.to-string' },
40
34
  });
41
35
 
42
36
  export const Add = Operation.make({
43
- schema: {
44
- input: Schema.Tuple(Schema.Number, Schema.Number),
45
- output: Schema.Number,
46
- },
37
+ input: Schema.Tuple(Schema.Number, Schema.Number),
38
+ output: Schema.Number,
47
39
  meta: { key: 'test.add' },
48
40
  });
49
41
 
50
42
  export const SideEffect = Operation.make({
51
- schema: {
52
- input: Schema.Void,
53
- output: Schema.Void,
54
- },
43
+ input: Schema.Void,
44
+ output: Schema.Void,
55
45
  meta: { key: 'test.side-effect' },
56
46
  });
57
47
 
@@ -59,34 +49,24 @@ export const SideEffect = Operation.make({
59
49
  // Test Handlers
60
50
  //
61
51
 
62
- export const computeHandler = OperationResolver.make({
63
- operation: Compute,
64
- handler: (data) =>
65
- Effect.gen(function* () {
66
- yield* Effect.sleep(data.value * 10);
67
- return { value: data.value * 2 };
68
- }),
69
- });
52
+ export const computeHandler = Operation.withHandler(Compute, (data) =>
53
+ Effect.gen(function* () {
54
+ yield* Effect.sleep(data.value * 10);
55
+ return { value: data.value * 2 };
56
+ }),
57
+ );
70
58
 
71
- export const halveComputeHandler = OperationResolver.make({
72
- operation: HalveCompute,
73
- handler: (data) => Effect.succeed({ value: data.value / 2 }),
74
- });
59
+ export const halveComputeHandler = Operation.withHandler(HalveCompute, (data) =>
60
+ Effect.succeed({ value: data.value / 2 }),
61
+ );
75
62
 
76
- export const toStringHandler = OperationResolver.make({
77
- operation: ToString,
78
- handler: (data) => Effect.succeed({ string: data.value.toString() }),
79
- });
63
+ export const toStringHandler = Operation.withHandler(ToString, (data) =>
64
+ Effect.succeed({ string: data.value.toString() }),
65
+ );
80
66
 
81
- export const addHandler = OperationResolver.make({
82
- operation: Add,
83
- handler: (data) => Effect.succeed(data[0] + data[1]),
84
- });
67
+ export const addHandler = Operation.withHandler(Add, (data) => Effect.succeed(data[0] + data[1]));
85
68
 
86
- export const sideEffectHandler = OperationResolver.make({
87
- operation: SideEffect,
88
- handler: () => Effect.succeed(undefined),
89
- });
69
+ export const sideEffectHandler = Operation.withHandler(SideEffect, () => Effect.succeed(undefined));
90
70
 
91
71
  //
92
72
  // Test Utilities
@@ -2,18 +2,17 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import * as Common from '../common';
5
+ import { ActivationEvents } from '../common';
6
6
  import { Capability, Plugin } from '../core';
7
-
8
7
  import { meta } from './meta';
9
8
 
10
9
  const ManagedRuntimeCapability = Capability.lazy('ManagedRuntime', () => import('./capability'));
11
10
 
12
11
  export const RuntimePlugin = Plugin.define(meta).pipe(
13
12
  Plugin.addModule({
14
- activatesOn: Common.ActivationEvent.Startup,
15
- activatesBefore: [Common.ActivationEvent.SetupLayer],
16
- activatesAfter: [Common.ActivationEvent.ManagedRuntimeReady],
13
+ activatesOn: ActivationEvents.Startup,
14
+ activatesBefore: [ActivationEvents.SetupLayer],
15
+ activatesAfter: [ActivationEvents.ManagedRuntimeReady],
17
16
  activate: ManagedRuntimeCapability,
18
17
  }),
19
18
  Plugin.make,
@@ -6,7 +6,7 @@ import * as Effect from 'effect/Effect';
6
6
  import * as Layer from 'effect/Layer';
7
7
  import * as ManagedRuntime from 'effect/ManagedRuntime';
8
8
 
9
- import * as Common from '../common';
9
+ import { ActivationEvents, Capabilities } from '../common';
10
10
  import { Capability, Plugin } from '../core';
11
11
 
12
12
  //
@@ -22,10 +22,10 @@ export default Capability.makeModule(
22
22
  const pluginManager = yield* Plugin.Service;
23
23
 
24
24
  // Trigger setup event so plugins can contribute their layers.
25
- yield* Plugin.activate(Common.ActivationEvent.SetupLayer);
25
+ yield* Plugin.activate(ActivationEvents.SetupLayer);
26
26
 
27
27
  // Gather all contributed layers.
28
- const layers = yield* Capability.getAll(Common.Capability.Layer);
28
+ const layers = yield* Capability.getAll(Capabilities.Layer);
29
29
 
30
30
  // Create layers that provide Capability.Service and Plugin.Service.
31
31
  const capabilityServiceLayer = Layer.succeed(Capability.Service, capabilityManager);
@@ -46,8 +46,8 @@ export default Capability.makeModule(
46
46
  );
47
47
 
48
48
  // Create the managed runtime from the composed layer.
49
- const runtime = ManagedRuntime.make(composedLayer) as Common.Capability.ManagedRuntime;
49
+ const runtime = ManagedRuntime.make(composedLayer) as Capabilities.ManagedRuntime;
50
50
 
51
- return Capability.contributes(Common.Capability.ManagedRuntime, runtime);
51
+ return Capability.contributes(Capabilities.ManagedRuntime, runtime);
52
52
  }),
53
53
  );
@@ -5,7 +5,7 @@
5
5
  import { type Plugin } from '../core';
6
6
 
7
7
  export const meta: Plugin.Meta = {
8
- id: 'dxos.org/plugin/runtime',
8
+ id: 'org.dxos.plugin.runtime',
9
9
  name: 'Runtime Plugin',
10
10
  description: 'Provides a managed Effect runtime by composing contributed layers.',
11
11
  };
@@ -7,7 +7,7 @@ import * as Layer from 'effect/Layer';
7
7
 
8
8
  import { invariant } from '@dxos/invariant';
9
9
 
10
- import * as Common from '../common';
10
+ import { ActivationEvents, Capabilities } from '../common';
11
11
  import { Plugin, PluginManager } from '../core';
12
12
 
13
13
  /**
@@ -34,18 +34,18 @@ export const fromPlugins = (plugins: Plugin.Plugin[]) =>
34
34
  });
35
35
 
36
36
  manager.capabilities.contribute({
37
- interface: Common.Capability.PluginManager,
37
+ interface: Capabilities.PluginManager,
38
38
  implementation: manager,
39
- module: 'dxos.org/app-framework/plugin-manager',
39
+ module: 'org.dxos.app-framework.plugin-manager',
40
40
  });
41
41
 
42
42
  manager.capabilities.contribute({
43
- interface: Common.Capability.AtomRegistry,
43
+ interface: Capabilities.AtomRegistry,
44
44
  implementation: manager.registry,
45
- module: 'dxos.org/app-framework/atom-registry',
45
+ module: 'org.dxos.app-framework.atom-registry',
46
46
  });
47
47
 
48
- yield* manager.activate(Common.ActivationEvent.Startup);
48
+ yield* manager.activate(ActivationEvents.Startup);
49
49
 
50
50
  return manager;
51
51
  }),
@@ -7,10 +7,9 @@ import React from 'react';
7
7
 
8
8
  import { withTheme } from '@dxos/react-ui/testing';
9
9
 
10
- import * as Common from '../common';
10
+ import { Capabilities } from '../common';
11
11
  import { Capability } from '../core';
12
- import { Surface } from '../react';
13
-
12
+ import { Surface } from '../ui';
14
13
  import { withPluginManager } from './withPluginManager';
15
14
 
16
15
  const DefaultStory = () => {
@@ -18,7 +17,7 @@ const DefaultStory = () => {
18
17
  return (
19
18
  <div>
20
19
  <div>Hello</div>
21
- <Surface role='main' />
20
+ <Surface.Surface role='main' />
22
21
  </div>
23
22
  );
24
23
  };
@@ -27,12 +26,12 @@ const meta = {
27
26
  title: 'sdk/app-framework/withPluginManager',
28
27
  render: DefaultStory,
29
28
  decorators: [
30
- withTheme,
29
+ withTheme(),
31
30
  withPluginManager({
32
31
  capabilities: [
33
32
  Capability.contributes(
34
- Common.Capability.ReactSurface,
35
- Common.createSurface({
33
+ Capabilities.ReactSurface,
34
+ Surface.create({
36
35
  id: 'test',
37
36
  role: 'main',
38
37
  component: ({ role }) => <span>{JSON.stringify({ role })}</span>,
@@ -4,15 +4,16 @@
4
4
 
5
5
  import { type Decorator, type StoryContext } from '@storybook/react';
6
6
  import * as Effect from 'effect/Effect';
7
- import React, { useEffect, useMemo } from 'react';
7
+ import React, { useEffect, useState } from 'react';
8
8
 
9
9
  import { raise } from '@dxos/debug';
10
+ import { runAndForwardErrors } from '@dxos/effect';
10
11
  import { useAsyncEffect } from '@dxos/react-hooks';
11
12
  import { type MaybeProvider, getProviderValue } from '@dxos/util';
12
13
 
13
- import * as Common from '../common';
14
+ import { ActivationEvents, Capabilities } from '../common';
14
15
  import { type ActivationEvent, Capability, type CapabilityManager, Plugin, PluginManager } from '../core';
15
- import { type UseAppOptions, useApp } from '../react';
16
+ import { type UseAppOptions, useApp } from '../ui';
16
17
 
17
18
  /**
18
19
  * @internal
@@ -43,6 +44,13 @@ export const setupPluginManager = ({
43
44
  return pluginManager;
44
45
  };
45
46
 
47
+ type ManagedPluginManagerState = {
48
+ fireEvents?: (ActivationEvent.ActivationEvent | string)[];
49
+ pluginManager: PluginManager.PluginManager;
50
+ setupEvents?: ActivationEvent.ActivationEvent[];
51
+ storyId: string;
52
+ };
53
+
46
54
  export type WithPluginManagerOptions = UseAppOptions & {
47
55
  /** @deprecated */
48
56
  capabilities?: MaybeProvider<Capability.Any[], CapabilityManager.CapabilityManager>;
@@ -60,40 +68,57 @@ export type WithPluginManagerInitializer<Args = void> =
60
68
  */
61
69
  export const withPluginManager = <Args,>(init: WithPluginManagerInitializer<Args> = {}): Decorator => {
62
70
  return (Story, context) => {
71
+ const storyId = context.id;
63
72
  const options = typeof init === 'function' ? init(context as any) : init;
64
- const pluginManager = useMemo(() => setupPluginManager(options), [init]);
73
+ const [managerState, setManagerState] = useState<ManagedPluginManagerState>();
65
74
 
66
- // Set-up root capability.
75
+ // Storybook replaces the full context object often, so key manager ownership by story id.
67
76
  useEffect(() => {
68
- const capability = Capability.contributes(Common.Capability.ReactRoot, {
69
- id: context.id,
77
+ const pluginManager = setupPluginManager(options);
78
+ const capability = Capability.contributes(Capabilities.ReactRoot, {
79
+ id: storyId,
70
80
  root: () => <Story />,
71
81
  });
72
82
 
73
83
  pluginManager.capabilities.contribute({
74
84
  ...capability,
75
- module: 'dxos.org/app-framework/withPluginManager',
85
+ module: 'org.dxos.app-framework.with-plugin-manager',
86
+ });
87
+
88
+ setManagerState({
89
+ pluginManager,
90
+ setupEvents: options.setupEvents,
91
+ fireEvents: options.fireEvents,
92
+ storyId,
76
93
  });
77
94
 
78
95
  return () => {
79
96
  pluginManager.capabilities.remove(capability.interface, capability.implementation);
97
+ void runAndForwardErrors(pluginManager.shutdown());
80
98
  };
81
- }, [pluginManager, context]);
99
+ }, [storyId, init]);
82
100
 
83
- // Fire events.
84
- useAsyncEffect(async () => {
85
- await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
86
- }, [pluginManager]);
101
+ // Avoid mounting useApp with a stale manager from the previous story.
102
+ if (!managerState || managerState.storyId !== storyId) {
103
+ return <></>;
104
+ }
87
105
 
88
- // Create app.
89
- const App = useApp({ pluginManager });
90
-
91
- return <App />;
106
+ return <WithPluginManagerApp {...managerState} />;
92
107
  };
93
108
  };
94
109
 
110
+ const WithPluginManagerApp = ({ fireEvents, pluginManager, setupEvents, storyId }: ManagedPluginManagerState) => {
111
+ // Fire deprecated events only after the effect-owned manager for this story exists.
112
+ useAsyncEffect(async () => {
113
+ await Promise.all(fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
114
+ }, [fireEvents, pluginManager, storyId]);
115
+
116
+ const App = useApp({ pluginManager, setupEvents });
117
+ return <App />;
118
+ };
119
+
95
120
  const storyMeta = {
96
- id: 'dxos.org/app-framework/story',
121
+ id: 'org.dxos.app-framework.story',
97
122
  name: 'Story',
98
123
  };
99
124
 
@@ -102,7 +127,7 @@ const storyMeta = {
102
127
  const StoryPlugin = Plugin.define(storyMeta).pipe(
103
128
  Plugin.addModule({
104
129
  id: 'Story',
105
- activatesOn: Common.ActivationEvent.Startup,
130
+ activatesOn: ActivationEvents.Startup,
106
131
  activate: () => Effect.succeed([]),
107
132
  }),
108
133
  Plugin.make,
@@ -0,0 +1,92 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
7
+ import React, { useEffect } from 'react';
8
+
9
+ import { withTheme } from '@dxos/react-ui/testing';
10
+
11
+ import { ActivationEvents, Capabilities } from '../../../common';
12
+ import { Capability, Plugin } from '../../../core';
13
+ import { useApp } from '../../hooks';
14
+
15
+ // Minimal plugin that contributes a ReactRoot.
16
+ const TestPlugin = Plugin.define<{ error?: boolean }>({
17
+ id: 'org.dxos.plugin.test',
18
+ name: 'Test Plugin',
19
+ }).pipe(
20
+ Plugin.addModule(({ error }) => ({
21
+ id: 'TestMain',
22
+ activatesOn: ActivationEvents.Startup,
23
+ activate: () =>
24
+ Effect.succeed([
25
+ Capability.contributes(Capabilities.ReactRoot, {
26
+ id: 'org.dxos.plugin.test.root',
27
+ root: () => {
28
+ useEffect(() => {
29
+ let t: NodeJS.Timeout;
30
+ if (error) {
31
+ console.log('Ticking...');
32
+ t = setTimeout(() => {
33
+ console.log('Bang!');
34
+ throw new Error('Runtime error');
35
+ }, 3_000);
36
+ }
37
+
38
+ return () => clearTimeout(t);
39
+ }, [error]);
40
+
41
+ return <h1 className='text-lg'>App Started</h1>;
42
+ },
43
+ }),
44
+ ]),
45
+ })),
46
+ Plugin.make,
47
+ );
48
+
49
+ const core = [TestPlugin.meta.id];
50
+
51
+ type DefaultStoryProps = { plugins?: Plugin.Plugin[] };
52
+
53
+ const DefaultStory = ({ plugins }: DefaultStoryProps) => {
54
+ const App = useApp({
55
+ plugins,
56
+ core,
57
+ placeholder: () => {
58
+ return (
59
+ <div role='none' className='text-description'>
60
+ Loading...
61
+ </div>
62
+ );
63
+ },
64
+ });
65
+
66
+ return <App />;
67
+ };
68
+
69
+ const meta = {
70
+ title: 'sdk/app-framework/App',
71
+ render: DefaultStory,
72
+ decorators: [withTheme()],
73
+ parameters: {
74
+ layout: 'centered',
75
+ },
76
+ } satisfies Meta;
77
+
78
+ export default meta;
79
+
80
+ type Story = StoryObj<typeof meta>;
81
+
82
+ export const Default: Story = {
83
+ args: {
84
+ plugins: [TestPlugin({})],
85
+ },
86
+ };
87
+
88
+ export const WithError: Story = {
89
+ args: {
90
+ plugins: [TestPlugin({ error: true })],
91
+ },
92
+ };
@@ -4,21 +4,19 @@
4
4
 
5
5
  import React, { type PropsWithChildren } from 'react';
6
6
 
7
- import * as Common from '../common';
8
- import { topologicalSort } from '../helpers';
9
-
10
- import { type UseAppOptions } from './useApp';
11
- import { useCapabilities } from './useCapabilities';
12
- import { LoadingState, useLoading } from './useLoading';
7
+ import { Capabilities } from '../../../common';
8
+ import { topologicalSort } from '../../../helpers';
9
+ import { LoadingState, type StartupProgress, type UseAppOptions, useCapabilities, useLoading } from '../../hooks';
13
10
 
14
11
  export type AppProps = Pick<UseAppOptions, 'placeholder' | 'debounce'> & {
15
12
  ready: boolean;
16
13
  error: unknown;
14
+ progress?: StartupProgress;
17
15
  };
18
16
 
19
- export const App = ({ placeholder: Placeholder, ready, error, debounce }: AppProps) => {
20
- const reactContexts = useCapabilities(Common.Capability.ReactContext);
21
- const reactRoots = useCapabilities(Common.Capability.ReactRoot);
17
+ export const App = ({ placeholder: Placeholder, ready, error, debounce, progress }: AppProps) => {
18
+ const reactContexts = useCapabilities(Capabilities.ReactContext);
19
+ const reactRoots = useCapabilities(Capabilities.ReactRoot);
22
20
  const stage = useLoading(ready, debounce);
23
21
 
24
22
  if (error) {
@@ -32,7 +30,7 @@ export const App = ({ placeholder: Placeholder, ready, error, debounce }: AppPro
32
30
  return null;
33
31
  }
34
32
 
35
- return <Placeholder stage={stage} />;
33
+ return <Placeholder stage={stage} progress={progress} />;
36
34
  }
37
35
 
38
36
  const ComposedContext = composeContexts(reactContexts);
@@ -45,7 +43,7 @@ export const App = ({ placeholder: Placeholder, ready, error, debounce }: AppPro
45
43
  );
46
44
  };
47
45
 
48
- const composeContexts = (contexts: Common.Capability.ReactContext[]) => {
46
+ const composeContexts = (contexts: Capabilities.ReactContext[]) => {
49
47
  if (contexts.length === 0) {
50
48
  return ({ children }: PropsWithChildren) => <>{children}</>;
51
49
  }
@@ -2,4 +2,4 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './plugin';
5
+ export * from './App';
@@ -7,14 +7,13 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
7
  import * as Effect from 'effect/Effect';
8
8
  import React, { useEffect, useMemo, useState } from 'react';
9
9
 
10
- import { withTheme } from '@dxos/react-ui/testing';
10
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
11
11
  import { useWebComponentContext } from '@dxos/web-context-react';
12
12
 
13
- import * as Common from '../common';
14
- import { PluginManagerContext } from '../context';
15
- import { Capability, Plugin } from '../core';
16
-
17
- import { useApp } from './useApp';
13
+ import { ActivationEvents, Capabilities } from '../../../common';
14
+ import { PluginManagerContext } from '../../../context';
15
+ import { Capability, Plugin } from '../../../core';
16
+ import { useApp } from '../../hooks';
18
17
 
19
18
  // Define the Counter capability
20
19
  const Counter = Capability.make<{ count: number; increment: () => void }>('example/counter');
@@ -79,7 +78,7 @@ const CounterComponent = () => {
79
78
  }, [counter]);
80
79
 
81
80
  if (!manager) {
82
- return <div className='p-4 text-red-500'>Error: Context not found</div>;
81
+ return <div className='p-4 text-error-text'>Error: Context not found</div>;
83
82
  }
84
83
 
85
84
  return (
@@ -105,7 +104,7 @@ const CounterComponent = () => {
105
104
  <CountStatus />
106
105
  </div>
107
106
 
108
- <div className='mt-8 pt-4 border-bs border-neutral-200 dark:border-neutral-700 text-center'>
107
+ <div className='mt-8 pt-4 border-t border-neutral-200 dark:border-neutral-700 text-center'>
109
108
  <p className='text-sm text-neutral-500 dark:text-neutral-400'>
110
109
  This component accesses the <code>PluginManager</code> via <code>useWebComponentContext</code>.
111
110
  </p>
@@ -117,12 +116,12 @@ const CounterComponent = () => {
117
116
 
118
117
  // Plugin that provides the Counter capability and renders the UI
119
118
  const CounterPlugin = Plugin.define({
120
- id: 'dxos.org/plugin/counter',
119
+ id: 'org.dxos.plugin.counter',
121
120
  name: 'Counter Plugin',
122
121
  }).pipe(
123
122
  Plugin.addModule({
124
123
  id: 'CounterMain',
125
- activatesOn: Common.ActivationEvent.Startup,
124
+ activatesOn: ActivationEvents.Startup,
126
125
  activate: () => {
127
126
  const listeners = new Set<() => void>();
128
127
  const counter = {
@@ -142,8 +141,8 @@ const CounterPlugin = Plugin.define({
142
141
  Capability.contributes(Counter, counter),
143
142
 
144
143
  // Contribute the UI
145
- Capability.contributes(Common.Capability.ReactRoot, {
146
- id: 'dxos.org/plugin/counter/root',
144
+ Capability.contributes(Capabilities.ReactRoot, {
145
+ id: 'org.dxos.plugin.counter.root',
147
146
  root: CounterComponent,
148
147
  }),
149
148
  ]);
@@ -153,7 +152,7 @@ const CounterPlugin = Plugin.define({
153
152
  )();
154
153
 
155
154
  const plugins = [CounterPlugin];
156
- const core = ['dxos.org/plugin/counter'];
155
+ const core = ['org.dxos.plugin.counter'];
157
156
  const placeholder = () => (
158
157
  <div className='flex h-screen items-center justify-center p-4 text-lg text-neutral-500'>
159
158
  Initializing Application...
@@ -173,7 +172,7 @@ const DefaultStory = () => {
173
172
  const meta = {
174
173
  title: 'sdk/app-framework/PluginManagerContext',
175
174
  render: DefaultStory,
176
- decorators: [withTheme],
175
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
177
176
  parameters: {
178
177
  layout: 'fullscreen',
179
178
  },
@@ -6,7 +6,7 @@ import { createContext, useContext } from 'react';
6
6
 
7
7
  import { raise } from '@dxos/debug';
8
8
 
9
- import { type PluginManager } from '../core';
9
+ import { type PluginManager } from '../../../core';
10
10
 
11
11
  const PluginManagerContext = createContext<PluginManager.PluginManager | undefined>(undefined);
12
12
 
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './PluginManagerProvider';