@dxos/app-framework 0.8.4-main.ead640a → 0.8.4-main.effb148878

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 (572) hide show
  1. package/.storybook/main.mts +2 -4
  2. package/.storybook/preview.mts +2 -2
  3. package/LICENSE +102 -5
  4. package/README.md +1 -1
  5. package/dist/lib/browser/capability-C4WE22TJ.mjs +35 -0
  6. package/dist/lib/browser/capability-C4WE22TJ.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-2ZIYRDAF.mjs +95 -0
  8. package/dist/lib/browser/chunk-2ZIYRDAF.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-67GCXX5I.mjs +581 -0
  14. package/dist/lib/browser/chunk-67GCXX5I.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-KLHQNYJ2.mjs +422 -0
  23. package/dist/lib/browser/chunk-KLHQNYJ2.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-LPWOVOOB.mjs +142 -0
  25. package/dist/lib/browser/chunk-LPWOVOOB.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-LUQOVTWB.mjs +43 -0
  27. package/dist/lib/browser/chunk-LUQOVTWB.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-SZMB3K2N.mjs +517 -0
  31. package/dist/lib/browser/chunk-SZMB3K2N.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 -148
  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-3Q4TA73T.mjs +89 -0
  51. package/dist/lib/browser/process-manager-capability-3Q4TA73T.mjs.map +7 -0
  52. package/dist/lib/browser/testing/index.mjs +245 -47
  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-GPN6OS6M.mjs +36 -0
  59. package/dist/lib/node-esm/capability-GPN6OS6M.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-CTKEZHKF.mjs +84 -0
  67. package/dist/lib/node-esm/chunk-CTKEZHKF.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-FEVJEUD7.mjs +143 -0
  69. package/dist/lib/node-esm/chunk-FEVJEUD7.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-GBHZF46K.mjs +518 -0
  71. package/dist/lib/node-esm/chunk-GBHZF46K.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-GUE5V5CG.mjs +582 -0
  73. package/dist/lib/node-esm/chunk-GUE5V5CG.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  75. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs +29 -0
  77. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-MXWDXYV2.mjs +44 -0
  79. package/dist/lib/node-esm/chunk-MXWDXYV2.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-QBUGLR4H.mjs +96 -0
  81. package/dist/lib/node-esm/chunk-QBUGLR4H.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 -148
  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-5KCLSNQM.mjs +90 -0
  108. package/dist/lib/node-esm/process-manager-capability-5KCLSNQM.mjs.map +7 -0
  109. package/dist/lib/node-esm/testing/index.mjs +245 -47
  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 -199
  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 +7 -7
  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 +276 -39
  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 +7 -6
  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/{playground/playground.stories.d.ts → ui/components/PluginManager/PluginManagerContext.stories.d.ts} +5 -3
  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/{components/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  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/{components → ui/hooks}/useLoading.d.ts +1 -2
  255. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  256. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts +30 -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 +25 -6
  284. package/package.json +119 -56
  285. package/src/cli/cli.ts +102 -0
  286. package/src/{components → cli}/index.ts +1 -1
  287. package/src/common/activation-events.ts +39 -0
  288. package/src/{playground/layout/index.ts → common/annotations.ts} +0 -2
  289. package/src/common/capabilities.ts +287 -195
  290. package/src/common/index.ts +4 -8
  291. package/src/common/operations.ts +36 -0
  292. package/src/common/translations.ts +17 -9
  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 +415 -45
  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 +8 -9
  330. package/src/testing/withPluginManager.tsx +73 -42
  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/debug → 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 +156 -0
  336. package/src/{playground/logger → ui/components/Placeholder}/index.ts +1 -1
  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 +68 -0
  353. package/src/{components → ui/hooks}/useLoading.tsx +16 -10
  354. package/src/ui/hooks/useProcessManagerRuntime.ts +78 -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 +30 -15
  370. package/tsconfig.node.json +2 -4
  371. package/typedoc.json +2 -4
  372. package/vitest.config.ts +1 -1
  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-LG4RG2LM.mjs +0 -138
  376. package/dist/lib/browser/app-graph-builder-LG4RG2LM.mjs.map +0 -7
  377. package/dist/lib/browser/chunk-2GRQ4QXA.mjs +0 -1646
  378. package/dist/lib/browser/chunk-2GRQ4QXA.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-FRUTKCPG.mjs +0 -467
  380. package/dist/lib/browser/chunk-FRUTKCPG.mjs.map +0 -7
  381. package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
  382. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
  383. package/dist/lib/browser/intent-dispatcher-6SHA5B3N.mjs +0 -11
  384. package/dist/lib/browser/intent-resolver-UZZ4OANZ.mjs +0 -39
  385. package/dist/lib/browser/intent-resolver-UZZ4OANZ.mjs.map +0 -7
  386. package/dist/lib/browser/store-ACBEYK4B.mjs +0 -30
  387. package/dist/lib/browser/store-ACBEYK4B.mjs.map +0 -7
  388. package/dist/lib/browser/worker.mjs +0 -77
  389. package/dist/lib/node-esm/app-graph-builder-FMHVHPWA.mjs +0 -139
  390. package/dist/lib/node-esm/app-graph-builder-FMHVHPWA.mjs.map +0 -7
  391. package/dist/lib/node-esm/chunk-CXT6CYPE.mjs +0 -468
  392. package/dist/lib/node-esm/chunk-CXT6CYPE.mjs.map +0 -7
  393. package/dist/lib/node-esm/chunk-KSPOOYT3.mjs +0 -1648
  394. package/dist/lib/node-esm/chunk-KSPOOYT3.mjs.map +0 -7
  395. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
  396. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
  397. package/dist/lib/node-esm/intent-dispatcher-SIYQ5ZIU.mjs +0 -12
  398. package/dist/lib/node-esm/intent-resolver-7FYJMXAG.mjs +0 -40
  399. package/dist/lib/node-esm/intent-resolver-7FYJMXAG.mjs.map +0 -7
  400. package/dist/lib/node-esm/store-6OBLTVXC.mjs +0 -31
  401. package/dist/lib/node-esm/store-6OBLTVXC.mjs.map +0 -7
  402. package/dist/lib/node-esm/worker.mjs +0 -78
  403. package/dist/types/src/common/collaboration.d.ts +0 -20
  404. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  405. package/dist/types/src/common/events.d.ts +0 -52
  406. package/dist/types/src/common/events.d.ts.map +0 -1
  407. package/dist/types/src/common/file.d.ts +0 -14
  408. package/dist/types/src/common/file.d.ts.map +0 -1
  409. package/dist/types/src/common/graph.d.ts +0 -21
  410. package/dist/types/src/common/graph.d.ts.map +0 -1
  411. package/dist/types/src/common/layout.d.ts +0 -279
  412. package/dist/types/src/common/layout.d.ts.map +0 -1
  413. package/dist/types/src/common/surface.d.ts +0 -59
  414. package/dist/types/src/common/surface.d.ts.map +0 -1
  415. package/dist/types/src/components/App.d.ts +0 -10
  416. package/dist/types/src/components/App.d.ts.map +0 -1
  417. package/dist/types/src/components/App.stories.d.ts.map +0 -1
  418. package/dist/types/src/components/DefaultFallback.d.ts +0 -8
  419. package/dist/types/src/components/DefaultFallback.d.ts.map +0 -1
  420. package/dist/types/src/components/index.d.ts +0 -2
  421. package/dist/types/src/components/index.d.ts.map +0 -1
  422. package/dist/types/src/components/useApp.d.ts +0 -44
  423. package/dist/types/src/components/useApp.d.ts.map +0 -1
  424. package/dist/types/src/components/useLoading.d.ts.map +0 -1
  425. package/dist/types/src/core/capabilities.d.ts +0 -117
  426. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  427. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  428. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  429. package/dist/types/src/core/events.d.ts.map +0 -1
  430. package/dist/types/src/core/manager.d.ts +0 -126
  431. package/dist/types/src/core/manager.d.ts.map +0 -1
  432. package/dist/types/src/core/manager.test.d.ts +0 -2
  433. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  434. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  435. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  436. package/dist/types/src/playground/debug/index.d.ts +0 -2
  437. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  438. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  439. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  440. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  441. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  442. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  443. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  444. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  445. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  446. package/dist/types/src/playground/generator/index.d.ts +0 -3
  447. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  448. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  449. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  450. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  451. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  452. package/dist/types/src/playground/layout/index.d.ts +0 -2
  453. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  454. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  455. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  456. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  457. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  458. package/dist/types/src/playground/logger/index.d.ts +0 -2
  459. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  460. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  461. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  462. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  463. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  464. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  465. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  466. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  467. package/dist/types/src/plugin-intent/actions.d.ts +0 -36
  468. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  469. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  470. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  471. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  472. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  473. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  474. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  475. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  476. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  477. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  478. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  479. package/dist/types/src/plugin-intent/meta.d.ts +0 -3
  480. package/dist/types/src/plugin-intent/meta.d.ts.map +0 -1
  481. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
  482. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  483. package/dist/types/src/plugin-settings/actions.d.ts +0 -25
  484. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  485. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
  486. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  487. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  488. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  489. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  490. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  491. package/dist/types/src/plugin-settings/meta.d.ts +0 -3
  492. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  493. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  494. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  495. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  496. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  497. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  498. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  499. package/dist/types/src/react/IntentContext.d.ts +0 -8
  500. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  501. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  502. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  503. package/dist/types/src/react/Surface.d.ts +0 -12
  504. package/dist/types/src/react/Surface.d.ts.map +0 -1
  505. package/dist/types/src/react/Surface.stories.d.ts +0 -17
  506. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  507. package/dist/types/src/react/common.d.ts +0 -13
  508. package/dist/types/src/react/common.d.ts.map +0 -1
  509. package/dist/types/src/react/index.d.ts +0 -7
  510. package/dist/types/src/react/index.d.ts.map +0 -1
  511. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  512. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  513. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  514. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  515. package/dist/types/src/worker.d.ts +0 -4
  516. package/dist/types/src/worker.d.ts.map +0 -1
  517. package/src/common/collaboration.ts +0 -18
  518. package/src/common/events.ts +0 -79
  519. package/src/common/file.ts +0 -22
  520. package/src/common/graph.ts +0 -30
  521. package/src/common/layout.ts +0 -277
  522. package/src/common/surface.ts +0 -83
  523. package/src/components/App.stories.tsx +0 -33
  524. package/src/components/App.tsx +0 -59
  525. package/src/components/DefaultFallback.tsx +0 -26
  526. package/src/components/useApp.tsx +0 -164
  527. package/src/core/capabilities.test.ts +0 -136
  528. package/src/core/capabilities.ts +0 -259
  529. package/src/core/manager.test.ts +0 -516
  530. package/src/core/manager.ts +0 -604
  531. package/src/playground/debug/Debug.tsx +0 -39
  532. package/src/playground/debug/plugin.ts +0 -16
  533. package/src/playground/generator/Main.tsx +0 -71
  534. package/src/playground/generator/Toolbar.tsx +0 -47
  535. package/src/playground/generator/generator.ts +0 -48
  536. package/src/playground/generator/index.ts +0 -6
  537. package/src/playground/generator/plugin.ts +0 -22
  538. package/src/playground/layout/Layout.tsx +0 -33
  539. package/src/playground/layout/plugin.ts +0 -18
  540. package/src/playground/logger/Toolbar.tsx +0 -30
  541. package/src/playground/logger/plugin.ts +0 -41
  542. package/src/playground/logger/schema.ts +0 -12
  543. package/src/playground/playground.stories.tsx +0 -46
  544. package/src/plugin-intent/IntentPlugin.ts +0 -20
  545. package/src/plugin-intent/actions.ts +0 -31
  546. package/src/plugin-intent/errors.ts +0 -40
  547. package/src/plugin-intent/index.ts +0 -9
  548. package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
  549. package/src/plugin-intent/intent-dispatcher.ts +0 -337
  550. package/src/plugin-intent/intent.ts +0 -154
  551. package/src/plugin-intent/meta.ts +0 -10
  552. package/src/plugin-settings/SettingsPlugin.ts +0 -34
  553. package/src/plugin-settings/actions.ts +0 -25
  554. package/src/plugin-settings/app-graph-builder.ts +0 -160
  555. package/src/plugin-settings/index.ts +0 -6
  556. package/src/plugin-settings/intent-resolver.ts +0 -35
  557. package/src/plugin-settings/meta.ts +0 -10
  558. package/src/plugin-settings/store.ts +0 -33
  559. package/src/plugin-settings/translations.ts +0 -19
  560. package/src/react/ErrorBoundary.tsx +0 -56
  561. package/src/react/IntentContext.tsx +0 -35
  562. package/src/react/Surface.stories.tsx +0 -101
  563. package/src/react/Surface.tsx +0 -86
  564. package/src/react/common.ts +0 -13
  565. package/src/react/index.ts +0 -10
  566. package/src/react/useCapabilities.ts +0 -31
  567. package/src/react/useIntentResolver.ts +0 -22
  568. package/src/worker.ts +0 -11
  569. /package/dist/lib/browser/{intent-dispatcher-6SHA5B3N.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  570. /package/dist/lib/browser/{worker.mjs.map → common/activation-events.mjs.map} +0 -0
  571. /package/dist/lib/{node-esm/intent-dispatcher-SIYQ5ZIU.mjs.map → browser/common/capabilities.mjs.map} +0 -0
  572. /package/dist/lib/{node-esm/worker.mjs.map → browser/core/activation-event.mjs.map} +0 -0
@@ -2,216 +2,308 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import type * as Tool from '@effect/ai/Tool';
6
- import type * as Toolkit from '@effect/ai/Toolkit';
7
- import { type Registry } from '@effect-rx/rx-react';
8
- import type * as Layer from 'effect/Layer';
9
- import type * as Schema from 'effect/Schema';
10
- import { type FC, type PropsWithChildren } from 'react';
11
-
12
- import { type AiService } from '@dxos/ai';
13
- import type * as AiServiceRouter from '@dxos/ai/AiServiceRouter';
14
- import { type BuilderExtensions, type GraphBuilder } from '@dxos/app-graph';
15
- import { type Blueprint } from '@dxos/blueprints';
16
- import { type Space } from '@dxos/client-protocol';
17
- import { type FunctionDefinition } from '@dxos/functions';
18
- import { type RootSettingsStore } from '@dxos/local-storage';
19
- import { type AnchoredTo } from '@dxos/schema';
20
-
21
- import { type PluginManager, defineCapability } from '../core';
22
- import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
23
-
24
- import { type FileInfo } from './file';
25
- import { type NodeSerializer } from './graph';
26
- import { type SurfaceDefinition } from './surface';
27
- import { type Resource } from './translations';
28
-
29
- // TODO(burdon): Sort.
30
- 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 {
31
108
  /**
32
- * @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.
33
112
  */
34
- export const Null = defineCapability<null>('dxos.org/app-framework/capability/null');
35
-
36
- /**
37
- * @category Capability
38
- */
39
- export const PluginManager = defineCapability<PluginManager>('dxos.org/app-framework/capability/plugin-manager');
40
-
41
- /**
42
- * @category Capability
43
- */
44
- export const RxRegistry = defineCapability<Registry.Registry>('dxos.org/app-framework/capability/rx-registry');
45
-
46
- export type ReactContext = Readonly<{ id: string; dependsOn?: string[]; context: FC<PropsWithChildren> }>;
47
-
48
- /**
49
- * @category Capability
50
- */
51
- export const ReactContext = defineCapability<ReactContext>('dxos.org/app-framework/capability/react-context');
52
-
53
- export type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;
54
-
55
- /**
56
- * @category Capability
57
- */
58
- export const ReactRoot = defineCapability<ReactRoot>('dxos.org/app-framework/capability/react-root');
59
-
60
- export type ReactSurface = SurfaceDefinition | readonly SurfaceDefinition[];
61
-
62
- /**
63
- * @category Capability
64
- */
65
- export const ReactSurface = defineCapability<ReactSurface>('dxos.org/app-framework/common/react-surface');
66
-
67
- export type IntentResolver = AnyIntentResolver | readonly AnyIntentResolver[];
68
-
69
- /**
70
- * @category Capability
71
- */
72
- export const IntentResolver = defineCapability<IntentResolver>('dxos.org/app-framework/capability/intent-resolver');
73
-
74
- /**
75
- * @category Capability
76
- */
77
- export const IntentDispatcher = defineCapability<IntentContext>(
78
- 'dxos.org/app-framework/capability/intent-dispatcher',
79
- );
80
-
81
- export type Layout = Readonly<{
82
- mode: string;
83
- dialogOpen: boolean;
84
- sidebarOpen: boolean;
85
- complementarySidebarOpen: boolean;
86
- /**
87
- * The id of the active workspace, where a workspace is a set of active items.
88
- */
89
- workspace: string;
90
- /**
91
- * Identifiers of items which are currently active in the application.
92
- */
93
- active: string[];
94
- /**
95
- * Identifiers of items which were previously active in the application.
96
- */
97
- inactive: string[];
98
- /**
99
- * Identifier of the item which should be scrolled into view.
100
- */
101
- scrollIntoView: string | undefined;
102
- }>;
103
-
104
- /**
105
- * @category Capability
106
- */
107
- export const Layout = defineCapability<Layout>('dxos.org/app-framework/capability/layout');
108
-
109
- /**
110
- * @category Capability
111
- */
112
- export const Translations = defineCapability<Readonly<Resource[]>>('dxos.org/app-framework/capability/translations');
113
-
114
- /**
115
- * @category Capability
116
- */
117
- export const AppGraph = defineCapability<Readonly<Pick<GraphBuilder, 'graph' | 'explore'>>>(
118
- 'dxos.org/app-framework/capability/app-graph',
119
- );
113
+ readonly resolver: ServiceResolver$.ServiceResolver;
114
+ }
120
115
 
121
- /**
122
- * @category Capability
123
- */
124
- export const AppGraphBuilder = defineCapability<BuilderExtensions>(
125
- 'dxos.org/app-framework/capability/app-graph-builder',
126
- );
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, Feed.FeedService).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
+ }
127
205
 
