@dxos/app-framework 0.8.4-main.5ea62a8 → 0.8.4-main.60689f5b1c

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 (555) hide show
  1. package/.storybook/main.mts +9 -0
  2. package/.storybook/preview.mts +8 -0
  3. package/LICENSE +102 -5
  4. package/README.md +1 -1
  5. package/dist/lib/browser/capability-K5XIVCQU.mjs +35 -0
  6. package/dist/lib/browser/capability-K5XIVCQU.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-5AHASNDW.mjs +95 -0
  8. package/dist/lib/browser/chunk-5AHASNDW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-5GY3YOEL.mjs +28 -0
  10. package/dist/lib/browser/chunk-5GY3YOEL.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-66IXTIVK.mjs +48 -0
  12. package/dist/lib/browser/chunk-66IXTIVK.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-BRK6GYNB.mjs +142 -0
  14. package/dist/lib/browser/chunk-BRK6GYNB.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-FJ4765WW.mjs +8 -0
  16. package/dist/lib/browser/chunk-FJ4765WW.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-FO3IYSLV.mjs +68 -0
  18. package/dist/lib/browser/chunk-FO3IYSLV.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-IW44C7UL.mjs +83 -0
  20. package/dist/lib/browser/chunk-IW44C7UL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  22. package/dist/lib/browser/chunk-KFDF7KR3.mjs +42 -0
  23. package/dist/lib/browser/chunk-KFDF7KR3.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-KLHQNYJ2.mjs +422 -0
  25. package/dist/lib/browser/chunk-KLHQNYJ2.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-QLML5QFJ.mjs +581 -0
  27. package/dist/lib/browser/chunk-QLML5QFJ.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-SLX73WRZ.mjs +218 -0
  29. package/dist/lib/browser/chunk-SLX73WRZ.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-UVTGHZQF.mjs +513 -0
  31. package/dist/lib/browser/chunk-UVTGHZQF.mjs.map +7 -0
  32. package/dist/lib/browser/chunk-VJ5PFAWC.mjs +1446 -0
  33. package/dist/lib/browser/chunk-VJ5PFAWC.mjs.map +7 -0
  34. package/dist/lib/browser/cli/index.mjs +74 -0
  35. package/dist/lib/browser/cli/index.mjs.map +7 -0
  36. package/dist/lib/browser/common/activation-events.mjs +20 -0
  37. package/dist/lib/browser/common/capabilities.mjs +56 -0
  38. package/dist/lib/browser/core/activation-event.mjs +20 -0
  39. package/dist/lib/browser/core/capability.mjs +32 -0
  40. package/dist/lib/browser/core/capability.mjs.map +7 -0
  41. package/dist/lib/browser/core/plugin-manager.mjs +19 -0
  42. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  43. package/dist/lib/browser/core/plugin.mjs +39 -0
  44. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  45. package/dist/lib/browser/core/url-loader.mjs +24 -0
  46. package/dist/lib/browser/core/url-loader.mjs.map +7 -0
  47. package/dist/lib/browser/index.mjs +85 -162
  48. package/dist/lib/browser/index.mjs.map +4 -4
  49. package/dist/lib/browser/meta.json +1 -1
  50. package/dist/lib/browser/process-manager-capability-JIWLN7SU.mjs +89 -0
  51. package/dist/lib/browser/process-manager-capability-JIWLN7SU.mjs.map +7 -0
  52. package/dist/lib/browser/testing/index.mjs +248 -53
  53. package/dist/lib/browser/testing/index.mjs.map +4 -4
  54. package/dist/lib/browser/testing/react.mjs +78 -0
  55. package/dist/lib/browser/testing/react.mjs.map +7 -0
  56. package/dist/lib/browser/ui/index.mjs +54 -0
  57. package/dist/lib/browser/ui/index.mjs.map +7 -0
  58. package/dist/lib/node-esm/capability-RLKFFLTB.mjs +36 -0
  59. package/dist/lib/node-esm/capability-RLKFFLTB.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs +10 -0
  61. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-42UNAKYO.mjs +423 -0
  63. package/dist/lib/node-esm/chunk-42UNAKYO.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-6S45OMUP.mjs +219 -0
  65. package/dist/lib/node-esm/chunk-6S45OMUP.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-BYHYYJZH.mjs +143 -0
  67. package/dist/lib/node-esm/chunk-BYHYYJZH.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-CTKEZHKF.mjs +84 -0
  69. package/dist/lib/node-esm/chunk-CTKEZHKF.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  71. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-JNT72ZCN.mjs +514 -0
  73. package/dist/lib/node-esm/chunk-JNT72ZCN.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs +29 -0
  75. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-LJNUFNDO.mjs +582 -0
  77. package/dist/lib/node-esm/chunk-LJNUFNDO.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-OUEMWPIW.mjs +43 -0
  79. package/dist/lib/node-esm/chunk-OUEMWPIW.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-PW2VYGOS.mjs +96 -0
  81. package/dist/lib/node-esm/chunk-PW2VYGOS.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-SFYCO3PT.mjs +1447 -0
  83. package/dist/lib/node-esm/chunk-SFYCO3PT.mjs.map +7 -0
  84. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs +70 -0
  85. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +7 -0
  86. package/dist/lib/node-esm/chunk-XOCUANHO.mjs +49 -0
  87. package/dist/lib/node-esm/chunk-XOCUANHO.mjs.map +7 -0
  88. package/dist/lib/node-esm/cli/index.mjs +75 -0
  89. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  90. package/dist/lib/node-esm/common/activation-events.mjs +21 -0
  91. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  92. package/dist/lib/node-esm/common/capabilities.mjs +57 -0
  93. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  94. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  95. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  96. package/dist/lib/node-esm/core/capability.mjs +33 -0
  97. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  98. package/dist/lib/node-esm/core/plugin-manager.mjs +20 -0
  99. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  100. package/dist/lib/node-esm/core/plugin.mjs +40 -0
  101. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  102. package/dist/lib/node-esm/core/url-loader.mjs +25 -0
  103. package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
  104. package/dist/lib/node-esm/index.mjs +85 -162
  105. package/dist/lib/node-esm/index.mjs.map +4 -4
  106. package/dist/lib/node-esm/meta.json +1 -1
  107. package/dist/lib/node-esm/process-manager-capability-PHKLO2BL.mjs +90 -0
  108. package/dist/lib/node-esm/process-manager-capability-PHKLO2BL.mjs.map +7 -0
  109. package/dist/lib/node-esm/testing/index.mjs +248 -53
  110. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  111. package/dist/lib/node-esm/testing/react.mjs +79 -0
  112. package/dist/lib/node-esm/testing/react.mjs.map +7 -0
  113. package/dist/lib/node-esm/ui/index.mjs +55 -0
  114. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  115. package/dist/plugin/node-esm/index.mjs +893 -0
  116. package/dist/plugin/node-esm/index.mjs.map +7 -0
  117. package/dist/plugin/node-esm/meta.json +1 -0
  118. package/dist/types/src/cli/cli.d.ts +37 -0
  119. package/dist/types/src/cli/cli.d.ts.map +1 -0
  120. package/dist/types/src/cli/index.d.ts +2 -0
  121. package/dist/types/src/cli/index.d.ts.map +1 -0
  122. package/dist/types/src/common/activation-events.d.ts +24 -0
  123. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  124. package/dist/types/src/common/annotations.d.ts +1 -0
  125. package/dist/types/src/common/annotations.d.ts.map +1 -0
  126. package/dist/types/src/common/capabilities.d.ts +214 -189
  127. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  128. package/dist/types/src/common/index.d.ts +4 -8
  129. package/dist/types/src/common/index.d.ts.map +1 -1
  130. package/dist/types/src/common/operations.d.ts +19 -0
  131. package/dist/types/src/common/operations.d.ts.map +1 -0
  132. package/dist/types/src/common/translations.d.ts +8 -8
  133. package/dist/types/src/common/translations.d.ts.map +1 -1
  134. package/dist/types/src/context.d.ts +5 -0
  135. package/dist/types/src/context.d.ts.map +1 -0
  136. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +11 -11
  137. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  138. package/dist/types/src/core/capability-manager.d.ts +48 -0
  139. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  140. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  141. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  142. package/dist/types/src/core/capability.d.ts +161 -0
  143. package/dist/types/src/core/capability.d.ts.map +1 -0
  144. package/dist/types/src/core/edge-registry-plugin-provider.d.ts +30 -0
  145. package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -0
  146. package/dist/types/src/core/index.d.ts +11 -4
  147. package/dist/types/src/core/index.d.ts.map +1 -1
  148. package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
  149. package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
  150. package/dist/types/src/core/plugin-manager.d.ts +297 -0
  151. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  152. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  153. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  154. package/dist/types/src/core/plugin-manifest.d.ts +101 -0
  155. package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
  156. package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
  157. package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
  158. package/dist/types/src/core/plugin.d.ts +277 -37
  159. package/dist/types/src/core/plugin.d.ts.map +1 -1
  160. package/dist/types/src/core/registry.d.ts +107 -0
  161. package/dist/types/src/core/registry.d.ts.map +1 -0
  162. package/dist/types/src/core/url-loader.d.ts +127 -0
  163. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  164. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  165. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  166. package/dist/types/src/helpers.d.ts.map +1 -1
  167. package/dist/types/src/index.d.ts +2 -4
  168. package/dist/types/src/index.d.ts.map +1 -1
  169. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts +3 -0
  170. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts.map +1 -0
  171. package/dist/types/src/plugin-process-manager/history/capability.d.ts +7 -0
  172. package/dist/types/src/plugin-process-manager/history/capability.d.ts.map +1 -0
  173. package/dist/types/src/plugin-process-manager/history/errors.d.ts +32 -0
  174. package/dist/types/src/plugin-process-manager/history/errors.d.ts.map +1 -0
  175. package/dist/types/src/plugin-process-manager/history/history-tracker.d.ts +18 -0
  176. package/dist/types/src/plugin-process-manager/history/history-tracker.d.ts.map +1 -0
  177. package/dist/types/src/plugin-process-manager/history/history-tracker.test.d.ts +2 -0
  178. package/dist/types/src/plugin-process-manager/history/history-tracker.test.d.ts.map +1 -0
  179. package/dist/types/src/plugin-process-manager/history/index.d.ts +6 -0
  180. package/dist/types/src/plugin-process-manager/history/index.d.ts.map +1 -0
  181. package/dist/types/src/plugin-process-manager/history/types.d.ts +13 -0
  182. package/dist/types/src/plugin-process-manager/history/types.d.ts.map +1 -0
  183. package/dist/types/src/plugin-process-manager/history/undo-mapping.d.ts +101 -0
  184. package/dist/types/src/plugin-process-manager/history/undo-mapping.d.ts.map +1 -0
  185. package/dist/types/src/plugin-process-manager/history/undo-registry.d.ts +23 -0
  186. package/dist/types/src/plugin-process-manager/history/undo-registry.d.ts.map +1 -0
  187. package/dist/types/src/plugin-process-manager/history/undo-registry.test.d.ts +2 -0
  188. package/dist/types/src/plugin-process-manager/history/undo-registry.test.d.ts.map +1 -0
  189. package/dist/types/src/plugin-process-manager/index.d.ts +3 -0
  190. package/dist/types/src/plugin-process-manager/index.d.ts.map +1 -0
  191. package/dist/types/src/plugin-process-manager/meta.d.ts +3 -0
  192. package/dist/types/src/plugin-process-manager/meta.d.ts.map +1 -0
  193. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts +8 -0
  194. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts.map +1 -0
  195. package/dist/types/src/plugin-process-manager/testing.d.ts +59 -0
  196. package/dist/types/src/plugin-process-manager/testing.d.ts.map +1 -0
  197. package/dist/types/src/testing/harness.d.ts +79 -0
  198. package/dist/types/src/testing/harness.d.ts.map +1 -0
  199. package/dist/types/src/testing/index.d.ts +2 -0
  200. package/dist/types/src/testing/index.d.ts.map +1 -1
  201. package/dist/types/src/testing/react.d.ts +27 -0
  202. package/dist/types/src/testing/react.d.ts.map +1 -0
  203. package/dist/types/src/testing/react.test.d.ts +2 -0
  204. package/dist/types/src/testing/react.test.d.ts.map +1 -0
  205. package/dist/types/src/testing/service.d.ts +8 -0
  206. package/dist/types/src/testing/service.d.ts.map +1 -0
  207. package/dist/types/src/testing/withPluginManager.d.ts +9 -10
  208. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  209. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  210. package/dist/types/src/ui/components/App/App.d.ts +9 -0
  211. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  212. package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
  213. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  214. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  215. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  216. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts +64 -0
  217. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts.map +1 -0
  218. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts +19 -0
  219. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts.map +1 -0
  220. package/dist/types/src/ui/components/Placeholder/index.d.ts +2 -0
  221. package/dist/types/src/ui/components/Placeholder/index.d.ts.map +1 -0
  222. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts +13 -0
  223. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  224. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
  225. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  226. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  227. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  228. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +24 -0
  229. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  230. package/dist/types/src/{playground/playground.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +5 -3
  231. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  232. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
  233. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  234. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  235. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  236. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  237. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  238. package/dist/types/src/ui/components/Surface/index.d.ts +36 -0
  239. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  240. package/dist/types/src/ui/components/Surface/types.d.ts +197 -0
  241. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  242. package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
  243. package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
  244. package/dist/types/src/ui/components/index.d.ts +5 -0
  245. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  246. package/dist/types/src/ui/hooks/index.d.ts +7 -0
  247. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  248. package/dist/types/src/ui/hooks/useApp.d.ts +86 -0
  249. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  250. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  251. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  252. package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
  253. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  254. package/dist/types/src/ui/hooks/useLoading.d.ts +18 -0
  255. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  256. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts +24 -0
  257. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts.map +1 -0
  258. package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
  259. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  260. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  261. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  262. package/dist/types/src/ui/index.d.ts +3 -0
  263. package/dist/types/src/ui/index.d.ts.map +1 -0
  264. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts +34 -0
  265. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts.map +1 -0
  266. package/dist/types/src/vite-plugin/boot-loader/index.d.ts +2 -0
  267. package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -0
  268. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts +51 -0
  269. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts.map +1 -0
  270. package/dist/types/src/vite-plugin/composer/index.d.ts +34 -0
  271. package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -0
  272. package/dist/types/src/vite-plugin/import-map/index.d.ts +28 -0
  273. package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -0
  274. package/dist/types/src/vite-plugin/index.d.ts +5 -0
  275. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  276. package/dist/types/src/vite-plugin/manifest.d.ts +41 -0
  277. package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
  278. package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
  279. package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
  280. package/dist/types/src/vite-plugin/packages.d.ts +13 -0
  281. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  282. package/dist/types/tsconfig.tsbuildinfo +1 -1
  283. package/moon.yml +26 -3
  284. package/package.json +119 -55
  285. package/src/cli/cli.ts +102 -0
  286. package/src/{playground/layout → cli}/index.ts +1 -1
  287. package/src/common/activation-events.ts +39 -0
  288. package/src/{playground/debug/index.ts → common/annotations.ts} +0 -2
  289. package/src/common/capabilities.ts +287 -177
  290. package/src/common/index.ts +4 -8
  291. package/src/common/operations.ts +35 -0
  292. package/src/common/translations.ts +18 -10
  293. package/src/context.ts +9 -0
  294. package/src/core/{events.ts → activation-event.ts} +10 -7
  295. package/src/core/capability-manager.test.ts +151 -0
  296. package/src/core/capability-manager.ts +192 -0
  297. package/src/core/capability.ts +254 -0
  298. package/src/core/edge-registry-plugin-provider.ts +92 -0
  299. package/src/core/index.ts +11 -4
  300. package/src/core/plugin-asset-cache.ts +60 -0
  301. package/src/core/plugin-manager.test.ts +1899 -0
  302. package/src/core/plugin-manager.ts +1687 -0
  303. package/src/core/plugin-manifest.test.ts +75 -0
  304. package/src/core/plugin-manifest.ts +134 -0
  305. package/src/core/plugin.ts +419 -43
  306. package/src/core/registry.ts +163 -0
  307. package/src/core/url-loader.test.ts +221 -0
  308. package/src/core/url-loader.ts +388 -0
  309. package/src/index.ts +2 -4
  310. package/src/plugin-process-manager/ProcessManagerPlugin.ts +24 -0
  311. package/src/plugin-process-manager/history/capability.ts +36 -0
  312. package/src/plugin-process-manager/history/errors.ts +7 -0
  313. package/src/plugin-process-manager/history/history-tracker.test.ts +374 -0
  314. package/src/plugin-process-manager/history/history-tracker.ts +128 -0
  315. package/src/plugin-process-manager/history/index.ts +9 -0
  316. package/src/plugin-process-manager/history/types.ts +17 -0
  317. package/src/plugin-process-manager/history/undo-mapping.ts +135 -0
  318. package/src/plugin-process-manager/history/undo-registry.test.ts +72 -0
  319. package/src/plugin-process-manager/history/undo-registry.ts +54 -0
  320. package/src/plugin-process-manager/index.ts +6 -0
  321. package/src/plugin-process-manager/meta.ts +14 -0
  322. package/src/plugin-process-manager/process-manager-capability.ts +178 -0
  323. package/src/plugin-process-manager/testing.ts +155 -0
  324. package/src/testing/harness.ts +247 -0
  325. package/src/testing/index.ts +2 -0
  326. package/src/testing/react.test.tsx +48 -0
  327. package/src/testing/react.tsx +113 -0
  328. package/src/testing/service.ts +52 -0
  329. package/src/testing/withPluginManager.stories.tsx +9 -10
  330. package/src/testing/withPluginManager.tsx +80 -53
  331. package/src/ui/components/App/App.stories.tsx +86 -0
  332. package/src/ui/components/App/App.tsx +81 -0
  333. package/src/{playground/logger → ui/components/App}/index.ts +1 -1
  334. package/src/ui/components/Placeholder/Placeholder.stories.tsx +77 -0
  335. package/src/ui/components/Placeholder/Placeholder.tsx +155 -0
  336. package/src/ui/components/Placeholder/index.ts +5 -0
  337. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +184 -0
  338. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
  339. package/src/ui/components/PluginManager/index.ts +5 -0
  340. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +144 -0
  341. package/src/ui/components/Surface/SurfaceComponent.tsx +303 -0
  342. package/src/ui/components/Surface/SurfaceInfo.tsx +106 -0
  343. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  344. package/src/ui/components/Surface/context.ts +12 -0
  345. package/src/ui/components/Surface/index.ts +54 -0
  346. package/src/ui/components/Surface/types.test.ts +126 -0
  347. package/src/ui/components/Surface/types.ts +269 -0
  348. package/src/ui/components/index.ts +8 -0
  349. package/src/ui/hooks/index.ts +10 -0
  350. package/src/ui/hooks/useApp.test.tsx +159 -0
  351. package/src/ui/hooks/useApp.tsx +418 -0
  352. package/src/ui/hooks/useCapabilities.ts +67 -0
  353. package/src/ui/hooks/useLoading.tsx +76 -0
  354. package/src/ui/hooks/useProcessManagerRuntime.ts +68 -0
  355. package/src/ui/hooks/useSettingsState.ts +26 -0
  356. package/src/ui/hooks/useSurface.ts +13 -0
  357. package/src/ui/index.ts +6 -0
  358. package/src/vite-plugin/boot-loader/BootLoader.stories.tsx +270 -0
  359. package/src/vite-plugin/boot-loader/boot-loader.css +320 -0
  360. package/src/vite-plugin/boot-loader/boot-loader.js +325 -0
  361. package/src/vite-plugin/boot-loader/index.ts +5 -0
  362. package/src/vite-plugin/boot-loader/loader.ts +123 -0
  363. package/src/vite-plugin/composer/index.ts +306 -0
  364. package/src/vite-plugin/import-map/index.ts +527 -0
  365. package/src/vite-plugin/index.ts +10 -0
  366. package/src/vite-plugin/manifest.test.ts +46 -0
  367. package/src/vite-plugin/manifest.ts +57 -0
  368. package/src/vite-plugin/packages.ts +187 -0
  369. package/tsconfig.json +31 -23
  370. package/tsconfig.node.json +2 -4
  371. package/typedoc.json +2 -4
  372. package/vitest.config.ts +8 -6
  373. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  374. package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
  375. package/dist/lib/browser/app-graph-builder-AFFC6VB2.mjs +0 -137
  376. package/dist/lib/browser/app-graph-builder-AFFC6VB2.mjs.map +0 -7
  377. package/dist/lib/browser/chunk-DND4XMN4.mjs +0 -441
  378. package/dist/lib/browser/chunk-DND4XMN4.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-ORWHM7CO.mjs +0 -32
  380. package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
  381. package/dist/lib/browser/chunk-OZY7HV2A.mjs +0 -1643
  382. package/dist/lib/browser/chunk-OZY7HV2A.mjs.map +0 -7
  383. package/dist/lib/browser/intent-dispatcher-QG7UPGQX.mjs +0 -11
  384. package/dist/lib/browser/intent-resolver-4S4PSTM5.mjs +0 -39
  385. package/dist/lib/browser/intent-resolver-4S4PSTM5.mjs.map +0 -7
  386. package/dist/lib/browser/store-6E33KLGK.mjs +0 -30
  387. package/dist/lib/browser/store-6E33KLGK.mjs.map +0 -7
  388. package/dist/lib/browser/worker.mjs +0 -85
  389. package/dist/lib/node-esm/app-graph-builder-S4OAULX5.mjs +0 -138
  390. package/dist/lib/node-esm/app-graph-builder-S4OAULX5.mjs.map +0 -7
  391. package/dist/lib/node-esm/chunk-E2TK7Z4P.mjs +0 -442
  392. package/dist/lib/node-esm/chunk-E2TK7Z4P.mjs.map +0 -7
  393. package/dist/lib/node-esm/chunk-F63ZRXMK.mjs +0 -1645
  394. package/dist/lib/node-esm/chunk-F63ZRXMK.mjs.map +0 -7
  395. package/dist/lib/node-esm/chunk-UMZQERLE.mjs +0 -34
  396. package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
  397. package/dist/lib/node-esm/intent-dispatcher-NXBGPJOX.mjs +0 -12
  398. package/dist/lib/node-esm/intent-resolver-2ZKXI5ET.mjs +0 -40
  399. package/dist/lib/node-esm/intent-resolver-2ZKXI5ET.mjs.map +0 -7
  400. package/dist/lib/node-esm/store-QQUTQHHT.mjs +0 -31
  401. package/dist/lib/node-esm/store-QQUTQHHT.mjs.map +0 -7
  402. package/dist/lib/node-esm/worker.mjs +0 -86
  403. package/dist/types/src/App.d.ts +0 -43
  404. package/dist/types/src/App.d.ts.map +0 -1
  405. package/dist/types/src/common/collaboration.d.ts +0 -20
  406. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  407. package/dist/types/src/common/events.d.ts +0 -52
  408. package/dist/types/src/common/events.d.ts.map +0 -1
  409. package/dist/types/src/common/file.d.ts +0 -14
  410. package/dist/types/src/common/file.d.ts.map +0 -1
  411. package/dist/types/src/common/graph.d.ts +0 -21
  412. package/dist/types/src/common/graph.d.ts.map +0 -1
  413. package/dist/types/src/common/layout.d.ts +0 -281
  414. package/dist/types/src/common/layout.d.ts.map +0 -1
  415. package/dist/types/src/common/surface.d.ts +0 -65
  416. package/dist/types/src/common/surface.d.ts.map +0 -1
  417. package/dist/types/src/core/capabilities.d.ts +0 -117
  418. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  419. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  420. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  421. package/dist/types/src/core/events.d.ts.map +0 -1
  422. package/dist/types/src/core/manager.d.ts +0 -126
  423. package/dist/types/src/core/manager.d.ts.map +0 -1
  424. package/dist/types/src/core/manager.test.d.ts +0 -2
  425. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  426. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  427. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  428. package/dist/types/src/playground/debug/index.d.ts +0 -2
  429. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  430. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  431. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  432. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  433. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  434. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  435. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  436. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  437. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  438. package/dist/types/src/playground/generator/index.d.ts +0 -3
  439. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  440. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  441. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  442. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  443. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  444. package/dist/types/src/playground/layout/index.d.ts +0 -2
  445. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  446. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  447. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  448. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  449. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  450. package/dist/types/src/playground/logger/index.d.ts +0 -2
  451. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  452. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  453. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  454. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  455. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  456. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  457. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  458. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  459. package/dist/types/src/plugin-intent/actions.d.ts +0 -38
  460. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  461. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  462. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  463. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  464. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  465. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  466. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  467. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  468. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  469. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  470. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  471. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
  472. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  473. package/dist/types/src/plugin-settings/actions.d.ts +0 -27
  474. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  475. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
  476. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  477. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  478. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  479. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  480. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  481. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  482. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  483. package/dist/types/src/plugin-settings/translations.d.ts +0 -10
  484. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  485. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  486. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  487. package/dist/types/src/react/IntentContext.d.ts +0 -8
  488. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  489. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  490. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  491. package/dist/types/src/react/Surface.d.ts +0 -12
  492. package/dist/types/src/react/Surface.d.ts.map +0 -1
  493. package/dist/types/src/react/Surface.stories.d.ts +0 -18
  494. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  495. package/dist/types/src/react/common.d.ts +0 -13
  496. package/dist/types/src/react/common.d.ts.map +0 -1
  497. package/dist/types/src/react/index.d.ts +0 -7
  498. package/dist/types/src/react/index.d.ts.map +0 -1
  499. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  500. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  501. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  502. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  503. package/dist/types/src/worker.d.ts +0 -4
  504. package/dist/types/src/worker.d.ts.map +0 -1
  505. package/src/App.tsx +0 -280
  506. package/src/common/collaboration.ts +0 -18
  507. package/src/common/events.ts +0 -79
  508. package/src/common/file.ts +0 -22
  509. package/src/common/graph.ts +0 -30
  510. package/src/common/layout.ts +0 -278
  511. package/src/common/surface.ts +0 -86
  512. package/src/core/capabilities.test.ts +0 -136
  513. package/src/core/capabilities.ts +0 -259
  514. package/src/core/manager.test.ts +0 -516
  515. package/src/core/manager.ts +0 -597
  516. package/src/playground/debug/Debug.tsx +0 -39
  517. package/src/playground/debug/plugin.ts +0 -17
  518. package/src/playground/generator/Main.tsx +0 -71
  519. package/src/playground/generator/Toolbar.tsx +0 -47
  520. package/src/playground/generator/generator.ts +0 -48
  521. package/src/playground/generator/index.ts +0 -6
  522. package/src/playground/generator/plugin.ts +0 -23
  523. package/src/playground/layout/Layout.tsx +0 -33
  524. package/src/playground/layout/plugin.ts +0 -17
  525. package/src/playground/logger/Toolbar.tsx +0 -30
  526. package/src/playground/logger/plugin.ts +0 -37
  527. package/src/playground/logger/schema.ts +0 -12
  528. package/src/playground/playground.stories.tsx +0 -47
  529. package/src/plugin-intent/IntentPlugin.ts +0 -21
  530. package/src/plugin-intent/actions.ts +0 -33
  531. package/src/plugin-intent/errors.ts +0 -39
  532. package/src/plugin-intent/index.ts +0 -9
  533. package/src/plugin-intent/intent-dispatcher.test.ts +0 -279
  534. package/src/plugin-intent/intent-dispatcher.ts +0 -335
  535. package/src/plugin-intent/intent.ts +0 -154
  536. package/src/plugin-settings/SettingsPlugin.ts +0 -36
  537. package/src/plugin-settings/actions.ts +0 -29
  538. package/src/plugin-settings/app-graph-builder.ts +0 -158
  539. package/src/plugin-settings/index.ts +0 -6
  540. package/src/plugin-settings/intent-resolver.ts +0 -35
  541. package/src/plugin-settings/store.ts +0 -33
  542. package/src/plugin-settings/translations.ts +0 -19
  543. package/src/react/ErrorBoundary.tsx +0 -54
  544. package/src/react/IntentContext.tsx +0 -35
  545. package/src/react/Surface.stories.tsx +0 -104
  546. package/src/react/Surface.tsx +0 -78
  547. package/src/react/common.ts +0 -13
  548. package/src/react/index.ts +0 -10
  549. package/src/react/useCapabilities.ts +0 -31
  550. package/src/react/useIntentResolver.ts +0 -22
  551. package/src/worker.ts +0 -11
  552. /package/dist/lib/browser/{intent-dispatcher-QG7UPGQX.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  553. /package/dist/lib/browser/{worker.mjs.map → common/activation-events.mjs.map} +0 -0
  554. /package/dist/lib/{node-esm/intent-dispatcher-NXBGPJOX.mjs.map → browser/common/capabilities.mjs.map} +0 -0
  555. /package/dist/lib/{node-esm/worker.mjs.map → browser/core/activation-event.mjs.map} +0 -0
@@ -2,198 +2,308 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type AiTool, type AiToolkit } from '@effect/ai';
6
- import { type Registry } from '@effect-rx/rx-react';
7
- import { type Layer, type Schema } from 'effect';
8
- import { type FC, type PropsWithChildren } from 'react';
9
-
10
- import { type BuilderExtensions, type GraphBuilder } from '@dxos/app-graph';
11
- import { type Blueprint } from '@dxos/blueprints';
12
- import { type Space } from '@dxos/client-protocol';
13
- import { type FunctionDefinition } from '@dxos/functions';
14
- import { type RootSettingsStore } from '@dxos/local-storage';
15
- import { type AnchoredTo } from '@dxos/schema';
16
-
17
- import { type PluginManager, defineCapability } from '../core';
18
- import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
19
-
20
- import { type FileInfo } from './file';
21
- import { type NodeSerializer } from './graph';
22
- import { type SurfaceDefinition } from './surface';
23
- import { type Resource } from './translations';
24
-
25
- // TODO(burdon): Sort.
26
- export namespace Capabilities {
5
+ import { type Atom, type Registry } from '@effect-atom/atom-react';
6
+ import type * as Command$ from '@effect/cli/Command';
7
+ import * as Effect from 'effect/Effect';
8
+ import type * as Exit$ from 'effect/Exit';
9
+ import type * as Fiber$ from 'effect/Fiber';
10
+ import type * as Layer$ from 'effect/Layer';
11
+ import type * as ManagedRuntime$ from 'effect/ManagedRuntime';
12
+ import type * as Runtime$ from 'effect/Runtime';
13
+ import type { FC, PropsWithChildren } from 'react';
14
+
15
+ import type {
16
+ LayerSpec as LayerSpec$,
17
+ Operation as Operation$,
18
+ OperationHandlerSet,
19
+ Process as Process$,
20
+ ServiceResolver as ServiceResolver$,
21
+ Trace as Trace$,
22
+ } from '@dxos/compute';
23
+ import type { ProcessManager as ProcessManager$ } from '@dxos/compute-runtime';
24
+ import { OperationInvoker as OperationInvoker$ } from '@dxos/operation';
25
+
26
+ import { Capability as Capability$, Plugin as Plugin$, type PluginManager as PluginManager$ } from '../core';
27
+ import type {
28
+ HistoryTracker as HistoryTracker$,
29
+ UndoMapping as UndoMapping$,
30
+ UndoRegistry as UndoRegistry$,
31
+ } from '../plugin-process-manager';
32
+ import type { Surface } from '../ui';
33
+
34
+ /**
35
+ * Null capability.
36
+ * @category Capability
37
+ */
38
+ export const Null = Capability$.make<null>('org.dxos.app-framework.capability.null');
39
+
40
+ /**
41
+ * @category Capability
42
+ */
43
+ export const PluginManager = Capability$.make<PluginManager$.PluginManager>(
44
+ 'org.dxos.app-framework.capability.plugin-manager',
45
+ );
46
+
47
+ /**
48
+ * @category Capability
49
+ */
50
+ export const AtomRegistry = Capability$.make<Registry.Registry>('org.dxos.app-framework.capability.atom-registry');
51
+
52
+ export type ReactContext = Readonly<{
53
+ id: string;
54
+ dependsOn?: string[];
55
+ context: FC<PropsWithChildren>;
56
+ }>;
57
+
58
+ /**
59
+ * @category Capability
60
+ */
61
+ export const ReactContext = Capability$.make<ReactContext>('org.dxos.app-framework.capability.react-context');
62
+
63
+ export type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;
64
+
65
+ /**
66
+ * @category Capability
67
+ */
68
+ export const ReactRoot = Capability$.make<ReactRoot>('org.dxos.app-framework.capability.react-root');
69
+
70
+ /**
71
+ * Surface definitions that can be either React components or Web Components.
72
+ */
73
+ export type ReactSurface = Surface.Definition | readonly Surface.Definition[];
74
+
75
+ /**
76
+ * @category Capability
77
+ */
78
+ export const ReactSurface = Capability$.make<ReactSurface>('org.dxos.app-framework.common.react-surface');
79
+
80
+ export type AnyCommand = Command$.Command<any, any, any, any>;
81
+
82
+ /**
83
+ * @category Capability
84
+ */
85
+ export const Command = Capability$.make<AnyCommand>('org.dxos.app-framework.capability.command');
86
+
87
+ /**
88
+ * @category Capability
89
+ */
90
+ export const Layer = Capability$.make<Layer$.Layer<any, any, any>>('org.dxos.app-framework.capability.layer');
91
+
92
+ /**
93
+ * Layer specification contributed by plugins.
94
+ *
95
+ * Plugins contribute {@link LayerSpec.LayerSpec} entries that are collected by the
96
+ * process-manager module and composed into a {@link LayerStack} which backs the
97
+ * {@link ProcessManagerRuntime}'s service resolver.
98
+ *
99
+ * @category Capability
100
+ */
101
+ export const LayerSpec = Capability$.make<LayerSpec$.LayerSpec>('org.dxos.app-framework.capability.layer-spec');
102
+
103
+ /**
104
+ * Context passed to {@link TraceSinkFactory} implementations when the
105
+ * process-manager capability materialises contributed sinks.
106
+ */
107
+ export interface TraceSinkFactoryContext {
27
108
  /**
28
- * @category Capability
109
+ * Service resolver backing the shared {@link ProcessManagerRuntime}. Use it
110
+ * to resolve per-space (or per-process) services like `FeedTraceSink` when
111
+ * building a routing sink.
29
112
  */
30
- export const Null = defineCapability<null>('dxos.org/app-framework/capability/null');
31
-
32
- /**
33
- * @category Capability
34
- */
35
- export const PluginManager = defineCapability<PluginManager>('dxos.org/app-framework/capability/plugin-manager');
36
-
37
- /**
38
- * @category Capability
39
- */
40
- export const RxRegistry = defineCapability<Registry.Registry>('dxos.org/app-framework/capability/rx-registry');
41
-
42
- export type ReactContext = Readonly<{ id: string; dependsOn?: string[]; context: FC<PropsWithChildren> }>;
43
-
44
- /**
45
- * @category Capability
46
- */
47
- export const ReactContext = defineCapability<ReactContext>('dxos.org/app-framework/capability/react-context');
48
-
49
- export type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;
50
-
51
- /**
52
- * @category Capability
53
- */
54
- export const ReactRoot = defineCapability<ReactRoot>('dxos.org/app-framework/capability/react-root');
55
-
56
- export type ReactSurface = SurfaceDefinition | readonly SurfaceDefinition[];
57
-
58
- /**
59
- * @category Capability
60
- */
61
- export const ReactSurface = defineCapability<ReactSurface>('dxos.org/app-framework/common/react-surface');
62
-
63
- export type IntentResolver = AnyIntentResolver | readonly AnyIntentResolver[];
64
-
65
- /**
66
- * @category Capability
67
- */
68
- export const IntentResolver = defineCapability<IntentResolver>('dxos.org/app-framework/capability/intent-resolver');
69
-
70
- /**
71
- * @category Capability
72
- */
73
- export const IntentDispatcher = defineCapability<IntentContext>(
74
- 'dxos.org/app-framework/capability/intent-dispatcher',
75
- );
76
-
77
- export type Layout = Readonly<{
78
- mode: string;
79
- dialogOpen: boolean;
80
- sidebarOpen: boolean;
81
- complementarySidebarOpen: boolean;
82
- /**
83
- * The id of the active workspace, where a workspace is a set of active items.
84
- */
85
- workspace: string;
86
- /**
87
- * Identifiers of items which are currently active in the application.
88
- */
89
- active: string[];
90
- /**
91
- * Identifiers of items which were previously active in the application.
92
- */
93
- inactive: string[];
94
- /**
95
- * Identifier of the item which should be scrolled into view.
96
- */
97
- scrollIntoView: string | undefined;
98
- }>;
99
-
100
- /**
101
- * @category Capability
102
- */
103
- export const Layout = defineCapability<Layout>('dxos.org/app-framework/capability/layout');
104
-
105
- /**
106
- * @category Capability
107
- */
108
- export const Translations = defineCapability<Readonly<Resource[]>>('dxos.org/app-framework/capability/translations');
113
+ readonly resolver: ServiceResolver$.ServiceResolver;
114
+ }
109
115
 
110
- /**
111
- * @category Capability
112
- */
113
- export const AppGraph = defineCapability<Readonly<Pick<GraphBuilder, 'graph' | 'explore'>>>(
114
- 'dxos.org/app-framework/capability/app-graph',
115
- );
116
+ /**
117
+ * Factory that builds a {@link Trace$.Sink} when the process-manager
118
+ * capability is ready. Plugins that only need a static sink can ignore the
119
+ * context (e.g. `() => myConsoleSink`); plugins that need per-space routing
120
+ * can use {@link TraceSinkFactoryContext.resolver} to look up services.
121
+ */
122
+ export type TraceSinkFactory = (ctx: TraceSinkFactoryContext) => Trace$.Sink;
123
+
124
+ /**
125
+ * Trace sink contribution.
126
+ *
127
+ * Plugins contribute {@link TraceSinkFactory} functions; the process-manager
128
+ * capability invokes each factory with the runtime's
129
+ * {@link ServiceResolver$.ServiceResolver}, collects the resulting
130
+ * {@link Trace$.Sink}s, merges them via {@link Trace$.mergeSinks}, and
131
+ * installs the merged sink as {@link Trace$.TraceSink} in the runtime layer
132
+ * so every process writes to every contributed sink.
133
+ *
134
+ * @category Capability
135
+ */
136
+ export const TraceSink = Capability$.make<TraceSinkFactory>('org.dxos.app-framework.capability.trace-sink');
137
+
138
+ /**
139
+ * Service resolver backing the shared {@link ProcessManagerRuntime}.
140
+ *
141
+ * Contributed by the process-manager capability module. Consumers can combine
142
+ * it with {@link ServiceResolver$.provide} to build space-scoped layers without
143
+ * having to go through the process-manager runtime:
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const resolver = yield* Capability.get(Capabilities.ServiceResolver);
148
+ * yield* effect.pipe(
149
+ * Effect.provide(
150
+ * ServiceResolver.provide({ space }, Database.Service, QueueService).pipe(
151
+ * Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, resolver)),
152
+ * ),
153
+ * ),
154
+ * );
155
+ * ```
156
+ *
157
+ * @category Capability
158
+ */
159
+ export const ServiceResolver = Capability$.make<ServiceResolver$.ServiceResolver>(
160
+ 'org.dxos.app-framework.capability.service-resolver',
161
+ );
162
+
163
+ /**
164
+ * Process monitor backing the shared {@link ProcessManagerRuntime}. Exposes the
165
+ * live process tree (including inactive/terminated entries) via
166
+ * {@link Process$.Monitor#processTreeAtom}.
167
+ *
168
+ * @category Capability
169
+ */
170
+ export const ProcessMonitor = Capability$.make<Process$.Monitor>('org.dxos.app-framework.capability.process-monitor');
171
+
172
+ /**
173
+ * Services that are always available when running effects through a {@link ProcessManagerRuntime}.
174
+ */
175
+ export type ProcessManagerRuntimeServices =
176
+ | Capability$.Service
177
+ | Plugin$.Service
178
+ | ProcessManager$.ProcessManagerService
179
+ | Operation$.Service
180
+ | ProcessManager$.ProcessOperationInvoker.Service
181
+ | ServiceResolver$.ServiceResolver;
182
+
183
+ /**
184
+ * Runtime that runs effects requiring a fixed set of capability-manager and
185
+ * process-manager services.
186
+ *
187
+ * The shape mirrors {@link ManagedRuntime$.ManagedRuntime} but deliberately does
188
+ * not expose `dispose` – lifecycle is driven by the host plugin manager.
189
+ */
190
+ export interface ProcessManagerRuntime {
191
+ runPromise<A, E>(
192
+ effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>,
193
+ options?: { readonly signal?: AbortSignal },
194
+ ): Promise<A>;
195
+ runPromiseExit<A, E>(
196
+ effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>,
197
+ options?: { readonly signal?: AbortSignal },
198
+ ): Promise<Exit$.Exit<A, E>>;
199
+ runFork<A, E>(
200
+ effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>,
201
+ options?: Runtime$.RunForkOptions,
202
+ ): Fiber$.RuntimeFiber<A, E>;
203
+ runSync<A, E>(effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>): A;
204
+ }
116
205
 
117
- /**
118
- * @category Capability
119
- */
120
- export const AppGraphBuilder = defineCapability<BuilderExtensions>(
121
- 'dxos.org/app-framework/capability/app-graph-builder',
122
- );
206
+ /**
207
+ * @category Capability
208
+ */
209
+ export const ProcessManagerRuntime = Capability$.make<ProcessManagerRuntime>(
210
+ 'org.dxos.app-framework.capability.process-manager-runtime',
211
+ );
123
212
 
124
- /**
125
- * @category Capability
126
- */
127
- export const AppGraphSerializer = defineCapability<NodeSerializer[]>(
128
- 'dxos.org/app-framework/capability/app-graph-serializer',
129
- );
213
+ export type ManagedRuntime = ManagedRuntime$.ManagedRuntime<any, any>;
130
214
 
131
- /**
132
- * @category Capability
133
- */
134
- export const SettingsStore = defineCapability<RootSettingsStore>('dxos.org/app-framework/capability/settings-store');
215
+ /**
216
+ * @category Capability
217
+ */
218
+ export const ManagedRuntime = Capability$.make<ManagedRuntime>('org.dxos.app-framework.capability.managed-runtime');
135
219
 
136
- // TODO(wittjosiah): The generics caused type inference issues for schemas when contributing settings.
137
- // export type Settings = Parameters<RootSettingsStore['createStore']>[0];
138
- // export type Settings<T extends SettingsValue = SettingsValue> = SettingsProps<T>;
139
- export type Settings = {
140
- prefix: string;
141
- schema: Schema.Schema.All;
142
- value?: Record<string, any>;
143
- };
220
+ //
221
+ // Operation System Capabilities
222
+ //
144
223
 
145
- /**
146
- * @category Capability
147
- */
148
- export const Settings = defineCapability<Settings>('dxos.org/app-framework/capability/settings');
224
+ export const OperationHandler = Capability$.make<OperationHandlerSet.OperationHandlerSet>(
225
+ 'org.dxos.app-framework.capability.operation-handler',
226
+ );
149
227
 
150
- export type Metadata = Readonly<{ id: string; metadata: Record<string, any> }>;
228
+ export type UndoMapping = UndoMapping$.UndoMapping;
151
229
 
152
- /**
153
- * @category Capability
154
- */
155
- export const Metadata = defineCapability<Metadata>('dxos.org/app-framework/capability/metadata');
230
+ /**
231
+ * Undo mapping registration - contributed by plugins.
232
+ * @category Capability
233
+ */
234
+ export const UndoMapping = Capability$.make<UndoMapping[]>('org.dxos.app-framework.capability.undo-mapping');
156
235
 
157
- /**
158
- * @category Capability
159
- */
160
- export const Toolkit = defineCapability<AiToolkit.Any>('dxos.org/app-framework/capability/ai-toolkit');
236
+ /**
237
+ * Operation invoker backed by the process manager. Spawns a process per
238
+ * operation invocation; see {@link ProcessManager$.ProcessOperationInvoker}.
239
+ */
240
+ export type OperationInvoker = OperationInvoker$.OperationInvoker;
161
241
 
162
- /**
163
- * @category Capability
164
- */
165
- export const ToolkitHandler = defineCapability<Layer.Layer<AiTool.ToHandler<AiTool.AiTool<any>>, never, never>>(
166
- 'dxos.org/app-framework/capability/ai-toolkit-handler',
167
- );
242
+ /**
243
+ * Operation invoker - provided by the process-manager capability.
244
+ * @category Capability
245
+ */
246
+ export const OperationInvoker = Capability$.make<OperationInvoker>(
247
+ 'org.dxos.app-framework.capability.operation-invoker',
248
+ );
168
249
 
169
- /**
170
- * @category Capability
171
- */
172
- export const BlueprintDefinition = defineCapability<Blueprint.Blueprint>(
173
- 'dxos.org/app-framework/capability/blueprint-definition',
174
- );
250
+ export type UndoRegistry = UndoRegistry$.UndoRegistry;
175
251
 
176
- /**
177
- * @category Capability
178
- */
179
- export const Functions = defineCapability<FunctionDefinition<any, any>[]>(
180
- 'dxos.org/app-framework/capability/functions',
181
- );
252
+ /**
253
+ * Undo registry - provided by ProcessManagerPlugin.
254
+ * @category Capability
255
+ */
256
+ export const UndoRegistry = Capability$.make<UndoRegistry>('org.dxos.app-framework.capability.undo-registry');
182
257
 
183
- export type FileUploader = (file: File, space: Space) => Promise<FileInfo | undefined>;
258
+ export type HistoryTracker = HistoryTracker$.HistoryTracker;
184
259
 
185
- /**
186
- * @category Capability
187
- */
188
- export const FileUploader = defineCapability<FileUploader>('dxos.org/app-framework/capability/file-uploader');
260
+ /**
261
+ * History tracker - provided by ProcessManagerPlugin.
262
+ * @category Capability
263
+ */
264
+ export const HistoryTracker = Capability$.make<HistoryTracker>('org.dxos.app-framework.capability.history-tracker');
189
265
 
190
- type AnchorSort = {
191
- key: string;
192
- sort: (anchorA: AnchoredTo, anchorB: AnchoredTo) => number;
193
- };
266
+ //
267
+ // Atom Capability Helpers
268
+ //
194
269
 
195
- /**
196
- * @category Capability
197
- */
198
- export const AnchorSort = defineCapability<AnchorSort>('dxos.org/app-framework/capability/anchor-sort');
199
- }
270
+ /**
271
+ * Get the current value of an atom capability.
272
+ * @example const settings = yield* Capabilities.getAtomValue(ThreadCapabilities.Settings);
273
+ */
274
+ export const getAtomValue = <T>(
275
+ atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,
276
+ ): Effect.Effect<T, Error, Capability$.Service> =>
277
+ Effect.gen(function* () {
278
+ const registry = yield* Capability$.get(AtomRegistry);
279
+ const atom = yield* Capability$.get(atomCapability);
280
+ return registry.get(atom);
281
+ });
282
+
283
+ /**
284
+ * Update an atom capability value (requires writable atom).
285
+ * @example yield* Capabilities.updateAtomValue(ThreadCapabilities.Settings, (s) => ({ ...s, foo: true }));
286
+ */
287
+ export const updateAtomValue = <T>(
288
+ atomCapability: Capability$.InterfaceDef<Atom.Writable<T>>,
289
+ fn: (current: T) => T,
290
+ ): Effect.Effect<void, Error, Capability$.Service> =>
291
+ Effect.gen(function* () {
292
+ const registry = yield* Capability$.get(AtomRegistry);
293
+ const atom = yield* Capability$.get(atomCapability);
294
+ registry.set(atom, fn(registry.get(atom)));
295
+ });
296
+
297
+ /**
298
+ * Subscribe to an atom capability.
299
+ * @example const unsubscribe = yield* Capabilities.subscribeAtom(ThreadCapabilities.Settings, (value) => ...);
300
+ */
301
+ export const subscribeAtom = <T>(
302
+ atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,
303
+ callback: (value: T) => void,
304
+ ): Effect.Effect<() => void, Error, Capability$.Service> =>
305
+ Effect.gen(function* () {
306
+ const registry = yield* Capability$.get(AtomRegistry);
307
+ const atom = yield* Capability$.get(atomCapability);
308
+ return registry.subscribe(atom, () => callback(registry.get(atom)));
309
+ });
@@ -2,11 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export * from './capabilities';
6
- export * from './collaboration';
7
- export * from './events';
8
- export * from './file';
9
- export * from './graph';
10
- export * from './layout';
11
- export * from './surface';
12
- export * from './translations';
5
+ export * as Capabilities from './capabilities';
6
+ export * as ActivationEvents from './activation-events';
7
+ export { UndoOperation } from './operations';
8
+ export { Label } from './translations';
@@ -0,0 +1,35 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { Operation } from '@dxos/compute';
8
+
9
+ import { Capability } from '../core';
10
+ import { Label } from './translations';
11
+
12
+ const UNDO_NAMESPACE = 'org.dxos.app-framework.undo';
13
+
14
+ /**
15
+ * Operations related to undo/history functionality.
16
+ */
17
+ export namespace UndoOperation {
18
+ /**
19
+ * Show an undo toast notification.
20
+ * Fired by HistoryTracker when an undoable operation is tracked.
21
+ */
22
+ export const ShowUndo = Operation.make({
23
+ meta: {
24
+ key: `${UNDO_NAMESPACE}.operation.show-undo`,
25
+ name: 'Show Undo',
26
+ description: 'Show an undo toast notification.',
27
+ },
28
+ executionMode: 'sync',
29
+ services: [Capability.Service],
30
+ input: Schema.Struct({
31
+ message: Schema.optional(Label.annotations({ description: 'The message to display in the undo toast.' })),
32
+ }),
33
+ output: Schema.Void,
34
+ });
35
+ }
@@ -2,16 +2,24 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
6
-
7
- export const ResourceKey = Schema.Union(Schema.String, Schema.Record({ key: Schema.String, value: Schema.Any }));
8
- export type ResourceKey = Schema.Schema.Type<typeof ResourceKey>;
9
-
10
- export const ResourceLanguage = Schema.Record({ key: Schema.String, value: ResourceKey });
11
- export type ResourceLanguage = Schema.Schema.Type<typeof ResourceLanguage>;
5
+ import * as Schema from 'effect/Schema';
12
6
 
13
7
  /**
14
- * A resource is a collection of translations for a language.
8
+ * A Label represents translatable text - either a simple string or a tuple of [key, options].
15
9
  */
16
- export const Resource = Schema.Record({ key: Schema.String, value: ResourceLanguage });
17
- export type Resource = Schema.Schema.Type<typeof Resource>;
10
+ export const Label = Schema.Union(
11
+ Schema.String,
12
+ Schema.mutable(
13
+ Schema.Tuple(
14
+ Schema.String,
15
+ Schema.mutable(
16
+ Schema.Struct({
17
+ ns: Schema.String,
18
+ count: Schema.optional(Schema.Number),
19
+ defaultValue: Schema.optional(Schema.String),
20
+ }),
21
+ ),
22
+ ),
23
+ ),
24
+ );
25
+ export type Label = Schema.Schema.Type<typeof Label>;
package/src/context.ts ADDED
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { createContext } from '@dxos/web-context';
6
+
7
+ import { type PluginManager } from './core';
8
+
9
+ export const PluginManagerContext = createContext<PluginManager.PluginManager>('org.dxos.app-framework.plugin-manager');
@@ -2,11 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { compositeKey } from '@dxos/util';
6
+
5
7
  /**
6
8
  * A unique string identifier representing an event.
7
9
  * This is expected to be a URI, where initial parts are often the id of the plugin whose package defines the event.
8
10
  *
9
- * @example dxos.org/plugin/example/event/ready
11
+ * @example org.dxos.plugin.example.event.ready
10
12
  */
11
13
  export type ActivationEvent = {
12
14
  id: string;
@@ -16,7 +18,7 @@ export type ActivationEvent = {
16
18
  /**
17
19
  * An activation event that can be a single event, or a combination of events.
18
20
  */
19
- export type ActivationEvents =
21
+ export type Events =
20
22
  | ActivationEvent
21
23
  | { type: 'one-of'; events: ActivationEvent[] }
22
24
  | { type: 'all-of'; events: ActivationEvent[] };
@@ -24,14 +26,15 @@ export type ActivationEvents =
24
26
  /**
25
27
  * Helper to define an activation event.
26
28
  */
27
- export const defineEvent = (id: string, specifier?: string) => {
29
+ export const make = (id: string, specifier?: string) => {
28
30
  return { id, specifier } as ActivationEvent;
29
31
  };
30
32
 
31
33
  /**
32
34
  * Helper to create an activation event key.
33
35
  */
34
- export const eventKey = (event: ActivationEvent) => (event.specifier ? `${event.id}:${event.specifier}` : event.id);
36
+ export const eventKey = (event: ActivationEvent) =>
37
+ event.specifier ? compositeKey(event.id, event.specifier) : event.id;
35
38
 
36
39
  /**
37
40
  * Helper to create an activation event that triggers when any of the given events are activated.
@@ -46,16 +49,16 @@ export const allOf = (...events: ActivationEvent[]) => ({ type: 'all-of' as cons
46
49
  /**
47
50
  * Helper to check if an activation event is a one-of event.
48
51
  */
49
- export const isOneOf = (events: ActivationEvents): events is { type: 'one-of'; events: ActivationEvent[] } =>
52
+ export const isOneOf = (events: Events): events is { type: 'one-of'; events: ActivationEvent[] } =>
50
53
  'type' in events && events.type === 'one-of';
51
54
 
52
55
  /**
53
56
  * Helper to check if an activation event is an all-of event.
54
57
  */
55
- export const isAllOf = (events: ActivationEvents): events is { type: 'all-of'; events: ActivationEvent[] } =>
58
+ export const isAllOf = (events: Events): events is { type: 'all-of'; events: ActivationEvent[] } =>
56
59
  'type' in events && events.type === 'all-of';
57
60
 
58
61
  /**
59
62
  * Helper to get the events from an activation event.
60
63
  */
61
- export const getEvents = (events: ActivationEvents) => ('type' in events ? events.events : [events]);
64
+ export const getEvents = (events: Events) => ('type' in events ? events.events : [events]);