@dxos/app-framework 0.8.4-main.f9ba587 → 0.8.4-main.fffef41

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 (393) hide show
  1. package/.storybook/main.mts +11 -0
  2. package/.storybook/preview.mts +8 -0
  3. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  4. package/.swc/plugins/{v7_linux_x86_64_13.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429 → linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7} +0 -0
  5. package/dist/lib/browser/{app-graph-builder-BGGXLD6T.mjs → app-graph-builder-OIEZZC45.mjs} +32 -31
  6. package/dist/lib/browser/app-graph-builder-OIEZZC45.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-DHZB7HG7.mjs → chunk-6XKO24JP.mjs} +254 -184
  8. package/dist/lib/browser/chunk-6XKO24JP.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-ORWHM7CO.mjs → chunk-SCPE4ZO2.mjs} +11 -8
  10. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-2636QSIK.mjs → chunk-WPW5VVAX.mjs} +399 -266
  12. package/dist/lib/browser/chunk-WPW5VVAX.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +20 -56
  14. package/dist/lib/browser/index.mjs.map +3 -3
  15. package/dist/lib/browser/{intent-dispatcher-TWKB22NI.mjs → intent-dispatcher-LZ4AE66E.mjs} +2 -2
  16. package/dist/lib/browser/{intent-resolver-O67UANYP.mjs → intent-resolver-QVCKRX6G.mjs} +7 -7
  17. package/dist/lib/browser/intent-resolver-QVCKRX6G.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/react/index.mjs +34 -0
  20. package/dist/lib/browser/{store-LFKDWHUQ.mjs → store-CNPHOYTJ.mjs} +5 -5
  21. package/dist/lib/browser/store-CNPHOYTJ.mjs.map +7 -0
  22. package/dist/lib/browser/testing/index.mjs +17 -21
  23. package/dist/lib/browser/testing/index.mjs.map +3 -3
  24. package/dist/lib/node-esm/{app-graph-builder-QHIJUYYW.mjs → app-graph-builder-EBU4NVWD.mjs} +32 -31
  25. package/dist/lib/node-esm/app-graph-builder-EBU4NVWD.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-NJAFK626.mjs → chunk-3UPX5OIS.mjs} +254 -184
  27. package/dist/lib/node-esm/chunk-3UPX5OIS.mjs.map +7 -0
  28. package/dist/lib/node-esm/{chunk-VSKRV3NW.mjs → chunk-XJZGUJ3H.mjs} +399 -266
  29. package/dist/lib/node-esm/chunk-XJZGUJ3H.mjs.map +7 -0
  30. package/dist/lib/node-esm/{chunk-UMZQERLE.mjs → chunk-ZX63QUGE.mjs} +11 -8
  31. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +7 -0
  32. package/dist/lib/node-esm/index.mjs +20 -56
  33. package/dist/lib/node-esm/index.mjs.map +3 -3
  34. package/dist/lib/node-esm/{intent-dispatcher-5PRM3KGH.mjs → intent-dispatcher-MGOJ3CHD.mjs} +2 -2
  35. package/dist/lib/node-esm/{intent-resolver-K3D4BXQQ.mjs → intent-resolver-URF3HN3G.mjs} +7 -7
  36. package/dist/lib/node-esm/intent-resolver-URF3HN3G.mjs.map +7 -0
  37. package/dist/lib/node-esm/meta.json +1 -1
  38. package/dist/lib/node-esm/react/index.mjs +35 -0
  39. package/dist/lib/node-esm/{store-53XDUBMD.mjs → store-RK5B4XEL.mjs} +5 -5
  40. package/dist/lib/node-esm/store-RK5B4XEL.mjs.map +7 -0
  41. package/dist/lib/node-esm/testing/index.mjs +17 -21
  42. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  43. package/dist/types/src/common/capabilities.d.ts +111 -38
  44. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  45. package/dist/types/src/common/collaboration.d.ts +10 -9
  46. package/dist/types/src/common/collaboration.d.ts.map +1 -1
  47. package/dist/types/src/common/events.d.ts.map +1 -1
  48. package/dist/types/src/common/file.d.ts +1 -1
  49. package/dist/types/src/common/file.d.ts.map +1 -1
  50. package/dist/types/src/common/layout.d.ts +1 -3
  51. package/dist/types/src/common/layout.d.ts.map +1 -1
  52. package/dist/types/src/common/surface.d.ts +19 -16
  53. package/dist/types/src/common/surface.d.ts.map +1 -1
  54. package/dist/types/src/common/translations.d.ts +1 -1
  55. package/dist/types/src/common/translations.d.ts.map +1 -1
  56. package/dist/types/src/core/capabilities.d.ts +19 -16
  57. package/dist/types/src/core/capabilities.d.ts.map +1 -1
  58. package/dist/types/src/core/manager.d.ts +7 -3
  59. package/dist/types/src/core/manager.d.ts.map +1 -1
  60. package/dist/types/src/core/plugin.d.ts +8 -1
  61. package/dist/types/src/core/plugin.d.ts.map +1 -1
  62. package/dist/types/src/index.d.ts +0 -2
  63. package/dist/types/src/index.d.ts.map +1 -1
  64. package/dist/types/src/playground/debug/Debug.d.ts +1 -1
  65. package/dist/types/src/playground/debug/plugin.d.ts +1 -1
  66. package/dist/types/src/playground/debug/plugin.d.ts.map +1 -1
  67. package/dist/types/src/playground/generator/Main.d.ts +1 -1
  68. package/dist/types/src/playground/generator/Main.d.ts.map +1 -1
  69. package/dist/types/src/playground/generator/Toolbar.d.ts +1 -1
  70. package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -1
  71. package/dist/types/src/playground/generator/generator.d.ts +1 -1
  72. package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
  73. package/dist/types/src/playground/generator/plugin.d.ts +1 -1
  74. package/dist/types/src/playground/generator/plugin.d.ts.map +1 -1
  75. package/dist/types/src/playground/layout/Layout.d.ts +2 -2
  76. package/dist/types/src/playground/layout/plugin.d.ts +1 -1
  77. package/dist/types/src/playground/layout/plugin.d.ts.map +1 -1
  78. package/dist/types/src/playground/logger/Toolbar.d.ts +1 -1
  79. package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -1
  80. package/dist/types/src/playground/logger/plugin.d.ts +1 -1
  81. package/dist/types/src/playground/logger/plugin.d.ts.map +1 -1
  82. package/dist/types/src/playground/logger/schema.d.ts +1 -1
  83. package/dist/types/src/playground/logger/schema.d.ts.map +1 -1
  84. package/dist/types/src/playground/playground.stories.d.ts +5 -4
  85. package/dist/types/src/playground/playground.stories.d.ts.map +1 -1
  86. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +1 -1
  87. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +1 -1
  88. package/dist/types/src/plugin-intent/actions.d.ts +5 -7
  89. package/dist/types/src/plugin-intent/actions.d.ts.map +1 -1
  90. package/dist/types/src/plugin-intent/errors.d.ts.map +1 -1
  91. package/dist/types/src/plugin-intent/index.d.ts +1 -0
  92. package/dist/types/src/plugin-intent/index.d.ts.map +1 -1
  93. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +7 -7
  94. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +1 -1
  95. package/dist/types/src/plugin-intent/intent.d.ts +1 -1
  96. package/dist/types/src/plugin-intent/intent.d.ts.map +1 -1
  97. package/dist/types/src/plugin-intent/meta.d.ts +3 -0
  98. package/dist/types/src/plugin-intent/meta.d.ts.map +1 -0
  99. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +1 -1
  100. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -1
  101. package/dist/types/src/plugin-settings/actions.d.ts +5 -7
  102. package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
  103. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +1 -1
  104. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -1
  105. package/dist/types/src/plugin-settings/intent-resolver.d.ts +1 -1
  106. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +1 -1
  107. package/dist/types/src/plugin-settings/meta.d.ts +3 -0
  108. package/dist/types/src/plugin-settings/meta.d.ts.map +1 -0
  109. package/dist/types/src/plugin-settings/store.d.ts +1 -1
  110. package/dist/types/src/plugin-settings/store.d.ts.map +1 -1
  111. package/dist/types/src/plugin-settings/translations.d.ts +2 -1
  112. package/dist/types/src/plugin-settings/translations.d.ts.map +1 -1
  113. package/dist/types/src/react/App.d.ts +10 -0
  114. package/dist/types/src/react/App.d.ts.map +1 -0
  115. package/dist/types/src/react/App.stories.d.ts +14 -0
  116. package/dist/types/src/react/App.stories.d.ts.map +1 -0
  117. package/dist/types/src/react/DefaultFallback.d.ts +8 -0
  118. package/dist/types/src/react/DefaultFallback.d.ts.map +1 -0
  119. package/dist/types/src/react/ErrorBoundary.d.ts +13 -14
  120. package/dist/types/src/react/ErrorBoundary.d.ts.map +1 -1
  121. package/dist/types/src/react/IntentContext.d.ts.map +1 -1
  122. package/dist/types/src/react/Surface.d.ts +5 -5
  123. package/dist/types/src/react/Surface.d.ts.map +1 -1
  124. package/dist/types/src/react/Surface.stories.d.ts +8 -10
  125. package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
  126. package/dist/types/src/react/common.d.ts.map +1 -1
  127. package/dist/types/src/react/index.d.ts +2 -0
  128. package/dist/types/src/react/index.d.ts.map +1 -1
  129. package/dist/types/src/react/types.d.ts +14 -0
  130. package/dist/types/src/react/types.d.ts.map +1 -0
  131. package/dist/types/src/{App.d.ts → react/useApp.d.ts} +7 -6
  132. package/dist/types/src/react/useApp.d.ts.map +1 -0
  133. package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
  134. package/dist/types/src/react/useLoading.d.ts +19 -0
  135. package/dist/types/src/react/useLoading.d.ts.map +1 -0
  136. package/dist/types/src/testing/withPluginManager.d.ts +9 -8
  137. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  138. package/dist/types/src/testing/withPluginManager.stories.d.ts +9 -3
  139. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  140. package/dist/types/tsconfig.tsbuildinfo +1 -1
  141. package/moon.yml +5 -1
  142. package/package.json +46 -38
  143. package/src/common/capabilities.ts +120 -19
  144. package/src/common/collaboration.ts +6 -9
  145. package/src/common/events.ts +3 -1
  146. package/src/common/file.ts +1 -1
  147. package/src/common/layout.ts +3 -4
  148. package/src/common/surface.ts +23 -21
  149. package/src/common/translations.ts +1 -1
  150. package/src/core/capabilities.test.ts +3 -3
  151. package/src/core/capabilities.ts +36 -27
  152. package/src/core/manager.test.ts +22 -21
  153. package/src/core/manager.ts +141 -56
  154. package/src/core/plugin.ts +13 -2
  155. package/src/helpers.test.ts +1 -1
  156. package/src/index.ts +0 -2
  157. package/src/playground/debug/Debug.tsx +1 -1
  158. package/src/playground/debug/plugin.ts +7 -8
  159. package/src/playground/generator/Main.tsx +0 -1
  160. package/src/playground/generator/Toolbar.tsx +2 -1
  161. package/src/playground/generator/generator.ts +4 -4
  162. package/src/playground/generator/plugin.ts +12 -13
  163. package/src/playground/layout/plugin.ts +10 -9
  164. package/src/playground/logger/Toolbar.tsx +2 -1
  165. package/src/playground/logger/plugin.ts +30 -25
  166. package/src/playground/logger/schema.ts +1 -1
  167. package/src/playground/playground.stories.tsx +20 -16
  168. package/src/plugin-intent/IntentPlugin.ts +13 -13
  169. package/src/plugin-intent/actions.ts +4 -6
  170. package/src/plugin-intent/errors.ts +2 -1
  171. package/src/plugin-intent/index.ts +1 -0
  172. package/src/plugin-intent/intent-dispatcher.test.ts +10 -3
  173. package/src/plugin-intent/intent-dispatcher.ts +21 -12
  174. package/src/plugin-intent/intent.ts +1 -1
  175. package/src/plugin-intent/meta.ts +10 -0
  176. package/src/plugin-settings/SettingsPlugin.ts +27 -28
  177. package/src/plugin-settings/actions.ts +9 -13
  178. package/src/plugin-settings/app-graph-builder.ts +25 -22
  179. package/src/plugin-settings/intent-resolver.ts +5 -4
  180. package/src/plugin-settings/meta.ts +10 -0
  181. package/src/plugin-settings/store.ts +3 -3
  182. package/src/plugin-settings/translations.ts +4 -4
  183. package/src/react/App.stories.tsx +33 -0
  184. package/src/react/App.tsx +59 -0
  185. package/src/react/DefaultFallback.tsx +26 -0
  186. package/src/react/ErrorBoundary.tsx +26 -15
  187. package/src/react/IntentContext.tsx +3 -2
  188. package/src/react/Surface.stories.tsx +81 -52
  189. package/src/react/Surface.tsx +70 -38
  190. package/src/react/common.ts +2 -1
  191. package/src/react/index.ts +4 -0
  192. package/src/react/types.ts +38 -0
  193. package/src/react/useApp.tsx +165 -0
  194. package/src/react/useCapabilities.ts +4 -3
  195. package/src/react/useLoading.tsx +70 -0
  196. package/src/testing/withPluginManager.stories.tsx +9 -5
  197. package/src/testing/withPluginManager.tsx +33 -32
  198. package/tsconfig.json +15 -10
  199. package/vitest.config.ts +8 -6
  200. package/.eslintrc.cjs +0 -9
  201. package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
  202. package/dist/lib/browser/app-graph-builder-BGGXLD6T.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-2636QSIK.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-DHZB7HG7.mjs.map +0 -7
  205. package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
  206. package/dist/lib/browser/intent-resolver-O67UANYP.mjs.map +0 -7
  207. package/dist/lib/browser/store-LFKDWHUQ.mjs.map +0 -7
  208. package/dist/lib/browser/worker.mjs +0 -79
  209. package/dist/lib/node-esm/app-graph-builder-QHIJUYYW.mjs.map +0 -7
  210. package/dist/lib/node-esm/chunk-NJAFK626.mjs.map +0 -7
  211. package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
  212. package/dist/lib/node-esm/chunk-VSKRV3NW.mjs.map +0 -7
  213. package/dist/lib/node-esm/intent-resolver-K3D4BXQQ.mjs.map +0 -7
  214. package/dist/lib/node-esm/store-53XDUBMD.mjs.map +0 -7
  215. package/dist/lib/node-esm/worker.mjs +0 -80
  216. package/dist/types/src/App.d.ts.map +0 -1
  217. package/dist/types/src/worker.d.ts +0 -4
  218. package/dist/types/src/worker.d.ts.map +0 -1
  219. package/src/App.tsx +0 -276
  220. package/src/worker.ts +0 -11
  221. package/typedoc/.nojekyll +0 -1
  222. package/typedoc/assets/hierarchy.js +0 -1
  223. package/typedoc/assets/highlight.css +0 -106
  224. package/typedoc/assets/icons.js +0 -18
  225. package/typedoc/assets/icons.svg +0 -1
  226. package/typedoc/assets/main.js +0 -60
  227. package/typedoc/assets/navigation.js +0 -1
  228. package/typedoc/assets/search.js +0 -1
  229. package/typedoc/assets/style.css +0 -1640
  230. package/typedoc/classes/CollaborationActions.InsertContent.html +0 -421
  231. package/typedoc/classes/ErrorBoundary.html +0 -125
  232. package/typedoc/classes/IntentAction.ShowUndo.html +0 -227
  233. package/typedoc/classes/IntentAction.Track.html +0 -266
  234. package/typedoc/classes/LayoutAction.AddToast.html +0 -265
  235. package/typedoc/classes/LayoutAction.Close.html +0 -382
  236. package/typedoc/classes/LayoutAction.Expose.html +0 -265
  237. package/typedoc/classes/LayoutAction.Open.html +0 -1123
  238. package/typedoc/classes/LayoutAction.RevertWorkspace.html +0 -343
  239. package/typedoc/classes/LayoutAction.ScrollIntoView.html +0 -460
  240. package/typedoc/classes/LayoutAction.Set.html +0 -460
  241. package/typedoc/classes/LayoutAction.SetLayoutMode.html +0 -499
  242. package/typedoc/classes/LayoutAction.SwitchWorkspace.html +0 -265
  243. package/typedoc/classes/LayoutAction.UpdateComplementary.html +0 -616
  244. package/typedoc/classes/LayoutAction.UpdateDialog.html +0 -1123
  245. package/typedoc/classes/LayoutAction.UpdateLayout.html +0 -461
  246. package/typedoc/classes/LayoutAction.UpdatePopover.html +0 -1435
  247. package/typedoc/classes/LayoutAction.UpdateSidebar.html +0 -616
  248. package/typedoc/classes/Plugin.html +0 -6
  249. package/typedoc/classes/PluginContext.html +0 -38
  250. package/typedoc/classes/PluginManager.html +0 -43
  251. package/typedoc/classes/PluginModule.html +0 -18
  252. package/typedoc/classes/SettingsAction.Open.html +0 -226
  253. package/typedoc/classes/SettingsAction.OpenPluginRegistry.html +0 -265
  254. package/typedoc/functions/Events.createStateEvent.html +0 -2
  255. package/typedoc/functions/IntentPlugin.html +0 -1
  256. package/typedoc/functions/SettingsPlugin.html +0 -1
  257. package/typedoc/functions/allOf.html +0 -2
  258. package/typedoc/functions/chain.html +0 -3
  259. package/typedoc/functions/contributes.html +0 -2
  260. package/typedoc/functions/createDispatcher.html +0 -3
  261. package/typedoc/functions/createIntent.html +0 -6
  262. package/typedoc/functions/createResolver.html +0 -2
  263. package/typedoc/functions/createSurface.html +0 -2
  264. package/typedoc/functions/defineCapability.html +0 -2
  265. package/typedoc/functions/defineEvent.html +0 -2
  266. package/typedoc/functions/defineModule.html +0 -2
  267. package/typedoc/functions/definePlugin.html +0 -2
  268. package/typedoc/functions/eventKey.html +0 -2
  269. package/typedoc/functions/getEvents.html +0 -2
  270. package/typedoc/functions/isAllOf.html +0 -2
  271. package/typedoc/functions/isOneOf.html +0 -2
  272. package/typedoc/functions/isSurfaceAvailable.html +0 -2
  273. package/typedoc/functions/lazy.html +0 -2
  274. package/typedoc/functions/oneOf.html +0 -2
  275. package/typedoc/functions/useApp.html +0 -6
  276. package/typedoc/functions/useAppGraph.html +0 -1
  277. package/typedoc/functions/useCapabilities.html +0 -3
  278. package/typedoc/functions/useCapability.html +0 -4
  279. package/typedoc/functions/useIntentDispatcher.html +0 -1
  280. package/typedoc/functions/useIntentResolver.html +0 -1
  281. package/typedoc/functions/useLayout.html +0 -1
  282. package/typedoc/functions/usePluginManager.html +0 -2
  283. package/typedoc/hierarchy.html +0 -1
  284. package/typedoc/index.html +0 -12
  285. package/typedoc/interfaces/LayoutAction.Toast.html +0 -10
  286. package/typedoc/media/LICENSE +0 -8
  287. package/typedoc/modules/Capabilities.html +0 -1
  288. package/typedoc/modules/CollaborationActions.html +0 -1
  289. package/typedoc/modules/Events.html +0 -1
  290. package/typedoc/modules/IntentAction.html +0 -1
  291. package/typedoc/modules/LayoutAction.html +0 -2
  292. package/typedoc/modules/SettingsAction.html +0 -1
  293. package/typedoc/modules.html +0 -1
  294. package/typedoc/types/ActivationEvent.html +0 -8
  295. package/typedoc/types/ActivationEvents.html +0 -2
  296. package/typedoc/types/AnyCapability.html +0 -1
  297. package/typedoc/types/AnyIntent.html +0 -1
  298. package/typedoc/types/AnyIntentChain.html +0 -1
  299. package/typedoc/types/AnyIntentEffectResult.html +0 -1
  300. package/typedoc/types/AnyIntentResolver.html +0 -1
  301. package/typedoc/types/AnyIntentResult.html +0 -1
  302. package/typedoc/types/Capabilities.FileUploader.html +0 -1
  303. package/typedoc/types/Capabilities.IntentResolver.html +0 -1
  304. package/typedoc/types/Capabilities.Layout.html +0 -1
  305. package/typedoc/types/Capabilities.Metadata.html +0 -1
  306. package/typedoc/types/Capabilities.ReactContext.html +0 -1
  307. package/typedoc/types/Capabilities.ReactRoot.html +0 -1
  308. package/typedoc/types/Capabilities.ReactSurface.html +0 -1
  309. package/typedoc/types/Capabilities.Settings.html +0 -4
  310. package/typedoc/types/Capability.html +0 -9
  311. package/typedoc/types/CreateAppOptions.html +0 -10
  312. package/typedoc/types/FileInfo.html +0 -1
  313. package/typedoc/types/Intent.html +0 -10
  314. package/typedoc/types/IntentChain.html +0 -6
  315. package/typedoc/types/IntentContext.html +0 -5
  316. package/typedoc/types/IntentData.html +0 -1
  317. package/typedoc/types/IntentDispatcher.html +0 -2
  318. package/typedoc/types/IntentDispatcherResult.html +0 -2
  319. package/typedoc/types/IntentEffectDefinition.html +0 -2
  320. package/typedoc/types/IntentEffectResult.html +0 -15
  321. package/typedoc/types/IntentParams.html +0 -3
  322. package/typedoc/types/IntentResolver.html +0 -2
  323. package/typedoc/types/IntentResultData.html +0 -1
  324. package/typedoc/types/IntentSchema.html +0 -1
  325. package/typedoc/types/IntentUndo.html +0 -2
  326. package/typedoc/types/InterfaceDef.html +0 -4
  327. package/typedoc/types/Label.html +0 -1
  328. package/typedoc/types/NodeSerializer.html +0 -8
  329. package/typedoc/types/PluginManagerOptions.html +0 -6
  330. package/typedoc/types/PluginMeta.html +0 -21
  331. package/typedoc/types/PromiseIntentDispatcher.html +0 -2
  332. package/typedoc/types/PromiseIntentUndo.html +0 -2
  333. package/typedoc/types/Resource.html +0 -1
  334. package/typedoc/types/ResourceKey.html +0 -1
  335. package/typedoc/types/ResourceLanguage.html +0 -1
  336. package/typedoc/types/SerializedNode.html +0 -4
  337. package/typedoc/types/SurfaceComponent.html +0 -2
  338. package/typedoc/types/SurfaceDefinition.html +0 -2
  339. package/typedoc/types/SurfaceProps.html +0 -4
  340. package/typedoc/variables/Capabilities.AnchorSort.html +0 -1
  341. package/typedoc/variables/Capabilities.AppGraph.html +0 -1
  342. package/typedoc/variables/Capabilities.AppGraphBuilder.html +0 -1
  343. package/typedoc/variables/Capabilities.AppGraphSerializer.html +0 -1
  344. package/typedoc/variables/Capabilities.ArtifactDefinition.html +0 -1
  345. package/typedoc/variables/Capabilities.FileUploader.html +0 -1
  346. package/typedoc/variables/Capabilities.IntentDispatcher.html +0 -1
  347. package/typedoc/variables/Capabilities.IntentResolver.html +0 -1
  348. package/typedoc/variables/Capabilities.Layout.html +0 -1
  349. package/typedoc/variables/Capabilities.Metadata.html +0 -1
  350. package/typedoc/variables/Capabilities.Null.html +0 -1
  351. package/typedoc/variables/Capabilities.PluginManager.html +0 -1
  352. package/typedoc/variables/Capabilities.ReactContext.html +0 -1
  353. package/typedoc/variables/Capabilities.ReactRoot.html +0 -1
  354. package/typedoc/variables/Capabilities.ReactSurface.html +0 -1
  355. package/typedoc/variables/Capabilities.RxRegistry.html +0 -1
  356. package/typedoc/variables/Capabilities.Settings.html +0 -1
  357. package/typedoc/variables/Capabilities.SettingsStore.html +0 -1
  358. package/typedoc/variables/Capabilities.Tools.html +0 -1
  359. package/typedoc/variables/Capabilities.Translations.html +0 -1
  360. package/typedoc/variables/Events.AppGraphReady.html +0 -2
  361. package/typedoc/variables/Events.DispatcherReady.html +0 -2
  362. package/typedoc/variables/Events.LayoutReady.html +0 -1
  363. package/typedoc/variables/Events.SettingsReady.html +0 -2
  364. package/typedoc/variables/Events.SetupAppGraph.html +0 -2
  365. package/typedoc/variables/Events.SetupArtifactDefinition.html +0 -2
  366. package/typedoc/variables/Events.SetupIntentResolver.html +0 -2
  367. package/typedoc/variables/Events.SetupMetadata.html +0 -2
  368. package/typedoc/variables/Events.SetupReactSurface.html +0 -2
  369. package/typedoc/variables/Events.SetupSettings.html +0 -2
  370. package/typedoc/variables/Events.SetupTranslations.html +0 -2
  371. package/typedoc/variables/Events.Startup.html +0 -2
  372. package/typedoc/variables/FileInfoSchema.html +0 -1
  373. package/typedoc/variables/INTENT_ACTION.html +0 -1
  374. package/typedoc/variables/INTENT_PLUGIN.html +0 -1
  375. package/typedoc/variables/LAYOUT_ACTION.html +0 -1
  376. package/typedoc/variables/LAYOUT_PLUGIN.html +0 -1
  377. package/typedoc/variables/Label.html +0 -1
  378. package/typedoc/variables/LayoutAction.Toast.html +0 -1
  379. package/typedoc/variables/LayoutAction.UPDATE_LAYOUT.html +0 -1
  380. package/typedoc/variables/PluginManagerProvider.html +0 -2
  381. package/typedoc/variables/Resource.html +0 -2
  382. package/typedoc/variables/ResourceKey.html +0 -1
  383. package/typedoc/variables/ResourceLanguage.html +0 -1
  384. package/typedoc/variables/SETTINGS_ACTION.html +0 -1
  385. package/typedoc/variables/SETTINGS_ID.html +0 -1
  386. package/typedoc/variables/SETTINGS_KEY.html +0 -1
  387. package/typedoc/variables/SETTINGS_PLUGIN.html +0 -1
  388. package/typedoc/variables/Surface.html +0 -2
  389. package/typedoc/variables/defaultFileTypes.html +0 -1
  390. /package/dist/lib/browser/{intent-dispatcher-TWKB22NI.mjs.map → intent-dispatcher-LZ4AE66E.mjs.map} +0 -0
  391. /package/dist/lib/browser/{worker.mjs.map → react/index.mjs.map} +0 -0
  392. /package/dist/lib/node-esm/{intent-dispatcher-5PRM3KGH.mjs.map → intent-dispatcher-MGOJ3CHD.mjs.map} +0 -0
  393. /package/dist/lib/node-esm/{worker.mjs.map → react/index.mjs.map} +0 -0
