@dxos/app-framework 0.8.4-main.72ec0f3 → 0.8.4-main.765dc60934

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 (583) 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-HRFPP52W.mjs +35 -0
  6. package/dist/lib/browser/capability-HRFPP52W.mjs.map +7 -0
  7. package/dist/lib/browser/capability-VQ236TY5.mjs +38 -0
  8. package/dist/lib/browser/capability-VQ236TY5.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-23D4SJUE.mjs +42 -0
  10. package/dist/lib/browser/chunk-23D4SJUE.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-3JWJXGLK.mjs +79 -0
  12. package/dist/lib/browser/chunk-3JWJXGLK.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-45CHLTBV.mjs +34 -0
  14. package/dist/lib/browser/chunk-45CHLTBV.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-66IXTIVK.mjs +48 -0
  16. package/dist/lib/browser/chunk-66IXTIVK.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-6GZYCP73.mjs +422 -0
  18. package/dist/lib/browser/chunk-6GZYCP73.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-7VZJR2OA.mjs +581 -0
  20. package/dist/lib/browser/chunk-7VZJR2OA.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-FJ4765WW.mjs +8 -0
  22. package/dist/lib/browser/chunk-FJ4765WW.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-FO3IYSLV.mjs +68 -0
  24. package/dist/lib/browser/chunk-FO3IYSLV.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-G6Q2M2M5.mjs +218 -0
  26. package/dist/lib/browser/chunk-G6Q2M2M5.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-J43JDWAV.mjs +1445 -0
  28. package/dist/lib/browser/chunk-J43JDWAV.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  30. package/dist/lib/browser/chunk-WBHCSOBW.mjs +80 -0
  31. package/dist/lib/browser/chunk-WBHCSOBW.mjs.map +7 -0
  32. package/dist/lib/browser/chunk-XLYULXAO.mjs +469 -0
  33. package/dist/lib/browser/chunk-XLYULXAO.mjs.map +7 -0
  34. package/dist/lib/browser/chunk-ZGJAZSNE.mjs +142 -0
  35. package/dist/lib/browser/chunk-ZGJAZSNE.mjs.map +7 -0
  36. package/dist/lib/browser/cli/index.mjs +76 -0
  37. package/dist/lib/browser/cli/index.mjs.map +7 -0
  38. package/dist/lib/browser/common/activation-events.mjs +24 -0
  39. package/dist/lib/browser/common/capabilities.mjs +46 -0
  40. package/dist/lib/browser/core/activation-event.mjs +20 -0
  41. package/dist/lib/browser/core/capability.mjs +30 -0
  42. package/dist/lib/browser/core/capability.mjs.map +7 -0
  43. package/dist/lib/browser/core/plugin-manager.mjs +19 -0
  44. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  45. package/dist/lib/browser/core/plugin.mjs +39 -0
  46. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  47. package/dist/lib/browser/core/url-loader.mjs +24 -0
  48. package/dist/lib/browser/core/url-loader.mjs.map +7 -0
  49. package/dist/lib/browser/index.mjs +109 -121
  50. package/dist/lib/browser/index.mjs.map +4 -4
  51. package/dist/lib/browser/invoker-capability-CEL2L6GX.mjs +44 -0
  52. package/dist/lib/browser/invoker-capability-CEL2L6GX.mjs.map +7 -0
  53. package/dist/lib/browser/meta.json +1 -1
  54. package/dist/lib/browser/testing/index.mjs +229 -40
  55. package/dist/lib/browser/testing/index.mjs.map +4 -4
  56. package/dist/lib/browser/testing/react.mjs +78 -0
  57. package/dist/lib/browser/testing/react.mjs.map +7 -0
  58. package/dist/lib/browser/ui/index.mjs +48 -0
  59. package/dist/lib/browser/ui/index.mjs.map +7 -0
  60. package/dist/lib/node-esm/capability-GS3XJH74.mjs +39 -0
  61. package/dist/lib/node-esm/capability-GS3XJH74.mjs.map +7 -0
  62. package/dist/lib/node-esm/capability-I5P7ACFL.mjs +36 -0
  63. package/dist/lib/node-esm/capability-I5P7ACFL.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs +10 -0
  65. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-4RJL37GN.mjs +423 -0
  67. package/dist/lib/node-esm/chunk-4RJL37GN.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-6XW6LET6.mjs +35 -0
  69. package/dist/lib/node-esm/chunk-6XW6LET6.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-D347W3KO.mjs +143 -0
  71. package/dist/lib/node-esm/chunk-D347W3KO.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-DW45NFLW.mjs +1446 -0
  73. package/dist/lib/node-esm/chunk-DW45NFLW.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-EI4LYXFY.mjs +470 -0
  75. package/dist/lib/node-esm/chunk-EI4LYXFY.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  77. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-KIFOQXD4.mjs +219 -0
  79. package/dist/lib/node-esm/chunk-KIFOQXD4.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-SBS2YMPT.mjs +43 -0
  81. package/dist/lib/node-esm/chunk-SBS2YMPT.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-SDJ4B2LU.mjs +80 -0
  83. package/dist/lib/node-esm/chunk-SDJ4B2LU.mjs.map +7 -0
  84. package/dist/lib/node-esm/chunk-V24UWT36.mjs +582 -0
  85. package/dist/lib/node-esm/chunk-V24UWT36.mjs.map +7 -0
  86. package/dist/lib/node-esm/chunk-WFSRZKBP.mjs +81 -0
  87. package/dist/lib/node-esm/chunk-WFSRZKBP.mjs.map +7 -0
  88. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs +70 -0
  89. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-XOCUANHO.mjs +49 -0
  91. package/dist/lib/node-esm/chunk-XOCUANHO.mjs.map +7 -0
  92. package/dist/lib/node-esm/cli/index.mjs +77 -0
  93. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  94. package/dist/lib/node-esm/common/activation-events.mjs +25 -0
  95. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  96. package/dist/lib/node-esm/common/capabilities.mjs +47 -0
  97. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  98. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  99. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  100. package/dist/lib/node-esm/core/capability.mjs +31 -0
  101. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  102. package/dist/lib/node-esm/core/plugin-manager.mjs +20 -0
  103. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  104. package/dist/lib/node-esm/core/plugin.mjs +40 -0
  105. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  106. package/dist/lib/node-esm/core/url-loader.mjs +25 -0
  107. package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
  108. package/dist/lib/node-esm/index.mjs +109 -121
  109. package/dist/lib/node-esm/index.mjs.map +4 -4
  110. package/dist/lib/node-esm/invoker-capability-QKUKN2MF.mjs +45 -0
  111. package/dist/lib/node-esm/invoker-capability-QKUKN2MF.mjs.map +7 -0
  112. package/dist/lib/node-esm/meta.json +1 -1
  113. package/dist/lib/node-esm/testing/index.mjs +229 -40
  114. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  115. package/dist/lib/node-esm/testing/react.mjs +79 -0
  116. package/dist/lib/node-esm/testing/react.mjs.map +7 -0
  117. package/dist/lib/node-esm/ui/index.mjs +49 -0
  118. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  119. package/dist/plugin/node-esm/index.mjs +893 -0
  120. package/dist/plugin/node-esm/index.mjs.map +7 -0
  121. package/dist/plugin/node-esm/meta.json +1 -0
  122. package/dist/types/src/cli/cli.d.ts +39 -0
  123. package/dist/types/src/cli/cli.d.ts.map +1 -0
  124. package/dist/types/src/cli/index.d.ts +2 -0
  125. package/dist/types/src/cli/index.d.ts.map +1 -0
  126. package/dist/types/src/common/activation-events.d.ts +27 -0
  127. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  128. package/dist/types/src/common/annotations.d.ts +1 -0
  129. package/dist/types/src/common/annotations.d.ts.map +1 -0
  130. package/dist/types/src/common/capabilities.d.ts +110 -194
  131. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  132. package/dist/types/src/common/index.d.ts +4 -8
  133. package/dist/types/src/common/index.d.ts.map +1 -1
  134. package/dist/types/src/common/operations.d.ts +19 -0
  135. package/dist/types/src/common/operations.d.ts.map +1 -0
  136. package/dist/types/src/common/translations.d.ts +7 -7
  137. package/dist/types/src/common/translations.d.ts.map +1 -1
  138. package/dist/types/src/context.d.ts +5 -0
  139. package/dist/types/src/context.d.ts.map +1 -0
  140. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +11 -11
  141. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  142. package/dist/types/src/core/capability-manager.d.ts +48 -0
  143. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  144. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  145. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  146. package/dist/types/src/core/capability.d.ts +156 -0
  147. package/dist/types/src/core/capability.d.ts.map +1 -0
  148. package/dist/types/src/core/edge-registry-plugin-provider.d.ts +30 -0
  149. package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -0
  150. package/dist/types/src/core/index.d.ts +11 -4
  151. package/dist/types/src/core/index.d.ts.map +1 -1
  152. package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
  153. package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
  154. package/dist/types/src/core/plugin-manager.d.ts +298 -0
  155. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  156. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  157. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  158. package/dist/types/src/core/plugin-manifest.d.ts +101 -0
  159. package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
  160. package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
  161. package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
  162. package/dist/types/src/core/plugin.d.ts +260 -39
  163. package/dist/types/src/core/plugin.d.ts.map +1 -1
  164. package/dist/types/src/core/registry.d.ts +107 -0
  165. package/dist/types/src/core/registry.d.ts.map +1 -0
  166. package/dist/types/src/core/url-loader.d.ts +127 -0
  167. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  168. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  169. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  170. package/dist/types/src/helpers.d.ts.map +1 -1
  171. package/dist/types/src/index.d.ts +3 -2
  172. package/dist/types/src/index.d.ts.map +1 -1
  173. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
  174. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
  175. package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
  176. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
  177. package/dist/types/src/plugin-operation/history/errors.d.ts +32 -0
  178. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
  179. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
  180. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
  181. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
  182. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
  183. package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
  184. package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
  185. package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
  186. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
  187. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +101 -0
  188. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
  189. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
  190. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
  191. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
  192. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
  193. package/dist/types/src/plugin-operation/index.d.ts +3 -0
  194. package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
  195. package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
  196. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
  197. package/dist/types/src/plugin-operation/meta.d.ts +3 -0
  198. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
  199. package/dist/types/src/plugin-operation/testing.d.ts +59 -0
  200. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
  201. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
  202. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
  203. package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
  204. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
  205. package/dist/types/src/plugin-runtime/index.d.ts +2 -0
  206. package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
  207. package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
  208. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
  209. package/dist/types/src/testing/harness.d.ts +67 -0
  210. package/dist/types/src/testing/harness.d.ts.map +1 -0
  211. package/dist/types/src/testing/index.d.ts +2 -0
  212. package/dist/types/src/testing/index.d.ts.map +1 -1
  213. package/dist/types/src/testing/react.d.ts +27 -0
  214. package/dist/types/src/testing/react.d.ts.map +1 -0
  215. package/dist/types/src/testing/react.test.d.ts +2 -0
  216. package/dist/types/src/testing/react.test.d.ts.map +1 -0
  217. package/dist/types/src/testing/service.d.ts +8 -0
  218. package/dist/types/src/testing/service.d.ts.map +1 -0
  219. package/dist/types/src/testing/withPluginManager.d.ts +4 -4
  220. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  221. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  222. package/dist/types/src/ui/components/App/App.d.ts +9 -0
  223. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  224. package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
  225. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  226. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  227. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  228. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts +64 -0
  229. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts.map +1 -0
  230. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts +19 -0
  231. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts.map +1 -0
  232. package/dist/types/src/ui/components/Placeholder/index.d.ts +2 -0
  233. package/dist/types/src/ui/components/Placeholder/index.d.ts.map +1 -0
  234. package/dist/types/src/{react/Surface.stories.d.ts → ui/components/PluginManager/PluginManagerContext.stories.d.ts} +2 -3
  235. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  236. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
  237. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  238. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  239. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  240. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +24 -0
  241. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  242. package/dist/types/src/{react/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  243. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  244. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
  245. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  246. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  247. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  248. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  249. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  250. package/dist/types/src/ui/components/Surface/index.d.ts +36 -0
  251. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  252. package/dist/types/src/ui/components/Surface/types.d.ts +197 -0
  253. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  254. package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
  255. package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
  256. package/dist/types/src/ui/components/index.d.ts +5 -0
  257. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  258. package/dist/types/src/ui/hooks/index.d.ts +6 -0
  259. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  260. package/dist/types/src/ui/hooks/useApp.d.ts +89 -0
  261. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  262. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  263. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  264. package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
  265. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  266. package/dist/types/src/{react → ui/hooks}/useLoading.d.ts +1 -2
  267. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  268. package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
  269. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  270. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  271. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  272. package/dist/types/src/ui/index.d.ts +3 -0
  273. package/dist/types/src/ui/index.d.ts.map +1 -0
  274. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts +34 -0
  275. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts.map +1 -0
  276. package/dist/types/src/vite-plugin/boot-loader/index.d.ts +2 -0
  277. package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -0
  278. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts +51 -0
  279. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts.map +1 -0
  280. package/dist/types/src/vite-plugin/composer/index.d.ts +34 -0
  281. package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -0
  282. package/dist/types/src/vite-plugin/import-map/index.d.ts +28 -0
  283. package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -0
  284. package/dist/types/src/vite-plugin/index.d.ts +5 -0
  285. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  286. package/dist/types/src/vite-plugin/manifest.d.ts +41 -0
  287. package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
  288. package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
  289. package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
  290. package/dist/types/src/vite-plugin/packages.d.ts +13 -0
  291. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  292. package/dist/types/tsconfig.tsbuildinfo +1 -1
  293. package/moon.yml +25 -6
  294. package/package.json +115 -59
  295. package/src/cli/cli.ts +107 -0
  296. package/src/{playground/debug → cli}/index.ts +1 -1
  297. package/src/common/activation-events.ts +44 -0
  298. package/src/{playground/logger/index.ts → common/annotations.ts} +0 -2
  299. package/src/common/capabilities.ts +169 -210
  300. package/src/common/index.ts +4 -8
  301. package/src/common/operations.ts +35 -0
  302. package/src/common/translations.ts +17 -9
  303. package/src/context.ts +9 -0
  304. package/src/core/{events.ts → activation-event.ts} +10 -7
  305. package/src/core/capability-manager.test.ts +151 -0
  306. package/src/core/capability-manager.ts +192 -0
  307. package/src/core/capability.ts +247 -0
  308. package/src/core/edge-registry-plugin-provider.ts +92 -0
  309. package/src/core/index.ts +11 -4
  310. package/src/core/plugin-asset-cache.ts +60 -0
  311. package/src/core/plugin-manager.test.ts +1899 -0
  312. package/src/core/plugin-manager.ts +1685 -0
  313. package/src/core/plugin-manifest.test.ts +75 -0
  314. package/src/core/plugin-manifest.ts +134 -0
  315. package/src/core/plugin.ts +395 -45
  316. package/src/core/registry.ts +163 -0
  317. package/src/core/url-loader.test.ts +221 -0
  318. package/src/core/url-loader.ts +388 -0
  319. package/src/index.ts +3 -2
  320. package/src/plugin-operation/OperationPlugin.ts +24 -0
  321. package/src/plugin-operation/history/capability.ts +36 -0
  322. package/src/plugin-operation/history/errors.ts +7 -0
  323. package/src/plugin-operation/history/history-tracker.test.ts +374 -0
  324. package/src/plugin-operation/history/history-tracker.ts +128 -0
  325. package/src/plugin-operation/history/index.ts +9 -0
  326. package/src/plugin-operation/history/types.ts +17 -0
  327. package/src/plugin-operation/history/undo-mapping.ts +135 -0
  328. package/src/plugin-operation/history/undo-registry.test.ts +72 -0
  329. package/src/plugin-operation/history/undo-registry.ts +54 -0
  330. package/src/plugin-operation/index.ts +6 -0
  331. package/src/plugin-operation/invoker-capability.ts +55 -0
  332. package/src/plugin-operation/meta.ts +12 -0
  333. package/src/plugin-operation/testing.ts +155 -0
  334. package/src/plugin-runtime/RuntimePlugin.ts +19 -0
  335. package/src/plugin-runtime/capability.ts +53 -0
  336. package/src/plugin-runtime/index.ts +5 -0
  337. package/src/plugin-runtime/meta.ts +12 -0
  338. package/src/testing/harness.ts +229 -0
  339. package/src/testing/index.ts +2 -0
  340. package/src/testing/react.test.tsx +48 -0
  341. package/src/testing/react.tsx +113 -0
  342. package/src/testing/service.ts +52 -0
  343. package/src/testing/withPluginManager.stories.tsx +8 -9
  344. package/src/testing/withPluginManager.tsx +61 -38
  345. package/src/ui/components/App/App.stories.tsx +88 -0
  346. package/src/ui/components/App/App.tsx +81 -0
  347. package/src/{playground/layout → ui/components/App}/index.ts +1 -1
  348. package/src/ui/components/Placeholder/Placeholder.stories.tsx +77 -0
  349. package/src/ui/components/Placeholder/Placeholder.tsx +155 -0
  350. package/src/ui/components/Placeholder/index.ts +5 -0
  351. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +185 -0
  352. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
  353. package/src/ui/components/PluginManager/index.ts +5 -0
  354. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +144 -0
  355. package/src/ui/components/Surface/SurfaceComponent.tsx +303 -0
  356. package/src/ui/components/Surface/SurfaceInfo.tsx +106 -0
  357. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  358. package/src/ui/components/Surface/context.ts +12 -0
  359. package/src/ui/components/Surface/index.ts +54 -0
  360. package/src/ui/components/Surface/types.test.ts +126 -0
  361. package/src/ui/components/Surface/types.ts +269 -0
  362. package/src/ui/components/index.ts +8 -0
  363. package/src/ui/hooks/index.ts +9 -0
  364. package/src/ui/hooks/useApp.test.tsx +159 -0
  365. package/src/ui/hooks/useApp.tsx +424 -0
  366. package/src/ui/hooks/useCapabilities.ts +67 -0
  367. package/src/{react → ui/hooks}/useLoading.tsx +16 -10
  368. package/src/ui/hooks/useSettingsState.ts +26 -0
  369. package/src/ui/hooks/useSurface.ts +13 -0
  370. package/src/ui/index.ts +6 -0
  371. package/src/vite-plugin/boot-loader/BootLoader.stories.tsx +270 -0
  372. package/src/vite-plugin/boot-loader/boot-loader.css +321 -0
  373. package/src/vite-plugin/boot-loader/boot-loader.js +325 -0
  374. package/src/vite-plugin/boot-loader/index.ts +5 -0
  375. package/src/vite-plugin/boot-loader/loader.ts +123 -0
  376. package/src/vite-plugin/composer/index.ts +306 -0
  377. package/src/vite-plugin/import-map/index.ts +527 -0
  378. package/src/vite-plugin/index.ts +10 -0
  379. package/src/vite-plugin/manifest.test.ts +46 -0
  380. package/src/vite-plugin/manifest.ts +57 -0
  381. package/src/vite-plugin/packages.ts +187 -0
  382. package/tsconfig.json +21 -21
  383. package/tsconfig.node.json +2 -4
  384. package/typedoc.json +2 -4
  385. package/vitest.config.ts +1 -1
  386. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  387. package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
  388. package/dist/lib/browser/app-graph-builder-OIEZZC45.mjs +0 -138
  389. package/dist/lib/browser/app-graph-builder-OIEZZC45.mjs.map +0 -7
  390. package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
  391. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
  392. package/dist/lib/browser/chunk-VFUKEZIN.mjs +0 -483
  393. package/dist/lib/browser/chunk-VFUKEZIN.mjs.map +0 -7
  394. package/dist/lib/browser/chunk-WPW5VVAX.mjs +0 -1651
  395. package/dist/lib/browser/chunk-WPW5VVAX.mjs.map +0 -7
  396. package/dist/lib/browser/intent-dispatcher-LZ4AE66E.mjs +0 -11
  397. package/dist/lib/browser/intent-resolver-QVCKRX6G.mjs +0 -39
  398. package/dist/lib/browser/intent-resolver-QVCKRX6G.mjs.map +0 -7
  399. package/dist/lib/browser/react/index.mjs +0 -34
  400. package/dist/lib/browser/store-CNPHOYTJ.mjs +0 -30
  401. package/dist/lib/browser/store-CNPHOYTJ.mjs.map +0 -7
  402. package/dist/lib/node-esm/app-graph-builder-EBU4NVWD.mjs +0 -139
  403. package/dist/lib/node-esm/app-graph-builder-EBU4NVWD.mjs.map +0 -7
  404. package/dist/lib/node-esm/chunk-IJOHO66N.mjs +0 -484
  405. package/dist/lib/node-esm/chunk-IJOHO66N.mjs.map +0 -7
  406. package/dist/lib/node-esm/chunk-XJZGUJ3H.mjs +0 -1653
  407. package/dist/lib/node-esm/chunk-XJZGUJ3H.mjs.map +0 -7
  408. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
  409. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
  410. package/dist/lib/node-esm/intent-dispatcher-MGOJ3CHD.mjs +0 -12
  411. package/dist/lib/node-esm/intent-resolver-URF3HN3G.mjs +0 -40
  412. package/dist/lib/node-esm/intent-resolver-URF3HN3G.mjs.map +0 -7
  413. package/dist/lib/node-esm/react/index.mjs +0 -35
  414. package/dist/lib/node-esm/store-RK5B4XEL.mjs +0 -31
  415. package/dist/lib/node-esm/store-RK5B4XEL.mjs.map +0 -7
  416. package/dist/types/src/common/collaboration.d.ts +0 -20
  417. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  418. package/dist/types/src/common/events.d.ts +0 -52
  419. package/dist/types/src/common/events.d.ts.map +0 -1
  420. package/dist/types/src/common/file.d.ts +0 -14
  421. package/dist/types/src/common/file.d.ts.map +0 -1
  422. package/dist/types/src/common/graph.d.ts +0 -21
  423. package/dist/types/src/common/graph.d.ts.map +0 -1
  424. package/dist/types/src/common/layout.d.ts +0 -279
  425. package/dist/types/src/common/layout.d.ts.map +0 -1
  426. package/dist/types/src/common/surface.d.ts +0 -68
  427. package/dist/types/src/common/surface.d.ts.map +0 -1
  428. package/dist/types/src/core/capabilities.d.ts +0 -117
  429. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  430. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  431. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  432. package/dist/types/src/core/events.d.ts.map +0 -1
  433. package/dist/types/src/core/manager.d.ts +0 -126
  434. package/dist/types/src/core/manager.d.ts.map +0 -1
  435. package/dist/types/src/core/manager.test.d.ts +0 -2
  436. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  437. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  438. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  439. package/dist/types/src/playground/debug/index.d.ts +0 -2
  440. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  441. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  442. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  443. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  444. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  445. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  446. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  447. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  448. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  449. package/dist/types/src/playground/generator/index.d.ts +0 -3
  450. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  451. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  452. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  453. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  454. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  455. package/dist/types/src/playground/layout/index.d.ts +0 -2
  456. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  457. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  458. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  459. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  460. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  461. package/dist/types/src/playground/logger/index.d.ts +0 -2
  462. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  463. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  464. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  465. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  466. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  467. package/dist/types/src/playground/playground.stories.d.ts +0 -11
  468. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  469. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  470. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  471. package/dist/types/src/plugin-intent/actions.d.ts +0 -36
  472. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  473. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  474. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  475. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  476. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  477. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  478. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  479. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  480. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  481. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  482. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  483. package/dist/types/src/plugin-intent/meta.d.ts +0 -3
  484. package/dist/types/src/plugin-intent/meta.d.ts.map +0 -1
  485. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
  486. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  487. package/dist/types/src/plugin-settings/actions.d.ts +0 -25
  488. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  489. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
  490. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  491. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  492. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  493. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  494. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  495. package/dist/types/src/plugin-settings/meta.d.ts +0 -3
  496. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  497. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  498. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  499. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  500. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  501. package/dist/types/src/react/App.d.ts +0 -10
  502. package/dist/types/src/react/App.d.ts.map +0 -1
  503. package/dist/types/src/react/App.stories.d.ts.map +0 -1
  504. package/dist/types/src/react/DefaultFallback.d.ts +0 -8
  505. package/dist/types/src/react/DefaultFallback.d.ts.map +0 -1
  506. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  507. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  508. package/dist/types/src/react/IntentContext.d.ts +0 -8
  509. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  510. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  511. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  512. package/dist/types/src/react/Surface.d.ts +0 -12
  513. package/dist/types/src/react/Surface.d.ts.map +0 -1
  514. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  515. package/dist/types/src/react/common.d.ts +0 -13
  516. package/dist/types/src/react/common.d.ts.map +0 -1
  517. package/dist/types/src/react/index.d.ts +0 -9
  518. package/dist/types/src/react/index.d.ts.map +0 -1
  519. package/dist/types/src/react/types.d.ts +0 -14
  520. package/dist/types/src/react/types.d.ts.map +0 -1
  521. package/dist/types/src/react/useApp.d.ts +0 -44
  522. package/dist/types/src/react/useApp.d.ts.map +0 -1
  523. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  524. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  525. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  526. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  527. package/dist/types/src/react/useLoading.d.ts.map +0 -1
  528. package/src/common/collaboration.ts +0 -18
  529. package/src/common/events.ts +0 -79
  530. package/src/common/file.ts +0 -22
  531. package/src/common/graph.ts +0 -30
  532. package/src/common/layout.ts +0 -277
  533. package/src/common/surface.ts +0 -88
  534. package/src/core/capabilities.test.ts +0 -136
  535. package/src/core/capabilities.ts +0 -263
  536. package/src/core/manager.test.ts +0 -516
  537. package/src/core/manager.ts +0 -604
  538. package/src/playground/debug/Debug.tsx +0 -39
  539. package/src/playground/debug/plugin.ts +0 -16
  540. package/src/playground/generator/Main.tsx +0 -70
  541. package/src/playground/generator/Toolbar.tsx +0 -47
  542. package/src/playground/generator/generator.ts +0 -48
  543. package/src/playground/generator/index.ts +0 -6
  544. package/src/playground/generator/plugin.ts +0 -22
  545. package/src/playground/layout/Layout.tsx +0 -33
  546. package/src/playground/layout/plugin.ts +0 -18
  547. package/src/playground/logger/Toolbar.tsx +0 -30
  548. package/src/playground/logger/plugin.ts +0 -41
  549. package/src/playground/logger/schema.ts +0 -12
  550. package/src/playground/playground.stories.tsx +0 -46
  551. package/src/plugin-intent/IntentPlugin.ts +0 -20
  552. package/src/plugin-intent/actions.ts +0 -31
  553. package/src/plugin-intent/errors.ts +0 -40
  554. package/src/plugin-intent/index.ts +0 -9
  555. package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
  556. package/src/plugin-intent/intent-dispatcher.ts +0 -342
  557. package/src/plugin-intent/intent.ts +0 -154
  558. package/src/plugin-intent/meta.ts +0 -10
  559. package/src/plugin-settings/SettingsPlugin.ts +0 -34
  560. package/src/plugin-settings/actions.ts +0 -25
  561. package/src/plugin-settings/app-graph-builder.ts +0 -160
  562. package/src/plugin-settings/index.ts +0 -6
  563. package/src/plugin-settings/intent-resolver.ts +0 -35
  564. package/src/plugin-settings/meta.ts +0 -10
  565. package/src/plugin-settings/store.ts +0 -33
  566. package/src/plugin-settings/translations.ts +0 -19
  567. package/src/react/App.stories.tsx +0 -33
  568. package/src/react/App.tsx +0 -59
  569. package/src/react/DefaultFallback.tsx +0 -26
  570. package/src/react/ErrorBoundary.tsx +0 -56
  571. package/src/react/IntentContext.tsx +0 -35
  572. package/src/react/Surface.stories.tsx +0 -125
  573. package/src/react/Surface.tsx +0 -109
  574. package/src/react/common.ts +0 -13
  575. package/src/react/index.ts +0 -14
  576. package/src/react/types.ts +0 -37
  577. package/src/react/useApp.tsx +0 -165
  578. package/src/react/useCapabilities.ts +0 -31
  579. package/src/react/useIntentResolver.ts +0 -22
  580. /package/dist/lib/browser/{intent-dispatcher-LZ4AE66E.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  581. /package/dist/lib/browser/{react/index.mjs.map → common/activation-events.mjs.map} +0 -0
  582. /package/dist/lib/{node-esm/intent-dispatcher-MGOJ3CHD.mjs.map → browser/common/capabilities.mjs.map} +0 -0
  583. /package/dist/lib/{node-esm/react/index.mjs.map → browser/core/activation-event.mjs.map} +0 -0
@@ -2,213 +2,172 @@
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 {
30
- /**
31
- * @category Capability
32
- */
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
- );
123
-
124
- /**
125
- * @category Capability
126
- */
127
- export const AppGraphBuilder = defineCapability<BuilderExtensions>(
128
- 'dxos.org/app-framework/capability/app-graph-builder',
129
- );
130
-
131
- /**
132
- * @category Capability
133
- */
134
- export const AppGraphSerializer = defineCapability<NodeSerializer[]>(
135
- 'dxos.org/app-framework/capability/app-graph-serializer',
136
- );
137
-
138
- /**
139
- * @category Capability
140
- */
141
- export const SettingsStore = defineCapability<RootSettingsStore>('dxos.org/app-framework/capability/settings-store');
142
-
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
- };
151
-
152
- /**
153
- * @category Capability
154
- */
155
- export const Settings = defineCapability<Settings>('dxos.org/app-framework/capability/settings');
156
-
157
- export type Metadata = Readonly<{
158
- id: string;
159
- metadata: Record<string, any>;
160
- }>;
161
-
162
- /**
163
- * @category Capability
164
- */
165
- export const Metadata = defineCapability<Metadata>('dxos.org/app-framework/capability/metadata');
166
-
167
- /**
168
- * @category Capability
169
- */
170
- export const Toolkit = defineCapability<GenericToolkit.GenericToolkit>(
171
- 'dxos.org/app-framework/capability/ai-toolkit',
172
- );
173
-
174
- /**
175
- * @category Capability
176
- */
177
- export const BlueprintDefinition = defineCapability<Blueprint.Blueprint>(
178
- 'dxos.org/app-framework/capability/blueprint-definition',
179
- );
180
-
181
- export type AiServiceLayer = Layer.Layer<AiService.AiService>;
182
- export const AiServiceLayer = defineCapability<AiServiceLayer>(
183
- 'dxos.org/app-framework/capability/ai-service-factory',
184
- );
185
-
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
- );
192
-
193
- /**
194
- * @category Capability
195
- */
196
- export const Functions = defineCapability<FunctionDefinition.Any[]>('dxos.org/app-framework/capability/functions');
197
-
198
- export type FileUploader = (space: Space, file: File) => Promise<FileInfo | undefined>;
199
-
200
- /**
201
- * @category Capability
202
- */
203
- export const FileUploader = defineCapability<FileUploader>('dxos.org/app-framework/capability/file-uploader');
204
-
205
- export type AnchorSort = {
206
- key: string;
207
- sort: (anchorA: AnchoredTo.AnchoredTo, anchorB: AnchoredTo.AnchoredTo) => number;
208
- };
209
-
210
- /**
211
- * @category Capability
212
- */
213
- export const AnchorSort = defineCapability<AnchorSort>('dxos.org/app-framework/capability/anchor-sort');
214
- }
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 Layer$ from 'effect/Layer';
9
+ import type * as ManagedRuntime$ from 'effect/ManagedRuntime';
10
+ import type { FC, PropsWithChildren } from 'react';
11
+
12
+ import type { OperationHandlerSet } from '@dxos/compute';
13
+ import { OperationInvoker as OperationInvoker$ } from '@dxos/operation';
14
+
15
+ import { Capability as Capability$, type PluginManager as PluginManager$ } from '../core';
16
+ import type {
17
+ HistoryTracker as HistoryTracker$,
18
+ UndoMapping as UndoMapping$,
19
+ UndoRegistry as UndoRegistry$,
20
+ } from '../plugin-operation';
21
+ import type { Surface } from '../ui';
22
+
23
+ /**
24
+ * Null capability.
25
+ * @category Capability
26
+ */
27
+ export const Null = Capability$.make<null>('org.dxos.app-framework.capability.null');
28
+
29
+ /**
30
+ * @category Capability
31
+ */
32
+ export const PluginManager = Capability$.make<PluginManager$.PluginManager>(
33
+ 'org.dxos.app-framework.capability.plugin-manager',
34
+ );
35
+
36
+ /**
37
+ * @category Capability
38
+ */
39
+ export const AtomRegistry = Capability$.make<Registry.Registry>('org.dxos.app-framework.capability.atom-registry');
40
+
41
+ export type ReactContext = Readonly<{
42
+ id: string;
43
+ dependsOn?: string[];
44
+ context: FC<PropsWithChildren>;
45
+ }>;
46
+
47
+ /**
48
+ * @category Capability
49
+ */
50
+ export const ReactContext = Capability$.make<ReactContext>('org.dxos.app-framework.capability.react-context');
51
+
52
+ export type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;
53
+
54
+ /**
55
+ * @category Capability
56
+ */
57
+ export const ReactRoot = Capability$.make<ReactRoot>('org.dxos.app-framework.capability.react-root');
58
+
59
+ /**
60
+ * Surface definitions that can be either React components or Web Components.
61
+ */
62
+ export type ReactSurface = Surface.Definition | readonly Surface.Definition[];
63
+
64
+ /**
65
+ * @category Capability
66
+ */
67
+ export const ReactSurface = Capability$.make<ReactSurface>('org.dxos.app-framework.common.react-surface');
68
+
69
+ export type AnyCommand = Command$.Command<any, any, any, any>;
70
+
71
+ /**
72
+ * @category Capability
73
+ */
74
+ export const Command = Capability$.make<AnyCommand>('org.dxos.app-framework.capability.command');
75
+
76
+ /**
77
+ * @category Capability
78
+ */
79
+ export const Layer = Capability$.make<Layer$.Layer<any, any, any>>('org.dxos.app-framework.capability.layer');
80
+
81
+ export type ManagedRuntime = ManagedRuntime$.ManagedRuntime<any, any>;
82
+
83
+ /**
84
+ * @category Capability
85
+ */
86
+ export const ManagedRuntime = Capability$.make<ManagedRuntime>('org.dxos.app-framework.capability.managed-runtime');
87
+
88
+ //
89
+ // Operation System Capabilities
90
+ //
91
+
92
+ export const OperationHandler = Capability$.make<OperationHandlerSet.OperationHandlerSet>(
93
+ 'org.dxos.app-framework.capability.operation-handler',
94
+ );
95
+
96
+ export type UndoMapping = UndoMapping$.UndoMapping;
97
+
98
+ /**
99
+ * Undo mapping registration - contributed by plugins.
100
+ * @category Capability
101
+ */
102
+ export const UndoMapping = Capability$.make<UndoMapping[]>('org.dxos.app-framework.capability.undo-mapping');
103
+
104
+ export type OperationInvoker = OperationInvoker$.OperationInvoker;
105
+
106
+ /**
107
+ * Operation invoker - provided by OperationPlugin.
108
+ * @category Capability
109
+ */
110
+ export const OperationInvoker = Capability$.make<OperationInvoker>(
111
+ 'org.dxos.app-framework.capability.operation-invoker',
112
+ );
113
+
114
+ export type UndoRegistry = UndoRegistry$.UndoRegistry;
115
+
116
+ /**
117
+ * Undo registry - provided by OperationPlugin.
118
+ * @category Capability
119
+ */
120
+ export const UndoRegistry = Capability$.make<UndoRegistry>('org.dxos.app-framework.capability.undo-registry');
121
+
122
+ export type HistoryTracker = HistoryTracker$.HistoryTracker;
123
+
124
+ /**
125
+ * History tracker - provided by OperationPlugin.
126
+ * @category Capability
127
+ */
128
+ export const HistoryTracker = Capability$.make<HistoryTracker>('org.dxos.app-framework.capability.history-tracker');
129
+
130
+ //
131
+ // Atom Capability Helpers
132
+ //
133
+
134
+ /**
135
+ * Get the current value of an atom capability.
136
+ * @example const settings = yield* Capabilities.getAtomValue(ThreadCapabilities.Settings);
137
+ */
138
+ export const getAtomValue = <T>(
139
+ atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,
140
+ ): Effect.Effect<T, Error, Capability$.Service> =>
141
+ Effect.gen(function* () {
142
+ const registry = yield* Capability$.get(AtomRegistry);
143
+ const atom = yield* Capability$.get(atomCapability);
144
+ return registry.get(atom);
145
+ });
146
+
147
+ /**
148
+ * Update an atom capability value (requires writable atom).
149
+ * @example yield* Capabilities.updateAtomValue(ThreadCapabilities.Settings, (s) => ({ ...s, foo: true }));
150
+ */
151
+ export const updateAtomValue = <T>(
152
+ atomCapability: Capability$.InterfaceDef<Atom.Writable<T>>,
153
+ fn: (current: T) => T,
154
+ ): Effect.Effect<void, Error, Capability$.Service> =>
155
+ Effect.gen(function* () {
156
+ const registry = yield* Capability$.get(AtomRegistry);
157
+ const atom = yield* Capability$.get(atomCapability);
158
+ registry.set(atom, fn(registry.get(atom)));
159
+ });
160
+
161
+ /**
162
+ * Subscribe to an atom capability.
163
+ * @example const unsubscribe = yield* Capabilities.subscribeAtom(ThreadCapabilities.Settings, (value) => ...);
164
+ */
165
+ export const subscribeAtom = <T>(
166
+ atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,
167
+ callback: (value: T) => void,
168
+ ): Effect.Effect<() => void, Error, Capability$.Service> =>
169
+ Effect.gen(function* () {
170
+ const registry = yield* Capability$.get(AtomRegistry);
171
+ const atom = yield* Capability$.get(atomCapability);
172
+ return registry.subscribe(atom, () => callback(registry.get(atom)));
173
+ });
@@ -2,11 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export * from './capabilities';
6
- export * from './collaboration';
7
- export * from './events';
8
- export * from './file';
9
- export * from './graph';
10
- export * from './layout';
11
- export * from './surface';
12
- export * from './translations';
5
+ export * as Capabilities from './capabilities';
6
+ export * as ActivationEvents from './activation-events';
7
+ export { UndoOperation } from './operations';
8
+ export { Label } from './translations';
@@ -0,0 +1,35 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { Operation } from '@dxos/compute';
8
+
9
+ import { Capability } from '../core';
10
+ import { Label } from './translations';
11
+
12
+ const UNDO_NAMESPACE = 'org.dxos.app-framework.undo';
13
+
14
+ /**
15
+ * Operations related to undo/history functionality.
16
+ */
17
+ export namespace UndoOperation {
18
+ /**
19
+ * Show an undo toast notification.
20
+ * Fired by HistoryTracker when an undoable operation is tracked.
21
+ */
22
+ export const ShowUndo = Operation.make({
23
+ meta: {
24
+ key: `${UNDO_NAMESPACE}.operation.show-undo`,
25
+ name: 'Show Undo',
26
+ description: 'Show an undo toast notification.',
27
+ },
28
+ executionMode: 'sync',
29
+ services: [Capability.Service],
30
+ input: Schema.Struct({
31
+ message: Schema.optional(Label.annotations({ description: 'The message to display in the undo toast.' })),
32
+ }),
33
+ output: Schema.Void,
34
+ });
35
+ }
@@ -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]);