128
- /**
129
- * @category Capability
130
- */
131
- export const AppGraphSerializer = defineCapability<NodeSerializer[]>(
132
- 'dxos.org/app-framework/capability/app-graph-serializer',
133
- );
206
+ /**
207
+ * @category Capability
208
+ */
209
+ export const ProcessManagerRuntime = Capability$.make<ProcessManagerRuntime>(
210
+ 'org.dxos.app-framework.capability.process-manager-runtime',
211
+ );
134
212
 
135
- /**
136
- * @category Capability
137
- */
138
- export const SettingsStore = defineCapability<RootSettingsStore>('dxos.org/app-framework/capability/settings-store');
213
+ export type ManagedRuntime = ManagedRuntime$.ManagedRuntime<any, any>;
139
214
 
140
- // TODO(wittjosiah): The generics caused type inference issues for schemas when contributing settings.
141
- // export type Settings = Parameters<RootSettingsStore['createStore']>[0];
142
- // export type Settings<T extends SettingsValue = SettingsValue> = SettingsProps<T>;
143
- export type Settings = {
144
- prefix: string;
145
- schema: Schema.Schema.All;
146
- value?: Record<string, any>;
147
- };
215
+ /**
216
+ * @category Capability
217
+ */
218
+ export const ManagedRuntime = Capability$.make<ManagedRuntime>('org.dxos.app-framework.capability.managed-runtime');
148
219
 