package/moon.yml CHANGED
@@ -5,10 +5,14 @@ tags:
5
5
  - ts-build
6
6
  - ts-test
7
7
  - typedoc
8
+ - storybook
8
9
  tasks:
9
10
  compile:
10
11
  args:
11
12
  - '--entryPoint=src/index.ts'
13
+ - '--entryPoint=src/react/index.ts'
12
14
  - '--entryPoint=src/testing/index.ts'
13
- - '--entryPoint=src/worker.ts'
14
15
  - '--preactSignalTracking'
16
+ test:
17
+ inputs:
18
+ - .storybook/*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/app-framework",
3
- "version": "0.8.4-main.f9ba587",
3
+ "version": "0.8.4-main.fffef41",
4
4
  "description": "A framework for building applications from composible plugins.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,70 +10,78 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
+ "source": "./src/index.ts",
13
14
  "types": "./dist/types/src/index.d.ts",
14
15
  "browser": "./dist/lib/browser/index.mjs",
15
16
  "node": "./dist/lib/node-esm/index.mjs"
16
17
  },
18
+ "./react": {
19
+ "source": "./src/react/index.ts",
20
+ "types": "./dist/types/src/react/index.d.ts",
21
+ "browser": "./dist/lib/browser/react/index.mjs",
22
+ "node": "./dist/lib/node-esm/react/index.mjs"
23
+ },
17
24
  "./testing": {
25
+ "source": "./src/testing/index.ts",
18
26
  "types": "./dist/types/src/testing/index.d.ts",
19
27
  "browser": "./dist/lib/browser/testing/index.mjs",
20
28
  "node": "./dist/lib/node-esm/testing/index.mjs"
21
- },
22
- "./worker": {
23
- "types": "./dist/types/src/worker.d.ts",
24
- "browser": "./dist/lib/browser/worker.mjs",
25
- "node": "./dist/lib/node-esm/worker.mjs"
26
29
  }
27
30
  },
28
31
  "types": "dist/types/src/index.d.ts",
29
32
  "typesVersions": {
30
33
  "*": {
34
+ "react": [
35
+ "dist/types/src/react/index.d.ts"
36
+ ],
31
37
  "testing": [
32
38
  "dist/types/src/testing/index.d.ts"
33
- ],
34
- "worker": [
35
- "dist/types/src/worker.d.ts"
36
39
  ]
37
40
  }
38
41
  },
39
42
  "dependencies": {
43
+ "@effect/ai": "0.29.1",
44
+ "@effect/experimental": "0.56.0",
40
45
  "@preact-signals/safe-react": "^0.9.0",
41
- "@preact/signals-core": "^1.9.0",
42
- "@dxos/ai": "0.8.4-main.f9ba587",
43
- "@dxos/app-graph": "0.8.4-main.f9ba587",
44
- "@dxos/artifact": "0.8.4-main.f9ba587",
45
- "@dxos/async": "0.8.4-main.f9ba587",
46
- "@dxos/client-protocol": "0.8.4-main.f9ba587",
47
- "@dxos/debug": "0.8.4-main.f9ba587",
48
- "@dxos/echo-schema": "0.8.4-main.f9ba587",
49
- "@dxos/invariant": "0.8.4-main.f9ba587",
50
- "@dxos/keys": "0.8.4-main.f9ba587",
51
- "@dxos/live-object": "0.8.4-main.f9ba587",
52
- "@dxos/local-storage": "0.8.4-main.f9ba587",
53
- "@dxos/log": "0.8.4-main.f9ba587",
54
- "@dxos/react-hooks": "0.8.4-main.f9ba587",
55
- "@dxos/schema": "0.8.4-main.f9ba587",
56
- "@dxos/util": "0.8.4-main.f9ba587"
46
+ "@preact/signals-core": "^1.12.1",
47
+ "@dxos/ai": "0.8.4-main.fffef41",
48
+ "@dxos/app-graph": "0.8.4-main.fffef41",
49
+ "@dxos/assistant": "0.8.4-main.fffef41",
50
+ "@dxos/blueprints": "0.8.4-main.fffef41",
51
+ "@dxos/client-protocol": "0.8.4-main.fffef41",
52
+ "@dxos/echo": "0.8.4-main.fffef41",
53
+ "@dxos/async": "0.8.4-main.fffef41",
54
+ "@dxos/invariant": "0.8.4-main.fffef41",
55
+ "@dxos/debug": "0.8.4-main.fffef41",
56
+ "@dxos/keys": "0.8.4-main.fffef41",
57
+ "@dxos/live-object": "0.8.4-main.fffef41",
58
+ "@dxos/local-storage": "0.8.4-main.fffef41",
59
+ "@dxos/schema": "0.8.4-main.fffef41",
60
+ "@dxos/types": "0.8.4-main.fffef41",
61
+ "@dxos/log": "0.8.4-main.fffef41",
62
+ "@dxos/util": "0.8.4-main.fffef41",
63
+ "@dxos/functions": "0.8.4-main.fffef41",
64
+ "@dxos/react-hooks": "0.8.4-main.fffef41"
57
65
  },
58
66
  "devDependencies": {
59
- "@effect-rx/rx-react": "0.38.0",
60
- "@effect/platform": "0.88.0",
61
- "@phosphor-icons/react": "^2.1.5",
62
- "@types/react": "~18.2.0",
63
- "effect": "3.16.13",
64
- "react": "~18.2.0",
67
+ "@effect-atom/atom-react": "^0.3.4",
68
+ "@effect/platform": "0.92.1",
69
+ "@types/react": "~19.2.2",
70
+ "effect": "3.18.3",
71
+ "react": "~19.2.0",
65
72
  "typedoc": "0.28.1",
66
- "@dxos/echo-signals": "0.8.4-main.f9ba587",
67
- "@dxos/random": "0.8.4-main.f9ba587",
68
- "@dxos/react-ui": "0.8.4-main.f9ba587",
69
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.f9ba587",
70
- "@dxos/storybook-utils": "0.8.4-main.f9ba587"
73
+ "@dxos/echo-signals": "0.8.4-main.fffef41",
74
+ "@dxos/react-ui": "0.8.4-main.fffef41",
75
+ "@dxos/random": "0.8.4-main.fffef41",
76
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.fffef41",
77
+ "@dxos/react-ui-theme": "0.8.4-main.fffef41",
78
+ "@dxos/storybook-utils": "0.8.4-main.fffef41"
71
79
  },
72
80
  "peerDependencies": {
73
- "@effect-rx/rx-react": "^0.34.1",
81
+ "@effect-atom/atom-react": "^0.3.4",
74
82
  "@effect/platform": "^0.80.12",
75
83
  "effect": "^3.13.3",
76
- "react": "~18.2.0"
84
+ "react": "^19.0.0"
77
85
  },
78
86
  "publishConfig": {
79
87
  "access": "public"
@@ -2,43 +2,81 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Registry } from '@effect-rx/rx-react';
6
- import { type Schema } from 'effect';
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';
7
8
  import { type FC, type PropsWithChildren } from 'react';
8
9
 
9
- import { type ExecutableTool } from '@dxos/ai';
10
- import { type GraphBuilder, type BuilderExtensions } from '@dxos/app-graph';
11
- import { type ArtifactDefinition } from '@dxos/artifact';
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';
12
15
  import { type Space } from '@dxos/client-protocol';
16
+ import { type FunctionDefinition } from '@dxos/functions';
13
17
  import { type RootSettingsStore } from '@dxos/local-storage';
14
- import { type AnchoredTo } from '@dxos/schema';
18
+ import { type AnchoredTo } from '@dxos/types';
19
+
20
+ import { type PluginManager, defineCapability } from '../core';
21
+ import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
15
22
 
16
23
  import { type FileInfo } from './file';
17
24
  import { type NodeSerializer } from './graph';
18
25
  import { type SurfaceDefinition } from './surface';
19
26
  import { type Resource } from './translations';
20
- import { type PluginManager, defineCapability } from '../core';
21
- import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
22
27
 
28
+ // TODO(burdon): Sort.
23
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
+ */
24
38
  export const PluginManager = defineCapability<PluginManager>('dxos.org/app-framework/capability/plugin-manager');
