@dxos/app-framework 0.8.4-main.b97322e → 0.8.4-main.bc674ce

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 (424) 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/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +149 -0
  5. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +7 -0
  6. package/dist/lib/browser/capability-7PCNSWBT.mjs +33 -0
  7. package/dist/lib/browser/capability-7PCNSWBT.mjs.map +7 -0
  8. package/dist/lib/browser/capability-KP3PFEXD.mjs +31 -0
  9. package/dist/lib/browser/capability-KP3PFEXD.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-6Y7PZV72.mjs +77 -0
  11. package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-7IQHKD4U.mjs +170 -0
  13. package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-BLQJSGL3.mjs +732 -0
  15. package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
  17. package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-FMZN33N4.mjs +807 -0
  19. package/dist/lib/browser/chunk-FMZN33N4.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-H4WPA7U7.mjs +77 -0
  21. package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  23. package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
  24. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-TCLLRCS3.mjs +145 -0
  26. package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-XYNO72GQ.mjs +746 -0
  28. package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +7 -0
  29. package/dist/lib/browser/common/index.mjs +38 -0
  30. package/dist/lib/browser/core/activation-event.mjs +20 -0
  31. package/dist/lib/browser/core/capability.mjs +28 -0
  32. package/dist/lib/browser/core/plugin-manager.mjs +15 -0
  33. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  34. package/dist/lib/browser/core/plugin.mjs +27 -0
  35. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  36. package/dist/lib/browser/index.mjs +165 -139
  37. package/dist/lib/browser/index.mjs.map +4 -4
  38. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +32 -0
  39. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +7 -0
  40. package/dist/lib/browser/meta.json +1 -1
  41. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +64 -0
  42. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +7 -0
  43. package/dist/lib/browser/react/index.mjs +46 -0
  44. package/dist/lib/browser/react/index.mjs.map +7 -0
  45. package/dist/lib/browser/testing/index.mjs +79 -37
  46. package/dist/lib/browser/testing/index.mjs.map +4 -4
  47. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +150 -0
  48. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +7 -0
  49. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs +34 -0
  50. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +7 -0
  51. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +32 -0
  52. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-663A54LQ.mjs +171 -0
  54. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +747 -0
  56. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
  58. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +733 -0
  60. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs +146 -0
  62. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  64. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-STMXUEPO.mjs +78 -0
  66. package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
  68. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +78 -0
  70. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs +808 -0
  72. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +7 -0
  73. package/dist/lib/node-esm/common/index.mjs +39 -0
  74. package/dist/lib/node-esm/common/index.mjs.map +7 -0
  75. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  76. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  77. package/dist/lib/node-esm/core/capability.mjs +29 -0
  78. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  79. package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
  80. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  81. package/dist/lib/node-esm/core/plugin.mjs +28 -0
  82. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  83. package/dist/lib/node-esm/index.mjs +165 -139
  84. package/dist/lib/node-esm/index.mjs.map +4 -4
  85. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +33 -0
  86. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +7 -0
  87. package/dist/lib/node-esm/meta.json +1 -1
  88. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +65 -0
  89. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +7 -0
  90. package/dist/lib/node-esm/react/index.mjs +47 -0
  91. package/dist/lib/node-esm/react/index.mjs.map +7 -0
  92. package/dist/lib/node-esm/testing/index.mjs +79 -37
  93. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  94. package/dist/types/src/cli.d.ts +39 -0
  95. package/dist/types/src/cli.d.ts.map +1 -0
  96. package/dist/types/src/common/activation-event.d.ts +66 -0
  97. package/dist/types/src/common/activation-event.d.ts.map +1 -0
  98. package/dist/types/src/common/capability.d.ts +265 -0
  99. package/dist/types/src/common/capability.d.ts.map +1 -0
  100. package/dist/types/src/common/collaboration.d.ts +24 -17
  101. package/dist/types/src/common/collaboration.d.ts.map +1 -1
  102. package/dist/types/src/common/file.d.ts +1 -1
  103. package/dist/types/src/common/file.d.ts.map +1 -1
  104. package/dist/types/src/common/graph.d.ts +2 -2
  105. package/dist/types/src/common/graph.d.ts.map +1 -1
  106. package/dist/types/src/common/index.d.ts +5 -4
  107. package/dist/types/src/common/index.d.ts.map +1 -1
  108. package/dist/types/src/common/operations.d.ts +380 -0
  109. package/dist/types/src/common/operations.d.ts.map +1 -0
  110. package/dist/types/src/common/plugin.d.ts +201 -0
  111. package/dist/types/src/common/plugin.d.ts.map +1 -0
  112. package/dist/types/src/common/surface.d.ts +50 -21
  113. package/dist/types/src/common/surface.d.ts.map +1 -1
  114. package/dist/types/src/common/translations.d.ts +10 -1
  115. package/dist/types/src/common/translations.d.ts.map +1 -1
  116. package/dist/types/src/context.d.ts +5 -0
  117. package/dist/types/src/context.d.ts.map +1 -0
  118. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +6 -6
  119. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  120. package/dist/types/src/core/capability-manager.d.ts +43 -0
  121. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  122. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  123. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  124. package/dist/types/src/core/capability.d.ts +150 -0
  125. package/dist/types/src/core/capability.d.ts.map +1 -0
  126. package/dist/types/src/core/index.d.ts +5 -4
  127. package/dist/types/src/core/index.d.ts.map +1 -1
  128. package/dist/types/src/core/plugin-manager.d.ts +66 -0
  129. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  130. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  131. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  132. package/dist/types/src/core/plugin.d.ts +97 -32
  133. package/dist/types/src/core/plugin.d.ts.map +1 -1
  134. package/dist/types/src/index.d.ts +5 -4
  135. package/dist/types/src/index.d.ts.map +1 -1
  136. package/dist/types/src/playground/debug/Debug.d.ts +4 -2
  137. package/dist/types/src/playground/debug/Debug.d.ts.map +1 -1
  138. package/dist/types/src/playground/debug/plugin.d.ts +2 -1
  139. package/dist/types/src/playground/debug/plugin.d.ts.map +1 -1
  140. package/dist/types/src/playground/generator/Main.d.ts +4 -2
  141. package/dist/types/src/playground/generator/Main.d.ts.map +1 -1
  142. package/dist/types/src/playground/generator/Toolbar.d.ts +4 -2
  143. package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -1
  144. package/dist/types/src/playground/generator/generator.d.ts +17 -5
  145. package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
  146. package/dist/types/src/playground/generator/plugin.d.ts +2 -1
  147. package/dist/types/src/playground/generator/plugin.d.ts.map +1 -1
  148. package/dist/types/src/playground/layout/Layout.d.ts +4 -2
  149. package/dist/types/src/playground/layout/Layout.d.ts.map +1 -1
  150. package/dist/types/src/playground/layout/plugin.d.ts +2 -1
  151. package/dist/types/src/playground/layout/plugin.d.ts.map +1 -1
  152. package/dist/types/src/playground/logger/Toolbar.d.ts +4 -2
  153. package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -1
  154. package/dist/types/src/playground/logger/plugin.d.ts +2 -1
  155. package/dist/types/src/playground/logger/plugin.d.ts.map +1 -1
  156. package/dist/types/src/playground/logger/schema.d.ts +15 -1
  157. package/dist/types/src/playground/logger/schema.d.ts.map +1 -1
  158. package/dist/types/src/playground/playground.stories.d.ts +5 -4
  159. package/dist/types/src/playground/playground.stories.d.ts.map +1 -1
  160. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
  161. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
  162. package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
  163. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
  164. package/dist/types/src/plugin-operation/history/errors.d.ts +5 -0
  165. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
  166. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
  167. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
  168. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
  169. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
  170. package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
  171. package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
  172. package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
  173. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
  174. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +93 -0
  175. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
  176. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
  177. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
  178. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
  179. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
  180. package/dist/types/src/plugin-operation/index.d.ts +3 -0
  181. package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
  182. package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
  183. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
  184. package/dist/types/src/plugin-operation/meta.d.ts +3 -0
  185. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
  186. package/dist/types/src/plugin-operation/testing.d.ts +109 -0
  187. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
  188. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
  189. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
  190. package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
  191. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
  192. package/dist/types/src/plugin-runtime/index.d.ts +2 -0
  193. package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
  194. package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
  195. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
  196. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +2 -1
  197. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -1
  198. package/dist/types/src/plugin-settings/actions.d.ts +41 -7
  199. package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
  200. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +4 -2
  201. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -1
  202. package/dist/types/src/plugin-settings/meta.d.ts +3 -0
  203. package/dist/types/src/plugin-settings/meta.d.ts.map +1 -0
  204. package/dist/types/src/plugin-settings/operation-resolver.d.ts +6 -0
  205. package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +1 -0
  206. package/dist/types/src/plugin-settings/translations.d.ts +2 -1
  207. package/dist/types/src/plugin-settings/translations.d.ts.map +1 -1
  208. package/dist/types/src/react/App.d.ts +8 -0
  209. package/dist/types/src/react/App.d.ts.map +1 -0
  210. package/dist/types/src/react/App.stories.d.ts +14 -0
  211. package/dist/types/src/react/App.stories.d.ts.map +1 -0
  212. package/dist/types/src/react/DefaultFallback.d.ts +8 -0
  213. package/dist/types/src/react/DefaultFallback.d.ts.map +1 -0
  214. package/dist/types/src/react/ErrorBoundary.d.ts +13 -14
  215. package/dist/types/src/react/ErrorBoundary.d.ts.map +1 -1
  216. package/dist/types/src/react/PluginManagerContext.stories.d.ts +13 -0
  217. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +1 -0
  218. package/dist/types/src/react/PluginManagerProvider.d.ts +2 -2
  219. package/dist/types/src/react/PluginManagerProvider.d.ts.map +1 -1
  220. package/dist/types/src/react/Surface.d.ts +9 -7
  221. package/dist/types/src/react/Surface.d.ts.map +1 -1
  222. package/dist/types/src/react/Surface.stories.d.ts +8 -10
  223. package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
  224. package/dist/types/src/react/SurfaceInfo.d.ts +11 -0
  225. package/dist/types/src/react/SurfaceInfo.d.ts.map +1 -0
  226. package/dist/types/src/react/common.d.ts +13 -12
  227. package/dist/types/src/react/common.d.ts.map +1 -1
  228. package/dist/types/src/react/index.d.ts +3 -1
  229. package/dist/types/src/react/index.d.ts.map +1 -1
  230. package/dist/types/src/react/types.d.ts +12 -0
  231. package/dist/types/src/react/types.d.ts.map +1 -0
  232. package/dist/types/src/{App.d.ts → react/useApp.d.ts} +11 -9
  233. package/dist/types/src/react/useApp.d.ts.map +1 -0
  234. package/dist/types/src/react/useCapabilities.d.ts +16 -3
  235. package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
  236. package/dist/types/src/react/useLoading.d.ts +18 -0
  237. package/dist/types/src/react/useLoading.d.ts.map +1 -0
  238. package/dist/types/src/react/useOperationResolver.d.ts +19 -0
  239. package/dist/types/src/react/useOperationResolver.d.ts.map +1 -0
  240. package/dist/types/src/testing/index.d.ts +1 -0
  241. package/dist/types/src/testing/index.d.ts.map +1 -1
  242. package/dist/types/src/testing/service.d.ts +8 -0
  243. package/dist/types/src/testing/service.d.ts.map +1 -0
  244. package/dist/types/src/testing/withPluginManager.d.ts +11 -10
  245. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  246. package/dist/types/src/testing/withPluginManager.stories.d.ts +9 -3
  247. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  248. package/dist/types/tsconfig.tsbuildinfo +1 -1
  249. package/moon.yml +10 -2
  250. package/package.json +103 -42
  251. package/src/cli.ts +107 -0
  252. package/src/common/activation-event.ts +99 -0
  253. package/src/common/capability.ts +343 -0
  254. package/src/common/collaboration.ts +24 -14
  255. package/src/common/file.ts +1 -1
  256. package/src/common/graph.ts +2 -2
  257. package/src/common/index.ts +5 -4
  258. package/src/common/operations.ts +412 -0
  259. package/src/common/plugin.ts +364 -0
  260. package/src/common/surface.ts +60 -26
  261. package/src/common/translations.ts +21 -1
  262. package/src/context.ts +9 -0
  263. package/src/core/{events.ts → activation-event.ts} +5 -5
  264. package/src/core/capability-manager.test.ts +151 -0
  265. package/src/core/capability-manager.ts +171 -0
  266. package/src/core/capability.ts +236 -0
  267. package/src/core/index.ts +5 -4
  268. package/src/core/plugin-manager.test.ts +845 -0
  269. package/src/core/plugin-manager.ts +696 -0
  270. package/src/core/plugin.ts +229 -36
  271. package/src/helpers.test.ts +1 -1
  272. package/src/index.ts +5 -4
  273. package/src/playground/debug/Debug.tsx +27 -17
  274. package/src/playground/debug/plugin.ts +10 -11
  275. package/src/playground/generator/Main.tsx +20 -11
  276. package/src/playground/generator/Toolbar.tsx +27 -16
  277. package/src/playground/generator/generator.ts +28 -28
  278. package/src/playground/generator/plugin.ts +15 -17
  279. package/src/playground/layout/Layout.tsx +11 -7
  280. package/src/playground/layout/plugin.ts +12 -11
  281. package/src/playground/logger/Toolbar.tsx +20 -16
  282. package/src/playground/logger/plugin.ts +33 -27
  283. package/src/playground/logger/schema.ts +11 -1
  284. package/src/playground/playground.stories.tsx +29 -17
  285. package/src/plugin-operation/OperationPlugin.ts +25 -0
  286. package/src/plugin-operation/history/capability.ts +37 -0
  287. package/src/plugin-operation/history/errors.ts +11 -0
  288. package/src/plugin-operation/history/history-tracker.test.ts +380 -0
  289. package/src/plugin-operation/history/history-tracker.ts +129 -0
  290. package/src/plugin-operation/history/index.ts +9 -0
  291. package/src/plugin-operation/history/types.ts +17 -0
  292. package/src/plugin-operation/history/undo-mapping.ts +132 -0
  293. package/src/plugin-operation/history/undo-registry.test.ts +73 -0
  294. package/src/plugin-operation/history/undo-registry.ts +54 -0
  295. package/src/plugin-operation/index.ts +6 -0
  296. package/src/plugin-operation/invoker-capability.ts +40 -0
  297. package/src/plugin-operation/meta.ts +11 -0
  298. package/src/plugin-operation/testing.ts +174 -0
  299. package/src/plugin-runtime/RuntimePlugin.ts +20 -0
  300. package/src/plugin-runtime/capability.ts +53 -0
  301. package/src/plugin-runtime/index.ts +5 -0
  302. package/src/plugin-runtime/meta.ts +11 -0
  303. package/src/plugin-settings/SettingsPlugin.ts +13 -29
  304. package/src/plugin-settings/actions.ts +45 -10
  305. package/src/plugin-settings/app-graph-builder.ts +124 -141
  306. package/src/plugin-settings/meta.ts +10 -0
  307. package/src/plugin-settings/operation-resolver.ts +55 -0
  308. package/src/plugin-settings/translations.ts +4 -4
  309. package/src/react/App.stories.tsx +63 -0
  310. package/src/react/App.tsx +60 -0
  311. package/src/react/DefaultFallback.tsx +26 -0
  312. package/src/react/ErrorBoundary.tsx +26 -15
  313. package/src/react/PluginManagerContext.stories.tsx +184 -0
  314. package/src/react/PluginManagerProvider.ts +2 -2
  315. package/src/react/Surface.stories.tsx +103 -58
  316. package/src/react/Surface.tsx +236 -46
  317. package/src/react/SurfaceInfo.tsx +107 -0
  318. package/src/react/common.ts +30 -5
  319. package/src/react/index.ts +5 -1
  320. package/src/react/types.ts +27 -0
  321. package/src/react/useApp.tsx +209 -0
  322. package/src/react/useCapabilities.ts +38 -5
  323. package/src/react/useLoading.tsx +68 -0
  324. package/src/react/useOperationResolver.ts +40 -0
  325. package/src/testing/index.ts +1 -0
  326. package/src/testing/service.ts +52 -0
  327. package/src/testing/withPluginManager.stories.tsx +14 -10
  328. package/src/testing/withPluginManager.tsx +43 -44
  329. package/tsconfig.json +27 -16
  330. package/vitest.config.ts +8 -6
  331. package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
  332. package/.swc/plugins/v7_linux_x86_64_13.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429 +0 -0
  333. package/dist/lib/browser/app-graph-builder-LYF7EKNN.mjs +0 -137
  334. package/dist/lib/browser/app-graph-builder-LYF7EKNN.mjs.map +0 -7
  335. package/dist/lib/browser/chunk-FMN65HSW.mjs +0 -1519
  336. package/dist/lib/browser/chunk-FMN65HSW.mjs.map +0 -7
  337. package/dist/lib/browser/chunk-FO2PH7M3.mjs +0 -415
  338. package/dist/lib/browser/chunk-FO2PH7M3.mjs.map +0 -7
  339. package/dist/lib/browser/chunk-ORWHM7CO.mjs +0 -32
  340. package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
  341. package/dist/lib/browser/intent-dispatcher-LSYQZSEB.mjs +0 -11
  342. package/dist/lib/browser/intent-resolver-ZTNOSO3A.mjs +0 -39
  343. package/dist/lib/browser/intent-resolver-ZTNOSO3A.mjs.map +0 -7
  344. package/dist/lib/browser/store-KML2R4IE.mjs +0 -30
  345. package/dist/lib/browser/store-KML2R4IE.mjs.map +0 -7
  346. package/dist/lib/browser/worker.mjs +0 -79
  347. package/dist/lib/node-esm/app-graph-builder-SAOWGJDK.mjs +0 -138
  348. package/dist/lib/node-esm/app-graph-builder-SAOWGJDK.mjs.map +0 -7
  349. package/dist/lib/node-esm/chunk-73HGSHKE.mjs +0 -416
  350. package/dist/lib/node-esm/chunk-73HGSHKE.mjs.map +0 -7
  351. package/dist/lib/node-esm/chunk-UMZQERLE.mjs +0 -34
  352. package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
  353. package/dist/lib/node-esm/chunk-ZEZ4FVEU.mjs +0 -1521
  354. package/dist/lib/node-esm/chunk-ZEZ4FVEU.mjs.map +0 -7
  355. package/dist/lib/node-esm/intent-dispatcher-6CYNGPSW.mjs +0 -12
  356. package/dist/lib/node-esm/intent-resolver-W7Z7WFFM.mjs +0 -40
  357. package/dist/lib/node-esm/intent-resolver-W7Z7WFFM.mjs.map +0 -7
  358. package/dist/lib/node-esm/store-QEXGXLWZ.mjs +0 -31
  359. package/dist/lib/node-esm/store-QEXGXLWZ.mjs.map +0 -7
  360. package/dist/lib/node-esm/worker.mjs +0 -80
  361. package/dist/types/src/App.d.ts.map +0 -1
  362. package/dist/types/src/common/capabilities.d.ts +0 -124
  363. package/dist/types/src/common/capabilities.d.ts.map +0 -1
  364. package/dist/types/src/common/events.d.ts +0 -52
  365. package/dist/types/src/common/events.d.ts.map +0 -1
  366. package/dist/types/src/common/layout.d.ts +0 -281
  367. package/dist/types/src/common/layout.d.ts.map +0 -1
  368. package/dist/types/src/core/capabilities.d.ts +0 -114
  369. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  370. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  371. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  372. package/dist/types/src/core/events.d.ts.map +0 -1
  373. package/dist/types/src/core/manager.d.ts +0 -122
  374. package/dist/types/src/core/manager.d.ts.map +0 -1
  375. package/dist/types/src/core/manager.test.d.ts +0 -2
  376. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  377. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  378. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  379. package/dist/types/src/plugin-intent/actions.d.ts +0 -38
  380. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  381. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  382. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  383. package/dist/types/src/plugin-intent/index.d.ts +0 -5
  384. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  385. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  386. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  387. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  388. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  389. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  390. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  391. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  392. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  393. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  394. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  395. package/dist/types/src/react/IntentContext.d.ts +0 -8
  396. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  397. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  398. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  399. package/dist/types/src/worker.d.ts +0 -4
  400. package/dist/types/src/worker.d.ts.map +0 -1
  401. package/src/App.tsx +0 -276
  402. package/src/common/capabilities.ts +0 -118
  403. package/src/common/events.ts +0 -77
  404. package/src/common/layout.ts +0 -278
  405. package/src/core/capabilities.test.ts +0 -136
  406. package/src/core/capabilities.ts +0 -254
  407. package/src/core/manager.test.ts +0 -515
  408. package/src/core/manager.ts +0 -519
  409. package/src/plugin-intent/IntentPlugin.ts +0 -20
  410. package/src/plugin-intent/actions.ts +0 -33
  411. package/src/plugin-intent/errors.ts +0 -39
  412. package/src/plugin-intent/index.ts +0 -8
  413. package/src/plugin-intent/intent-dispatcher.test.ts +0 -279
  414. package/src/plugin-intent/intent-dispatcher.ts +0 -333
  415. package/src/plugin-intent/intent.ts +0 -154
  416. package/src/plugin-settings/intent-resolver.ts +0 -34
  417. package/src/plugin-settings/store.ts +0 -33
  418. package/src/react/IntentContext.tsx +0 -34
  419. package/src/react/useIntentResolver.ts +0 -22
  420. package/src/worker.ts +0 -11
  421. /package/dist/lib/browser/{intent-dispatcher-LSYQZSEB.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  422. /package/dist/lib/browser/{worker.mjs.map → common/index.mjs.map} +0 -0
  423. /package/dist/lib/{node-esm/intent-dispatcher-6CYNGPSW.mjs.map → browser/core/activation-event.mjs.map} +0 -0
  424. /package/dist/lib/{node-esm/worker.mjs.map → browser/core/capability.mjs.map} +0 -0
@@ -1,37 +1,83 @@
1
1
  import {
2
2
  useApp
3
- } from "../chunk-FO2PH7M3.mjs";
3
+ } from "../chunk-XYNO72GQ.mjs";
4
+ import "../chunk-FHQTHCX7.mjs";
4
5
  import {
5
- Capabilities,
6
- Events,
7
- PluginManager,
8
- contributes,
9
- defineModule,
10
- definePlugin
11
- } from "../chunk-FMN65HSW.mjs";
6
+ ActivationEvent,
7
+ Capability
8
+ } from "../chunk-BLQJSGL3.mjs";
9
+ import {
10
+ plugin_manager_exports
11
+ } from "../chunk-FMZN33N4.mjs";
12
+ import "../chunk-PKQT6C53.mjs";
13
+ import {
14
+ plugin_exports
15
+ } from "../chunk-TCLLRCS3.mjs";
16
+ import {
17
+ capability_exports
18
+ } from "../chunk-6Y7PZV72.mjs";
19
+ import "../chunk-J5LGTIGS.mjs";
20
+
21
+ // src/testing/service.ts
22
+ import * as Effect from "effect/Effect";
23
+ import * as Layer from "effect/Layer";
24
+ import { invariant } from "@dxos/invariant";
25
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/testing/service.ts";
26
+ var fromPlugins = (plugins) => Layer.effect(plugin_exports.Service, Effect.gen(function* () {
27
+ const pluginLoader = (id) => Effect.sync(() => {
28
+ const plugin = plugins.find((plugin2) => plugin2.meta.id === id);
29
+ invariant(plugin, `Plugin not found: ${id}`, {
30
+ F: __dxlog_file,
31
+ L: 26,
32
+ S: this,
33
+ A: [
34
+ "plugin",
35
+ "`Plugin not found: ${id}`"
36
+ ]
37
+ });
38
+ return plugin;
39
+ });
40
+ const manager = plugin_manager_exports.make({
41
+ pluginLoader,
42
+ plugins,
43
+ core: plugins.map((plugin) => plugin.meta.id)
44
+ });
45
+ manager.capabilities.contribute({
46
+ interface: Capability.PluginManager,
47
+ implementation: manager,
48
+ module: "dxos.org/app-framework/plugin-manager"
49
+ });
50
+ manager.capabilities.contribute({
51
+ interface: Capability.AtomRegistry,
52
+ implementation: manager.registry,
53
+ module: "dxos.org/app-framework/atom-registry"
54
+ });
55
+ yield* manager.activate(ActivationEvent.Startup);
56
+ return manager;
57
+ }));
12
58
 
