@dxos/app-framework 0.8.4-main.fffef41 → 0.8.4-staging.60fe92afc8

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 (569) 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-BOPAKKWG.mjs +35 -0
  6. package/dist/lib/browser/capability-BOPAKKWG.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-5GY3YOEL.mjs +28 -0
  8. package/dist/lib/browser/chunk-5GY3YOEL.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-66IXTIVK.mjs +48 -0
  10. package/dist/lib/browser/chunk-66IXTIVK.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-CO3XLNUX.mjs +95 -0
  12. package/dist/lib/browser/chunk-CO3XLNUX.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-DC3WRPBV.mjs +227 -0
  14. package/dist/lib/browser/chunk-DC3WRPBV.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-HFLKXMT7.mjs +587 -0
  20. package/dist/lib/browser/chunk-HFLKXMT7.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-IW44C7UL.mjs +83 -0
  22. package/dist/lib/browser/chunk-IW44C7UL.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/browser/chunk-KZUDO43J.mjs +422 -0
  25. package/dist/lib/browser/chunk-KZUDO43J.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-Q2GLJTVV.mjs +12 -0
  27. package/dist/lib/browser/chunk-Q2GLJTVV.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-SYXIYT6T.mjs +143 -0
  29. package/dist/lib/browser/chunk-SYXIYT6T.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-XHS5KDNX.mjs +1471 -0
  31. package/dist/lib/browser/chunk-XHS5KDNX.mjs.map +7 -0
  32. package/dist/lib/browser/chunk-Y66ELD4U.mjs +476 -0
  33. package/dist/lib/browser/chunk-Y66ELD4U.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 +41 -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 +86 -122
  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-GXNUO7AR.mjs +132 -0
  51. package/dist/lib/browser/process-manager-capability-GXNUO7AR.mjs.map +7 -0
  52. package/dist/lib/browser/testing/index.mjs +316 -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 +52 -0
  57. package/dist/lib/browser/ui/index.mjs.map +7 -0
  58. package/dist/lib/node-esm/capability-KZWRTX7R.mjs +36 -0
  59. package/dist/lib/node-esm/capability-KZWRTX7R.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-A5CHGAZE.mjs +588 -0
  63. package/dist/lib/node-esm/chunk-A5CHGAZE.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-COHOWGGJ.mjs +144 -0
  65. package/dist/lib/node-esm/chunk-COHOWGGJ.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-FPW45EZH.mjs +14 -0
  69. package/dist/lib/node-esm/chunk-FPW45EZH.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-FSVGKTF6.mjs +477 -0
  71. package/dist/lib/node-esm/chunk-FSVGKTF6.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  73. package/dist/lib/node-esm/chunk-HSLMI22Q.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-NULBHQYS.mjs +96 -0
  77. package/dist/lib/node-esm/chunk-NULBHQYS.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-SX5NVETP.mjs +1472 -0
  79. package/dist/lib/node-esm/chunk-SX5NVETP.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs +70 -0
  81. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-XGBUKRCK.mjs +423 -0
  83. package/dist/lib/node-esm/chunk-XGBUKRCK.mjs.map +7 -0
  84. package/dist/lib/node-esm/chunk-XIGPWXCQ.mjs +228 -0
  85. package/dist/lib/node-esm/chunk-XIGPWXCQ.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 +42 -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 +86 -122
  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-TX5TA6YN.mjs +133 -0
  108. package/dist/lib/node-esm/process-manager-capability-TX5TA6YN.mjs.map +7 -0
  109. package/dist/lib/node-esm/testing/index.mjs +316 -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 +53 -0
  114. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  115. package/dist/plugin/node-esm/index.mjs +977 -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 -193
  127. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  128. package/dist/types/src/common/index.d.ts +3 -8
  129. package/dist/types/src/common/index.d.ts.map +1 -1
  130. package/dist/types/src/common/translations.d.ts +7 -7
  131. package/dist/types/src/common/translations.d.ts.map +1 -1
  132. package/dist/types/src/context.d.ts +5 -0
  133. package/dist/types/src/context.d.ts.map +1 -0
  134. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +11 -11
  135. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  136. package/dist/types/src/core/capability-manager.d.ts +52 -0
  137. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  138. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  139. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  140. package/dist/types/src/core/capability.d.ts +161 -0
  141. package/dist/types/src/core/capability.d.ts.map +1 -0
  142. package/dist/types/src/core/edge-registry-plugin-provider.d.ts +30 -0
  143. package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -0
  144. package/dist/types/src/core/index.d.ts +11 -4
  145. package/dist/types/src/core/index.d.ts.map +1 -1
  146. package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
  147. package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
  148. package/dist/types/src/core/plugin-manager.d.ts +297 -0
  149. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  150. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  151. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  152. package/dist/types/src/core/plugin-manifest.d.ts +101 -0
  153. package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
  154. package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
  155. package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
  156. package/dist/types/src/core/plugin.d.ts +303 -43
  157. package/dist/types/src/core/plugin.d.ts.map +1 -1
  158. package/dist/types/src/core/registry.d.ts +107 -0
  159. package/dist/types/src/core/registry.d.ts.map +1 -0
  160. package/dist/types/src/core/url-loader.d.ts +127 -0
  161. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  162. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  163. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  164. package/dist/types/src/helpers.d.ts.map +1 -1
  165. package/dist/types/src/index.d.ts +2 -2
  166. package/dist/types/src/index.d.ts.map +1 -1
  167. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts +3 -0
  168. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts.map +1 -0
  169. package/dist/types/src/plugin-process-manager/history/capability.d.ts +7 -0
  170. package/dist/types/src/plugin-process-manager/history/capability.d.ts.map +1 -0
  171. package/dist/types/src/plugin-process-manager/history/errors.d.ts +32 -0
  172. package/dist/types/src/plugin-process-manager/history/errors.d.ts.map +1 -0
  173. package/dist/types/src/plugin-process-manager/history/history-tracker.d.ts +32 -0
  174. package/dist/types/src/plugin-process-manager/history/history-tracker.d.ts.map +1 -0
  175. package/dist/types/src/plugin-process-manager/history/history-tracker.test.d.ts +2 -0
  176. package/dist/types/src/plugin-process-manager/history/history-tracker.test.d.ts.map +1 -0
  177. package/dist/types/src/plugin-process-manager/history/index.d.ts +6 -0
  178. package/dist/types/src/plugin-process-manager/history/index.d.ts.map +1 -0
  179. package/dist/types/src/plugin-process-manager/history/types.d.ts +13 -0
  180. package/dist/types/src/plugin-process-manager/history/types.d.ts.map +1 -0
  181. package/dist/types/src/plugin-process-manager/history/undo-mapping.d.ts +101 -0
  182. package/dist/types/src/plugin-process-manager/history/undo-mapping.d.ts.map +1 -0
  183. package/dist/types/src/plugin-process-manager/history/undo-registry.d.ts +23 -0
  184. package/dist/types/src/plugin-process-manager/history/undo-registry.d.ts.map +1 -0
  185. package/dist/types/src/plugin-process-manager/history/undo-registry.test.d.ts +2 -0
  186. package/dist/types/src/plugin-process-manager/history/undo-registry.test.d.ts.map +1 -0
  187. package/dist/types/src/plugin-process-manager/idb-key-value-store.d.ts +10 -0
  188. package/dist/types/src/plugin-process-manager/idb-key-value-store.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 +3 -0
  200. package/dist/types/src/testing/index.d.ts.map +1 -1
  201. package/dist/types/src/testing/operationCapture.d.ts +64 -0
  202. package/dist/types/src/testing/operationCapture.d.ts.map +1 -0
  203. package/dist/types/src/testing/react.d.ts +27 -0
  204. package/dist/types/src/testing/react.d.ts.map +1 -0
  205. package/dist/types/src/testing/react.test.d.ts +2 -0
  206. package/dist/types/src/testing/react.test.d.ts.map +1 -0
  207. package/dist/types/src/testing/service.d.ts +8 -0
  208. package/dist/types/src/testing/service.d.ts.map +1 -0
  209. package/dist/types/src/testing/withPluginManager.d.ts +4 -4
  210. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  211. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  212. package/dist/types/src/ui/components/App/App.d.ts +41 -0
  213. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  214. package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
  215. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  216. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  217. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  218. package/dist/types/src/{react/Surface.stories.d.ts → ui/components/PluginManager/PluginManagerContext.stories.d.ts} +2 -3
  219. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  220. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
  221. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  222. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  223. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  224. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +24 -0
  225. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  226. package/dist/types/src/{react/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  227. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  228. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
  229. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  230. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  231. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  232. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  233. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  234. package/dist/types/src/ui/components/Surface/index.d.ts +36 -0
  235. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  236. package/dist/types/src/ui/components/Surface/types.d.ts +197 -0
  237. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  238. package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
  239. package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
  240. package/dist/types/src/ui/components/index.d.ts +4 -0
  241. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  242. package/dist/types/src/ui/hooks/index.d.ts +7 -0
  243. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  244. package/dist/types/src/ui/hooks/useApp.d.ts +80 -0
  245. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  246. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  247. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  248. package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
  249. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  250. package/dist/types/src/{react → ui/hooks}/useLoading.d.ts +1 -2
  251. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  252. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts +30 -0
  253. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts.map +1 -0
  254. package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
  255. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  256. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  257. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  258. package/dist/types/src/ui/index.d.ts +3 -0
  259. package/dist/types/src/ui/index.d.ts.map +1 -0
  260. package/dist/types/src/vite-plugin/boot-loader/index.d.ts +2 -0
  261. package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -0
  262. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts +59 -0
  263. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts.map +1 -0
  264. package/dist/types/src/vite-plugin/composer/index.d.ts +34 -0
  265. package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -0
  266. package/dist/types/src/vite-plugin/import-map/index.d.ts +28 -0
  267. package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -0
  268. package/dist/types/src/vite-plugin/index.d.ts +5 -0
  269. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  270. package/dist/types/src/vite-plugin/manifest.d.ts +41 -0
  271. package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
  272. package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
  273. package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
  274. package/dist/types/src/vite-plugin/packages.d.ts +13 -0
  275. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  276. package/dist/types/tsconfig.tsbuildinfo +1 -1
  277. package/moon.yml +25 -6
  278. package/package.json +125 -59
  279. package/src/cli/cli.ts +102 -0
  280. package/src/{playground/debug → cli}/index.ts +1 -1
  281. package/src/common/activation-events.ts +39 -0
  282. package/src/{playground/logger/index.ts → common/annotations.ts} +0 -2
  283. package/src/common/capabilities.ts +287 -192
  284. package/src/common/index.ts +3 -8
  285. package/src/common/translations.ts +17 -9
  286. package/src/context.ts +9 -0
  287. package/src/core/{events.ts → activation-event.ts} +10 -7
  288. package/src/core/capability-manager.test.ts +154 -0
  289. package/src/core/capability-manager.ts +213 -0
  290. package/src/core/capability.ts +254 -0
  291. package/src/core/edge-registry-plugin-provider.ts +92 -0
  292. package/src/core/index.ts +11 -4
  293. package/src/core/plugin-asset-cache.ts +60 -0
  294. package/src/core/plugin-manager.test.ts +1929 -0
  295. package/src/core/plugin-manager.ts +1696 -0
  296. package/src/core/plugin-manifest.test.ts +75 -0
  297. package/src/core/plugin-manifest.ts +134 -0
  298. package/src/core/plugin.ts +449 -48
  299. package/src/core/registry.ts +163 -0
  300. package/src/core/url-loader.test.ts +222 -0
  301. package/src/core/url-loader.ts +388 -0
  302. package/src/index.ts +2 -2
  303. package/src/plugin-process-manager/ProcessManagerPlugin.ts +24 -0
  304. package/src/plugin-process-manager/history/capability.ts +36 -0
  305. package/src/plugin-process-manager/history/errors.ts +7 -0
  306. package/src/plugin-process-manager/history/history-tracker.test.ts +353 -0
  307. package/src/plugin-process-manager/history/history-tracker.ts +144 -0
  308. package/src/plugin-process-manager/history/index.ts +9 -0
  309. package/src/plugin-process-manager/history/types.ts +17 -0
  310. package/src/plugin-process-manager/history/undo-mapping.ts +135 -0
  311. package/src/plugin-process-manager/history/undo-registry.test.ts +74 -0
  312. package/src/plugin-process-manager/history/undo-registry.ts +54 -0
  313. package/src/plugin-process-manager/idb-key-value-store.ts +64 -0
  314. package/src/plugin-process-manager/index.ts +6 -0
  315. package/src/plugin-process-manager/meta.ts +16 -0
  316. package/src/plugin-process-manager/process-manager-capability.ts +178 -0
  317. package/src/plugin-process-manager/testing.ts +156 -0
  318. package/src/testing/harness.ts +247 -0
  319. package/src/testing/index.ts +3 -0
  320. package/src/testing/operationCapture.ts +144 -0
  321. package/src/testing/react.test.tsx +50 -0
  322. package/src/testing/react.tsx +113 -0
  323. package/src/testing/service.ts +52 -0
  324. package/src/testing/withPluginManager.stories.tsx +8 -9
  325. package/src/testing/withPluginManager.tsx +69 -42
  326. package/src/ui/components/App/App.stories.tsx +84 -0
  327. package/src/ui/components/App/App.tsx +144 -0
  328. package/src/{playground/layout → ui/components/App}/index.ts +1 -1
  329. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +179 -0
  330. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
  331. package/src/ui/components/PluginManager/index.ts +5 -0
  332. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +144 -0
  333. package/src/ui/components/Surface/SurfaceComponent.tsx +303 -0
  334. package/src/ui/components/Surface/SurfaceInfo.tsx +106 -0
  335. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  336. package/src/ui/components/Surface/context.ts +12 -0
  337. package/src/ui/components/Surface/index.ts +54 -0
  338. package/src/ui/components/Surface/types.test.ts +126 -0
  339. package/src/ui/components/Surface/types.ts +290 -0
  340. package/src/ui/components/index.ts +7 -0
  341. package/src/ui/hooks/index.ts +10 -0
  342. package/src/ui/hooks/useApp.test.tsx +161 -0
  343. package/src/ui/hooks/useApp.tsx +404 -0
  344. package/src/ui/hooks/useCapabilities.ts +68 -0
  345. package/src/{react → ui/hooks}/useLoading.tsx +16 -10
  346. package/src/ui/hooks/useProcessManagerRuntime.ts +78 -0
  347. package/src/ui/hooks/useSettingsState.ts +26 -0
  348. package/src/ui/hooks/useSurface.ts +13 -0
  349. package/src/ui/index.ts +6 -0
  350. package/src/vite-plugin/boot-loader/BootLoader.solid-stories.tsx +198 -0
  351. package/src/vite-plugin/boot-loader/index.ts +5 -0
  352. package/src/vite-plugin/boot-loader/loader-app/Loader.tsx +166 -0
  353. package/src/vite-plugin/boot-loader/loader-app/boot-loader.css +311 -0
  354. package/src/vite-plugin/boot-loader/loader-app/bridge.ts +25 -0
  355. package/src/vite-plugin/boot-loader/loader-app/entry.tsx +21 -0
  356. package/src/vite-plugin/boot-loader/loader-app/mount.tsx +70 -0
  357. package/src/vite-plugin/boot-loader/loader-app/store.test.ts +137 -0
  358. package/src/vite-plugin/boot-loader/loader-app/store.ts +149 -0
  359. package/src/vite-plugin/boot-loader/loader-app/tsconfig.json +11 -0
  360. package/src/vite-plugin/boot-loader/loader-app/types.ts +78 -0
  361. package/src/vite-plugin/boot-loader/loader.ts +204 -0
  362. package/src/vite-plugin/composer/index.ts +306 -0
  363. package/src/vite-plugin/import-map/index.ts +527 -0
  364. package/src/vite-plugin/index.ts +10 -0
  365. package/src/vite-plugin/manifest.test.ts +55 -0
  366. package/src/vite-plugin/manifest.ts +63 -0
  367. package/src/vite-plugin/packages.ts +187 -0
  368. package/tsconfig.json +27 -22
  369. package/tsconfig.node.json +2 -4
  370. package/typedoc.json +2 -4
  371. package/vitest.config.ts +1 -1
  372. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  373. package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
  374. package/dist/lib/browser/app-graph-builder-OIEZZC45.mjs +0 -138
  375. package/dist/lib/browser/app-graph-builder-OIEZZC45.mjs.map +0 -7
  376. package/dist/lib/browser/chunk-6XKO24JP.mjs +0 -483
  377. package/dist/lib/browser/chunk-6XKO24JP.mjs.map +0 -7
  378. package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
  379. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
  380. package/dist/lib/browser/chunk-WPW5VVAX.mjs +0 -1651
  381. package/dist/lib/browser/chunk-WPW5VVAX.mjs.map +0 -7
  382. package/dist/lib/browser/intent-dispatcher-LZ4AE66E.mjs +0 -11
  383. package/dist/lib/browser/intent-resolver-QVCKRX6G.mjs +0 -39
  384. package/dist/lib/browser/intent-resolver-QVCKRX6G.mjs.map +0 -7
  385. package/dist/lib/browser/react/index.mjs +0 -34
  386. package/dist/lib/browser/store-CNPHOYTJ.mjs +0 -30
  387. package/dist/lib/browser/store-CNPHOYTJ.mjs.map +0 -7
  388. package/dist/lib/node-esm/app-graph-builder-EBU4NVWD.mjs +0 -139
  389. package/dist/lib/node-esm/app-graph-builder-EBU4NVWD.mjs.map +0 -7
  390. package/dist/lib/node-esm/chunk-3UPX5OIS.mjs +0 -484
  391. package/dist/lib/node-esm/chunk-3UPX5OIS.mjs.map +0 -7
  392. package/dist/lib/node-esm/chunk-XJZGUJ3H.mjs +0 -1653
  393. package/dist/lib/node-esm/chunk-XJZGUJ3H.mjs.map +0 -7
  394. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
  395. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
  396. package/dist/lib/node-esm/intent-dispatcher-MGOJ3CHD.mjs +0 -12
  397. package/dist/lib/node-esm/intent-resolver-URF3HN3G.mjs +0 -40
  398. package/dist/lib/node-esm/intent-resolver-URF3HN3G.mjs.map +0 -7
  399. package/dist/lib/node-esm/react/index.mjs +0 -35
  400. package/dist/lib/node-esm/store-RK5B4XEL.mjs +0 -31
  401. package/dist/lib/node-esm/store-RK5B4XEL.mjs.map +0 -7
  402. package/dist/types/src/common/collaboration.d.ts +0 -20
  403. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  404. package/dist/types/src/common/events.d.ts +0 -52
  405. package/dist/types/src/common/events.d.ts.map +0 -1
  406. package/dist/types/src/common/file.d.ts +0 -14
  407. package/dist/types/src/common/file.d.ts.map +0 -1
  408. package/dist/types/src/common/graph.d.ts +0 -21
  409. package/dist/types/src/common/graph.d.ts.map +0 -1
  410. package/dist/types/src/common/layout.d.ts +0 -279
  411. package/dist/types/src/common/layout.d.ts.map +0 -1
  412. package/dist/types/src/common/surface.d.ts +0 -68
  413. package/dist/types/src/common/surface.d.ts.map +0 -1
  414. package/dist/types/src/core/capabilities.d.ts +0 -117
  415. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  416. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  417. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  418. package/dist/types/src/core/events.d.ts.map +0 -1
  419. package/dist/types/src/core/manager.d.ts +0 -126
  420. package/dist/types/src/core/manager.d.ts.map +0 -1
  421. package/dist/types/src/core/manager.test.d.ts +0 -2
  422. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  423. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  424. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  425. package/dist/types/src/playground/debug/index.d.ts +0 -2
  426. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  427. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  428. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  429. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  430. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  431. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  432. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  433. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  434. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  435. package/dist/types/src/playground/generator/index.d.ts +0 -3
  436. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  437. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  438. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  439. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  440. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  441. package/dist/types/src/playground/layout/index.d.ts +0 -2
  442. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  443. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  444. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  445. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  446. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  447. package/dist/types/src/playground/logger/index.d.ts +0 -2
  448. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  449. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  450. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  451. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  452. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  453. package/dist/types/src/playground/playground.stories.d.ts +0 -11
  454. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  455. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  456. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  457. package/dist/types/src/plugin-intent/actions.d.ts +0 -36
  458. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  459. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  460. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  461. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  462. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  463. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  464. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  465. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  466. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  467. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  468. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  469. package/dist/types/src/plugin-intent/meta.d.ts +0 -3
  470. package/dist/types/src/plugin-intent/meta.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 -25
  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/meta.d.ts +0 -3
  482. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  483. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  484. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  485. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  486. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  487. package/dist/types/src/react/App.d.ts +0 -10
  488. package/dist/types/src/react/App.d.ts.map +0 -1
  489. package/dist/types/src/react/App.stories.d.ts.map +0 -1
  490. package/dist/types/src/react/DefaultFallback.d.ts +0 -8
  491. package/dist/types/src/react/DefaultFallback.d.ts.map +0 -1
  492. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  493. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  494. package/dist/types/src/react/IntentContext.d.ts +0 -8
  495. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  496. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  497. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  498. package/dist/types/src/react/Surface.d.ts +0 -12
  499. package/dist/types/src/react/Surface.d.ts.map +0 -1
  500. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  501. package/dist/types/src/react/common.d.ts +0 -13
  502. package/dist/types/src/react/common.d.ts.map +0 -1
  503. package/dist/types/src/react/index.d.ts +0 -9
  504. package/dist/types/src/react/index.d.ts.map +0 -1
  505. package/dist/types/src/react/types.d.ts +0 -14
  506. package/dist/types/src/react/types.d.ts.map +0 -1
  507. package/dist/types/src/react/useApp.d.ts +0 -44
  508. package/dist/types/src/react/useApp.d.ts.map +0 -1
  509. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  510. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  511. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  512. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  513. package/dist/types/src/react/useLoading.d.ts.map +0 -1
  514. package/src/common/collaboration.ts +0 -18
  515. package/src/common/events.ts +0 -79
  516. package/src/common/file.ts +0 -22
  517. package/src/common/graph.ts +0 -30
  518. package/src/common/layout.ts +0 -277
  519. package/src/common/surface.ts +0 -88
  520. package/src/core/capabilities.test.ts +0 -136
  521. package/src/core/capabilities.ts +0 -263
  522. package/src/core/manager.test.ts +0 -516
  523. package/src/core/manager.ts +0 -604
  524. package/src/playground/debug/Debug.tsx +0 -39
  525. package/src/playground/debug/plugin.ts +0 -16
  526. package/src/playground/generator/Main.tsx +0 -70
  527. package/src/playground/generator/Toolbar.tsx +0 -47
  528. package/src/playground/generator/generator.ts +0 -48
  529. package/src/playground/generator/index.ts +0 -6
  530. package/src/playground/generator/plugin.ts +0 -22
  531. package/src/playground/layout/Layout.tsx +0 -33
  532. package/src/playground/layout/plugin.ts +0 -18
  533. package/src/playground/logger/Toolbar.tsx +0 -30
  534. package/src/playground/logger/plugin.ts +0 -41
  535. package/src/playground/logger/schema.ts +0 -12
  536. package/src/playground/playground.stories.tsx +0 -46
  537. package/src/plugin-intent/IntentPlugin.ts +0 -20
  538. package/src/plugin-intent/actions.ts +0 -31
  539. package/src/plugin-intent/errors.ts +0 -40
  540. package/src/plugin-intent/index.ts +0 -9
  541. package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
  542. package/src/plugin-intent/intent-dispatcher.ts +0 -342
  543. package/src/plugin-intent/intent.ts +0 -154
  544. package/src/plugin-intent/meta.ts +0 -10
  545. package/src/plugin-settings/SettingsPlugin.ts +0 -34
  546. package/src/plugin-settings/actions.ts +0 -25
  547. package/src/plugin-settings/app-graph-builder.ts +0 -160
  548. package/src/plugin-settings/index.ts +0 -6
  549. package/src/plugin-settings/intent-resolver.ts +0 -35
  550. package/src/plugin-settings/meta.ts +0 -10
  551. package/src/plugin-settings/store.ts +0 -33
  552. package/src/plugin-settings/translations.ts +0 -19
  553. package/src/react/App.stories.tsx +0 -33
  554. package/src/react/App.tsx +0 -59
  555. package/src/react/DefaultFallback.tsx +0 -26
  556. package/src/react/ErrorBoundary.tsx +0 -56
  557. package/src/react/IntentContext.tsx +0 -35
  558. package/src/react/Surface.stories.tsx +0 -125
  559. package/src/react/Surface.tsx +0 -109
  560. package/src/react/common.ts +0 -13
  561. package/src/react/index.ts +0 -14
  562. package/src/react/types.ts +0 -38
  563. package/src/react/useApp.tsx +0 -165
  564. package/src/react/useCapabilities.ts +0 -31
  565. package/src/react/useIntentResolver.ts +0 -22
  566. /package/dist/lib/browser/{intent-dispatcher-LZ4AE66E.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  567. /package/dist/lib/browser/{react/index.mjs.map → common/activation-events.mjs.map} +0 -0
  568. /package/dist/lib/{node-esm/intent-dispatcher-MGOJ3CHD.mjs.map → browser/common/capabilities.mjs.map} +0 -0
  569. /package/dist/lib/{node-esm/react/index.mjs.map → browser/core/activation-event.mjs.map} +0 -0
@@ -2,213 +2,308 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Registry } from '@effect-atom/atom-react';
6
- import type * as Layer from 'effect/Layer';
7
- import type * as Schema from 'effect/Schema';
8
- import { type FC, type PropsWithChildren } from 'react';
9
-
10
- import { type AiService } from '@dxos/ai';
11
- import type * as AiServiceRouter from '@dxos/ai/AiServiceRouter';
12
- import { type BuilderExtensions, type GraphBuilder } from '@dxos/app-graph';
13
- import { type GenericToolkit } from '@dxos/assistant';
14
- import { type Blueprint } from '@dxos/blueprints';
15
- import { type Space } from '@dxos/client-protocol';
16
- import { type FunctionDefinition } from '@dxos/functions';
17
- import { type RootSettingsStore } from '@dxos/local-storage';
18
- import { type AnchoredTo } from '@dxos/types';
19
-
20
- import { type PluginManager, defineCapability } from '../core';
21
- import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
22
-
23
- import { type FileInfo } from './file';
24
- import { type NodeSerializer } from './graph';
25
- import { type SurfaceDefinition } from './surface';
26
- import { type Resource } from './translations';
27
-
28
- // TODO(burdon): Sort.
29
- 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 {
30
108
  /**
31
- * @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.
32
112
  */
33
- export const Null = defineCapability<null>('dxos.org/app-framework/capability/null');
34
-
35
- /**
36
- * @category Capability
37
- */
38
- export const PluginManager = defineCapability<PluginManager>('dxos.org/app-framework/capability/plugin-manager');
39
-
40
- /**
41
- * @category Capability
42
- */
43
- export const AtomRegistry = defineCapability<Registry.Registry>('dxos.org/app-framework/capability/atom-registry');
44
-
45
- export type ReactContext = Readonly<{
46
- id: string;
47
- dependsOn?: string[];
48
- context: FC<PropsWithChildren>;
49
- }>;
50
-
51
- /**
52
- * @category Capability
53
- */
54
- export const ReactContext = defineCapability<ReactContext>('dxos.org/app-framework/capability/react-context');
55
-
56
- export type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;
57
-
58
- /**
59
- * @category Capability
60
- */
61
- export const ReactRoot = defineCapability<ReactRoot>('dxos.org/app-framework/capability/react-root');
62
-
63
- export type ReactSurface = SurfaceDefinition | readonly SurfaceDefinition[];
64
-
65
- /**
66
- * @category Capability
67
- */
68
- export const ReactSurface = defineCapability<ReactSurface>('dxos.org/app-framework/common/react-surface');
69
-
70
- export type IntentResolver = AnyIntentResolver | readonly AnyIntentResolver[];
71
-
72
- /**
73
- * @category Capability
74
- */
75
- export const IntentResolver = defineCapability<IntentResolver>('dxos.org/app-framework/capability/intent-resolver');
76
-
77
- /**
78
- * @category Capability
79
- */
80
- export const IntentDispatcher = defineCapability<IntentContext>(
81
- 'dxos.org/app-framework/capability/intent-dispatcher',
82
- );
83
-
84
- export type Layout = Readonly<{
85
- mode: string;
86
- dialogOpen: boolean;
87
- sidebarOpen: boolean;
88
- complementarySidebarOpen: boolean;
89
- /**
90
- * The id of the active workspace, where a workspace is a set of active items.
91
- */
92
- workspace: string;
93
- /**
94
- * Identifiers of items which are currently active in the application.
95
- */
96
- active: string[];
97
- /**
98
- * Identifiers of items which were previously active in the application.
99
- */
100
- inactive: string[];
101
- /**
102
- * Identifier of the item which should be scrolled into view.
103
- */
104
- scrollIntoView: string | undefined;
105
- }>;
106
-
107
- /**
108
- * @category Capability
109
- */
110
- export const Layout = defineCapability<Layout>('dxos.org/app-framework/capability/layout');
111
-
112
- /**
113
- * @category Capability
114
- */
115
- export const Translations = defineCapability<Readonly<Resource[]>>('dxos.org/app-framework/capability/translations');
116
-
117
- /**
118
- * @category Capability
119
- */
120
- export const AppGraph = defineCapability<Readonly<Pick<GraphBuilder, 'graph' | 'explore'>>>(
121
- 'dxos.org/app-framework/capability/app-graph',
122
- );
113
+ readonly resolver: ServiceResolver$.ServiceResolver;
114
+ }
123
115
 
124
- /**
125
- * @category Capability
126
- */
127
- export const AppGraphBuilder = defineCapability<BuilderExtensions>(
128
- 'dxos.org/app-framework/capability/app-graph-builder',
129
- );
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
+ }
130
205
 