25
39
 
26
- export const Null = defineCapability<null>('dxos.org/app-framework/capability/null');
40
+ /**
41
+ * @category Capability
42
+ */
43
+ export const AtomRegistry = defineCapability<Registry.Registry>('dxos.org/app-framework/capability/atom-registry');
27
44
 
28
- export const RxRegistry = defineCapability<Registry.Registry>('dxos.org/app-framework/capability/rx-registry');
45
+ export type ReactContext = Readonly<{
46
+ id: string;
47
+ dependsOn?: string[];
48
+ context: FC<PropsWithChildren>;
49
+ }>;
29
50
 
30
- export type ReactContext = Readonly<{ id: string; dependsOn?: string[]; context: FC<PropsWithChildren> }>;
51
+ /**
52
+ * @category Capability
53
+ */
31
54
  export const ReactContext = defineCapability<ReactContext>('dxos.org/app-framework/capability/react-context');
32
55
 
33
56
  export type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;
57
+
58
+ /**
59
+ * @category Capability
60
+ */
34
61
  export const ReactRoot = defineCapability<ReactRoot>('dxos.org/app-framework/capability/react-root');
35
62
 
36
63
  export type ReactSurface = SurfaceDefinition | readonly SurfaceDefinition[];
64
+
65
+ /**
66
+ * @category Capability
67
+ */
37
68
  export const ReactSurface = defineCapability<ReactSurface>('dxos.org/app-framework/common/react-surface');