13
59
  // src/testing/withPluginManager.tsx
60
+ import * as Effect2 from "effect/Effect";
14
61
  import React, { useEffect, useMemo } from "react";
15
62
  import { raise } from "@dxos/debug";
16
- var getValue = (providerOrValue, context) => {
17
- return typeof providerOrValue === "function" ? providerOrValue(context) : providerOrValue;
18
- };
63
+ import { useAsyncEffect } from "@dxos/react-hooks";
64
+ import { getProviderValue } from "@dxos/util";
19
65
  var setupPluginManager = ({ capabilities, plugins = [], core = plugins.map(({ meta }) => meta.id), ...options } = {}) => {
20
- const pluginManager = new PluginManager({
66
+ const pluginManager = plugin_manager_exports.make({
21
67
  pluginLoader: () => raise(new Error("Not implemented")),
22
68
  plugins: [
23
- storyPlugin(),
69
+ StoryPlugin,
24
70
  ...plugins
25
71
  ],
26
72
  core: [
27
- STORY_PLUGIN,
73
+ StoryPlugin.meta.id,
28
74
  ...core
29
75
  ],
30
76
  ...options
31
77
  });
32
78
  if (capabilities) {
33
- getValue(capabilities, pluginManager.context).forEach((capability) => {
34
- pluginManager.context.contributeCapability({
79
+ getProviderValue(capabilities, pluginManager.capabilities).forEach((capability) => {
80
+ pluginManager.capabilities.contribute({
35
81
  interface: capability.interface,
36
82
  implementation: capability.implementation,
37
83
  module: "story"
@@ -40,32 +86,30 @@ var setupPluginManager = ({ capabilities, plugins = [], core = plugins.map(({ me
40
86
  }
41
87
  return pluginManager;
42
88
  };
43
- var withPluginManager = (options = {}) => {
89
+ var withPluginManager = (init = {}) => {
44
90
  return (Story, context) => {
91
+ const options = typeof init === "function" ? init(context) : init;
45
92
  const pluginManager = useMemo(() => setupPluginManager(options), [
46
- options
93
+ init
47
94
  ]);
48
95
  useEffect(() => {
49
- const capability = contributes(Capabilities.ReactRoot, {
96
+ const capability = capability_exports.contributes(Capability.ReactRoot, {
50
97
  id: context.id,
51
98
  root: () => /* @__PURE__ */ React.createElement(Story, null)
52
99
  });
53
- pluginManager.context.contributeCapability({
100
+ pluginManager.capabilities.contribute({
54
101
  ...capability,
55
102
  module: "dxos.org/app-framework/withPluginManager"
56
103
  });
57
104
  return () => {
58
- pluginManager.context.removeCapability(capability.interface, capability.implementation);
105
+ pluginManager.capabilities.remove(capability.interface, capability.implementation);
59
106
  };
60
107
  }, [
61
108
  pluginManager,
62
109
  context
63
110
  ]);
64
- useEffect(() => {
65
- const timeout = setTimeout(async () => {
66
- await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
67
- });
68
- return () => clearTimeout(timeout);
111
+ useAsyncEffect(async () => {
112
+ await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
69
113
  }, [
70
114
  pluginManager
71
115
  ]);
@@ -75,19 +119,17 @@ var withPluginManager = (options = {}) => {
75
119
  return /* @__PURE__ */ React.createElement(App, null);
76
120
  };
77
121
  };
78
- var STORY_PLUGIN = "dxos.org/app-framework/story";
79
- var storyPlugin = () => definePlugin({
80
- id: STORY_PLUGIN,
122
+ var storyMeta = {
123
+ id: "dxos.org/app-framework/story",
81
124
  name: "Story"
82
- }, [
83
- defineModule({
84
- id: STORY_PLUGIN,
85
- activatesOn: Events.Startup,
86
- activate: () => []
87
- })
88
- ]);
125
+ };
126
+ var StoryPlugin = plugin_exports.define(storyMeta).pipe(plugin_exports.addModule({
127
+ id: "Story",
128
+ activatesOn: ActivationEvent.Startup,
129
+ activate: () => Effect2.succeed([])
130
+ }), plugin_exports.make)();
89
131
  export {
90
- getValue,
132
+ fromPlugins,
91
133
  setupPluginManager,
92
134
  withPluginManager
93
135
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/testing/withPluginManager.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Decorator } from '@storybook/react';\nimport React, { useEffect, useMemo } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { useApp, type CreateAppOptions } from '../App';\nimport { Capabilities, Events } from '../common';\nimport {\n contributes,\n defineModule,\n definePlugin,\n type ActivationEvent,\n type AnyCapability,\n PluginManager,\n type PluginContext,\n} from '../core';\n\n// TODO(burdon): Factor out (use consistently in plugin framework?)\nexport type Provider<C, R> = (context: C) => R;\nexport type ProviderOrValue<C, R> = Provider<C, R> | R;\nexport const getValue = <C, R>(providerOrValue: ProviderOrValue<C, R>, context: C): R => {\n return typeof providerOrValue === 'function' ? (providerOrValue as Provider<C, R>)(context) : providerOrValue;\n};\n\n/**\n * @internal\n */\nexport const setupPluginManager = ({\n capabilities,\n plugins = [],\n core = plugins.map(({ meta }) => meta.id),\n ...options\n}: CreateAppOptions & Pick<WithPluginManagerOptions, 'capabilities'> = {}) => {\n const pluginManager = new PluginManager({\n pluginLoader: () => raise(new Error('Not implemented')),\n plugins: [storyPlugin(), ...plugins],\n core: [STORY_PLUGIN, ...core],\n ...options,\n });\n\n if (capabilities) {\n getValue(capabilities, pluginManager.context).forEach((capability) => {\n pluginManager.context.contributeCapability({\n interface: capability.interface,\n implementation: capability.implementation,\n module: 'story',\n });\n });\n }\n\n return pluginManager;\n};\n\nexport type WithPluginManagerOptions = CreateAppOptions & {\n capabilities?: ProviderOrValue<PluginContext, AnyCapability[]>;\n fireEvents?: (ActivationEvent | string)[];\n};\n\n/**\n * Wraps a story with a plugin manager.\n * NOTE: This builds up and tears down the plugin manager on every render.\n */\nexport const withPluginManager = (options: WithPluginManagerOptions = {}): Decorator => {\n return (Story, context) => {\n const pluginManager = useMemo(() => setupPluginManager(options), [options]);\n\n // Set-up root capability.\n useEffect(() => {\n const capability = contributes(Capabilities.ReactRoot, {\n id: context.id,\n root: () => <Story />,\n });\n\n pluginManager.context.contributeCapability({\n ...capability,\n module: 'dxos.org/app-framework/withPluginManager',\n });\n\n return () => {\n pluginManager.context.removeCapability(capability.interface, capability.implementation);\n };\n }, [pluginManager, context]);\n\n // Fire events.\n useEffect(() => {\n const timeout = setTimeout(async () => {\n await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);\n });\n\n return () => clearTimeout(timeout);\n }, [pluginManager]);\n\n // Create app.\n const App = useApp({ pluginManager });\n\n return <App />;\n };\n};\n\n// No-op plugin to ensure there exists at least one plugin for the startup event.\n// This is necessary because `createApp` expects the startup event to complete before the app is ready.\nconst STORY_PLUGIN = 'dxos.org/app-framework/story';\nconst storyPlugin = () =>\n definePlugin({ id: STORY_PLUGIN, name: 'Story' }, [\n defineModule({ id: STORY_PLUGIN, activatesOn: Events.Startup, activate: () => [] }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;AAKA,OAAOA,SAASC,WAAWC,eAAe;AAE1C,SAASC,aAAa;AAiBf,IAAMC,WAAW,CAAOC,iBAAwCC,YAAAA;AACrE,SAAO,OAAOD,oBAAoB,aAAcA,gBAAmCC,OAAAA,IAAWD;AAChG;AAKO,IAAME,qBAAqB,CAAC,EACjCC,cACAC,UAAU,CAAA,GACVC,OAAOD,QAAQE,IAAI,CAAC,EAAEC,KAAI,MAAOA,KAAKC,EAAE,GACxC,GAAGC,QAAAA,IACkE,CAAC,MAAC;AACvE,QAAMC,gBAAgB,IAAIC,cAAc;IACtCC,cAAc,MAAMC,MAAM,IAAIC,MAAM,iBAAA,CAAA;IACpCV,SAAS;MAACW,YAAAA;SAAkBX;;IAC5BC,MAAM;MAACW;SAAiBX;;IACxB,GAAGI;EACL,CAAA;AAEA,MAAIN,cAAc;AAChBJ,aAASI,cAAcO,cAAcT,OAAO,EAAEgB,QAAQ,CAACC,eAAAA;AACrDR,oBAAcT,QAAQkB,qBAAqB;QACzCC,WAAWF,WAAWE;QACtBC,gBAAgBH,WAAWG;QAC3BC,QAAQ;MACV,CAAA;IACF,CAAA;EACF;AAEA,SAAOZ;AACT;AAWO,IAAMa,oBAAoB,CAACd,UAAoC,CAAC,MAAC;AACtE,SAAO,CAACe,OAAOvB,YAAAA;AACb,UAAMS,gBAAgBe,QAAQ,MAAMvB,mBAAmBO,OAAAA,GAAU;MAACA;KAAQ;AAG1EiB,cAAU,MAAA;AACR,YAAMR,aAAaS,YAAYC,aAAaC,WAAW;QACrDrB,IAAIP,QAAQO;QACZsB,MAAM,MAAM,sBAAA,cAACN,OAAAA,IAAAA;MACf,CAAA;AAEAd,oBAAcT,QAAQkB,qBAAqB;QACzC,GAAGD;QACHI,QAAQ;MACV,CAAA;AAEA,aAAO,MAAA;AACLZ,sBAAcT,QAAQ8B,iBAAiBb,WAAWE,WAAWF,WAAWG,cAAc;MACxF;IACF,GAAG;MAACX;MAAeT;KAAQ;AAG3ByB,cAAU,MAAA;AACR,YAAMM,UAAUC,WAAW,YAAA;AACzB,cAAMC,QAAQC,IAAI1B,QAAQ2B,YAAY9B,IAAI,CAAC+B,UAAU3B,cAAc4B,SAASD,KAAAA,CAAAA,KAAW,CAAA,CAAE;MAC3F,CAAA;AAEA,aAAO,MAAME,aAAaP,OAAAA;IAC5B,GAAG;MAACtB;KAAc;AAGlB,UAAM8B,MAAMC,OAAO;MAAE/B;IAAc,CAAA;AAEnC,WAAO,sBAAA,cAAC8B,KAAAA,IAAAA;EACV;AACF;AAIA,IAAMxB,eAAe;AACrB,IAAMD,cAAc,MAClB2B,aAAa;EAAElC,IAAIQ;EAAc2B,MAAM;AAAQ,GAAG;EAChDC,aAAa;IAAEpC,IAAIQ;IAAc6B,aAAaC,OAAOC;IAAST,UAAU,MAAM,CAAA;EAAG,CAAA;CAClF;",
6
- "names": ["React", "useEffect", "useMemo", "raise", "getValue", "providerOrValue", "context", "setupPluginManager", "capabilities", "plugins", "core", "map", "meta", "id", "options", "pluginManager", "PluginManager", "pluginLoader", "raise", "Error", "storyPlugin", "STORY_PLUGIN", "forEach", "capability", "contributeCapability", "interface", "implementation", "module", "withPluginManager", "Story", "useMemo", "useEffect", "contributes", "Capabilities", "ReactRoot", "root", "removeCapability", "timeout", "setTimeout", "Promise", "all", "fireEvents", "event", "activate", "clearTimeout", "App", "useApp", "definePlugin", "name", "defineModule", "activatesOn", "Events", "Startup"]
3
+ "sources": ["../../../../src/testing/service.ts", "../../../../src/testing/withPluginManager.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { invariant } from '@dxos/invariant';\n\nimport * as Common from '../common';\nimport { Plugin, PluginManager } from '../core';\n\n/**\n * Creates a Plugin.Service layer from a list of plugins.\n * This is primarily used for testing.\n */\nexport const fromPlugins = (plugins: Plugin.Plugin[]) =>\n Layer.effect(\n Plugin.Service,\n Effect.gen(function* () {\n // TODO(wittjosiah): Try to dedupe logic between here, createCliApp and useApp.\n\n const pluginLoader = (id: string) =>\n Effect.sync(() => {\n const plugin = plugins.find((plugin) => plugin.meta.id === id);\n invariant(plugin, `Plugin not found: ${id}`);\n return plugin;\n });\n\n const manager = PluginManager.make({\n pluginLoader,\n plugins,\n core: plugins.map((plugin) => plugin.meta.id),\n });\n\n manager.capabilities.contribute({\n interface: Common.Capability.PluginManager,\n implementation: manager,\n module: 'dxos.org/app-framework/plugin-manager',\n });\n\n manager.capabilities.contribute({\n interface: Common.Capability.AtomRegistry,\n implementation: manager.registry,\n module: 'dxos.org/app-framework/atom-registry',\n });\n\n yield* manager.activate(Common.ActivationEvent.Startup);\n\n return manager;\n }),\n );\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Decorator, type StoryContext } from '@storybook/react';\nimport * as Effect from 'effect/Effect';\nimport React, { useEffect, useMemo } from 'react';\n\nimport { raise } from '@dxos/debug';\nimport { useAsyncEffect } from '@dxos/react-hooks';\nimport { type MaybeProvider, getProviderValue } from '@dxos/util';\n\nimport * as Common from '../common';\nimport { type ActivationEvent, Capability, type CapabilityManager, Plugin, PluginManager } from '../core';\nimport { type UseAppOptions, useApp } from '../react';\n\n/**\n * @internal\n */\nexport const setupPluginManager = ({\n capabilities,\n plugins = [],\n core = plugins.map(({ meta }) => meta.id),\n ...options\n}: UseAppOptions & Pick<WithPluginManagerOptions, 'capabilities'> = {}) => {\n const pluginManager = PluginManager.make({\n pluginLoader: () => raise(new Error('Not implemented')),\n plugins: [StoryPlugin, ...plugins],\n core: [StoryPlugin.meta.id, ...core],\n ...options,\n });\n\n if (capabilities) {\n getProviderValue(capabilities, pluginManager.capabilities).forEach((capability) => {\n pluginManager.capabilities.contribute({\n interface: capability.interface,\n implementation: capability.implementation,\n module: 'story',\n });\n });\n }\n\n return pluginManager;\n};\n\nexport type WithPluginManagerOptions = UseAppOptions & {\n /** @deprecated */\n capabilities?: MaybeProvider<Capability.Any[], CapabilityManager.CapabilityManager>;\n /** @deprecated */\n fireEvents?: (ActivationEvent.ActivationEvent | string)[];\n};\n\nexport type WithPluginManagerInitializer<Args = void> =\n | WithPluginManagerOptions\n | ((context: StoryContext<Args>) => WithPluginManagerOptions);\n\n/**\n * Wraps a story with a plugin manager.\n * NOTE: This builds up and tears down the plugin manager on every render.\n */\nexport const withPluginManager = <Args,>(init: WithPluginManagerInitializer<Args> = {}): Decorator => {\n return (Story, context) => {\n const options = typeof init === 'function' ? init(context as any) : init;\n const pluginManager = useMemo(() => setupPluginManager(options), [init]);\n\n // Set-up root capability.\n useEffect(() => {\n const capability = Capability.contributes(Common.Capability.ReactRoot, {\n id: context.id,\n root: () => <Story />,\n });\n\n pluginManager.capabilities.contribute({\n ...capability,\n module: 'dxos.org/app-framework/withPluginManager',\n });\n\n return () => {\n pluginManager.capabilities.remove(capability.interface, capability.implementation);\n };\n }, [pluginManager, context]);\n\n // Fire events.\n useAsyncEffect(async () => {\n await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);\n }, [pluginManager]);\n\n // Create app.\n const App = useApp({ pluginManager });\n\n return <App />;\n };\n};\n\nconst storyMeta = {\n id: 'dxos.org/app-framework/story',\n name: 'Story',\n};\n\n// No-op plugin to ensure there exists at least one plugin for the startup event.\n// This is necessary because `createApp` expects the startup event to complete before the app is ready.\nconst StoryPlugin = Plugin.define(storyMeta).pipe(\n Plugin.addModule({\n id: 'Story',\n activatesOn: Common.ActivationEvent.Startup,\n activate: () => Effect.succeed([]),\n }),\n Plugin.make,\n)();\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Layer", "invariant", "fromPlugins", "plugins", "effect", "Plugin", "Service", "gen", "pluginLoader", "id", "sync", "plugin", "find", "meta", "invariant", "manager", "PluginManager", "make", "core", "map", "capabilities", "contribute", "interface", "Capability", "implementation", "module", "AtomRegistry", "registry", "activate", "ActivationEvent", "Startup", "Effect", "React", "useEffect", "useMemo", "raise", "useAsyncEffect", "getProviderValue", "setupPluginManager", "capabilities", "plugins", "core", "map", "meta", "id", "options", "pluginManager", "PluginManager", "make", "pluginLoader", "raise", "Error", "StoryPlugin", "getProviderValue", "forEach", "capability", "contribute", "interface", "implementation", "module", "withPluginManager", "init", "Story", "context", "useMemo", "useEffect", "Capability", "contributes", "ReactRoot", "root", "remove", "useAsyncEffect", "Promise", "all", "fireEvents", "event", "activate", "App", "useApp", "storyMeta", "name", "Plugin", "define", "pipe", "addModule", "activatesOn", "ActivationEvent", "Startup", "succeed"]
7
7
  }
@@ -0,0 +1,150 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ SETTINGS_ID,
4
+ SETTINGS_KEY,
5
+ SettingsOperation,
6
+ meta
7
+ } from "./chunk-XR6NMKEP.mjs";
8
+ import {
9
+ Capability
10
+ } from "./chunk-GQEBIGKD.mjs";
11
+ import "./chunk-XYQTBFPA.mjs";
12
+ import "./chunk-7OWSHPYK.mjs";
13
+ import "./chunk-GT6OKM5I.mjs";
14
+ import {
15
+ capability_exports
16
+ } from "./chunk-STMXUEPO.mjs";
17
+ import "./chunk-HSLMI22Q.mjs";
18
+
19
+ // src/plugin-settings/app-graph-builder.ts
20
+ import * as Effect from "effect/Effect";
21
+ import { GraphBuilder, NodeMatcher } from "@dxos/app-graph";
22
+ import { Operation } from "@dxos/operation";
23
+ import { isNonNullable } from "@dxos/util";
24
+ var app_graph_builder_default = capability_exports.makeModule(Effect.fnUntraced(function* () {
25
+ const capabilities = yield* capability_exports.Service;
26
+ const managerAtom = capabilities.atom(Capability.PluginManager);
27
+ const settingsAtom = capabilities.atom(Capability.Settings);
28
+ const extensions = yield* Effect.all([
29
+ GraphBuilder.createExtension({
30
+ id: `${meta.id}/action`,
31
+ match: NodeMatcher.whenRoot,
32
+ actions: () => Effect.succeed([
33
+ {
34
+ id: meta.id,
35
+ data: () => Operation.invoke(SettingsOperation.Open, {}),
36
+ properties: {
37
+ label: [
38
+ "open settings label",
39
+ {
40
+ ns: meta.id
41
+ }
42
+ ],
43
+ icon: "ph--gear--regular",
44
+ disposition: "menu",
45
+ keyBinding: {
46
+ macos: "meta+,",
47
+ windows: "alt+,"
48
+ }
49
+ }
50
+ }
51
+ ])
52
+ }),
53
+ GraphBuilder.createExtension({
54
+ id: `${meta.id}/core`,
55
+ match: NodeMatcher.whenRoot,
56
+ connector: () => Effect.succeed([
57
+ {
58
+ id: SETTINGS_ID,
59
+ type: meta.id,
60
+ properties: {
61
+ label: [
62
+ "app settings label",
63
+ {
64
+ ns: meta.id
65
+ }
66
+ ],
67
+ icon: "ph--gear--regular",
68
+ disposition: "pin-end",
69
+ position: "hoist",
70
+ testId: "treeView.appSettings"
71
+ }
72
+ }
73
+ ])
74
+ }),
75
+ GraphBuilder.createExtension({
76
+ id: `${meta.id}/core-plugins`,
77
+ match: NodeMatcher.whenId(SETTINGS_ID),
78
+ connector: (node, get) => {
79
+ const [manager] = get(managerAtom);
80
+ const allSettings = get(settingsAtom);
81
+ return Effect.succeed([
82
+ ...manager.getPlugins().filter((plugin) => manager.getCore().includes(plugin.meta.id)).map((plugin) => {
83
+ const settings = allSettings.find((s) => s.prefix === plugin.meta.id);
84
+ if (!settings) {
85
+ return null;
86
+ }
87
+ return [
88
+ plugin.meta,
89
+ settings
90
+ ];
91
+ }).filter(isNonNullable).map(([meta2, settings]) => ({
92
+ id: `${SETTINGS_KEY}:${meta2.id.replaceAll("/", ":")}`,
93
+ type: "category",
94
+ data: settings,
95
+ properties: {
96
+ label: meta2.name ?? meta2.id,
97
+ icon: meta2.icon ?? "ph--circle--regular"
98
+ }
99
+ })),
100
+ {
101
+ id: `${SETTINGS_KEY}:custom-plugins`,
102
+ type: "category",
103
+ properties: {
104
+ label: [
105
+ "custom plugins label",
106
+ {
107
+ ns: meta.id
108
+ }
109
+ ],
110
+ icon: "ph--squares-four--regular",
111
+ role: "branch",
112
+ disposition: "collection"
113
+ }
114
+ }
115
+ ]);
116
+ }
117
+ }),
118
+ GraphBuilder.createExtension({
119
+ id: `${meta.id}/custom-plugins`,
120
+ match: NodeMatcher.whenId(`${SETTINGS_KEY}:custom-plugins`),
121
+ connector: (node, get) => {
122
+ const [manager] = get(managerAtom);
123
+ const allSettings = get(settingsAtom);
124
+ return Effect.succeed(manager.getPlugins().filter((plugin) => !manager.getCore().includes(plugin.meta.id)).map((plugin) => {
125
+ const settings = allSettings.find((s) => s.prefix === plugin.meta.id);
126
+ if (!settings) {
127
+ return null;
128
+ }
129
+ return [
130
+ plugin.meta,
131
+ settings
132
+ ];
133
+ }).filter(isNonNullable).map(([meta2, settings]) => ({
134
+ id: `${SETTINGS_KEY}:${meta2.id.replaceAll("/", ":")}`,
135
+ type: "category",
136
+ data: settings,
137
+ properties: {
138
+ label: meta2.name ?? meta2.id,
139
+ icon: meta2.icon ?? "ph--circle--regular"
140
+ }
141
+ })));
142
+ }
143
+ })
144
+ ]);
145
+ return capability_exports.contributes(Capability.AppGraphBuilder, extensions);
146
+ }));
147
+ export {
148
+ app_graph_builder_default as default
149
+ };
150
+ //# sourceMappingURL=app-graph-builder-LROHGJEM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/plugin-settings/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { GraphBuilder, NodeMatcher } from '@dxos/app-graph';\nimport { Operation } from '@dxos/operation';\nimport { isNonNullable } from '@dxos/util';\n\nimport * as Common from '../common';\nimport { Capability, type Plugin } from '../core';\n\nimport { SETTINGS_ID, SETTINGS_KEY, SettingsOperation } from './actions';\nimport { meta } from './meta';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n // Get context for lazy capability access in callbacks.\n const capabilities = yield* Capability.Service;\n const managerAtom = capabilities.atom(Common.Capability.PluginManager);\n const settingsAtom = capabilities.atom(Common.Capability.Settings);\n\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: `${meta.id}/action`,\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n {\n id: meta.id,\n data: () => Operation.invoke(SettingsOperation.Open, {}),\n properties: {\n label: ['open settings label', { ns: meta.id }],\n icon: 'ph--gear--regular',\n disposition: 'menu',\n keyBinding: {\n macos: 'meta+,',\n windows: 'alt+,',\n },\n },\n },\n ]),\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}/core`,\n match: NodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n {\n id: SETTINGS_ID,\n type: meta.id,\n properties: {\n label: ['app settings label', { ns: meta.id }],\n icon: 'ph--gear--regular',\n disposition: 'pin-end',\n position: 'hoist',\n testId: 'treeView.appSettings',\n },\n },\n ]),\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}/core-plugins`,\n match: NodeMatcher.whenId(SETTINGS_ID),\n connector: (node, get) => {\n const [manager] = get(managerAtom);\n const allSettings = get(settingsAtom);\n return Effect.succeed([\n ...manager\n .getPlugins()\n .filter((plugin: Plugin.Plugin) => manager.getCore().includes(plugin.meta.id))\n .map((plugin: Plugin.Plugin): [Plugin.Meta, Common.Capability.Settings] | null => {\n const settings = allSettings.find((s) => s.prefix === plugin.meta.id);\n if (!settings) {\n return null;\n }\n\n return [plugin.meta, settings];\n })\n .filter(isNonNullable)\n .map(([meta, settings]: [Plugin.Meta, Common.Capability.Settings]) => ({\n id: `${SETTINGS_KEY}:${meta.id.replaceAll('/', ':')}`,\n type: 'category',\n data: settings,\n properties: {\n label: meta.name ?? meta.id,\n icon: meta.icon ?? 'ph--circle--regular',\n },\n })),\n\n {\n id: `${SETTINGS_KEY}:custom-plugins`,\n type: 'category',\n properties: {\n label: ['custom plugins label', { ns: meta.id }],\n icon: 'ph--squares-four--regular',\n role: 'branch',\n disposition: 'collection',\n },\n },\n ]);\n },\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}/custom-plugins`,\n match: NodeMatcher.whenId(`${SETTINGS_KEY}:custom-plugins`),\n connector: (node, get) => {\n const [manager] = get(managerAtom);\n const allSettings = get(settingsAtom);\n return Effect.succeed(\n manager\n .getPlugins()\n .filter((plugin: Plugin.Plugin) => !manager.getCore().includes(plugin.meta.id))\n .map((plugin: Plugin.Plugin): [Plugin.Meta, Common.Capability.Settings] | null => {\n const settings = allSettings.find((s) => s.prefix === plugin.meta.id);\n if (!settings) {\n return null;\n }\n\n return [plugin.meta, settings];\n })\n .filter(isNonNullable)\n .map(([meta, settings]: [Plugin.Meta, Common.Capability.Settings]) => ({\n id: `${SETTINGS_KEY}:${meta.id.replaceAll('/', ':')}`,\n type: 'category',\n data: settings,\n properties: {\n label: meta.name ?? meta.id,\n icon: meta.icon ?? 'ph--circle--regular',\n },\n })),\n );\n },\n }),\n ]);\n\n return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "GraphBuilder", "NodeMatcher", "Operation", "isNonNullable", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "managerAtom", "atom", "PluginManager", "settingsAtom", "Settings", "extensions", "all", "GraphBuilder", "createExtension", "id", "meta", "match", "NodeMatcher", "whenRoot", "actions", "succeed", "data", "Operation", "invoke", "SettingsOperation", "Open", "properties", "label", "ns", "icon", "disposition", "keyBinding", "macos", "windows", "connector", "SETTINGS_ID", "type", "position", "testId", "whenId", "node", "get", "manager", "allSettings", "getPlugins", "filter", "plugin", "getCore", "includes", "map", "settings", "find", "s", "prefix", "isNonNullable", "SETTINGS_KEY", "replaceAll", "name", "role", "contributes", "AppGraphBuilder"]
7
+ }
@@ -0,0 +1,34 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ ActivationEvent,
4
+ Capability
5
+ } from "./chunk-GQEBIGKD.mjs";
6
+ import "./chunk-XYQTBFPA.mjs";
7
+ import "./chunk-7OWSHPYK.mjs";
8
+ import {
9
+ plugin_exports
10
+ } from "./chunk-GT6OKM5I.mjs";
11
+ import {
12
+ capability_exports
13
+ } from "./chunk-STMXUEPO.mjs";
14
+ import "./chunk-HSLMI22Q.mjs";
15
+
16
+ // src/plugin-runtime/capability.ts
17
+ import * as Effect from "effect/Effect";
18
+ import * as Layer from "effect/Layer";
19
+ import * as ManagedRuntime from "effect/ManagedRuntime";
20
+ var capability_default = capability_exports.makeModule(Effect.fnUntraced(function* () {
21
+ const capabilityManager = yield* capability_exports.Service;
22
+ const pluginManager = yield* plugin_exports.Service;
23
+ yield* plugin_exports.activate(ActivationEvent.SetupLayer);
24
+ const layers = yield* capability_exports.getAll(Capability.Layer);
25
+ const capabilityServiceLayer = Layer.succeed(capability_exports.Service, capabilityManager);
26
+ const pluginServiceLayer = Layer.succeed(plugin_exports.Service, pluginManager);
27
+ const composedLayer = layers.length > 0 ? Layer.mergeAll(capabilityServiceLayer, pluginServiceLayer, ...layers) : Layer.mergeAll(capabilityServiceLayer, pluginServiceLayer);
28
+ const runtime = ManagedRuntime.make(composedLayer);
29
+ return capability_exports.contributes(Capability.ManagedRuntime, runtime);
30
+ }));
31
+ export {
32
+ capability_default as default
33
+ };
34
+ //# sourceMappingURL=capability-CFLQ2QQU.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/plugin-runtime/capability.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as ManagedRuntime from 'effect/ManagedRuntime';\n\nimport * as Common from '../common';\nimport { Capability, Plugin } from '../core';\n\n//\n// Capability Module\n//\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n // Get the CapabilityManager to create a layer for it.\n const capabilityManager = yield* Capability.Service;\n\n // Get the PluginManager to create a layer for it.\n const pluginManager = yield* Plugin.Service;\n\n // Trigger setup event so plugins can contribute their layers.\n yield* Plugin.activate(Common.ActivationEvent.SetupLayer);\n\n // Gather all contributed layers.\n const layers = yield* Capability.getAll(Common.Capability.Layer);\n\n // Create layers that provide Capability.Service and Plugin.Service.\n const capabilityServiceLayer = Layer.succeed(Capability.Service, capabilityManager);\n const pluginServiceLayer = Layer.succeed(Plugin.Service, pluginManager);\n\n // Merge all layers including service layers.\n // Layer.mergeAll requires a tuple type, so we use a cast for dynamic arrays.\n const composedLayer =\n layers.length > 0\n ? (Layer.mergeAll as (...args: Layer.Layer<any, any, any>[]) => Layer.Layer<any, any, never>)(\n capabilityServiceLayer,\n pluginServiceLayer,\n ...layers,\n )\n : (Layer.mergeAll as (...args: Layer.Layer<any, any, any>[]) => Layer.Layer<any, any, never>)(\n capabilityServiceLayer,\n pluginServiceLayer,\n );\n\n // Create the managed runtime from the composed layer.\n const runtime = ManagedRuntime.make(composedLayer) as Common.Capability.ManagedRuntime;\n\n return Capability.contributes(Common.Capability.ManagedRuntime, runtime);\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AACvB,YAAYC,oBAAoB;AAShC,IAAA,qBAAeC,mBAAWC,WACjBC,kBAAW,aAAA;AAEhB,QAAMC,oBAAoB,OAAOH,mBAAWI;AAG5C,QAAMC,gBAAgB,OAAOC,eAAOF;AAGpC,SAAOE,eAAOC,SAAgBC,gBAAgBC,UAAU;AAGxD,QAAMC,SAAS,OAAOV,mBAAWW,OAAcX,WAAWY,KAAK;AAG/D,QAAMC,yBAA+BC,cAAQd,mBAAWI,SAASD,iBAAAA;AACjE,QAAMY,qBAA2BD,cAAQR,eAAOF,SAASC,aAAAA;AAIzD,QAAMW,gBACJN,OAAOO,SAAS,IACLC,eACLL,wBACAE,oBAAAA,GACGL,MAAAA,IAEEQ,eACLL,wBACAE,kBAAAA;AAIR,QAAMI,UAAyBC,oBAAKJ,aAAAA;AAEpC,SAAOhB,mBAAWqB,YAAmBrB,WAAWsB,gBAAgBH,OAAAA;AAClE,CAAA,CAAA;",
6
+ "names": ["Effect", "Layer", "ManagedRuntime", "Capability", "makeModule", "fnUntraced", "capabilityManager", "Service", "pluginManager", "Plugin", "activate", "ActivationEvent", "SetupLayer", "layers", "getAll", "Layer", "capabilityServiceLayer", "succeed", "pluginServiceLayer", "composedLayer", "length", "mergeAll", "runtime", "make", "contributes", "ManagedRuntime"]
7
+ }
@@ -0,0 +1,32 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ make,
4
+ make2
5
+ } from "./chunk-663A54LQ.mjs";
6
+ import {
7
+ Capability
8
+ } from "./chunk-GQEBIGKD.mjs";
9
+ import "./chunk-XYQTBFPA.mjs";
10
+ import "./chunk-7OWSHPYK.mjs";
11
+ import "./chunk-GT6OKM5I.mjs";
12
+ import {
13
+ capability_exports
14
+ } from "./chunk-STMXUEPO.mjs";
15
+ import "./chunk-HSLMI22Q.mjs";
16
+
17
+ // src/plugin-operation/history/capability.ts
18
+ import * as Effect from "effect/Effect";
19
+ var capability_default = capability_exports.makeModule(Effect.fnUntraced(function* () {
20
+ const capabilities = yield* capability_exports.Service;
21
+ const undoRegistry = make(() => capabilities.getAll(Capability.UndoMapping).flat());
22
+ const invoker = yield* capability_exports.get(Capability.OperationInvoker);
23
+ const historyTracker = make2(invoker, undoRegistry);
24
+ return [
25
+ capability_exports.contributes(Capability.UndoRegistry, undoRegistry),
26
+ capability_exports.contributes(Capability.HistoryTracker, historyTracker)
27
+ ];
28
+ }));
29
+ export {
30
+ capability_default as default
31
+ };
32
+ //# sourceMappingURL=capability-RCUNM2M7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/plugin-operation/history/capability.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { type OperationInvoker } from '@dxos/operation';\n\nimport * as Common from '../../common';\nimport { Capability } from '../../core';\n\nimport * as HistoryTracker from './history-tracker';\nimport * as UndoRegistry from './undo-registry';\n\n//\n// Capability Module - contributes both UndoRegistry and HistoryTracker.\n//\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n // Get the context for synchronous access in callbacks.\n const capabilities = yield* Capability.Service;\n\n // Create UndoRegistry.\n const undoRegistry = UndoRegistry.make(() => capabilities.getAll(Common.Capability.UndoMapping).flat());\n\n // Create HistoryTracker (depends on UndoRegistry and OperationInvoker).\n const invoker = yield* Capability.get(Common.Capability.OperationInvoker);\n // Cast to internal type - the factory always returns OperationInvokerInternal.\n const historyTracker = HistoryTracker.make(invoker as OperationInvoker.OperationInvokerInternal, undoRegistry);\n\n return [\n Capability.contributes(Common.Capability.UndoRegistry, undoRegistry),\n Capability.contributes(Common.Capability.HistoryTracker, historyTracker),\n ];\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AAcxB,IAAA,qBAAeC,mBAAWC,WACjBC,kBAAW,aAAA;AAEhB,QAAMC,eAAe,OAAOH,mBAAWI;AAGvC,QAAMC,eAA4BC,KAAK,MAAMH,aAAaI,OAAcP,WAAWQ,WAAW,EAAEC,KAAI,CAAA;AAGpG,QAAMC,UAAU,OAAOV,mBAAWW,IAAWX,WAAWY,gBAAgB;AAExE,QAAMC,iBAAgCP,MAAKI,SAAsDL,YAAAA;AAEjG,SAAO;IACLL,mBAAWc,YAAmBd,WAAWe,cAAcV,YAAAA;IACvDL,mBAAWc,YAAmBd,WAAWgB,gBAAgBH,cAAAA;;AAE7D,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "undoRegistry", "make", "getAll", "UndoMapping", "flat", "invoker", "get", "OperationInvoker", "historyTracker", "contributes", "UndoRegistry", "HistoryTracker"]
7
+ }