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

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 (421) hide show
  1. package/.storybook/main.mts +1 -3
  2. package/dist/lib/browser/{capability-7PCNSWBT.mjs → capability-4NSF2SOO.mjs} +16 -11
  3. package/dist/lib/browser/capability-4NSF2SOO.mjs.map +7 -0
  4. package/dist/lib/browser/capability-EB3UKSKA.mjs +35 -0
  5. package/dist/lib/browser/capability-EB3UKSKA.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-FMZN33N4.mjs → chunk-27FZETIA.mjs} +324 -181
  7. package/dist/lib/browser/chunk-27FZETIA.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-CV7I2AAB.mjs +80 -0
  9. package/dist/lib/browser/chunk-CV7I2AAB.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-6Y7PZV72.mjs → chunk-FL2XTEJH.mjs} +3 -4
  11. package/dist/lib/browser/chunk-FL2XTEJH.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-H7OMDDGW.mjs +42 -0
  13. package/dist/lib/browser/chunk-H7OMDDGW.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-HDQXX5DC.mjs +157 -0
  15. package/dist/lib/browser/chunk-HDQXX5DC.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-I34GF4NG.mjs +34 -0
  17. package/dist/lib/browser/chunk-I34GF4NG.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-KNBRTZVK.mjs +892 -0
  19. package/dist/lib/browser/chunk-KNBRTZVK.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-7IQHKD4U.mjs → chunk-NO7R7QHA.mjs} +4 -7
  21. package/dist/lib/browser/chunk-NO7R7QHA.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-TCLLRCS3.mjs → chunk-P2E7VMRF.mjs} +10 -7
  23. package/dist/lib/browser/chunk-P2E7VMRF.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-PKQT6C53.mjs → chunk-QSXYHXCE.mjs} +3 -2
  25. package/dist/lib/browser/chunk-QSXYHXCE.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-RFSO3JRG.mjs +1 -0
  27. package/dist/lib/browser/chunk-TGX63LTL.mjs +8 -0
  28. package/dist/lib/browser/{chunk-FHQTHCX7.mjs.map → chunk-TGX63LTL.mjs.map} +1 -1
  29. package/dist/lib/browser/cli/index.mjs +90 -0
  30. package/dist/lib/browser/cli/index.mjs.map +7 -0
  31. package/dist/lib/browser/common/activation-events.mjs +24 -0
  32. package/dist/lib/browser/common/capabilities.mjs +46 -0
  33. package/dist/lib/browser/core/activation-event.mjs +1 -1
  34. package/dist/lib/browser/core/capability.mjs +1 -1
  35. package/dist/lib/browser/core/plugin-manager.mjs +4 -4
  36. package/dist/lib/browser/core/plugin.mjs +6 -4
  37. package/dist/lib/browser/core/url-loader.mjs +12 -0
  38. package/dist/lib/browser/index.mjs +40 -131
  39. package/dist/lib/browser/index.mjs.map +4 -4
  40. package/dist/lib/browser/invoker-capability-P7KPBTP3.mjs +43 -0
  41. package/dist/lib/browser/invoker-capability-P7KPBTP3.mjs.map +7 -0
  42. package/dist/lib/browser/meta.json +1 -1
  43. package/dist/lib/browser/testing/index.mjs +56 -34
  44. package/dist/lib/browser/testing/index.mjs.map +3 -3
  45. package/dist/lib/browser/{react → ui}/index.mjs +19 -21
  46. package/dist/lib/browser/ui/index.mjs.map +7 -0
  47. package/dist/lib/node-esm/{capability-CFLQ2QQU.mjs → capability-CB3MNEI3.mjs} +16 -11
  48. package/dist/lib/node-esm/capability-CB3MNEI3.mjs.map +7 -0
  49. package/dist/lib/node-esm/capability-CMROGK7R.mjs +36 -0
  50. package/dist/lib/node-esm/capability-CMROGK7R.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-STMXUEPO.mjs → chunk-37NG7SIN.mjs} +3 -4
  52. package/dist/lib/node-esm/chunk-37NG7SIN.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-7JPKC7OM.mjs +893 -0
  54. package/dist/lib/node-esm/chunk-7JPKC7OM.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-7PPVTBYR.mjs +81 -0
  56. package/dist/lib/node-esm/chunk-7PPVTBYR.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-BQ56U4QX.mjs +43 -0
  58. package/dist/lib/node-esm/chunk-BQ56U4QX.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-GT6OKM5I.mjs → chunk-CG6UBBZZ.mjs} +10 -7
  60. package/dist/lib/node-esm/chunk-CG6UBBZZ.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs +2 -0
  62. package/dist/lib/node-esm/chunk-EL3R25OQ.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-663A54LQ.mjs → chunk-EXYTXQ47.mjs} +4 -7
  64. package/dist/lib/node-esm/chunk-EXYTXQ47.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs → chunk-FKE4Z3D6.mjs} +2 -2
  66. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs.map → chunk-FKE4Z3D6.mjs.map} +1 -1
  67. package/dist/lib/node-esm/chunk-OXXXRCQX.mjs +158 -0
  68. package/dist/lib/node-esm/chunk-OXXXRCQX.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs +35 -0
  70. package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-XYQTBFPA.mjs → chunk-YH44RHP6.mjs} +324 -181
  72. package/dist/lib/node-esm/chunk-YH44RHP6.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs → chunk-ZZ7CKK6W.mjs} +3 -2
  74. package/dist/lib/node-esm/chunk-ZZ7CKK6W.mjs.map +7 -0
  75. package/dist/lib/node-esm/cli/index.mjs +91 -0
  76. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  77. package/dist/lib/node-esm/common/activation-events.mjs +25 -0
  78. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  79. package/dist/lib/node-esm/common/capabilities.mjs +47 -0
  80. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  81. package/dist/lib/node-esm/core/activation-event.mjs +1 -1
  82. package/dist/lib/node-esm/core/capability.mjs +1 -1
  83. package/dist/lib/node-esm/core/plugin-manager.mjs +4 -4
  84. package/dist/lib/node-esm/core/plugin.mjs +6 -4
  85. package/dist/lib/node-esm/core/url-loader.mjs +13 -0
  86. package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
  87. package/dist/lib/node-esm/index.mjs +40 -131
  88. package/dist/lib/node-esm/index.mjs.map +4 -4
  89. package/dist/lib/node-esm/invoker-capability-3C5H46ZY.mjs +44 -0
  90. package/dist/lib/node-esm/invoker-capability-3C5H46ZY.mjs.map +7 -0
  91. package/dist/lib/node-esm/meta.json +1 -1
  92. package/dist/lib/node-esm/testing/index.mjs +56 -34
  93. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  94. package/dist/lib/node-esm/{react → ui}/index.mjs +19 -21
  95. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  96. package/dist/plugin/node-esm/index.mjs +384 -0
  97. package/dist/plugin/node-esm/index.mjs.map +7 -0
  98. package/dist/plugin/node-esm/meta.json +1 -0
  99. package/dist/types/src/{cli.d.ts → cli/cli.d.ts} +2 -2
  100. package/dist/types/src/cli/cli.d.ts.map +1 -0
  101. package/dist/types/src/cli/index.d.ts +2 -0
  102. package/dist/types/src/cli/index.d.ts.map +1 -0
  103. package/dist/types/src/common/activation-events.d.ts +27 -0
  104. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  105. package/dist/types/src/common/capabilities.d.ts +110 -0
  106. package/dist/types/src/common/capabilities.d.ts.map +1 -0
  107. package/dist/types/src/common/index.d.ts +4 -9
  108. package/dist/types/src/common/index.d.ts.map +1 -1
  109. package/dist/types/src/common/operations.d.ts +8 -369
  110. package/dist/types/src/common/operations.d.ts.map +1 -1
  111. package/dist/types/src/common/translations.d.ts +0 -9
  112. package/dist/types/src/common/translations.d.ts.map +1 -1
  113. package/dist/types/src/core/activation-event.d.ts +1 -1
  114. package/dist/types/src/core/activation-event.d.ts.map +1 -1
  115. package/dist/types/src/core/capability.d.ts +7 -7
  116. package/dist/types/src/core/capability.d.ts.map +1 -1
  117. package/dist/types/src/core/index.d.ts +1 -0
  118. package/dist/types/src/core/index.d.ts.map +1 -1
  119. package/dist/types/src/core/plugin-manager.d.ts +9 -2
  120. package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
  121. package/dist/types/src/core/plugin.d.ts +6 -1
  122. package/dist/types/src/core/plugin.d.ts.map +1 -1
  123. package/dist/types/src/core/url-loader.d.ts +25 -0
  124. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  125. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  126. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  127. package/dist/types/src/index.d.ts +1 -3
  128. package/dist/types/src/index.d.ts.map +1 -1
  129. package/dist/types/src/plugin-operation/history/capability.d.ts +1 -1
  130. package/dist/types/src/plugin-operation/history/errors.d.ts +30 -3
  131. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -1
  132. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +11 -3
  133. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -1
  134. package/dist/types/src/plugin-operation/invoker-capability.d.ts +1 -1
  135. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -1
  136. package/dist/types/src/plugin-operation/testing.d.ts +26 -77
  137. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -1
  138. package/dist/types/src/plugin-runtime/capability.d.ts +2 -2
  139. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -1
  140. package/dist/types/src/testing/withPluginManager.d.ts +1 -1
  141. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  142. package/dist/types/src/{react → ui/components/App}/App.d.ts +3 -2
  143. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  144. package/dist/types/src/{react/Surface.stories.d.ts → ui/components/App/App.stories.d.ts} +7 -2
  145. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  146. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  147. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  148. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  149. package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerProvider.d.ts +1 -1
  150. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  151. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  152. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  153. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +12 -0
  154. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  155. package/dist/types/src/{react/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  156. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  157. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  158. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  159. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  160. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  161. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  162. package/dist/types/src/ui/components/Surface/index.d.ts +26 -0
  163. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  164. package/dist/types/src/{common/surface.d.ts → ui/components/Surface/types.d.ts} +20 -18
  165. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  166. package/dist/types/src/ui/components/index.d.ts +4 -0
  167. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  168. package/dist/types/src/ui/hooks/index.d.ts +6 -0
  169. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  170. package/dist/types/src/{react → ui/hooks}/useApp.d.ts +26 -9
  171. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  172. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  173. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  174. package/dist/types/src/{react → ui/hooks}/useCapabilities.d.ts +6 -1
  175. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  176. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  177. package/dist/types/src/{react/common.d.ts → ui/hooks/useSettingsState.d.ts} +1 -5
  178. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  179. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  180. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  181. package/dist/types/src/ui/index.d.ts +3 -0
  182. package/dist/types/src/ui/index.d.ts.map +1 -0
  183. package/dist/types/src/vite-plugin/composer-plugin.d.ts +18 -0
  184. package/dist/types/src/vite-plugin/composer-plugin.d.ts.map +1 -0
  185. package/dist/types/src/vite-plugin/import-map-plugin.d.ts +16 -0
  186. package/dist/types/src/vite-plugin/import-map-plugin.d.ts.map +1 -0
  187. package/dist/types/src/vite-plugin/index.d.ts +3 -0
  188. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  189. package/dist/types/src/vite-plugin/packages.d.ts +7 -0
  190. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  191. package/dist/types/tsconfig.tsbuildinfo +1 -1
  192. package/moon.yml +20 -6
  193. package/package.json +91 -64
  194. package/src/{cli.ts → cli/cli.ts} +10 -10
  195. package/src/{playground/debug → cli}/index.ts +1 -1
  196. package/src/common/activation-events.ts +44 -0
  197. package/src/common/capabilities.ts +172 -0
  198. package/src/common/index.ts +4 -9
  199. package/src/common/operations.ts +6 -382
  200. package/src/common/translations.ts +0 -12
  201. package/src/context.ts +1 -1
  202. package/src/core/activation-event.ts +5 -2
  203. package/src/core/capability-manager.ts +1 -1
  204. package/src/core/capability.ts +11 -10
  205. package/src/core/index.ts +1 -0
  206. package/src/core/plugin-manager.test.ts +313 -44
  207. package/src/core/plugin-manager.ts +344 -157
  208. package/src/core/plugin.ts +10 -2
  209. package/src/core/url-loader.test.ts +79 -0
  210. package/src/core/url-loader.ts +148 -0
  211. package/src/index.ts +1 -3
  212. package/src/plugin-operation/OperationPlugin.ts +5 -5
  213. package/src/plugin-operation/history/capability.ts +5 -5
  214. package/src/plugin-operation/history/errors.ts +2 -6
  215. package/src/plugin-operation/history/history-tracker.test.ts +36 -42
  216. package/src/plugin-operation/history/undo-mapping.ts +6 -3
  217. package/src/plugin-operation/history/undo-registry.test.ts +3 -3
  218. package/src/plugin-operation/invoker-capability.ts +21 -7
  219. package/src/plugin-operation/meta.ts +1 -1
  220. package/src/plugin-operation/testing.ts +25 -45
  221. package/src/plugin-runtime/RuntimePlugin.ts +4 -4
  222. package/src/plugin-runtime/capability.ts +5 -5
  223. package/src/plugin-runtime/meta.ts +1 -1
  224. package/src/testing/service.ts +6 -6
  225. package/src/testing/withPluginManager.stories.tsx +6 -6
  226. package/src/testing/withPluginManager.tsx +46 -19
  227. package/src/ui/components/App/App.stories.tsx +92 -0
  228. package/src/{react → ui/components/App}/App.tsx +9 -11
  229. package/src/{playground/layout → ui/components/App}/index.ts +1 -1
  230. package/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.tsx +13 -14
  231. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +1 -1
  232. package/src/ui/components/PluginManager/index.ts +5 -0
  233. package/src/{react/Surface.stories.tsx → ui/components/Surface/SurfaceComponent.stories.tsx} +28 -24
  234. package/src/{react/Surface.tsx → ui/components/Surface/SurfaceComponent.tsx} +48 -58
  235. package/src/{react → ui/components/Surface}/SurfaceInfo.tsx +2 -2
  236. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  237. package/src/ui/components/Surface/context.ts +12 -0
  238. package/src/ui/components/Surface/index.ts +35 -0
  239. package/src/{common/surface.ts → ui/components/Surface/types.ts} +22 -25
  240. package/src/ui/components/index.ts +7 -0
  241. package/src/ui/hooks/index.ts +9 -0
  242. package/src/ui/hooks/useApp.test.tsx +159 -0
  243. package/src/{react → ui/hooks}/useApp.tsx +110 -30
  244. package/src/{react → ui/hooks}/useCapabilities.ts +9 -5
  245. package/src/{react/common.ts → ui/hooks/useSettingsState.ts} +0 -11
  246. package/src/ui/hooks/useSurface.ts +13 -0
  247. package/src/ui/index.ts +6 -0
  248. package/src/vite-plugin/composer-plugin.ts +128 -0
  249. package/src/vite-plugin/import-map-plugin.ts +315 -0
  250. package/src/vite-plugin/index.ts +6 -0
  251. package/src/vite-plugin/packages.ts +29 -0
  252. package/tsconfig.json +4 -28
  253. package/tsconfig.node.json +2 -4
  254. package/typedoc.json +2 -4
  255. package/vitest.config.ts +1 -1
  256. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +0 -149
  257. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +0 -7
  258. package/dist/lib/browser/capability-7PCNSWBT.mjs.map +0 -7
  259. package/dist/lib/browser/capability-KP3PFEXD.mjs +0 -31
  260. package/dist/lib/browser/capability-KP3PFEXD.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +0 -7
  262. package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-BLQJSGL3.mjs +0 -732
  264. package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +0 -7
  265. package/dist/lib/browser/chunk-FHQTHCX7.mjs +0 -8
  266. package/dist/lib/browser/chunk-FMZN33N4.mjs.map +0 -7
  267. package/dist/lib/browser/chunk-H4WPA7U7.mjs +0 -77
  268. package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-XYNO72GQ.mjs +0 -746
  272. package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +0 -7
  273. package/dist/lib/browser/common/index.mjs +0 -38
  274. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +0 -32
  275. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +0 -7
  276. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +0 -64
  277. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +0 -7
  278. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +0 -150
  279. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +0 -7
  280. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +0 -7
  281. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +0 -32
  282. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +0 -747
  285. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +0 -733
  288. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +0 -78
  292. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +0 -7
  294. package/dist/lib/node-esm/common/index.mjs +0 -39
  295. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +0 -33
  296. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +0 -7
  297. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +0 -65
  298. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +0 -7
  299. package/dist/types/src/cli.d.ts.map +0 -1
  300. package/dist/types/src/common/activation-event.d.ts +0 -66
  301. package/dist/types/src/common/activation-event.d.ts.map +0 -1
  302. package/dist/types/src/common/capability.d.ts +0 -265
  303. package/dist/types/src/common/capability.d.ts.map +0 -1
  304. package/dist/types/src/common/collaboration.d.ts +0 -26
  305. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  306. package/dist/types/src/common/file.d.ts +0 -14
  307. package/dist/types/src/common/file.d.ts.map +0 -1
  308. package/dist/types/src/common/graph.d.ts +0 -21
  309. package/dist/types/src/common/graph.d.ts.map +0 -1
  310. package/dist/types/src/common/plugin.d.ts +0 -201
  311. package/dist/types/src/common/plugin.d.ts.map +0 -1
  312. package/dist/types/src/common/surface.d.ts.map +0 -1
  313. package/dist/types/src/playground/debug/Debug.d.ts +0 -8
  314. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  315. package/dist/types/src/playground/debug/index.d.ts +0 -2
  316. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  317. package/dist/types/src/playground/debug/plugin.d.ts +0 -3
  318. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  319. package/dist/types/src/playground/generator/Main.d.ts +0 -8
  320. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  321. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -8
  322. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  323. package/dist/types/src/playground/generator/generator.d.ts +0 -19
  324. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  325. package/dist/types/src/playground/generator/index.d.ts +0 -3
  326. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  327. package/dist/types/src/playground/generator/plugin.d.ts +0 -3
  328. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  329. package/dist/types/src/playground/layout/Layout.d.ts +0 -10
  330. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  331. package/dist/types/src/playground/layout/index.d.ts +0 -2
  332. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  333. package/dist/types/src/playground/layout/plugin.d.ts +0 -3
  334. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  335. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -8
  336. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  337. package/dist/types/src/playground/logger/index.d.ts +0 -2
  338. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  339. package/dist/types/src/playground/logger/plugin.d.ts +0 -3
  340. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  341. package/dist/types/src/playground/logger/schema.d.ts +0 -27
  342. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  343. package/dist/types/src/playground/playground.stories.d.ts +0 -11
  344. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  345. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -3
  346. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  347. package/dist/types/src/plugin-settings/actions.d.ts +0 -61
  348. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  349. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -6
  350. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  351. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  352. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  353. package/dist/types/src/plugin-settings/meta.d.ts +0 -3
  354. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  355. package/dist/types/src/plugin-settings/operation-resolver.d.ts +0 -6
  356. package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +0 -1
  357. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  358. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  359. package/dist/types/src/react/App.d.ts.map +0 -1
  360. package/dist/types/src/react/App.stories.d.ts.map +0 -1
  361. package/dist/types/src/react/DefaultFallback.d.ts +0 -8
  362. package/dist/types/src/react/DefaultFallback.d.ts.map +0 -1
  363. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  364. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  365. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +0 -1
  366. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  367. package/dist/types/src/react/Surface.d.ts +0 -14
  368. package/dist/types/src/react/Surface.d.ts.map +0 -1
  369. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  370. package/dist/types/src/react/SurfaceInfo.d.ts.map +0 -1
  371. package/dist/types/src/react/common.d.ts.map +0 -1
  372. package/dist/types/src/react/index.d.ts +0 -9
  373. package/dist/types/src/react/index.d.ts.map +0 -1
  374. package/dist/types/src/react/types.d.ts +0 -12
  375. package/dist/types/src/react/types.d.ts.map +0 -1
  376. package/dist/types/src/react/useApp.d.ts.map +0 -1
  377. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  378. package/dist/types/src/react/useLoading.d.ts.map +0 -1
  379. package/dist/types/src/react/useOperationResolver.d.ts +0 -19
  380. package/dist/types/src/react/useOperationResolver.d.ts.map +0 -1
  381. package/src/common/activation-event.ts +0 -99
  382. package/src/common/capability.ts +0 -343
  383. package/src/common/collaboration.ts +0 -31
  384. package/src/common/file.ts +0 -22
  385. package/src/common/graph.ts +0 -30
  386. package/src/common/plugin.ts +0 -364
  387. package/src/playground/debug/Debug.tsx +0 -49
  388. package/src/playground/debug/plugin.ts +0 -16
  389. package/src/playground/generator/Main.tsx +0 -80
  390. package/src/playground/generator/Toolbar.tsx +0 -57
  391. package/src/playground/generator/generator.ts +0 -48
  392. package/src/playground/generator/index.ts +0 -6
  393. package/src/playground/generator/plugin.ts +0 -21
  394. package/src/playground/layout/Layout.tsx +0 -37
  395. package/src/playground/layout/plugin.ts +0 -18
  396. package/src/playground/logger/Toolbar.tsx +0 -33
  397. package/src/playground/logger/index.ts +0 -5
  398. package/src/playground/logger/plugin.ts +0 -42
  399. package/src/playground/logger/schema.ts +0 -22
  400. package/src/playground/playground.stories.tsx +0 -54
  401. package/src/plugin-settings/SettingsPlugin.ts +0 -19
  402. package/src/plugin-settings/actions.ts +0 -64
  403. package/src/plugin-settings/app-graph-builder.ts +0 -140
  404. package/src/plugin-settings/index.ts +0 -6
  405. package/src/plugin-settings/meta.ts +0 -10
  406. package/src/plugin-settings/operation-resolver.ts +0 -55
  407. package/src/plugin-settings/translations.ts +0 -19
  408. package/src/react/App.stories.tsx +0 -63
  409. package/src/react/DefaultFallback.tsx +0 -26
  410. package/src/react/ErrorBoundary.tsx +0 -56
  411. package/src/react/index.ts +0 -14
  412. package/src/react/types.ts +0 -27
  413. package/src/react/useOperationResolver.ts +0 -40
  414. /package/dist/lib/{node-esm/react/index.mjs.map → browser/chunk-RFSO3JRG.mjs.map} +0 -0
  415. /package/dist/lib/{node-esm/common/index.mjs.map → browser/common/activation-events.mjs.map} +0 -0
  416. /package/dist/lib/browser/{react/index.mjs.map → common/capabilities.mjs.map} +0 -0
  417. /package/dist/lib/browser/{common/index.mjs.map → core/url-loader.mjs.map} +0 -0
  418. /package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.d.ts +0 -0
  419. /package/dist/types/src/{react → ui/components/Surface}/SurfaceInfo.d.ts +0 -0
  420. /package/dist/types/src/{react → ui/hooks}/useLoading.d.ts +0 -0
  421. /package/src/{react → ui/hooks}/useLoading.tsx +0 -0
@@ -0,0 +1,128 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type Plugin } from 'vite';
6
+
7
+ import { DEFAULT_PACKAGES } from './packages';
8
+
9
+ const JSX_DEV_RUNTIME = 'react/jsx-dev-runtime';
10
+
11
+ /** Regex patterns matching each shared package and all its subpath imports. */
12
+ const EXTERNAL_DEPS = DEFAULT_PACKAGES.map((pkg) => new RegExp(`^${pkg.replace('/', '\\/')}(\\/|$)`));
13
+
14
+ /** Checks whether an import should be externalized (all shared deps except jsx-dev-runtime). */
15
+ const isExternal = (id: string) => id !== JSX_DEV_RUNTIME && EXTERNAL_DEPS.some((pattern) => pattern.test(id));
16
+
17
+ /**
18
+ * Vite plugin for **external Composer plugin projects**. Configures the build to produce
19
+ * an ESM bundle that externalizes all framework dependencies, which the Composer host app
20
+ * provides at runtime via import map.
21
+ *
22
+ * Handles three concerns:
23
+ * 1. Build config — lib mode entry point, ES format output, rollup externals.
24
+ * 2. Dev externalization — marks shared deps as external during `vite serve` and strips
25
+ * the `/@id/` prefix that Vite's import analysis adds to external bare specifiers.
26
+ * 3. JSX dev runtime shim — bridges `react/jsx-dev-runtime` (used by React refresh in dev)
27
+ * to `react/jsx-runtime` (which is what the externalized React provides).
28
+ */
29
+ export const composerPlugin = (options?: { entry?: string; port?: number }): Plugin[] => {
30
+ const entry = options?.entry ?? 'src/plugin.tsx';
31
+ const port = options?.port ?? 3967;
32
+ const resolved = new Set<string>();
33
+ let base = '/';
34
+
35
+ return [
36
+ // Plugin 1: Configure vite for library-mode builds with externalized deps.
37
+ {
38
+ name: 'composer-plugin',
39
+ config: () => ({
40
+ server: {
41
+ port,
42
+ // Allow the Composer host (different origin) to dynamically import plugin modules.
43
+ cors: true,
44
+ },
45
+ preview: { port },
46
+ build: {
47
+ sourcemap: true,
48
+ lib: {
49
+ entry,
50
+ formats: ['es'],
51
+ },
52
+ rolldownOptions: {
53
+ external: EXTERNAL_DEPS,
54
+ },
55
+ },
56
+ }),
57
+ },
58
+
59
+ // Plugin 2: Dev-time externalization.
60
+ // Vite's dev server doesn't use rollup externals, so we need to handle it manually.
61
+ // We intercept imports of shared deps at resolve time, mark them external, and then
62
+ // strip the `/@id/` prefix that Vite's import analysis injects for external modules.
63
+ {
64
+ name: 'composer-plugin:externalize',
65
+ enforce: 'pre',
66
+ apply: 'serve',
67
+ // Exclude shared packages from Vite's dependency pre-bundling.
68
+ config: () => ({
69
+ optimizeDeps: {
70
+ exclude: DEFAULT_PACKAGES,
71
+ },
72
+ }),
73
+ // Mark shared deps as external so Vite doesn't try to bundle them.
74
+ resolveId: (id) => {
75
+ if (isExternal(id)) {
76
+ resolved.add(id);
77
+ return { id, external: true };
78
+ }
79
+ },
80
+ // Return a stub for any externalized module that Vite tries to load directly.
81
+ load: (id) => {
82
+ if (resolved.has(id)) {
83
+ return { code: 'export default {};' };
84
+ }
85
+ },
86
+ // After all plugins are resolved, inject a late-stage transform plugin that strips
87
+ // the `/@id/` prefix from externalized bare specifiers in the output.
88
+ // This must run after Vite's internal import analysis which rewrites bare specifiers.
89
+ configResolved: (config) => {
90
+ base = config.base ?? '/';
91
+ (config.plugins as Plugin[]).push({
92
+ name: 'composer-plugin:strip-prefix',
93
+ transform: (code: string) => {
94
+ if (resolved.size === 0) {
95
+ return;
96
+ }
97
+ const escaped = [...resolved].map((s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|');
98
+ const pattern = new RegExp(`${base}@id/(${escaped})`, 'g');
99
+ if (pattern.test(code)) {
100
+ return code.replace(pattern, (_: string, dep: string) => dep);
101
+ }
102
+ },
103
+ });
104
+ },
105
+ },
106
+
107
+ // Plugin 3: JSX dev runtime shim.
108
+ // React refresh (used by @vitejs/plugin-react) imports from `react/jsx-dev-runtime`,
109
+ // but the externalized React only exposes `react/jsx-runtime`. This virtual module
110
+ // bridges the gap by re-exporting jsx-runtime's functions under jsx-dev-runtime's API.
111
+ {
112
+ name: 'composer-plugin:jsx-dev-shim',
113
+ enforce: 'pre',
114
+ apply: 'serve',
115
+ resolveId: (id) => (id === JSX_DEV_RUNTIME ? `\0${JSX_DEV_RUNTIME}` : undefined),
116
+ load: (id) =>
117
+ id === `\0${JSX_DEV_RUNTIME}`
118
+ ? [
119
+ 'import { jsx, jsxs, Fragment } from "react/jsx-runtime";',
120
+ 'export { Fragment };',
121
+ 'export function jsxDEV(type, props, key, isStaticChildren) {',
122
+ ' return isStaticChildren ? jsxs(type, props, key) : jsx(type, props, key);',
123
+ '}',
124
+ ].join('\n')
125
+ : undefined,
126
+ },
127
+ ];
128
+ };
@@ -0,0 +1,315 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { init as initCjsLexer, parse as parseCjs } from 'cjs-module-lexer';
6
+ import { existsSync, readFileSync } from 'node:fs';
7
+ import { createRequire as nodeCreateRequire } from 'node:module';
8
+ import path from 'node:path';
9
+
10
+ import { type Plugin } from 'vite';
11
+
12
+ import { DEFAULT_PACKAGES } from './packages';
13
+
14
+ const require = nodeCreateRequire(import.meta.url);
15
+
16
+ //
17
+ // Import map helpers.
18
+ // These utilities support `importMapPlugin` by resolving package entrypoints,
19
+ // detecting module formats (ESM vs CJS), and extracting named exports from CJS bundles.
20
+ //
21
+
22
+ /** Strips vite query strings (e.g. `?v=123`) from resolved module IDs. */
23
+ const trimQueryString = (id: string) => id.replace(/\?.*$/, '');
24
+
25
+ /**
26
+ * Determines whether a resolved file is an ESM module by checking file extension
27
+ * first (.mjs/.cjs), then walking up to the nearest package.json for `"type": "module"`.
28
+ */
29
+ const resolvedIdIsEsmModule = (resolvedId: string): boolean => {
30
+ const file = trimQueryString(resolvedId);
31
+ if (file.endsWith('.mjs') || file.endsWith('.mts')) {
32
+ return true;
33
+ }
34
+ if (file.endsWith('.cjs') || file.endsWith('.cts')) {
35
+ return false;
36
+ }
37
+
38
+ let directory = path.dirname(file);
39
+ while (directory !== path.dirname(directory)) {
40
+ const packageJsonPath = path.join(directory, 'package.json');
41
+ if (existsSync(packageJsonPath)) {
42
+ try {
43
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as { type?: string };
44
+ return pkg.type === 'module';
45
+ } catch {
46
+ return false;
47
+ }
48
+ }
49
+ directory = path.dirname(directory);
50
+ }
51
+
52
+ return false;
53
+ };
54
+
55
+ /**
56
+ * Walks up from a resolved file path to find the package.json whose `"name"` matches
57
+ * the given package name. Returns the path to that package.json, or undefined.
58
+ */
59
+ const findPackageJsonPath = (resolvedId: string, packageName: string): string | undefined => {
60
+ let directory = path.dirname(trimQueryString(resolvedId));
61
+
62
+ while (directory !== path.dirname(directory)) {
63
+ const packageJsonPath = path.join(directory, 'package.json');
64
+ if (existsSync(packageJsonPath)) {
65
+ try {
66
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as { name?: string };
67
+ if (packageJson.name === packageName) {
68
+ return packageJsonPath;
69
+ }
70
+ } catch {}
71
+ }
72
+
73
+ directory = path.dirname(directory);
74
+ }
75
+
76
+ return undefined;
77
+ };
78
+
79
+ /** Resolves a package name to its package.json path using Node's require.resolve. */
80
+ const resolvePackageJsonPath = (packageName: string): string | undefined => {
81
+ try {
82
+ return findPackageJsonPath(require.resolve(packageName), packageName);
83
+ } catch {
84
+ return undefined;
85
+ }
86
+ };
87
+
88
+ /**
89
+ * Subpath exports that should be excluded from the import map.
90
+ * These are node-only entrypoints (vite plugins, native addons) that shouldn't be pre-bundled for the browser.
91
+ */
92
+ const importMapExcludedSubpaths: Readonly<Record<string, ReadonlySet<string>>> = {
93
+ '@dxos/app-framework': new Set(['vite-plugin']),
94
+ '@dxos/ui-theme': new Set(['plugin']),
95
+ };
96
+
97
+ /**
98
+ * Reads a package's `exports` field and returns all JS subpath entrypoints as bare specifiers
99
+ * (e.g. `@dxos/client`, `@dxos/client/echo`). Skips wildcard patterns, non-JS assets,
100
+ * and excluded subpaths. Falls back to just the package name if exports is absent or simple.
101
+ */
102
+ const getPackageEntrypoints = (packageName: string, packageJsonPath: string): string[] => {
103
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as {
104
+ exports?: Record<string, unknown> | string | string[];
105
+ };
106
+ const exportsField = packageJson.exports;
107
+
108
+ if (!exportsField || typeof exportsField === 'string' || Array.isArray(exportsField)) {
109
+ return [packageName];
110
+ }
111
+
112
+ const exportKeys = Object.keys(exportsField);
113
+ if (!exportKeys.some((key) => key.startsWith('.'))) {
114
+ return [packageName];
115
+ }
116
+
117
+ const excluded = importMapExcludedSubpaths[packageName];
118
+ const modules = exportKeys.flatMap((key) => {
119
+ if (key === '.') {
120
+ return [packageName];
121
+ }
122
+
123
+ if (!key.startsWith('./') || key === './package.json' || key.includes('*')) {
124
+ return [];
125
+ }
126
+
127
+ const subpath = key.slice(2);
128
+ if (excluded?.has(subpath)) {
129
+ return [];
130
+ }
131
+
132
+ if (/\.(css|pcss|scss|less|json|node|wasm|html|svg|png|jpg)$/.test(subpath)) {
133
+ return [];
134
+ }
135
+
136
+ return [`${packageName}/${subpath}`];
137
+ });
138
+
139
+ return modules.length > 0 ? modules : [packageName];
140
+ };
141
+
142
+ /**
143
+ * Statically analyzes a CJS file to extract named exports using cjs-module-lexer.
144
+ * Follows re-exports (e.g. react's index.js re-exports from cjs/react.development.js)
145
+ * and deduplicates. Filters out `default` and `__esModule` pseudo-exports.
146
+ */
147
+ const getCjsNamedExports = (filePath: string, seen = new Set<string>()): string[] => {
148
+ const normalized = trimQueryString(filePath);
149
+ if (seen.has(normalized)) {
150
+ return [];
151
+ }
152
+ seen.add(normalized);
153
+
154
+ try {
155
+ const source = readFileSync(normalized, 'utf8');
156
+ const { exports: directExports, reexports } = parseCjs(source);
157
+
158
+ const reexportedNames = reexports.flatMap((reexport) => {
159
+ const resolved = path.resolve(path.dirname(normalized), reexport);
160
+ const candidates = [resolved, `${resolved}.js`, `${resolved}.cjs`];
161
+ const found = candidates.find((candidate) => existsSync(candidate));
162
+ return found ? getCjsNamedExports(found, seen) : [];
163
+ });
164
+
165
+ return [...new Set([...directExports, ...reexportedNames])].filter(
166
+ (name) => name !== 'default' && name !== '__esModule',
167
+ );
168
+ } catch {
169
+ return [];
170
+ }
171
+ };
172
+
173
+ /**
174
+ * Vite plugin for the **host app** (Composer). Generates a browser import map so that
175
+ * shared packages are loaded once and reused by both the host and any remote plugins.
176
+ *
177
+ * In dev mode, maps bare specifiers directly to resolved file paths.
178
+ * In production, emits a dedicated chunk per specifier via virtual wrapper modules,
179
+ * then injects a `<script type="importmap">` tag into the HTML with the chunk URLs.
180
+ *
181
+ * Virtual wrappers are needed because directly emitting chunks for CJS packages loses
182
+ * their named exports due to Rollup's interop. The wrapper re-exports them explicitly.
183
+ */
184
+ export const importMapPlugin = (options?: { packages?: string[] }): Plugin[] => {
185
+ const packages = options?.packages ?? DEFAULT_PACKAGES;
186
+ const WRAPPER_PREFIX = '\0import-map:';
187
+ const chunkRefIds: Record<string, string> = {};
188
+ const resolvedIds: Record<string, string> = {};
189
+ let imports: Record<string, string> = {};
190
+ let modules: string[] = [];
191
+ let importMapIsDev = false;
192
+ let base = '/';
193
+
194
+ return [
195
+ // Phase 1: Resolve all package entrypoints and emit chunks (or record dev paths).
196
+ {
197
+ name: 'import-map:get-chunk-ref-ids',
198
+ configResolved(config) {
199
+ base = config.base ?? '/';
200
+ },
201
+ async buildStart() {
202
+ importMapIsDev = this.environment.mode === 'dev';
203
+ await initCjsLexer();
204
+
205
+ // Expand each package name into its full set of subpath entrypoints
206
+ // (e.g. '@dxos/client' -> ['@dxos/client', '@dxos/client/echo', ...]).
207
+ modules = [
208
+ ...new Set(
209
+ (
210
+ await Promise.all(
211
+ packages.map(async (packageName) => {
212
+ const packageJsonPath = resolvePackageJsonPath(packageName);
213
+ if (!packageJsonPath) {
214
+ this.warn(`Unable to locate package.json for import map package: ${packageName}`);
215
+ return [packageName];
216
+ }
217
+
218
+ return getPackageEntrypoints(packageName, packageJsonPath);
219
+ }),
220
+ )
221
+ ).flat(),
222
+ ),
223
+ ];
224
+
225
+ for (const specifier of modules) {
226
+ const resolved = await this.resolve(specifier);
227
+ if (!resolved) {
228
+ this.warn(`Import map: unable to resolve "${specifier}"; omitting from import map.`);
229
+ continue;
230
+ }
231
+
232
+ if (importMapIsDev) {
233
+ // Dev: map bare specifier directly to the resolved file path.
234
+ imports[specifier] = trimQueryString(resolved.id);
235
+ } else {
236
+ // Prod: emit a virtual wrapper chunk that re-exports from the real module.
237
+ resolvedIds[specifier] = resolved.id;
238
+ chunkRefIds[specifier] = this.emitFile({
239
+ type: 'chunk',
240
+ id: `${WRAPPER_PREFIX}${specifier}`,
241
+ preserveSignature: 'strict',
242
+ });
243
+ }
244
+ }
245
+ },
246
+
247
+ // Intercept virtual wrapper IDs so Rollup doesn't try to resolve them as files.
248
+ resolveId(id) {
249
+ if (id.startsWith(WRAPPER_PREFIX)) {
250
+ return id;
251
+ }
252
+ },
253
+
254
+ // Generate the source for each virtual wrapper module.
255
+ // For CJS packages, explicitly re-export named exports (discovered via static analysis)
256
+ // because Rollup's `export *` interop doesn't preserve them for CJS.
257
+ load(id) {
258
+ if (!id.startsWith(WRAPPER_PREFIX)) {
259
+ return;
260
+ }
261
+ const specifier = id.slice(WRAPPER_PREFIX.length);
262
+ const resolvedId = resolvedIds[specifier];
263
+ if (!resolvedId) {
264
+ return `export * from ${JSON.stringify(specifier)};\n`;
265
+ }
266
+
267
+ const filePath = trimQueryString(resolvedId);
268
+ const isCjs = filePath.endsWith('.cjs') || (!filePath.endsWith('.mjs') && !resolvedIdIsEsmModule(filePath));
269
+
270
+ if (isCjs) {
271
+ const named = getCjsNamedExports(filePath);
272
+ if (named.length > 0) {
273
+ return `export { default, ${named.join(', ')} } from ${JSON.stringify(specifier)};\n`;
274
+ }
275
+ }
276
+ return `export * from ${JSON.stringify(specifier)};\n`;
277
+ },
278
+
279
+ // After bundling, map each specifier to the URL of its emitted chunk.
280
+ generateBundle() {
281
+ if (importMapIsDev) {
282
+ return;
283
+ }
284
+
285
+ imports = Object.fromEntries(
286
+ modules
287
+ .filter((specifier) => chunkRefIds[specifier] !== undefined)
288
+ .map((specifier) => [specifier, `${base}${this.getFileName(chunkRefIds[specifier])}`]),
289
+ );
290
+ },
291
+ },
292
+
293
+ // Phase 2: Inject the import map into the HTML as a <script type="importmap"> tag.
294
+ {
295
+ name: 'import-map:transform-index-html',
296
+ enforce: 'post',
297
+ transformIndexHtml(html: string) {
298
+ const tags = [
299
+ {
300
+ tag: 'script',
301
+ attrs: {
302
+ type: 'importmap',
303
+ },
304
+ children: JSON.stringify({ imports }, null, 2),
305
+ },
306
+ ];
307
+
308
+ return {
309
+ html,
310
+ tags,
311
+ };
312
+ },
313
+ },
314
+ ];
315
+ };
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './composer-plugin';
6
+ export * from './import-map-plugin';
@@ -0,0 +1,29 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ /**
6
+ * Packages shared between the Composer host app and remote plugins.
7
+ * The host provides these via import map so plugins don't bundle their own copies.
8
+ * Used as the default list for both `importMapPlugin` (host) and `composerPlugin` (plugin).
9
+ */
10
+ export const DEFAULT_PACKAGES = [
11
+ '@dxos/app-framework',
12
+ '@dxos/app-graph',
13
+ '@dxos/app-toolkit',
14
+ '@dxos/client',
15
+ '@dxos/client-protocol',
16
+ '@dxos/client-services',
17
+ '@dxos/config',
18
+ '@dxos/echo',
19
+ '@dxos/lit-ui',
20
+ '@dxos/react-client',
21
+ '@dxos/react-ui',
22
+ '@dxos/schema',
23
+ '@dxos/ui-theme',
24
+ '@effect/platform',
25
+ 'effect',
26
+ 'lit',
27
+ 'react',
28
+ 'react-dom',
29
+ ];
package/tsconfig.json CHANGED
@@ -18,10 +18,10 @@
18
18
  "path": "../../common/effect"
19
19
  },
20
20
  {
21
- "path": "../../common/invariant"
21
+ "path": "../../common/errors"
22
22
  },
23
23
  {
24
- "path": "../../common/keys"
24
+ "path": "../../common/invariant"
25
25
  },
26
26
  {
27
27
  "path": "../../common/log"
@@ -44,15 +44,6 @@
44
44
  {
45
45
  "path": "../../common/web-context-react"
46
46
  },
47
- {
48
- "path": "../../core/ai"
49
- },
50
- {
51
- "path": "../../core/assistant"
52
- },
53
- {
54
- "path": "../../core/blueprints"
55
- },
56
47
  {
57
48
  "path": "../../core/echo/echo"
58
49
  },
@@ -60,10 +51,10 @@
60
51
  "path": "../../core/echo/echo-db"
61
52
  },
62
53
  {
63
- "path": "../../core/functions"
54
+ "path": "../../core/operation"
64
55
  },
65
56
  {
66
- "path": "../../core/operation"
57
+ "path": "../../ui/react-primitives/react-error-boundary"
67
58
  },
68
59
  {
69
60
  "path": "../../ui/react-primitives/react-hooks"
@@ -71,23 +62,8 @@
71
62
  {
72
63
  "path": "../../ui/react-ui"
73
64
  },
74
- {
75
- "path": "../../ui/react-ui-syntax-highlighter"
76
- },
77
65
  {
78
66
  "path": "../../ui/ui-theme"
79
- },
80
- {
81
- "path": "../app-graph"
82
- },
83
- {
84
- "path": "../client-protocol"
85
- },
86
- {
87
- "path": "../schema"
88
- },
89
- {
90
- "path": "../types"
91
67
  }
92
68
  ]
93
69
  }
@@ -2,10 +2,8 @@
2
2
  "compilerOptions": {
3
3
  "composite": true,
4
4
  "module": "ESNext",
5
- "moduleResolution": "Node",
5
+ "moduleResolution": "Bundler",
6
6
  "allowSyntheticDefaultImports": true
7
7
  },
8
- "include": [
9
- "vite.config.ts"
10
- ]
8
+ "include": ["vite.config.ts"]
11
9
  }
package/typedoc.json CHANGED
@@ -1,7 +1,5 @@
1
1
  {
2
2
  "$schema": "https://typedoc.org/schema.json",
3
3
  "includeVersion": true,
4
- "entryPoints": [
5
- "src/index.ts"
6
- ]
7
- }
4
+ "entryPoints": ["src/index.ts"]
5
+ }
package/vitest.config.ts CHANGED
@@ -9,6 +9,6 @@ import { createConfig } from '../../../vitest.base.config';
9
9
 
10
10
  export default createConfig({
11
11
  dirname: typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url)),
12
- node: true,
12
+ node: { environment: 'jsdom' },
13
13
  storybook: true,
14
14
  });