38
69
 
39
70
  export type IntentResolver = AnyIntentResolver | readonly AnyIntentResolver[];
71
+
72
+ /**
73
+ * @category Capability
74
+ */
40
75
  export const IntentResolver = defineCapability<IntentResolver>('dxos.org/app-framework/capability/intent-resolver');
41
76
 
77
+ /**
78
+ * @category Capability
79
+ */
42
80
  export const IntentDispatcher = defineCapability<IntentContext>(
43
81
  'dxos.org/app-framework/capability/intent-dispatcher',
44
82
  );
@@ -65,23 +103,41 @@ export namespace Capabilities {
65
103
  */
66
104
  scrollIntoView: string | undefined;
67
105
  }>;
106
+
107
+ /**
108
+ * @category Capability
109
+ */
68
110
  export const Layout = defineCapability<Layout>('dxos.org/app-framework/capability/layout');
69
111
 
70
- // TODO(burdon): Why array?
112
+ /**
113
+ * @category Capability
114
+ */
71
115
  export const Translations = defineCapability<Readonly<Resource[]>>('dxos.org/app-framework/capability/translations');
72
116
 
117
+ /**
118
+ * @category Capability
119
+ */
73
120
  export const AppGraph = defineCapability<Readonly<Pick<GraphBuilder, 'graph' | 'explore'>>>(
74
121
  'dxos.org/app-framework/capability/app-graph',
75
122
  );