131
- /**
132
- * @category Capability
133
- */
134
- export const AppGraphSerializer = defineCapability<NodeSerializer[]>(
135
- 'dxos.org/app-framework/capability/app-graph-serializer',
136
- );
206
+ /**
207
+ * @category Capability
208
+ */
209
+ export const ProcessManagerRuntime = Capability$.make<ProcessManagerRuntime>(
210
+ 'org.dxos.app-framework.capability.process-manager-runtime',
211
+ );
137
212
 
138
- /**
139
- * @category Capability
140
- */
141
- export const SettingsStore = defineCapability<RootSettingsStore>('dxos.org/app-framework/capability/settings-store');
213
+ export type ManagedRuntime = ManagedRuntime$.ManagedRuntime<any, any>;
142
214
 
143
- // TODO(wittjosiah): The generics caused type inference issues for schemas when contributing settings.
144
- // export type Settings = Parameters<RootSettingsStore['createStore']>[0];
145
- // export type Settings<T extends SettingsValue = SettingsValue> = SettingsProps<T>;
146
- export type Settings = {
147
- prefix: string;
148
- schema: Schema.Schema.All;
149
- value?: Record<string, any>;
150
- };
215
+ /**
216
+ * @category Capability
217
+ */
218
+ export const ManagedRuntime = Capability$.make<ManagedRuntime>('org.dxos.app-framework.capability.managed-runtime');
151
219
 