149
- /**
150
- * @category Capability
151
- */
152
- export const Settings = defineCapability<Settings>('dxos.org/app-framework/capability/settings');
220
+ //
221
+ // Operation System Capabilities
222
+ //
153
223
 
154
- export type Metadata = Readonly<{ id: string; metadata: Record<string, any> }>;
224
+ export const OperationHandler = Capability$.make<OperationHandlerSet.OperationHandlerSet>(
225
+ 'org.dxos.app-framework.capability.operation-handler',
226
+ );
155
227
 
156
- /**
157
- * @category Capability
158
- */
159
- export const Metadata = defineCapability<Metadata>('dxos.org/app-framework/capability/metadata');
228
+ export type UndoMapping = UndoMapping$.UndoMapping;
160
229
 
161
- // TODO(dmaretskyi): Consider combining Toolkit and ToolkitHandler for type-safe context.
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');
162
235
 
163
- /**
164
- * @category Capability
165
- */
166
- export const Toolkit = defineCapability<Toolkit.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;
167
241
 
168
- /**
169
- * @category Capability
170
- */
171
- export const ToolkitHandler = defineCapability<Layer.Layer<Tool.Handler<any>, never, never>>(
172
- 'dxos.org/app-framework/capability/ai-toolkit-handler',
173
- );
174
-
175
- /**
176
- * @category Capability
177
- */
178
- export const BlueprintDefinition = defineCapability<Blueprint.Blueprint>(
179
- 'dxos.org/app-framework/capability/blueprint-definition',
180
- );
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
+ );
181
249
 