76
123
 
124
+ /**
125
+ * @category Capability
126
+ */
77
127
  export const AppGraphBuilder = defineCapability<BuilderExtensions>(
78
128
  'dxos.org/app-framework/capability/app-graph-builder',
79
129
  );
80
130
 
131
+ /**
132
+ * @category Capability
133
+ */
81
134
  export const AppGraphSerializer = defineCapability<NodeSerializer[]>(
82
135
  'dxos.org/app-framework/capability/app-graph-serializer',
83
136
  );
84
137
 
138
+ /**
139
+ * @category Capability
140
+ */
85
141
  export const SettingsStore = defineCapability<RootSettingsStore>('dxos.org/app-framework/capability/settings-store');
86
142
 
87
143
  // TODO(wittjosiah): The generics caused type inference issues for schemas when contributing settings.
@@ -92,22 +148,67 @@ export namespace Capabilities {
92
148
  schema: Schema.Schema.All;
93
149
  value?: Record<string, any>;
94
150
  };
151
+
152
+ /**
153
+ * @category Capability
154
+ */
95
155
  export const Settings = defineCapability<Settings>('dxos.org/app-framework/capability/settings');
96
156
 
97
- export type Metadata = Readonly<{ id: string; metadata: Record<string, any> }>;
157
+ export type Metadata = Readonly<{
158
+ id: string;
159
+ metadata: Record<string, any>;
160
+ }>;
161
+
162
+ /**
163
+ * @category Capability
164
+ */
98
165
  export const Metadata = defineCapability<Metadata>('dxos.org/app-framework/capability/metadata');