152
- /**
153
- * @category Capability
154
- */
155
- export const Settings = defineCapability<Settings>('dxos.org/app-framework/capability/settings');
220
+ //
221
+ // Operation System Capabilities
222
+ //
156
223
 
157
- export type Metadata = Readonly<{
158
- id: string;
159
- metadata: Record<string, any>;
160
- }>;
224
+ export const OperationHandler = Capability$.make<OperationHandlerSet.OperationHandlerSet>(
225
+ 'org.dxos.app-framework.capability.operation-handler',
226
+ );
161
227
 
162
- /**
163
- * @category Capability
164
- */
165
- export const Metadata = defineCapability<Metadata>('dxos.org/app-framework/capability/metadata');
228
+ export type UndoMapping = UndoMapping$.UndoMapping;
166
229
 
167
- /**
168
- * @category Capability
169
- */
170
- export const Toolkit = defineCapability<GenericToolkit.GenericToolkit>(
171
- 'dxos.org/app-framework/capability/ai-toolkit',
172
- );
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');
173
235
 
174
- /**
175
- * @category Capability
176
- */
177
- export const BlueprintDefinition = defineCapability<Blueprint.Blueprint>(
178
- 'dxos.org/app-framework/capability/blueprint-definition',
179
- );
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;
180
241
 