182
- export type AiServiceLayer = Layer.Layer<AiService.AiService>;
183
- export const AiServiceLayer = defineCapability<AiServiceLayer>(
184
- 'dxos.org/app-framework/capability/ai-service-factory',
185
- );
250
+ export type UndoRegistry = UndoRegistry$.UndoRegistry;
186
251
 
187
- /**
188
- * Plugins can contribute them to provide model resolvers.
189
- */
190
- export const AiModelResolver = defineCapability<Layer.Layer<AiServiceRouter.AiModelResolver>>(
191
- 'dxos.org/app-framework/capability/ai-model-resolver',
192
- );
193
-
194
- /**
195
- * @category Capability
196
- */
197
- export const Functions = defineCapability<FunctionDefinition<any, any>[]>(
198
- 'dxos.org/app-framework/capability/functions',
199
- );
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');
200
257
 
201
- export type FileUploader = (file: File, space: Space) => Promise<FileInfo | undefined>;
258
+ export type HistoryTracker = HistoryTracker$.HistoryTracker;
202
259
 
203
- /**
204
- * @category Capability
205
- */
206
- 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');
207
265
 
208
- type AnchorSort = {
209
- key: string;
210
- sort: (anchorA: AnchoredTo, anchorB: AnchoredTo) => number;
211
- };
266
+ //
267
+ // Atom Capability Helpers
268
+ //
212
269
 
213
- /**
214
- * @category Capability
215
- */
216
- export const AnchorSort = defineCapability<AnchorSort>('dxos.org/app-framework/capability/anchor-sort');
217
- }
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,36 @@
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
+ icon: 'ph--arrow-counter-clockwise--regular',
28
+ },
29
+ executionMode: 'sync',
30
+ services: [Capability.Service],
31
+ input: Schema.Struct({
32
+ message: Schema.optional(Label.annotations({ description: 'The message to display in the undo toast.' })),
33
+ }),
34
+ output: Schema.Void,
35
+ });
36
+ }
@@ -4,14 +4,22 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
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>;
12
-
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]);