@dxos/app-framework 0.8.4-main.7ace549 → 0.8.4-main.937b3ca

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 (397) hide show
  1. package/.storybook/main.mts +1 -1
  2. package/.storybook/preview.mts +2 -2
  3. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +149 -0
  4. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +7 -0
  5. package/dist/lib/browser/capability-7PCNSWBT.mjs +33 -0
  6. package/dist/lib/browser/capability-7PCNSWBT.mjs.map +7 -0
  7. package/dist/lib/browser/capability-KP3PFEXD.mjs +31 -0
  8. package/dist/lib/browser/capability-KP3PFEXD.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-6Y7PZV72.mjs +77 -0
  10. package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-7IQHKD4U.mjs +170 -0
  12. package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-BLQJSGL3.mjs +732 -0
  14. package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
  16. package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-FMZN33N4.mjs +807 -0
  18. package/dist/lib/browser/chunk-FMZN33N4.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-H4WPA7U7.mjs +77 -0
  20. package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  22. package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
  23. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-TCLLRCS3.mjs +145 -0
  25. package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-XYNO72GQ.mjs +746 -0
  27. package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +7 -0
  28. package/dist/lib/browser/common/index.mjs +38 -0
  29. package/dist/lib/browser/core/activation-event.mjs +20 -0
  30. package/dist/lib/browser/core/activation-event.mjs.map +7 -0
  31. package/dist/lib/browser/core/capability.mjs +28 -0
  32. package/dist/lib/browser/core/capability.mjs.map +7 -0
  33. package/dist/lib/browser/core/plugin-manager.mjs +15 -0
  34. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  35. package/dist/lib/browser/core/plugin.mjs +27 -0
  36. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  37. package/dist/lib/browser/index.mjs +163 -101
  38. package/dist/lib/browser/index.mjs.map +4 -4
  39. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +32 -0
  40. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +7 -0
  41. package/dist/lib/browser/meta.json +1 -1
  42. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +64 -0
  43. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +7 -0
  44. package/dist/lib/browser/react/index.mjs +20 -8
  45. package/dist/lib/browser/testing/index.mjs +68 -22
  46. package/dist/lib/browser/testing/index.mjs.map +4 -4
  47. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +150 -0
  48. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +7 -0
  49. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs +34 -0
  50. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +7 -0
  51. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +32 -0
  52. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-663A54LQ.mjs +171 -0
  54. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +747 -0
  56. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
  58. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +733 -0
  60. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs +146 -0
  62. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  64. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-STMXUEPO.mjs +78 -0
  66. package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
  68. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +78 -0
  70. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs +808 -0
  72. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +7 -0
  73. package/dist/lib/node-esm/common/index.mjs +39 -0
  74. package/dist/lib/node-esm/common/index.mjs.map +7 -0
  75. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  76. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  77. package/dist/lib/node-esm/core/capability.mjs +29 -0
  78. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  79. package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
  80. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  81. package/dist/lib/node-esm/core/plugin.mjs +28 -0
  82. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  83. package/dist/lib/node-esm/index.mjs +163 -101
  84. package/dist/lib/node-esm/index.mjs.map +4 -4
  85. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +33 -0
  86. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +7 -0
  87. package/dist/lib/node-esm/meta.json +1 -1
  88. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +65 -0
  89. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +7 -0
  90. package/dist/lib/node-esm/react/index.mjs +20 -8
  91. package/dist/lib/node-esm/testing/index.mjs +68 -22
  92. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  93. package/dist/types/src/cli.d.ts +39 -0
  94. package/dist/types/src/cli.d.ts.map +1 -0
  95. package/dist/types/src/common/activation-event.d.ts +66 -0
  96. package/dist/types/src/common/activation-event.d.ts.map +1 -0
  97. package/dist/types/src/common/capability.d.ts +265 -0
  98. package/dist/types/src/common/capability.d.ts.map +1 -0
  99. package/dist/types/src/common/collaboration.d.ts +23 -17
  100. package/dist/types/src/common/collaboration.d.ts.map +1 -1
  101. package/dist/types/src/common/graph.d.ts +2 -2
  102. package/dist/types/src/common/graph.d.ts.map +1 -1
  103. package/dist/types/src/common/index.d.ts +4 -3
  104. package/dist/types/src/common/index.d.ts.map +1 -1
  105. package/dist/types/src/common/operations.d.ts +380 -0
  106. package/dist/types/src/common/operations.d.ts.map +1 -0
  107. package/dist/types/src/common/plugin.d.ts +201 -0
  108. package/dist/types/src/common/plugin.d.ts.map +1 -0
  109. package/dist/types/src/common/surface.d.ts +35 -9
  110. package/dist/types/src/common/surface.d.ts.map +1 -1
  111. package/dist/types/src/common/translations.d.ts +9 -0
  112. package/dist/types/src/common/translations.d.ts.map +1 -1
  113. package/dist/types/src/context.d.ts +5 -0
  114. package/dist/types/src/context.d.ts.map +1 -0
  115. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +6 -6
  116. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  117. package/dist/types/src/core/capability-manager.d.ts +43 -0
  118. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  119. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  120. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  121. package/dist/types/src/core/capability.d.ts +150 -0
  122. package/dist/types/src/core/capability.d.ts.map +1 -0
  123. package/dist/types/src/core/index.d.ts +5 -4
  124. package/dist/types/src/core/index.d.ts.map +1 -1
  125. package/dist/types/src/core/plugin-manager.d.ts +66 -0
  126. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  127. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  128. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  129. package/dist/types/src/core/plugin.d.ts +92 -34
  130. package/dist/types/src/core/plugin.d.ts.map +1 -1
  131. package/dist/types/src/index.d.ts +5 -2
  132. package/dist/types/src/index.d.ts.map +1 -1
  133. package/dist/types/src/playground/debug/Debug.d.ts +4 -2
  134. package/dist/types/src/playground/debug/Debug.d.ts.map +1 -1
  135. package/dist/types/src/playground/debug/plugin.d.ts +2 -1
  136. package/dist/types/src/playground/debug/plugin.d.ts.map +1 -1
  137. package/dist/types/src/playground/generator/Main.d.ts +4 -2
  138. package/dist/types/src/playground/generator/Main.d.ts.map +1 -1
  139. package/dist/types/src/playground/generator/Toolbar.d.ts +4 -2
  140. package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -1
  141. package/dist/types/src/playground/generator/generator.d.ts +17 -5
  142. package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
  143. package/dist/types/src/playground/generator/plugin.d.ts +2 -1
  144. package/dist/types/src/playground/generator/plugin.d.ts.map +1 -1
  145. package/dist/types/src/playground/layout/Layout.d.ts +4 -2
  146. package/dist/types/src/playground/layout/Layout.d.ts.map +1 -1
  147. package/dist/types/src/playground/layout/plugin.d.ts +2 -1
  148. package/dist/types/src/playground/layout/plugin.d.ts.map +1 -1
  149. package/dist/types/src/playground/logger/Toolbar.d.ts +4 -2
  150. package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -1
  151. package/dist/types/src/playground/logger/plugin.d.ts +2 -1
  152. package/dist/types/src/playground/logger/plugin.d.ts.map +1 -1
  153. package/dist/types/src/playground/logger/schema.d.ts +14 -0
  154. package/dist/types/src/playground/logger/schema.d.ts.map +1 -1
  155. package/dist/types/src/playground/playground.stories.d.ts.map +1 -1
  156. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
  157. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
  158. package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
  159. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
  160. package/dist/types/src/plugin-operation/history/errors.d.ts +5 -0
  161. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
  162. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
  163. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
  164. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
  165. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
  166. package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
  167. package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
  168. package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
  169. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
  170. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +93 -0
  171. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
  172. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
  173. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
  174. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
  175. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
  176. package/dist/types/src/plugin-operation/index.d.ts +3 -0
  177. package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
  178. package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
  179. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
  180. package/dist/types/src/plugin-operation/meta.d.ts +3 -0
  181. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
  182. package/dist/types/src/plugin-operation/testing.d.ts +109 -0
  183. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
  184. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
  185. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
  186. package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
  187. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
  188. package/dist/types/src/plugin-runtime/index.d.ts +2 -0
  189. package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
  190. package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
  191. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
  192. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +2 -1
  193. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -1
  194. package/dist/types/src/plugin-settings/actions.d.ts +36 -0
  195. package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
  196. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +4 -2
  197. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -1
  198. package/dist/types/src/plugin-settings/meta.d.ts +2 -2
  199. package/dist/types/src/plugin-settings/meta.d.ts.map +1 -1
  200. package/dist/types/src/plugin-settings/operation-resolver.d.ts +6 -0
  201. package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +1 -0
  202. package/dist/types/src/react/App.d.ts +3 -5
  203. package/dist/types/src/react/App.d.ts.map +1 -1
  204. package/dist/types/src/react/App.stories.d.ts.map +1 -1
  205. package/dist/types/src/react/PluginManagerContext.stories.d.ts +13 -0
  206. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +1 -0
  207. package/dist/types/src/react/PluginManagerProvider.d.ts +2 -2
  208. package/dist/types/src/react/PluginManagerProvider.d.ts.map +1 -1
  209. package/dist/types/src/react/Surface.d.ts +6 -4
  210. package/dist/types/src/react/Surface.d.ts.map +1 -1
  211. package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
  212. package/dist/types/src/react/SurfaceInfo.d.ts +11 -0
  213. package/dist/types/src/react/SurfaceInfo.d.ts.map +1 -0
  214. package/dist/types/src/react/common.d.ts +13 -12
  215. package/dist/types/src/react/common.d.ts.map +1 -1
  216. package/dist/types/src/react/index.d.ts +1 -1
  217. package/dist/types/src/react/index.d.ts.map +1 -1
  218. package/dist/types/src/react/types.d.ts +5 -7
  219. package/dist/types/src/react/types.d.ts.map +1 -1
  220. package/dist/types/src/react/useApp.d.ts +6 -5
  221. package/dist/types/src/react/useApp.d.ts.map +1 -1
  222. package/dist/types/src/react/useCapabilities.d.ts +16 -3
  223. package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
  224. package/dist/types/src/react/useLoading.d.ts +1 -2
  225. package/dist/types/src/react/useLoading.d.ts.map +1 -1
  226. package/dist/types/src/react/useOperationResolver.d.ts +19 -0
  227. package/dist/types/src/react/useOperationResolver.d.ts.map +1 -0
  228. package/dist/types/src/testing/index.d.ts +1 -0
  229. package/dist/types/src/testing/index.d.ts.map +1 -1
  230. package/dist/types/src/testing/service.d.ts +8 -0
  231. package/dist/types/src/testing/service.d.ts.map +1 -0
  232. package/dist/types/src/testing/withPluginManager.d.ts +3 -3
  233. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  234. package/dist/types/tsconfig.tsbuildinfo +1 -1
  235. package/moon.yml +5 -1
  236. package/package.json +92 -39
  237. package/src/cli.ts +107 -0
  238. package/src/common/activation-event.ts +99 -0
  239. package/src/common/capability.ts +343 -0
  240. package/src/common/collaboration.ts +22 -9
  241. package/src/common/graph.ts +2 -2
  242. package/src/common/index.ts +4 -3
  243. package/src/common/operations.ts +412 -0
  244. package/src/common/plugin.ts +364 -0
  245. package/src/common/surface.ts +45 -13
  246. package/src/common/translations.ts +20 -0
  247. package/src/context.ts +9 -0
  248. package/src/core/{events.ts → activation-event.ts} +5 -5
  249. package/src/core/capability-manager.test.ts +151 -0
  250. package/src/core/capability-manager.ts +171 -0
  251. package/src/core/capability.ts +236 -0
  252. package/src/core/index.ts +5 -4
  253. package/src/core/plugin-manager.test.ts +845 -0
  254. package/src/core/plugin-manager.ts +696 -0
  255. package/src/core/plugin.ts +221 -39
  256. package/src/index.ts +5 -2
  257. package/src/playground/debug/Debug.tsx +26 -16
  258. package/src/playground/debug/plugin.ts +8 -8
  259. package/src/playground/generator/Main.tsx +20 -10
  260. package/src/playground/generator/Toolbar.tsx +26 -16
  261. package/src/playground/generator/generator.ts +27 -27
  262. package/src/playground/generator/plugin.ts +11 -12
  263. package/src/playground/layout/Layout.tsx +11 -7
  264. package/src/playground/layout/plugin.ts +8 -8
  265. package/src/playground/logger/Toolbar.tsx +19 -16
  266. package/src/playground/logger/plugin.ts +24 -23
  267. package/src/playground/logger/schema.ts +10 -0
  268. package/src/playground/playground.stories.tsx +13 -5
  269. package/src/plugin-operation/OperationPlugin.ts +25 -0
  270. package/src/plugin-operation/history/capability.ts +37 -0
  271. package/src/plugin-operation/history/errors.ts +11 -0
  272. package/src/plugin-operation/history/history-tracker.test.ts +380 -0
  273. package/src/plugin-operation/history/history-tracker.ts +129 -0
  274. package/src/plugin-operation/history/index.ts +9 -0
  275. package/src/plugin-operation/history/types.ts +17 -0
  276. package/src/plugin-operation/history/undo-mapping.ts +132 -0
  277. package/src/plugin-operation/history/undo-registry.test.ts +73 -0
  278. package/src/plugin-operation/history/undo-registry.ts +54 -0
  279. package/src/plugin-operation/index.ts +6 -0
  280. package/src/plugin-operation/invoker-capability.ts +40 -0
  281. package/src/plugin-operation/meta.ts +11 -0
  282. package/src/plugin-operation/testing.ts +174 -0
  283. package/src/plugin-runtime/RuntimePlugin.ts +20 -0
  284. package/src/plugin-runtime/capability.ts +53 -0
  285. package/src/plugin-runtime/index.ts +5 -0
  286. package/src/plugin-runtime/meta.ts +11 -0
  287. package/src/plugin-settings/SettingsPlugin.ts +11 -26
  288. package/src/plugin-settings/actions.ts +39 -0
  289. package/src/plugin-settings/app-graph-builder.ts +122 -142
  290. package/src/plugin-settings/meta.ts +2 -2
  291. package/src/plugin-settings/operation-resolver.ts +55 -0
  292. package/src/react/App.stories.tsx +30 -0
  293. package/src/react/App.tsx +10 -9
  294. package/src/react/PluginManagerContext.stories.tsx +184 -0
  295. package/src/react/PluginManagerProvider.ts +2 -2
  296. package/src/react/Surface.stories.tsx +33 -17
  297. package/src/react/Surface.tsx +199 -41
  298. package/src/react/SurfaceInfo.tsx +107 -0
  299. package/src/react/common.ts +29 -5
  300. package/src/react/index.ts +1 -1
  301. package/src/react/types.ts +9 -20
  302. package/src/react/useApp.tsx +99 -55
  303. package/src/react/useCapabilities.ts +37 -5
  304. package/src/react/useLoading.tsx +4 -6
  305. package/src/react/useOperationResolver.ts +40 -0
  306. package/src/testing/index.ts +1 -0
  307. package/src/testing/service.ts +52 -0
  308. package/src/testing/withPluginManager.stories.tsx +5 -5
  309. package/src/testing/withPluginManager.tsx +20 -22
  310. package/tsconfig.json +17 -8
  311. package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
  312. package/dist/lib/browser/app-graph-builder-OIEZZC45.mjs +0 -138
  313. package/dist/lib/browser/app-graph-builder-OIEZZC45.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-6XKO24JP.mjs +0 -483
  315. package/dist/lib/browser/chunk-6XKO24JP.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
  317. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-WPW5VVAX.mjs +0 -1651
  319. package/dist/lib/browser/chunk-WPW5VVAX.mjs.map +0 -7
  320. package/dist/lib/browser/intent-dispatcher-LZ4AE66E.mjs +0 -11
  321. package/dist/lib/browser/intent-resolver-QVCKRX6G.mjs +0 -39
  322. package/dist/lib/browser/intent-resolver-QVCKRX6G.mjs.map +0 -7
  323. package/dist/lib/browser/store-CNPHOYTJ.mjs +0 -30
  324. package/dist/lib/browser/store-CNPHOYTJ.mjs.map +0 -7
  325. package/dist/lib/node-esm/app-graph-builder-EBU4NVWD.mjs +0 -139
  326. package/dist/lib/node-esm/app-graph-builder-EBU4NVWD.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-3UPX5OIS.mjs +0 -484
  328. package/dist/lib/node-esm/chunk-3UPX5OIS.mjs.map +0 -7
  329. package/dist/lib/node-esm/chunk-XJZGUJ3H.mjs +0 -1653
  330. package/dist/lib/node-esm/chunk-XJZGUJ3H.mjs.map +0 -7
  331. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
  332. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
  333. package/dist/lib/node-esm/intent-dispatcher-MGOJ3CHD.mjs +0 -12
  334. package/dist/lib/node-esm/intent-resolver-URF3HN3G.mjs +0 -40
  335. package/dist/lib/node-esm/intent-resolver-URF3HN3G.mjs.map +0 -7
  336. package/dist/lib/node-esm/store-RK5B4XEL.mjs +0 -31
  337. package/dist/lib/node-esm/store-RK5B4XEL.mjs.map +0 -7
  338. package/dist/types/src/common/capabilities.d.ts +0 -195
  339. package/dist/types/src/common/capabilities.d.ts.map +0 -1
  340. package/dist/types/src/common/events.d.ts +0 -52
  341. package/dist/types/src/common/events.d.ts.map +0 -1
  342. package/dist/types/src/common/layout.d.ts +0 -279
  343. package/dist/types/src/common/layout.d.ts.map +0 -1
  344. package/dist/types/src/core/capabilities.d.ts +0 -117
  345. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  346. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  347. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  348. package/dist/types/src/core/events.d.ts.map +0 -1
  349. package/dist/types/src/core/manager.d.ts +0 -126
  350. package/dist/types/src/core/manager.d.ts.map +0 -1
  351. package/dist/types/src/core/manager.test.d.ts +0 -2
  352. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  353. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  354. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  355. package/dist/types/src/plugin-intent/actions.d.ts +0 -36
  356. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  357. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  358. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  359. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  360. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  361. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  362. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  363. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  364. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  365. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  366. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  367. package/dist/types/src/plugin-intent/meta.d.ts +0 -3
  368. package/dist/types/src/plugin-intent/meta.d.ts.map +0 -1
  369. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  370. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  371. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  372. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  373. package/dist/types/src/react/IntentContext.d.ts +0 -8
  374. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  375. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  376. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  377. package/src/common/capabilities.ts +0 -214
  378. package/src/common/events.ts +0 -79
  379. package/src/common/layout.ts +0 -277
  380. package/src/core/capabilities.test.ts +0 -136
  381. package/src/core/capabilities.ts +0 -263
  382. package/src/core/manager.test.ts +0 -516
  383. package/src/core/manager.ts +0 -604
  384. package/src/plugin-intent/IntentPlugin.ts +0 -20
  385. package/src/plugin-intent/actions.ts +0 -31
  386. package/src/plugin-intent/errors.ts +0 -40
  387. package/src/plugin-intent/index.ts +0 -9
  388. package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
  389. package/src/plugin-intent/intent-dispatcher.ts +0 -342
  390. package/src/plugin-intent/intent.ts +0 -154
  391. package/src/plugin-intent/meta.ts +0 -10
  392. package/src/plugin-settings/intent-resolver.ts +0 -35
  393. package/src/plugin-settings/store.ts +0 -33
  394. package/src/react/IntentContext.tsx +0 -35
  395. package/src/react/useIntentResolver.ts +0 -22
  396. /package/dist/lib/browser/{intent-dispatcher-LZ4AE66E.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  397. /package/dist/lib/{node-esm/intent-dispatcher-MGOJ3CHD.mjs.map → browser/common/index.mjs.map} +0 -0
@@ -3,15 +3,21 @@
3
3
  //
4
4
 
5
5
  import { RegistryContext } from '@effect-atom/atom-react';
6
- import { effect } from '@preact/signals-core';
7
- import React, { type FC, useCallback, useEffect, useMemo } from 'react';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Fiber from 'effect/Fiber';
8
+ import * as PubSub from 'effect/PubSub';
9
+ import * as Queue from 'effect/Queue';
10
+ import React, { type FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';
8
11
 
12
+ import { runAndForwardErrors } from '@dxos/effect';
9
13
  import { invariant } from '@dxos/invariant';
10
- import { live } from '@dxos/live-object';
14
+ import { log } from '@dxos/log';
11
15
  import { useAsyncEffect, useDefaultValue } from '@dxos/react-hooks';
16
+ import { ContextProtocolProvider } from '@dxos/web-context-react';
12
17
 
13
- import { Capabilities, Events } from '../common';
14
- import { type Plugin, PluginManager, type PluginManagerOptions } from '../core';
18
+ import * as Common from '../common';
19
+ import { PluginManagerContext } from '../context';
20
+ import { type Plugin, PluginManager } from '../core';
15
21
 
16
22
  import { App } from './App';
17
23
  import { DefaultFallback } from './DefaultFallback';
@@ -21,9 +27,9 @@ import { PluginManagerProvider } from './PluginManagerProvider';
21
27
  const ENABLED_KEY = 'dxos.org/app-framework/enabled';
22
28
 
23
29
  export type UseAppOptions = {
24
- pluginManager?: PluginManager;
25
- pluginLoader?: PluginManagerOptions['pluginLoader'];
26
- plugins?: Plugin[];
30
+ pluginManager?: PluginManager.PluginManager;
31
+ pluginLoader?: PluginManager.ManagerOptions['pluginLoader'];
32
+ plugins?: Plugin.Plugin[];
27
33
  core?: string[];
28
34
  defaults?: string[];
29
35
  placeholder?: FC<{ stage: number }>;
@@ -31,6 +37,7 @@ export type UseAppOptions = {
31
37
  cacheEnabled?: boolean;
32
38
  safeMode?: boolean;
33
39
  debounce?: number;
40
+ timeout?: number;
34
41
  };
35
42
 
36
43
  /**
@@ -60,59 +67,55 @@ export type UseAppOptions = {
60
67
  */
61
68
  export const useApp = ({
62
69
  pluginManager,
63
- pluginLoader: pluginLoaderParam,
64
- plugins: pluginsParam,
65
- core: coreParam,
66
- defaults: defaultsParam,
70
+ pluginLoader: pluginLoaderProp,
71
+ plugins: pluginsProp,
72
+ core: coreProp,
73
+ defaults: defaultsProp,
67
74
  placeholder,
68
75
  fallback = DefaultFallback,
69
76
  cacheEnabled = false,
70
77
  safeMode = false,
71
78
  debounce = 0,
79
+ timeout = 30_000,
72
80
  }: UseAppOptions) => {
73
- const plugins = useDefaultValue(pluginsParam, () => []);
74
- const core = useDefaultValue(coreParam, () => plugins.map(({ meta }) => meta.id));
75
- const defaults = useDefaultValue(defaultsParam, () => []);
81
+ const plugins = useDefaultValue(pluginsProp, () => []);
82
+ const core = useDefaultValue(coreProp, () => plugins.map(({ meta }) => meta.id));
83
+ const defaults = useDefaultValue(defaultsProp, () => []);
76
84
 
77
85
  // TODO(wittjosiah): Provide a custom plugin loader which supports loading via url.
78
86
  const pluginLoader = useMemo(
79
87
  () =>
80
- pluginLoaderParam ??
81
- ((id: string) => {
82
- const plugin = plugins.find((plugin) => plugin.meta.id === id);
83
- invariant(plugin, `Plugin not found: ${id}`);
84
- return plugin;
85
- }),
86
- [pluginLoaderParam, plugins],
88
+ pluginLoaderProp ??
89
+ ((id: string) =>
90
+ Effect.sync(() => {
91
+ const plugin = plugins.find((plugin) => plugin.meta.id === id);
92
+ invariant(plugin, `Plugin not found: ${id}`);
93
+ return plugin;
94
+ })),
95
+ [pluginLoaderProp, plugins],
87
96
  );
88
97
 
89
- const state = useMemo(() => live({ ready: false, error: null }), []);
98
+ const readyRef = useRef(false);
99
+ const [ready, setReady] = useState(false);
100
+ const errorRef = useRef<unknown>(null);
101
+ const [error, setError] = useState<unknown>(null);
102
+ // TODO(wittjosiah): Migrate to Atom.kvs for isomorphic storage.
90
103
  const cached: string[] = useMemo(() => JSON.parse(localStorage.getItem(ENABLED_KEY) ?? '[]'), []);
91
104
  const enabled = useMemo(
92
105
  () => (safeMode ? [] : cacheEnabled && cached.length > 0 ? cached : defaults),
93
106
  [safeMode, cacheEnabled, cached, defaults],
94
107
  );
95
108
  const manager = useMemo(
96
- () => pluginManager ?? new PluginManager({ pluginLoader, plugins, core, enabled }),
109
+ () => pluginManager ?? PluginManager.make({ pluginLoader, plugins, core, enabled }),
97
110
  [pluginManager, pluginLoader, plugins, core, enabled],
98
111
  );
99
112
 
100
113
  useEffect(() => {
101
- return manager.activation.on(({ event, state: _state, error }) => {
102
- // Once the app is ready the first time, don't show the fallback again.
103
- if (!state.ready && event === Events.Startup.id) {
104
- state.ready = _state === 'activated';
105
- }
106
-
107
- if (error && !state.ready && !state.error) {
108
- state.error = error;
109
- }
110
- });
111
- }, [manager, state]);
112
-
113
- useEffect(() => {
114
- effect(() => {
115
- cacheEnabled && localStorage.setItem(ENABLED_KEY, JSON.stringify(manager.enabled));
114
+ if (!cacheEnabled) {
115
+ return;
116
+ }
117
+ return manager.registry.subscribe(manager.enabled, (value) => {
118
+ localStorage.setItem(ENABLED_KEY, JSON.stringify(value));
116
119
  });
117
120
  }, [cacheEnabled, manager]);
118
121
 
@@ -121,27 +124,66 @@ export const useApp = ({
121
124
  }, [manager]);
122
125
 
123
126
  useAsyncEffect(async () => {
124
- manager.context.contributeCapability({
125
- interface: Capabilities.PluginManager,
127
+ manager.capabilities.contribute({
128
+ interface: Common.Capability.PluginManager,
126
129
  implementation: manager,
127
130
  module: 'dxos.org/app-framework/plugin-manager',
128
131
  });
129
132
 
130
- manager.context.contributeCapability({
131
- interface: Capabilities.AtomRegistry,
133
+ manager.capabilities.contribute({
134
+ interface: Common.Capability.AtomRegistry,
132
135
  implementation: manager.registry,
133
136
  module: 'dxos.org/app-framework/atom-registry',
134
137
  });
135
138
 
136
- await Promise.all([
137
- // TODO(wittjosiah): Factor out such that this could be called per surface role when attempting to render.
138
- manager.activate(Events.SetupReactSurface),
139
- manager.activate(Events.Startup),
140
- ]);
139
+ const fiber = Effect.gen(function* () {
140
+ const queue = yield* PubSub.subscribe(manager.activation);
141
+ const listener = yield* Effect.forkDaemon(
142
+ Queue.take(queue).pipe(
143
+ Effect.tap(({ event, state, error: error$ }) =>
144
+ Effect.sync(() => {
145
+ if (event === Common.ActivationEvent.Startup.id && state === 'activated') {
146
+ clearTimeout(timeoutId);
147
+ setReady(true);
148
+ readyRef.current = true;
149
+ }
150
+ if (error$ && !readyRef.current) {
151
+ setError(error$);
152
+ errorRef.current = error$;
153
+ }
154
+ }),
155
+ ),
156
+ Effect.forever,
157
+ ),
158
+ );
159
+
160
+ yield* Effect.all([
161
+ manager.activate(Common.ActivationEvent.SetupSettings),
162
+ manager.activate(Common.ActivationEvent.SetupReactSurface),
163
+ manager.activate(Common.ActivationEvent.Startup),
164
+ ]);
165
+
166
+ return yield* Fiber.join(listener);
167
+ }).pipe(Effect.scoped, Effect.runFork);
168
+
169
+ // Set up a timeout for startup.
170
+ const timeoutId = setTimeout(() => {
171
+ if (!readyRef.current && !errorRef.current) {
172
+ log.warn('startup timeout diagnostic', {
173
+ eventsFired: manager.getEventsFired(),
174
+ activeModules: manager.getActive(),
175
+ pendingReset: manager.getPendingReset(),
176
+ });
177
+ void runAndForwardErrors(Fiber.interrupt(fiber));
178
+ setError(new Error(`Startup timed out after ${timeout}ms`));
179
+ }
180
+ }, timeout);
141
181
 
142
182
  return () => {
143
- manager.context.removeCapability(Capabilities.PluginManager, manager);
144
- manager.context.removeCapability(Capabilities.AtomRegistry, manager.registry);
183
+ clearTimeout(timeoutId);
184
+ void runAndForwardErrors(Fiber.interrupt(fiber));
185
+ manager.capabilities.remove(Common.Capability.PluginManager, manager);
186
+ manager.capabilities.remove(Common.Capability.AtomRegistry, manager.registry);
145
187
  };
146
188
  }, [manager]);
147
189
 
@@ -149,17 +191,19 @@ export const useApp = ({
149
191
  () => (
150
192
  <ErrorBoundary fallback={fallback}>
151
193
  <PluginManagerProvider value={manager}>
152
- <RegistryContext.Provider value={manager.registry}>
153
- <App placeholder={placeholder} state={state} debounce={debounce} />
154
- </RegistryContext.Provider>
194
+ <ContextProtocolProvider value={manager} context={PluginManagerContext}>
195
+ <RegistryContext.Provider value={manager.registry}>
196
+ <App placeholder={placeholder} ready={ready} error={error} debounce={debounce} />
197
+ </RegistryContext.Provider>
198
+ </ContextProtocolProvider>
155
199
  </PluginManagerProvider>
156
200
  </ErrorBoundary>
157
201
  ),
158
- [fallback, manager, placeholder, state],
202
+ [fallback, manager, placeholder, ready, error],
159
203
  );
160
204
  };
161
205
 
162
- const setupDevtools = (manager: PluginManager) => {
206
+ const setupDevtools = (manager: PluginManager.PluginManager) => {
163
207
  (globalThis as any).composer ??= {};
164
208
  (globalThis as any).composer.manager = manager;
165
209
  };
@@ -2,11 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { useAtomValue } from '@effect-atom/atom-react';
5
+ import { type Atom, useAtomValue } from '@effect-atom/atom-react';
6
+ import { useCallback } from 'react';
6
7
 
7
8
  import { invariant } from '@dxos/invariant';
8
9
 
9
- import { type InterfaceDef } from '../core';
10
+ import * as Common from '../common';
11
+ import { type Capability } from '../core';
10
12
 
11
13
  import { usePluginManager } from './PluginManagerProvider';
12
14
 
@@ -14,9 +16,9 @@ import { usePluginManager } from './PluginManagerProvider';
14
16
  * Hook to request capabilities from the plugin context.
15
17
  * @returns An array of capabilities.
16
18
  */
17
- export const useCapabilities = <T>(interfaceDef: InterfaceDef<T>) => {
19
+ export const useCapabilities = <T>(interfaceDef: Capability.InterfaceDef<T>) => {
18
20
  const manager = usePluginManager();
19
- return useAtomValue(manager.context.capabilities(interfaceDef));
21
+ return useAtomValue(manager.capabilities.atom(interfaceDef));
20
22
  };
21
23
 
22
24
  /**
@@ -24,8 +26,38 @@ export const useCapabilities = <T>(interfaceDef: InterfaceDef<T>) => {
24
26
  * @returns The capability.
25
27
  * @throws If no capability is found.
26
28
  */
27
- export const useCapability = <T>(interfaceDef: InterfaceDef<T>) => {
29
+ export const useCapability = <T>(interfaceDef: Capability.InterfaceDef<T>) => {
28
30
  const capabilities = useCapabilities(interfaceDef);
29
31
  invariant(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`);
30
32
  return capabilities[0];
31
33
  };
34
+
35
+ /**
36
+ * Hook to get the current value of an atom capability.
37
+ * Automatically subscribes to changes.
38
+ * @example const settings = useAtomCapability(ThreadCapabilities.Settings);
39
+ */
40
+ export const useAtomCapability = <T>(atomCapability: Capability.InterfaceDef<Atom.Atom<T>>): T => {
41
+ const atom = useCapability(atomCapability);
42
+ return useAtomValue(atom);
43
+ };
44
+
45
+ /**
46
+ * Hook to get value and updater for an atom capability.
47
+ * Returns [currentValue, updateFn] similar to useState.
48
+ * @example const [settings, updateSettings] = useAtomCapabilityState(ThreadCapabilities.Settings);
49
+ */
50
+ export const useAtomCapabilityState = <T>(
51
+ atomCapability: Capability.InterfaceDef<Atom.Writable<T>>,
52
+ ): [T, (fn: (current: T) => T) => void] => {
53
+ const registry = useCapability(Common.Capability.AtomRegistry);
54
+ const atom = useCapability(atomCapability);
55
+ const value = useAtomValue(atom);
56
+ const update = useCallback(
57
+ (fn: (current: T) => T) => {
58
+ registry.set(atom, fn(registry.get(atom)));
59
+ },
60
+ [registry, atom],
61
+ );
62
+ return [value, update];
63
+ };
@@ -4,8 +4,6 @@
4
4
 
5
5
  import { useEffect, useState } from 'react';
6
6
 
7
- import { type AppProps } from './App';
8
-
9
7
  export enum LoadingState {
10
8
  Loading = 0,
11
9
  FadeIn = 1,
@@ -23,7 +21,7 @@ export enum LoadingState {
23
21
  * 2: Fade-out - Fade out the loading animation.
24
22
  * 3: Done - Remove the placeholder.
25
23
  */
26
- export const useLoading = (state: AppProps['state'], debounce = 0) => {
24
+ export const useLoading = (ready: boolean, debounce = 0) => {
27
25
  const [stage, setStage] = useState<LoadingState>(LoadingState.Loading);
28
26
  useEffect(() => {
29
27
  if (!debounce) {
@@ -34,7 +32,7 @@ export const useLoading = (state: AppProps['state'], debounce = 0) => {
34
32
  setStage((stage) => {
35
33
  switch (stage) {
36
34
  case LoadingState.Loading: {
37
- if (!state.ready) {
35
+ if (!ready) {
38
36
  return LoadingState.FadeIn;
39
37
  } else {
40
38
  clearInterval(i);
@@ -43,7 +41,7 @@ export const useLoading = (state: AppProps['state'], debounce = 0) => {
43
41
  }
44
42
 
45
43
  case LoadingState.FadeIn: {
46
- if (state.ready) {
44
+ if (ready) {
47
45
  return LoadingState.FadeOut;
48
46
  }
49
47
  break;
@@ -63,7 +61,7 @@ export const useLoading = (state: AppProps['state'], debounce = 0) => {
63
61
  }, [debounce]);
64
62
 
65
63
  if (!debounce) {
66
- return state.ready ? LoadingState.Done : LoadingState.Loading;
64
+ return ready ? LoadingState.Done : LoadingState.Loading;
67
65
  }
68
66
 
69
67
  return stage;
@@ -0,0 +1,40 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useEffect, useMemo } from 'react';
6
+
7
+ import * as Common from '../common';
8
+ import { usePluginManager } from '../react';
9
+
10
+ /**
11
+ * Hook to dynamically register an operation resolver (handler) within a React component.
12
+ * The resolver is added when the component mounts and removed when it unmounts.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * const scrollHandler = useMemo(() => OperationResolver.make({
17
+ * operation: LayoutOperation.ScrollIntoView,
18
+ * handler: (input) => Effect.sync(() => {
19
+ * // Handle scroll
20
+ * }),
21
+ * }), [deps]);
22
+ *
23
+ * useOperationResolver(meta.id, scrollHandler);
24
+ * ```
25
+ */
26
+ export const useOperationResolver = (module: string, resolver: Common.Capability.OperationResolver) => {
27
+ const manager = usePluginManager();
28
+ // Wrap single resolver in array as the capability expects an array.
29
+ const resolverArray = useMemo(() => [resolver], [resolver]);
30
+
31
+ useEffect(() => {
32
+ manager.capabilities.contribute({
33
+ module,
34
+ interface: Common.Capability.OperationResolver,
35
+ implementation: resolverArray,
36
+ });
37
+
38
+ return () => manager.capabilities.remove(Common.Capability.OperationResolver, resolverArray);
39
+ }, [module, resolverArray]);
40
+ };
@@ -2,4 +2,5 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ export * from './service';
5
6
  export * from './withPluginManager';
@@ -0,0 +1,52 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Layer from 'effect/Layer';
7
+
8
+ import { invariant } from '@dxos/invariant';
9
+
10
+ import * as Common from '../common';
11
+ import { Plugin, PluginManager } from '../core';
12
+
13
+ /**
14
+ * Creates a Plugin.Service layer from a list of plugins.
15
+ * This is primarily used for testing.
16
+ */
17
+ export const fromPlugins = (plugins: Plugin.Plugin[]) =>
18
+ Layer.effect(
19
+ Plugin.Service,
20
+ Effect.gen(function* () {
21
+ // TODO(wittjosiah): Try to dedupe logic between here, createCliApp and useApp.
22
+
23
+ const pluginLoader = (id: string) =>
24
+ Effect.sync(() => {
25
+ const plugin = plugins.find((plugin) => plugin.meta.id === id);
26
+ invariant(plugin, `Plugin not found: ${id}`);
27
+ return plugin;
28
+ });
29
+
30
+ const manager = PluginManager.make({
31
+ pluginLoader,
32
+ plugins,
33
+ core: plugins.map((plugin) => plugin.meta.id),
34
+ });
35
+
36
+ manager.capabilities.contribute({
37
+ interface: Common.Capability.PluginManager,
38
+ implementation: manager,
39
+ module: 'dxos.org/app-framework/plugin-manager',
40
+ });
41
+
42
+ manager.capabilities.contribute({
43
+ interface: Common.Capability.AtomRegistry,
44
+ implementation: manager.registry,
45
+ module: 'dxos.org/app-framework/atom-registry',
46
+ });
47
+
48
+ yield* manager.activate(Common.ActivationEvent.Startup);
49
+
50
+ return manager;
51
+ }),
52
+ );
@@ -7,8 +7,8 @@ import React from 'react';
7
7
 
8
8
  import { withTheme } from '@dxos/react-ui/testing';
9
9
 
10
- import { Capabilities, createSurface } from '../common';
11
- import { contributes } from '../core';
10
+ import * as Common from '../common';
11
+ import { Capability } from '../core';
12
12
  import { Surface } from '../react';
13
13
 
14
14
  import { withPluginManager } from './withPluginManager';
@@ -30,9 +30,9 @@ const meta = {
30
30
  withTheme,
31
31
  withPluginManager({
32
32
  capabilities: [
33
- contributes(
34
- Capabilities.ReactSurface,
35
- createSurface({
33
+ Capability.contributes(
34
+ Common.Capability.ReactSurface,
35
+ Common.createSurface({
36
36
  id: 'test',
37
37
  role: 'main',
38
38
  component: ({ role }) => <span>{JSON.stringify({ role })}</span>,
@@ -3,22 +3,15 @@
3
3
  //
4
4
 
5
5
  import { type Decorator, type StoryContext } from '@storybook/react';
6
+ import * as Effect from 'effect/Effect';
6
7
  import React, { useEffect, useMemo } from 'react';
7
8
 
8
9
  import { raise } from '@dxos/debug';
9
10
  import { useAsyncEffect } from '@dxos/react-hooks';
10
11
  import { type MaybeProvider, getProviderValue } from '@dxos/util';
11
12
 
12
- import { Capabilities, Events } from '../common';
13
- import {
14
- type ActivationEvent,
15
- type AnyCapability,
16
- type PluginContext,
17
- PluginManager,
18
- contributes,
19
- defineModule,
20
- definePlugin,
21
- } from '../core';
13
+ import * as Common from '../common';
14
+ import { type ActivationEvent, Capability, type CapabilityManager, Plugin, PluginManager } from '../core';
22
15
  import { type UseAppOptions, useApp } from '../react';
23
16
 
24
17
  /**
@@ -30,16 +23,16 @@ export const setupPluginManager = ({
30
23
  core = plugins.map(({ meta }) => meta.id),
31
24
  ...options
32
25
  }: UseAppOptions & Pick<WithPluginManagerOptions, 'capabilities'> = {}) => {
33
- const pluginManager = new PluginManager({
26
+ const pluginManager = PluginManager.make({
34
27
  pluginLoader: () => raise(new Error('Not implemented')),
35
- plugins: [StoryPlugin(), ...plugins],
28
+ plugins: [StoryPlugin, ...plugins],
36
29
  core: [StoryPlugin.meta.id, ...core],
37
30
  ...options,
38
31
  });
39
32
 
40
33
  if (capabilities) {
41
- getProviderValue(capabilities, pluginManager.context).forEach((capability) => {
42
- pluginManager.context.contributeCapability({
34
+ getProviderValue(capabilities, pluginManager.capabilities).forEach((capability) => {
35
+ pluginManager.capabilities.contribute({
43
36
  interface: capability.interface,
44
37
  implementation: capability.implementation,
45
38
  module: 'story',
@@ -52,9 +45,9 @@ export const setupPluginManager = ({
52
45
 
53
46
  export type WithPluginManagerOptions = UseAppOptions & {
54
47
  /** @deprecated */
55
- capabilities?: MaybeProvider<AnyCapability[], PluginContext>;
48
+ capabilities?: MaybeProvider<Capability.Any[], CapabilityManager.CapabilityManager>;
56
49
  /** @deprecated */
57
- fireEvents?: (ActivationEvent | string)[];
50
+ fireEvents?: (ActivationEvent.ActivationEvent | string)[];
58
51
  };
59
52
 
60
53
  export type WithPluginManagerInitializer<Args = void> =
@@ -72,18 +65,18 @@ export const withPluginManager = <Args,>(init: WithPluginManagerInitializer<Args
72
65
 
73
66
  // Set-up root capability.
74
67
  useEffect(() => {
75
- const capability = contributes(Capabilities.ReactRoot, {
68
+ const capability = Capability.contributes(Common.Capability.ReactRoot, {
76
69
  id: context.id,
77
70
  root: () => <Story />,
78
71
  });
79
72
 
80
- pluginManager.context.contributeCapability({
73
+ pluginManager.capabilities.contribute({
81
74
  ...capability,
82
75
  module: 'dxos.org/app-framework/withPluginManager',
83
76
  });
84
77
 
85
78
  return () => {
86
- pluginManager.context.removeCapability(capability.interface, capability.implementation);
79
+ pluginManager.capabilities.remove(capability.interface, capability.implementation);
87
80
  };
88
81
  }, [pluginManager, context]);
89
82
 
@@ -106,6 +99,11 @@ const storyMeta = {
106
99
 
107
100
  // No-op plugin to ensure there exists at least one plugin for the startup event.
108
101
  // This is necessary because `createApp` expects the startup event to complete before the app is ready.
109
- const StoryPlugin = definePlugin(storyMeta, () => [
110
- defineModule({ id: storyMeta.id, activatesOn: Events.Startup, activate: () => [] }),
111
- ]);
102
+ const StoryPlugin = Plugin.define(storyMeta).pipe(
103
+ Plugin.addModule({
104
+ id: 'Story',
105
+ activatesOn: Common.ActivationEvent.Startup,
106
+ activate: () => Effect.succeed([]),
107
+ }),
108
+ Plugin.make,
109
+ )();
package/tsconfig.json CHANGED
@@ -15,13 +15,13 @@
15
15
  "path": "../../common/debug"
16
16
  },
17
17
  {
18
- "path": "../../common/invariant"
18
+ "path": "../../common/effect"
19
19
  },
20
20
  {
21
- "path": "../../common/keys"
21
+ "path": "../../common/invariant"
22
22
  },
23
23
  {
24
- "path": "../../common/local-storage"
24
+ "path": "../../common/keys"
25
25
  },
26
26
  {
27
27
  "path": "../../common/log"
@@ -32,9 +32,18 @@
32
32
  {
33
33
  "path": "../../common/storybook-utils"
34
34
  },
35
+ {
36
+ "path": "../../common/test-utils"
37
+ },
35
38
  {
36
39
  "path": "../../common/util"
37
40
  },
41
+ {
42
+ "path": "../../common/web-context"
43
+ },
44
+ {
45
+ "path": "../../common/web-context-react"
46
+ },
38
47
  {
39
48
  "path": "../../core/ai"
40
49
  },
@@ -48,16 +57,16 @@
48
57
  "path": "../../core/echo/echo"
49
58
  },
50
59
  {
51
- "path": "../../core/echo/echo-signals"
60
+ "path": "../../core/echo/echo-db"
52
61
  },
53
62
  {
54
- "path": "../../core/echo/live-object"
63
+ "path": "../../core/functions"
55
64
  },
56
65
  {
57
- "path": "../../core/functions"
66
+ "path": "../../core/operation"
58
67
  },
59
68
  {
60
- "path": "../../ui/primitives/react-hooks"
69
+ "path": "../../ui/react-primitives/react-hooks"
61
70
  },
62
71
  {
63
72
  "path": "../../ui/react-ui"
@@ -66,7 +75,7 @@
66
75
  "path": "../../ui/react-ui-syntax-highlighter"
67
76
  },
68
77
  {
69
- "path": "../../ui/react-ui-theme"
78
+ "path": "../../ui/ui-theme"
70
79
  },
71
80
  {
72
81
  "path": "../app-graph"