181
- export type AiServiceLayer = Layer.Layer<AiService.AiService>;
182
- export const AiServiceLayer = defineCapability<AiServiceLayer>(
183
- 'dxos.org/app-framework/capability/ai-service-factory',
184
- );
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
+ );
185
249
 
186
- /**
187
- * Plugins can contribute them to provide model resolvers.
188
- */
189
- export const AiModelResolver = defineCapability<Layer.Layer<AiServiceRouter.AiModelResolver>>(
190
- 'dxos.org/app-framework/capability/ai-model-resolver',
191
- );
250
+ export type UndoRegistry = UndoRegistry$.UndoRegistry;
192
251
 
193
- /**
194
- * @category Capability
195
- */
196
- export const Functions = defineCapability<FunctionDefinition.Any[]>('dxos.org/app-framework/capability/functions');
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');
197
257
 
198
- export type FileUploader = (space: Space, file: File) => Promise<FileInfo | undefined>;
258
+ export type HistoryTracker = HistoryTracker$.HistoryTracker;
199
259
 
200
- /**
201
- * @category Capability
202
- */
203
- 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');
204
265
 
205
- export type AnchorSort = {
206
- key: string;
207
- sort: (anchorA: AnchoredTo.AnchoredTo, anchorB: AnchoredTo.AnchoredTo) => number;
208
- };
266
+ //
267
+ // Atom Capability Helpers
268
+ //
209
269
 
210
- /**
211
- * @category Capability
212
- */
213
- export const AnchorSort = defineCapability<AnchorSort>('dxos.org/app-framework/capability/anchor-sort');
214
- }
270
+ /**
271
+ * Get the current value of an atom capability.
272
+ * @example const settings = yield* Capabilities.getAtomValue(CommentCapabilities.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(CommentCapabilities.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(CommentCapabilities.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,6 @@
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 { Label } from './translations';
@@ -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.Union(Schema.String, Schema.Array(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]);