99
166
 
100
- export const Tools = defineCapability<ExecutableTool[]>('dxos.org/app-framework/capability/tools');
101
- export const ArtifactDefinition = defineCapability<ArtifactDefinition>(
102
- 'dxos.org/app-framework/capability/artifact-definition',
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',
103
191
  );
104
192
 
105
- export type FileUploader = (file: File, space: Space) => Promise<FileInfo | undefined>;
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
+ */
106
203
  export const FileUploader = defineCapability<FileUploader>('dxos.org/app-framework/capability/file-uploader');
107
204
 
108
- type AnchorSort = {
205
+ export type AnchorSort = {
109
206
  key: string;
110
- sort: (anchorA: AnchoredTo, anchorB: AnchoredTo) => number;
207
+ sort: (anchorA: AnchoredTo.AnchoredTo, anchorB: AnchoredTo.AnchoredTo) => number;
111
208
  };
209
+
210
+ /**
211
+ * @category Capability
212
+ */
112
213
  export const AnchorSort = defineCapability<AnchorSort>('dxos.org/app-framework/capability/anchor-sort');
113
214
  }
@@ -2,19 +2,16 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
- import { Expando, Ref } from '@dxos/echo-schema';
7
+ import { ContentBlock } from '@dxos/types';
8
8
 
