@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
@@ -22,7 +22,7 @@ export const Debug = () => {
22
22
  };
23
23
 
24
24
  return (
25
- <SyntaxHighlighter language='json' classNames='flex w-full text-xs opacity-75 rounded'>
25
+ <SyntaxHighlighter language='json' classNames='text-xs opacity-75 rounded'>
26
26
  {JSON.stringify(object, undefined, 2)}
27
27
  </SyntaxHighlighter>
28
28
  );
@@ -7,11 +7,10 @@ import { defineModule, definePlugin, lazy } from '../../core';
7
7
 
8
8
  const Debug = lazy(() => import('./Debug'));
9
9
 
10
- export const DebugPlugin = () =>
11
- definePlugin({ id: 'dxos.org/test/plugin-debug', name: 'Debug' }, [
12
- defineModule({
13
- id: 'dxos.org/test/debug/main',
14
- activatesOn: Events.Startup,
15
- activate: Debug,
16
- }),
17
- ]);
10
+ export const DebugPlugin = definePlugin({ id: 'dxos.org/test/plugin-debug', name: 'Debug' }, () => [
11
+ defineModule({
12
+ id: 'dxos.org/test/debug/main',
13
+ activatesOn: Events.Startup,
14
+ activate: Debug,
15
+ }),
16
+ ]);
@@ -30,7 +30,6 @@ const Item = ({
30
30
  variant='ghost'
31
31
  icon='ph--x--regular'
32
32
  label='Remove'
33
- size={5}
34
33
  disabled={disabled}
35
34
  onClick={handleRemove}
36
35
  />
@@ -6,12 +6,13 @@ import React, { useCallback } from 'react';
6
6
 
7
7
  import { Button } from '@dxos/react-ui';
8
8
 
9
- import { createGeneratorIntent, createPluginId, Number } from './generator';
10
9
  import { Capabilities } from '../../common';
11
10
  import { contributes } from '../../core';
12
11
  import { createIntent } from '../../plugin-intent';
13
12
  import { useCapabilities, useIntentDispatcher, usePluginManager } from '../../react';
14
13
 
14
+ import { Number, createGeneratorIntent, createPluginId } from './generator';
15
+
15
16
  export const Toolbar = () => {
16
17
  const manager = usePluginManager();
17
18
  const { dispatchPromise: dispatch } = useIntentDispatcher();
@@ -2,11 +2,11 @@
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
7
  import { Capabilities, Events } from '../../common';
8
- import { contributes, defineEvent, defineCapability, defineModule, definePlugin } from '../../core';
9
- import { createResolver, type IntentSchema } from '../../plugin-intent';
8
+ import { contributes, defineCapability, defineEvent, defineModule, definePlugin } from '../../core';
9
+ import { type IntentSchema, createResolver } from '../../plugin-intent';
10
10
 
11
11
  export const Number = defineCapability<number>('dxos.org/test/generator/number');
12
12
 
@@ -26,7 +26,7 @@ export const createGeneratorIntent = (id: string) => {
26
26
  export const createNumberPlugin = (id: string) => {
27
27
  const number = Math.floor(Math.random() * 100);
28
28
 
29
- return definePlugin({ id, name: `Plugin ${id}` }, [
29
+ return definePlugin({ id, name: `Plugin ${id}` }, () => [
30
30
  defineModule({
31
31
  id: `${id}/main`,
32
32
  activatesOn: CountEvent,
@@ -8,16 +8,15 @@ import { defineModule, definePlugin, lazy } from '../../core';
8
8
  const Main = lazy(() => import('./Main'));
9
9
  const Toolbar = lazy(() => import('./Toolbar'));
10
10
 
11
- export const GeneratorPlugin = () =>
12
- definePlugin({ id: 'dxos.org/test/generator', name: 'Generator' }, [
13
- defineModule({
14
- id: 'dxos.org/test/generator/main',
15
- activatesOn: Events.Startup,
16
- activate: Main,
17
- }),
18
- defineModule({
19
- id: 'dxos.org/test/generator/toolbar',
20
- activatesOn: Events.Startup,
21
- activate: Toolbar,
22
- }),
23
- ]);
11
+ export const GeneratorPlugin = definePlugin({ id: 'dxos.org/test/generator', name: 'Generator' }, () => [
12
+ defineModule({
13
+ id: 'dxos.org/test/generator/main',
14
+ activatesOn: Events.Startup,
15
+ activate: Main,
16
+ }),
17
+ defineModule({
18
+ id: 'dxos.org/test/generator/toolbar',
19
+ activatesOn: Events.Startup,
20
+ activate: Toolbar,
21
+ }),
22
+ ]);
@@ -3,15 +3,16 @@
3
3
  //
4
4
 
5
5
  import { Events } from '../../common';
6
- import { definePlugin, lazy, defineModule } from '../../core';
6
+ import { defineModule, definePlugin, lazy } from '../../core';
7
7
 
8
8
  const Layout = lazy(() => import('./Layout'));
9
9
 
10
- export const LayoutPlugin = () =>
11
- definePlugin({ id: 'dxos.org/test/layout', name: 'Layout' }, [
12
- defineModule({
13
- id: 'dxos.org/test/layout/root',
14
- activatesOn: Events.Startup,
15
- activate: Layout,
16
- }),
17
- ]);
10
+ const meta = { id: 'dxos.org/test/layout', name: 'Layout' };
11
+
12
+ export const LayoutPlugin = definePlugin(meta, () => [
13
+ defineModule({
14
+ id: 'dxos.org/test/layout/root',
15
+ activatesOn: Events.Startup,
16
+ activate: Layout,
17
+ }),
18
+ ]);
@@ -6,12 +6,13 @@ import React, { useCallback } from 'react';
6
6
 
7
7
  import { Button } from '@dxos/react-ui';
8
8
 
9
- import { Log } from './schema';
10
9
  import { Capabilities, createSurface } from '../../common';
11
10
  import { contributes } from '../../core';
12
11
  import { createIntent } from '../../plugin-intent';
13
12
  import { useIntentDispatcher } from '../../react';
14
13
 
14
+ import { Log } from './schema';
15
+
15
16
  export const Logger = () => {
16
17
  const { dispatchPromise } = useIntentDispatcher();
17
18
  const handleClick = useCallback(() => dispatchPromise(createIntent(Log, { message: 'Hello, world!' })), []);
@@ -4,33 +4,38 @@
4
4
 
5
5
  import { log } from '@dxos/log';
6
6
 
7
- import { Log } from './schema';
8
7
  import { Capabilities, Events } from '../../common';
9
- import { contributes, defineModule, lazy, definePlugin } from '../../core';
8
+ import { contributes, defineModule, definePlugin, lazy } from '../../core';
10
9
  import { createResolver } from '../../plugin-intent';
11
10
 
11
+ import { Log } from './schema';
12
+
12
13
  const Toolbar = lazy(() => import('./Toolbar'));
13
14
 
14
- export const LoggerPlugin = () =>
15
- definePlugin({ id: 'dxos.org/test/logger', name: 'Logger' }, [
16
- defineModule({
17
- id: 'dxos.org/test/logger/intents',
18
- activatesOn: Events.SetupIntentResolver,
19
- activate: () => [
20
- contributes(
21
- Capabilities.IntentResolver,
22
- createResolver({
23
- intent: Log,
24
- resolve: ({ message }) => {
25
- log.info(message);
26
- },
27
- }),
28
- ),
29
- ],
30
- }),
31
- defineModule({
32
- id: 'dxos.org/test/logger/surfaces',
33
- activatesOn: Events.Startup,
34
- activate: Toolbar,
35
- }),
36
- ]);
15
+ const meta = {
16
+ id: 'dxos.org/test/logger',
17
+ name: 'Logger',
18
+ };
19
+
20
+ export const LoggerPlugin = definePlugin(meta, () => [
21
+ defineModule({
22
+ id: 'dxos.org/test/logger/intents',
23
+ activatesOn: Events.SetupIntentResolver,
24
+ activate: () => [
25
+ contributes(
26
+ Capabilities.IntentResolver,
27
+ createResolver({
28
+ intent: Log,
29
+ resolve: ({ message }) => {
30
+ log.info(message);
31
+ },
32
+ }),
33
+ ),
34
+ ],
35
+ }),
36
+ defineModule({
37
+ id: 'dxos.org/test/logger/surfaces',
38
+ activatesOn: Events.Startup,
39
+ activate: Toolbar,
40
+ }),
41
+ ]);
@@ -2,7 +2,7 @@
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
7
  export class Log extends Schema.TaggedClass<Log>()('dxos.org/test/logger/log', {
8
8
  input: Schema.Struct({
@@ -2,41 +2,45 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React from 'react';
8
7
 
9
- import { withLayout, withTheme } from '@dxos/storybook-utils';
8
+ import { withTheme } from '@dxos/react-ui/testing';
9
+
10
+ import { IntentPlugin } from '../plugin-intent';
11
+ import { useApp } from '../react';
10
12
 
11
13
  import { DebugPlugin } from './debug';
12
- import { createNumberPlugin, GeneratorPlugin } from './generator';
14
+ import { GeneratorPlugin, createNumberPlugin } from './generator';
13
15
  import { LayoutPlugin } from './layout';
14
16
  import { LoggerPlugin } from './logger';
15
- import { useApp } from '../App';
16
- import { IntentPlugin } from '../plugin-intent';
17
17
 
18
- const plugins = [IntentPlugin(), LayoutPlugin(), DebugPlugin(), LoggerPlugin(), GeneratorPlugin()];
18
+ const pluginFactories = [IntentPlugin, LayoutPlugin, DebugPlugin(), LoggerPlugin(), GeneratorPlugin()];
19
+ const plugins = pluginFactories.map((factory) => (typeof factory === 'function' ? factory() : factory));
19
20
 
20
21
  const Placeholder = () => {
21
22
  return <div>Loading...</div>;
22
23
  };
23
24
 
24
- const Story = () => {
25
+ const DefaultStory = () => {
25
26
  const App = useApp({
26
- pluginLoader: (id) => createNumberPlugin(id),
27
+ pluginLoader: (id) => createNumberPlugin(id)(),
27
28
  plugins,
28
29
  core: plugins.map((plugin) => plugin.meta.id),
29
- // Having a non-empty placeholder makes it clear if it's taking a while to load.
30
30
  placeholder: Placeholder,
31
31
  });
32
32
 
33
33
  return <App />;
34
34
  };
35
35
 
36
- export const Playground = {};
37
-
38
- export default {
36
+ const meta = {
39
37
  title: 'sdk/app-framework/playground',
40
- render: Story,
41
- decorators: [withTheme, withLayout()],
42
- };
38
+ render: DefaultStory,
39
+ decorators: [withTheme],
40
+ } satisfies Meta<typeof DefaultStory>;
41
+
42
+ export default meta;
43
+
44
+ type Story = StoryObj<typeof meta>;
45
+
46
+ export const Playground: Story = {};
@@ -2,19 +2,19 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { INTENT_PLUGIN } from './actions';
6
5
  import { Events } from '../common';
7
6
  import { defineModule, definePlugin, lazy } from '../core';
8
7
 
9
- export const IntentPlugin = () =>
10
- definePlugin({ id: INTENT_PLUGIN, name: 'Intent' }, [
11
- defineModule({
12
- id: `${INTENT_PLUGIN}/module/dispatcher`,
13
- // TODO(wittjosiah): This will mean that startup needs to be reset when intents are added or removed.
14
- // This is fine for now because it's how it worked prior to capabilities api anyways.
15
- // In the future, the intent dispatcher should be able to be reset without resetting the entire app.
16
- activatesOn: Events.Startup,
17
- activatesAfter: [Events.DispatcherReady],
18
- activate: lazy(() => import('./intent-dispatcher')),
19
- }),
20
- ]);
8
+ import { meta } from './meta';
9
+
10
+ export const IntentPlugin = definePlugin(meta, () => [
11
+ defineModule({
12
+ id: `${meta.id}/module/dispatcher`,
13
+ // TODO(wittjosiah): This will mean that startup needs to be reset when intents are added or removed.
14
+ // This is fine for now because it's how it worked prior to capabilities api anyways.
15
+ // In the future, the intent dispatcher should be able to be reset without resetting the entire app.
16
+ activatesOn: Events.Startup,
17
+ activatesAfter: [Events.DispatcherReady],
18
+ activate: lazy(() => import('./intent-dispatcher')),
19
+ }),
20
+ ]);
@@ -2,18 +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
7
  import { Label } from './intent';
8
-
9
- export const INTENT_PLUGIN = 'dxos.org/plugin/intent';
10
- export const INTENT_ACTION = `${INTENT_PLUGIN}/action`;
8
+ import { meta } from './meta';
11
9
 
12
10
  export namespace IntentAction {
13
11
  /**
14
12
  * Log an intent.
15
13
  */
16
- export class Track extends Schema.TaggedClass<Track>()(`${INTENT_ACTION}/track`, {
14
+ export class Track extends Schema.TaggedClass<Track>()(`${meta.id}/action/track`, {
17
15
  input: Schema.Struct({
18
16
  intents: Schema.Array(Schema.String),
19
17
  error: Schema.optional(Schema.String),
@@ -24,7 +22,7 @@ export namespace IntentAction {
24
22
  /**
25
23
  * Fired after an intent is dispatched if the intent is undoable.
26
24
  */
27
- export class ShowUndo extends Schema.TaggedClass<ShowUndo>()(`${INTENT_ACTION}/show-undo`, {
25
+ export class ShowUndo extends Schema.TaggedClass<ShowUndo>()(`${meta.id}/action/show-undo`, {
28
26
  input: Schema.Struct({
29
27
  message: Label,
30
28
  }),
@@ -24,10 +24,11 @@ export class BaseError extends Error {
24
24
 
25
25
  export class NoResolversError extends BaseError {
26
26
  constructor(action: string) {
27
- super('NO_RESOLVERS', 'No resolvers were found for the action', { action });
27
+ super('NO_RESOLVERS', `No resolvers were found for the action: ${action}`, { action });
28
28
  }
29
29
  }
30
30
 
31
+ // TODO(burdon): Detect loops.
31
32
  export class CycleDetectedError extends BaseError {
32
33
  constructor(context?: Record<string, any>) {
33
34
  super(
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  export * from './actions';
6
+ export * from './errors';
6
7
  export * from './intent';
7
8
  export * from './intent-dispatcher';
8
9
  export * from './IntentPlugin';
@@ -2,7 +2,10 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema, Effect, Fiber, pipe } from 'effect';
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Fiber from 'effect/Fiber';
7
+ import * as Function from 'effect/Function';
8
+ import * as Schema from 'effect/Schema';
6
9
  import { describe, expect, test } from 'vitest';
7
10
 
8
11
  import { chain, createIntent } from './intent';
@@ -104,7 +107,11 @@ describe('Intent dispatcher', () => {
104
107
 
105
108
  test('chain intents', async () => {
106
109
  const { dispatch } = createDispatcher(() => [computeResolver, toStringResolver, concatResolver]);
107
- const intent = pipe(createIntent(Compute, { value: 1 }), chain(ToString, {}), chain(Concat, { plus: '!' }));
110
+ const intent = Function.pipe(
111
+ createIntent(Compute, { value: 1 }),
112
+ chain(ToString, {}),
113
+ chain(Concat, { plus: '!' }),
114
+ );
108
115
 
109
116
  expect(intent.first.id).toBe(Compute._tag);
110
117
  expect(intent.last.id).toBe(Concat._tag);
@@ -120,7 +127,7 @@ describe('Intent dispatcher', () => {
120
127
 
121
128
  test('undo chained intent', async () => {
122
129
  const { dispatch, undo } = createDispatcher(() => [computeResolver, toStringResolver, concatResolver]);
123
- const intent = pipe(createIntent(Compute, { value: 1 }), chain(Compute, {}), chain(Compute, {}));
130
+ const intent = Function.pipe(createIntent(Compute, { value: 1 }), chain(Compute, {}), chain(Compute, {}));
124
131
  const program = Effect.gen(function* () {
125
132
  const a = yield* dispatch(intent);
126
133
 
@@ -2,17 +2,22 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Effect, Option, pipe, Ref } from 'effect';
6
- import { type Simplify } from 'effect/Types';
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Function from 'effect/Function';
7
+ import * as Option from 'effect/Option';
8
+ import * as Ref from 'effect/Ref';
9
+ import type * as Types from 'effect/Types';
7
10
 
8
11
  import { live } from '@dxos/live-object';
9
12
  import { log } from '@dxos/log';
10
- import { byPosition, type MaybePromise, type Position, type GuardedType } from '@dxos/util';
13
+ import { type GuardedType, type MaybePromise, type Position, byPosition } from '@dxos/util';
14
+
15
+ import { Capabilities, Events } from '../common';
16
+ import { type PluginContext, contributes } from '../core';
11
17
 
12
18
  import { IntentAction } from './actions';
13
19
  import { CycleDetectedError, NoResolversError } from './errors';
14
20
  import {
15
- createIntent,
16
21
  type AnyIntent,
17
22
  type AnyIntentChain,
18
23
  type Intent,
@@ -22,9 +27,8 @@ import {
22
27
  type IntentResultData,
23
28
  type IntentSchema,
24
29
  type Label,
30
+ createIntent,
25
31
  } from './intent';
26
- import { Events, Capabilities } from '../common';
27
- import { contributes, type PluginContext } from '../core';
28
32
 
29
33
  const EXECUTION_LIMIT = 100;
30
34
  const HISTORY_LIMIT = 100;
@@ -131,7 +135,7 @@ export const createResolver = <Tag extends string, Fields extends IntentParams,
131
135
  */
132
136
  export type PromiseIntentDispatcher = <Fields extends IntentParams>(
133
137
  intent: IntentChain<any, any, any, Fields>,
134
- ) => Promise<Simplify<IntentDispatcherResult<IntentData<Fields>, IntentResultData<Fields>>>>;
138
+ ) => Promise<Types.Simplify<IntentDispatcherResult<IntentData<Fields>, IntentResultData<Fields>>>>;
135
139
 
136
140
  /**
137
141
  * Creates an effect for intents.
@@ -140,7 +144,7 @@ export type IntentDispatcher = <Fields extends IntentParams>(
140
144
  intent: IntentChain<any, any, any, Fields>,
141
145
  depth?: number,
142
146
  ) => Effect.Effect<
143
- Simplify<Required<IntentDispatcherResult<IntentData<Fields>, IntentResultData<Fields>>>['data']>,
147
+ Types.Simplify<Required<IntentDispatcherResult<IntentData<Fields>, IntentResultData<Fields>>>['data']>,
144
148
  Error
145
149
  >;
146
150
 
@@ -196,7 +200,7 @@ export const createDispatcher = (
196
200
  .filter((resolver) => !resolver.filter || resolver.filter(intent.data))
197
201
  .toSorted(byPosition);
198
202
  if (candidates.length === 0) {
199
- yield* Effect.fail(new NoResolversError(intent.id));
203
+ return yield* Effect.fail(new NoResolversError(intent.id));
200
204
  }
201
205
 
202
206
  const effect = candidates[0].resolve(intent.data, intent.undo ?? false);
@@ -205,15 +209,18 @@ export const createDispatcher = (
205
209
  });
206
210
 
207
211
  const dispatch: IntentDispatcher = (intentChain, depth = 0) => {
212
+ log('dispatch', { intentChain: intentChain.all.map((i) => i.id), depth });
208
213
  return Effect.gen(function* () {
209
214
  if (depth > executionLimit) {
210
- yield* Effect.fail(new CycleDetectedError());
215
+ return yield* Effect.fail(new CycleDetectedError());
211
216
  }
212
217
 
213
218
  const resultsRef = yield* Ref.make<AnyIntentResult[]>([]);
214
219
  for (const intent of intentChain.all) {
220
+ log('processing', { intent });
215
221
  const { data: prev } = (yield* resultsRef.get)[0] ?? {};
216
222
  const result = yield* handleIntent({ ...intent, data: { ...intent.data, ...prev } });
223
+ log('ok', { intent: intent.id, result });
217
224
  yield* Ref.update(resultsRef, (results) => [result, ...results]);
218
225
  if (result.intents) {
219
226
  for (const intent of result.intents) {
@@ -230,7 +237,8 @@ export const createDispatcher = (
230
237
  // error: result.error.message,
231
238
  // }),
232
239
  // );
233
- yield* Effect.fail(result.error);
240
+ log.error('failed', { intent: intent.id, error: result.error });
241
+ return yield* Effect.fail(result.error);
234
242
  }
235
243
  }
236
244
 
@@ -251,7 +259,7 @@ export const createDispatcher = (
251
259
 
252
260
  if (result.undoable && isUndoable(results)) {
253
261
  // TODO(wittjosiah): Is there a better way to handle showing undo for chains?
254
- yield* pipe(
262
+ yield* Function.pipe(
255
263
  dispatch(createIntent(IntentAction.ShowUndo, { message: result.undoable.message })),
256
264
  Effect.catchSome((err) =>
257
265
  err instanceof NoResolversError ? Option.some(Effect.succeed(undefined)) : Option.none(),
@@ -259,6 +267,7 @@ export const createDispatcher = (
259
267
  );
260
268
  }
261
269
 
270
+ log('done', { intent: intentChain.all.map((i) => i.id), result: result.data });
262
271
  return result.data;
263
272
  });
264
273
  };
@@ -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 type IntentParams = {
8
8
  readonly input: Schema.Schema.All;
@@ -0,0 +1,10 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type PluginMeta } from '@dxos/app-framework';
6
+
7
+ export const meta: PluginMeta = {
8
+ id: 'dxos.org/plugin/intent',
9
+ name: 'Intent',
10
+ };
@@ -2,34 +2,33 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { SETTINGS_PLUGIN } from './actions';
6
- import { translations } from './translations';
7
5
  import { Capabilities, Events } from '../common';
8
6
  import { contributes, defineModule, definePlugin, lazy } from '../core';
9
7
 
10
- // TODO(wittjosiah): Add options to exclude some modules.
11
- export const SettingsPlugin = () =>
12
- definePlugin({ id: SETTINGS_PLUGIN, name: 'Settings' }, [
13
- defineModule({
14
- id: `${SETTINGS_PLUGIN}/module/store`,
15
- activatesOn: Events.Startup,
16
- activatesBefore: [Events.SetupSettings],
17
- activatesAfter: [Events.SettingsReady],
18
- activate: lazy(() => import('./store')),
19
- }),
20
- defineModule({
21
- id: `${SETTINGS_PLUGIN}/module/translations`,
22
- activatesOn: Events.SetupTranslations,
23
- activate: () => contributes(Capabilities.Translations, translations),
24
- }),
25
- defineModule({
26
- id: `${SETTINGS_PLUGIN}/module/intent-resolver`,
27
- activatesOn: Events.SetupIntentResolver,
28
- activate: lazy(() => import('./intent-resolver')),
29
- }),
30
- defineModule({
31
- id: `${SETTINGS_PLUGIN}/module/app-graph-builder`,
32
- activatesOn: Events.SetupAppGraph,
33
- activate: lazy(() => import('./app-graph-builder')),
34
- }),
35
- ]);
8
+ import { meta } from './meta';
9
+ import { translations } from './translations';
10
+
11
+ export const SettingsPlugin = definePlugin(meta, () => [
12
+ defineModule({
13
+ id: `${meta.id}/module/store`,
14
+ activatesOn: Events.Startup,
15
+ activatesBefore: [Events.SetupSettings],
16
+ activatesAfter: [Events.SettingsReady],
17
+ activate: lazy(() => import('./store')),
18
+ }),
19
+ defineModule({
20
+ id: `${meta.id}/module/translations`,
21
+ activatesOn: Events.SetupTranslations,
22
+ activate: () => contributes(Capabilities.Translations, translations),
23
+ }),
24
+ defineModule({
25
+ id: `${meta.id}/module/intent-resolver`,
26
+ activatesOn: Events.SetupIntentResolver,
27
+ activate: lazy(() => import('./intent-resolver')),
28
+ }),
29
+ defineModule({
30
+ id: `${meta.id}/module/app-graph-builder`,
31
+ activatesOn: Events.SetupAppGraph,
32
+ activate: lazy(() => import('./app-graph-builder')),
33
+ }),
34
+ ]);
@@ -2,28 +2,24 @@
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
- export const SETTINGS_PLUGIN = 'dxos.org/plugin/settings';
8
- export const SETTINGS_ACTION = `${SETTINGS_PLUGIN}/action`;
9
- // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.
10
- // Ideally this should be worked into the data model in a generic way.
7
+ import { meta } from './meta';
8
+
9
+ // TODO(burdon): Document.
11
10
  export const SETTINGS_ID = '!dxos:settings';
12
11
  export const SETTINGS_KEY = 'settings';
13
12
 
14
13
  export namespace SettingsAction {
15
- export class Open extends Schema.TaggedClass<Open>()(`${SETTINGS_ACTION}/open`, {
14
+ export class Open extends Schema.TaggedClass<Open>()(`${meta.id}/open`, {
16
15
  input: Schema.Struct({
17
16
  plugin: Schema.optional(Schema.String),
18
17
  }),
19
18
  output: Schema.Void,
20
19
  }) {}
21
20
 
22
- export class OpenPluginRegistry extends Schema.TaggedClass<OpenPluginRegistry>()(
23
- `${SETTINGS_ACTION}/open-plugin-registry`,
24
- {
25
- input: Schema.Void,
26
- output: Schema.Void,
27
- },
28
- ) {}
21
+ export class OpenPluginRegistry extends Schema.TaggedClass<OpenPluginRegistry>()(`${meta.id}/open-plugin-registry`, {
22
+ input: Schema.Void,
23
+ output: Schema.Void,
24
+ }) {}
29
25
  }