9
9
  export namespace CollaborationActions {
10
- export class InsertContent extends Schema.TaggedClass<InsertContent>()('assistant/intent-content', {
10
+ export class AcceptProposal extends Schema.TaggedClass<AcceptProposal>()('collaboration/accept-proposal', {
11
11
  input: Schema.Struct({
12
- target: Expando,
13
- object: Ref(Expando),
14
- at: Schema.optional(Schema.String),
15
- label: Schema.String.pipe(Schema.optional),
16
- }).annotations({
17
- description: 'Enables plugins to inject content blocks or references into a related entity.',
12
+ subject: Schema.Any,
13
+ anchor: Schema.String,
14
+ proposal: ContentBlock.Proposal,
18
15
  }),
19
16
  output: Schema.Void,
20
17
  }) {}
@@ -2,9 +2,10 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities } from './capabilities';
6
5
  import { defineEvent } from '../core';
7
6
 
7
+ import { Capabilities } from './capabilities';
8
+
8
9
  export namespace Events {
9
10
  /**
10
11
  * Fired when the app is started.
@@ -48,6 +49,7 @@ export namespace Events {
48
49
  /**
49
50
  * Fired to load any newly available artifacts definitions.
50
51
  */
52
+ // TODO(burdon): Rename.
51
53
  export const SetupArtifactDefinition = defineEvent('dxos.org/app-framework/event/setup-artifact-definition');
52
54
 
53
55
  //
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  // TODO(burdon): See Accept attribute (uses MIME types).
8
8
  // E.g., 'image/*': ['.jpg', '.jpeg', '.png', '.gif'],
@@ -2,18 +2,17 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Label } from '../plugin-intent';
8
8
 
9
- export const LAYOUT_PLUGIN = 'dxos.org/plugin/layout';
10
- export const LAYOUT_ACTION = `${LAYOUT_PLUGIN}/action`;
9
+ const LAYOUT_PLUGIN = 'dxos.org/plugin/layout';
11
10
 
12
11
  /**
13
12
  * Expected payload for layout actions.
14
13
  */
15
14
  export namespace LayoutAction {
16
- export const UPDATE_LAYOUT = `${LAYOUT_ACTION}/update-layout`;
15
+ export const UPDATE_LAYOUT = `${LAYOUT_PLUGIN}/action/update-layout`;
17
16
 
18
17
  /**
19
18
  * Generic layout action.
@@ -2,16 +2,16 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type JSX, type ForwardedRef, type PropsWithChildren, type ReactNode } from 'react';
5
+ import type { ComponentType, PropsWithChildren, ReactNode } from 'react';
6
6
 
7
- import { type GuardedType, type MakeOptional, type Position } from '@dxos/util';
7
+ import { type MakeOptional, type Position } from '@dxos/util';
8
8
 
9
9
  import { type ErrorBoundary } from '../react';
10
10
 
11
11
  /**
12
12
  * SurfaceProps are the props that are passed to the Surface component.
13
13
  */
14
- export type SurfaceProps<T extends Record<string, any> = Record<string, unknown>> = PropsWithChildren<{
14
+ export type SurfaceProps<T extends Record<string, any> = Record<string, unknown>> = {
15
15
  /**
16
16
  * If specified, the Surface will be wrapped in an error boundary.
17
17
  * The fallback component will be rendered if an error occurs.
@@ -23,17 +23,20 @@ export type SurfaceProps<T extends Record<string, any> = Record<string, unknown>
23
23
  * The placeholder component will be rendered while the surface component is loading.
24
24
  */
25
25
  placeholder?: ReactNode;
26
- }> &
27
- MakeOptional<CoreSurfaceProps<T>, 'id' | 'data'> & {
28
- /**
29
- * Additional props to pass to the component.
30
- * These props are not used by Surface itself but may be used by components which resolve the surface.
31
- */
32
- [key: string]: unknown;
26
+ } & MakeOptional<CoreSurfaceProps<T>, 'id' | 'data'> &
27
+ /**
28
+ * Additional props to pass to the component.
29
+ * These props are not used by Surface itself but may be used by components which resolve the surface.
30
+ * Exclude known prop names to prevent overriding well-defined props.
31
+ */
32
+ {
33
+ [K in keyof Record<string, any>]: K extends keyof CoreSurfaceProps<T> | 'fallback' | 'placeholder' ? never : any;
33
34
  };
34
35
 
35
- // NOTE: If `[key: string]: unknown` is included in shared types, when re-used other fields become unknown as well.
36
- type CoreSurfaceProps<T extends Record<string, any> = Record<string, unknown>> = {
36
+ /**
37
+ * NOTE: If `[key: string]: unknown` is included in shared types, when re-used other fields become unknown as well.
38
+ */
39
+ export type CoreSurfaceProps<T extends Record<string, any> = Record<string, unknown>> = PropsWithChildren<{
37
40
  /**
38
41
  * ID for debugging.
39
42
  */
@@ -46,6 +49,7 @@ type CoreSurfaceProps<T extends Record<string, any> = Record<string, unknown>> =
46
49
 
47
50
  /**
48
51
  * The data to be rendered by the surface.
52
+ * NOTE: This must be a stable value.
49
53
  */
50
54
  data: T;
51
55
 
@@ -53,19 +57,17 @@ type CoreSurfaceProps<T extends Record<string, any> = Record<string, unknown>> =
53
57
  * If more than one component is resolved, the limit determines how many are rendered.
54
58
  */
55
59
  limit?: number | undefined;
56
- };
60
+ }>;
57
61
 
58
- type SurfaceComponentProps<T extends Record<string, any> = Record<string, unknown>> = PropsWithChildren<
59
- CoreSurfaceProps<T> & { [key: string]: unknown }
60
- >;
62
+ export type SurfaceComponentProps<T extends Record<string, any> = Record<string, any>> = CoreSurfaceProps<T> &
63
+ Record<string, any>;
61
64
 
62
65
  /**
63
66
  * React component used to render a surface once is has matched.
64
67
  */
65
- export type SurfaceComponent<T extends Record<string, any> = Record<string, unknown>> = (
66
- props: SurfaceComponentProps<T>,
67
- forwardedRef: ForwardedRef<HTMLElement>,
68
- ) => JSX.Element | null;
68
+ export type SurfaceComponent<T extends Record<string, any> = Record<string, any>> = ComponentType<
69
+ SurfaceComponentProps<T>
70
+ >;
69
71
 
70
72
  /**
71
73
  * Definition of when a SurfaceComponent should be rendered.
@@ -74,8 +76,8 @@ export type SurfaceDefinition<T extends Record<string, any> = any> = Readonly<{
74
76
  id: string;
75
77
  role: string | string[];
76
78
  position?: Position;
79
+ component: SurfaceComponent<T>;
77
80
  filter?: (data: Record<string, unknown>) => data is T;
78
- component: SurfaceComponent<GuardedType<SurfaceDefinition<T>['filter']>>;
79
81
  }>;
80
82
 
81
83
  /**
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  export const ResourceKey = Schema.Union(Schema.String, Schema.Record({ key: Schema.String, value: Schema.Any }));
8
8
  export type ResourceKey = Schema.Schema.Type<typeof ResourceKey>;
@@ -2,11 +2,11 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Registry } from '@effect-rx/rx-react';
6
- import { Effect } from 'effect';
5
+ import { Registry } from '@effect-atom/atom-react';
6
+ import * as Effect from 'effect/Effect';
7
7
  import { describe, expect, it, onTestFinished } from 'vitest';
8
8
 
9
- import { defineCapability, PluginContext } from './capabilities';
9
+ import { PluginContext, defineCapability } from './capabilities';
10
10
 
11
11
  const defaultOptions = {
12
12
  activate: () => Effect.succeed(false),