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

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 (727) hide show
  1. package/.storybook/main.mts +9 -0
  2. package/.storybook/preview.mts +8 -0
  3. package/dist/lib/browser/capability-FU2RXY4V.mjs +38 -0
  4. package/dist/lib/browser/capability-FU2RXY4V.mjs.map +7 -0
  5. package/dist/lib/browser/capability-UZNIX34E.mjs +35 -0
  6. package/dist/lib/browser/capability-UZNIX34E.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-2F5RSEOR.mjs +80 -0
  8. package/dist/lib/browser/chunk-2F5RSEOR.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-2FUSTGNO.mjs +828 -0
  10. package/dist/lib/browser/chunk-2FUSTGNO.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-45CHLTBV.mjs +34 -0
  12. package/dist/lib/browser/chunk-45CHLTBV.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-5GNRIKCE.mjs +42 -0
  14. package/dist/lib/browser/chunk-5GNRIKCE.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-66IXTIVK.mjs +48 -0
  16. package/dist/lib/browser/chunk-66IXTIVK.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-ASHDB736.mjs +584 -0
  18. package/dist/lib/browser/chunk-ASHDB736.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-EV4VOV4X.mjs +142 -0
  20. package/dist/lib/browser/chunk-EV4VOV4X.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-FJ4765WW.mjs +8 -0
  22. package/dist/lib/browser/chunk-FJ4765WW.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-G7SDBRKH.mjs +1 -0
  24. package/dist/lib/browser/chunk-GUJTQEK7.mjs +140 -0
  25. package/dist/lib/browser/chunk-GUJTQEK7.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  27. package/dist/lib/browser/chunk-TZGMTFCT.mjs +79 -0
  28. package/dist/lib/browser/chunk-TZGMTFCT.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-UNGY3SDY.mjs +354 -0
  30. package/dist/lib/browser/chunk-UNGY3SDY.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-WSKPCXZC.mjs +467 -0
  32. package/dist/lib/browser/chunk-WSKPCXZC.mjs.map +7 -0
  33. package/dist/lib/browser/cli/index.mjs +74 -0
  34. package/dist/lib/browser/cli/index.mjs.map +7 -0
  35. package/dist/lib/browser/common/activation-events.mjs +24 -0
  36. package/dist/lib/browser/common/capabilities.mjs +46 -0
  37. package/dist/lib/browser/core/activation-event.mjs +20 -0
  38. package/dist/lib/browser/core/activation-event.mjs.map +7 -0
  39. package/dist/lib/browser/core/capability.mjs +30 -0
  40. package/dist/lib/browser/core/capability.mjs.map +7 -0
  41. package/dist/lib/browser/core/plugin-manager.mjs +15 -0
  42. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  43. package/dist/lib/browser/core/plugin.mjs +29 -0
  44. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  45. package/dist/lib/browser/core/url-loader.mjs +20 -0
  46. package/dist/lib/browser/core/url-loader.mjs.map +7 -0
  47. package/dist/lib/browser/index.mjs +95 -156
  48. package/dist/lib/browser/index.mjs.map +4 -4
  49. package/dist/lib/browser/invoker-capability-GQJP42KT.mjs +43 -0
  50. package/dist/lib/browser/invoker-capability-GQJP42KT.mjs.map +7 -0
  51. package/dist/lib/browser/meta.json +1 -1
  52. package/dist/lib/browser/testing/index.mjs +232 -51
  53. package/dist/lib/browser/testing/index.mjs.map +4 -4
  54. package/dist/lib/browser/testing/react.mjs +78 -0
  55. package/dist/lib/browser/testing/react.mjs.map +7 -0
  56. package/dist/lib/browser/ui/index.mjs +48 -0
  57. package/dist/lib/browser/ui/index.mjs.map +7 -0
  58. package/dist/lib/node-esm/capability-4URDTXWH.mjs +36 -0
  59. package/dist/lib/node-esm/capability-4URDTXWH.mjs.map +7 -0
  60. package/dist/lib/node-esm/capability-HLUG6SDI.mjs +39 -0
  61. package/dist/lib/node-esm/capability-HLUG6SDI.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs +10 -0
  63. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-6XW6LET6.mjs +35 -0
  65. package/dist/lib/node-esm/chunk-6XW6LET6.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-ATESWMED.mjs +585 -0
  67. package/dist/lib/node-esm/chunk-ATESWMED.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-FZLRFRYV.mjs +81 -0
  69. package/dist/lib/node-esm/chunk-FZLRFRYV.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-GLBO7FJP.mjs +141 -0
  71. package/dist/lib/node-esm/chunk-GLBO7FJP.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  73. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-IEAO4CAC.mjs +829 -0
  75. package/dist/lib/node-esm/chunk-IEAO4CAC.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-KLDFWTG3.mjs +355 -0
  77. package/dist/lib/node-esm/chunk-KLDFWTG3.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-MEX6YYWJ.mjs +43 -0
  79. package/dist/lib/node-esm/chunk-MEX6YYWJ.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-OZ7DZA5Z.mjs +2 -0
  81. package/dist/lib/node-esm/chunk-OZ7DZA5Z.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-TC5FX6VR.mjs +80 -0
  83. package/dist/lib/node-esm/chunk-TC5FX6VR.mjs.map +7 -0
  84. package/dist/lib/node-esm/chunk-X7AFIYKJ.mjs +143 -0
  85. package/dist/lib/node-esm/chunk-X7AFIYKJ.mjs.map +7 -0
  86. package/dist/lib/node-esm/chunk-XOCUANHO.mjs +49 -0
  87. package/dist/lib/node-esm/chunk-XOCUANHO.mjs.map +7 -0
  88. package/dist/lib/node-esm/chunk-Y7QUMO53.mjs +468 -0
  89. package/dist/lib/node-esm/chunk-Y7QUMO53.mjs.map +7 -0
  90. package/dist/lib/node-esm/cli/index.mjs +75 -0
  91. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  92. package/dist/lib/node-esm/common/activation-events.mjs +25 -0
  93. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  94. package/dist/lib/node-esm/common/capabilities.mjs +47 -0
  95. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  96. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  97. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  98. package/dist/lib/node-esm/core/capability.mjs +31 -0
  99. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  100. package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
  101. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  102. package/dist/lib/node-esm/core/plugin.mjs +30 -0
  103. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  104. package/dist/lib/node-esm/core/url-loader.mjs +21 -0
  105. package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
  106. package/dist/lib/node-esm/index.mjs +95 -156
  107. package/dist/lib/node-esm/index.mjs.map +4 -4
  108. package/dist/lib/node-esm/invoker-capability-O4OTEP24.mjs +44 -0
  109. package/dist/lib/node-esm/invoker-capability-O4OTEP24.mjs.map +7 -0
  110. package/dist/lib/node-esm/meta.json +1 -1
  111. package/dist/lib/node-esm/testing/index.mjs +232 -51
  112. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  113. package/dist/lib/node-esm/testing/react.mjs +79 -0
  114. package/dist/lib/node-esm/testing/react.mjs.map +7 -0
  115. package/dist/lib/node-esm/ui/index.mjs +49 -0
  116. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  117. package/dist/plugin/node-esm/index.mjs +819 -0
  118. package/dist/plugin/node-esm/index.mjs.map +7 -0
  119. package/dist/plugin/node-esm/meta.json +1 -0
  120. package/dist/types/src/cli/cli.d.ts +39 -0
  121. package/dist/types/src/cli/cli.d.ts.map +1 -0
  122. package/dist/types/src/cli/index.d.ts +2 -0
  123. package/dist/types/src/cli/index.d.ts.map +1 -0
  124. package/dist/types/src/common/activation-events.d.ts +27 -0
  125. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  126. package/dist/types/src/common/capabilities.d.ts +109 -121
  127. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  128. package/dist/types/src/common/index.d.ts +4 -8
  129. package/dist/types/src/common/index.d.ts.map +1 -1
  130. package/dist/types/src/common/operations.d.ts +19 -0
  131. package/dist/types/src/common/operations.d.ts.map +1 -0
  132. package/dist/types/src/common/translations.d.ts +8 -8
  133. package/dist/types/src/common/translations.d.ts.map +1 -1
  134. package/dist/types/src/context.d.ts +5 -0
  135. package/dist/types/src/context.d.ts.map +1 -0
  136. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +11 -11
  137. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  138. package/dist/types/src/core/capability-manager.d.ts +48 -0
  139. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  140. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  141. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  142. package/dist/types/src/core/capability.d.ts +156 -0
  143. package/dist/types/src/core/capability.d.ts.map +1 -0
  144. package/dist/types/src/core/index.d.ts +8 -4
  145. package/dist/types/src/core/index.d.ts.map +1 -1
  146. package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
  147. package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
  148. package/dist/types/src/core/plugin-manager.d.ts +84 -0
  149. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  150. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  151. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  152. package/dist/types/src/core/plugin-manifest.d.ts +76 -0
  153. package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
  154. package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
  155. package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
  156. package/dist/types/src/core/plugin.d.ts +128 -37
  157. package/dist/types/src/core/plugin.d.ts.map +1 -1
  158. package/dist/types/src/core/url-loader.d.ts +101 -0
  159. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  160. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  161. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  162. package/dist/types/src/helpers.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +3 -4
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
  166. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
  167. package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
  168. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
  169. package/dist/types/src/plugin-operation/history/errors.d.ts +32 -0
  170. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
  171. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
  172. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
  173. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
  174. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
  175. package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
  176. package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
  177. package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
  178. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
  179. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +101 -0
  180. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
  181. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
  182. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
  183. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
  184. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
  185. package/dist/types/src/plugin-operation/index.d.ts +3 -0
  186. package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
  187. package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
  188. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
  189. package/dist/types/src/plugin-operation/meta.d.ts +3 -0
  190. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
  191. package/dist/types/src/plugin-operation/testing.d.ts +58 -0
  192. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
  193. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
  194. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
  195. package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
  196. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
  197. package/dist/types/src/plugin-runtime/index.d.ts +2 -0
  198. package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
  199. package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
  200. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
  201. package/dist/types/src/testing/harness.d.ts +67 -0
  202. package/dist/types/src/testing/harness.d.ts.map +1 -0
  203. package/dist/types/src/testing/index.d.ts +2 -0
  204. package/dist/types/src/testing/index.d.ts.map +1 -1
  205. package/dist/types/src/testing/react.d.ts +27 -0
  206. package/dist/types/src/testing/react.d.ts.map +1 -0
  207. package/dist/types/src/testing/react.test.d.ts +2 -0
  208. package/dist/types/src/testing/react.test.d.ts.map +1 -0
  209. package/dist/types/src/testing/service.d.ts +8 -0
  210. package/dist/types/src/testing/service.d.ts.map +1 -0
  211. package/dist/types/src/testing/withPluginManager.d.ts +11 -10
  212. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  213. package/dist/types/src/testing/withPluginManager.stories.d.ts +9 -3
  214. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  215. package/dist/types/src/ui/components/App/App.d.ts +9 -0
  216. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  217. package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
  218. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  219. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  220. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  221. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts +64 -0
  222. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts.map +1 -0
  223. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts +19 -0
  224. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts.map +1 -0
  225. package/dist/types/src/ui/components/Placeholder/index.d.ts +2 -0
  226. package/dist/types/src/ui/components/Placeholder/index.d.ts.map +1 -0
  227. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts +13 -0
  228. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  229. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
  230. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  231. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  232. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  233. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +24 -0
  234. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  235. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts +14 -0
  236. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  237. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
  238. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  239. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  240. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  241. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  242. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  243. package/dist/types/src/ui/components/Surface/index.d.ts +36 -0
  244. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  245. package/dist/types/src/ui/components/Surface/types.d.ts +197 -0
  246. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  247. package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
  248. package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
  249. package/dist/types/src/ui/components/index.d.ts +5 -0
  250. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  251. package/dist/types/src/ui/hooks/index.d.ts +6 -0
  252. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  253. package/dist/types/src/ui/hooks/useApp.d.ts +88 -0
  254. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  255. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  256. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  257. package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
  258. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  259. package/dist/types/src/ui/hooks/useLoading.d.ts +18 -0
  260. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  261. package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
  262. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  263. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  264. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  265. package/dist/types/src/ui/index.d.ts +3 -0
  266. package/dist/types/src/ui/index.d.ts.map +1 -0
  267. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts +34 -0
  268. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts.map +1 -0
  269. package/dist/types/src/vite-plugin/boot-loader/index.d.ts +52 -0
  270. package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -0
  271. package/dist/types/src/vite-plugin/composer/index.d.ts +34 -0
  272. package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -0
  273. package/dist/types/src/vite-plugin/import-map/index.d.ts +16 -0
  274. package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -0
  275. package/dist/types/src/vite-plugin/index.d.ts +5 -0
  276. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  277. package/dist/types/src/vite-plugin/manifest.d.ts +37 -0
  278. package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
  279. package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
  280. package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
  281. package/dist/types/src/vite-plugin/packages.d.ts +13 -0
  282. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  283. package/dist/types/tsconfig.tsbuildinfo +1 -1
  284. package/moon.yml +26 -3
  285. package/package.json +113 -52
  286. package/src/cli/cli.ts +107 -0
  287. package/src/{playground/layout → cli}/index.ts +1 -1
  288. package/src/common/activation-events.ts +44 -0
  289. package/src/common/capabilities.ts +168 -109
  290. package/src/common/index.ts +4 -8
  291. package/src/common/operations.ts +35 -0
  292. package/src/common/translations.ts +18 -10
  293. package/src/context.ts +9 -0
  294. package/src/core/{events.ts → activation-event.ts} +10 -7
  295. package/src/core/capability-manager.test.ts +151 -0
  296. package/src/core/capability-manager.ts +192 -0
  297. package/src/core/capability.ts +247 -0
  298. package/src/core/index.ts +8 -4
  299. package/src/core/plugin-asset-cache.ts +60 -0
  300. package/src/core/plugin-manager.test.ts +1142 -0
  301. package/src/core/plugin-manager.ts +932 -0
  302. package/src/core/plugin-manifest.test.ts +48 -0
  303. package/src/core/plugin-manifest.ts +102 -0
  304. package/src/core/plugin.ts +266 -43
  305. package/src/core/url-loader.test.ts +178 -0
  306. package/src/core/url-loader.ts +308 -0
  307. package/src/helpers.test.ts +1 -1
  308. package/src/index.ts +3 -4
  309. package/src/plugin-operation/OperationPlugin.ts +24 -0
  310. package/src/plugin-operation/history/capability.ts +36 -0
  311. package/src/plugin-operation/history/errors.ts +7 -0
  312. package/src/plugin-operation/history/history-tracker.test.ts +373 -0
  313. package/src/plugin-operation/history/history-tracker.ts +128 -0
  314. package/src/plugin-operation/history/index.ts +9 -0
  315. package/src/plugin-operation/history/types.ts +17 -0
  316. package/src/plugin-operation/history/undo-mapping.ts +135 -0
  317. package/src/plugin-operation/history/undo-registry.test.ts +72 -0
  318. package/src/plugin-operation/history/undo-registry.ts +54 -0
  319. package/src/plugin-operation/index.ts +6 -0
  320. package/src/plugin-operation/invoker-capability.ts +54 -0
  321. package/src/plugin-operation/meta.ts +11 -0
  322. package/src/plugin-operation/testing.ts +154 -0
  323. package/src/plugin-runtime/RuntimePlugin.ts +19 -0
  324. package/src/plugin-runtime/capability.ts +53 -0
  325. package/src/plugin-runtime/index.ts +5 -0
  326. package/src/plugin-runtime/meta.ts +11 -0
  327. package/src/testing/harness.ts +229 -0
  328. package/src/testing/index.ts +2 -0
  329. package/src/testing/react.test.tsx +48 -0
  330. package/src/testing/react.tsx +113 -0
  331. package/src/testing/service.ts +52 -0
  332. package/src/testing/withPluginManager.stories.tsx +15 -12
  333. package/src/testing/withPluginManager.tsx +78 -54
  334. package/src/ui/components/App/App.stories.tsx +92 -0
  335. package/src/ui/components/App/App.tsx +81 -0
  336. package/src/{playground/logger → ui/components/App}/index.ts +1 -1
  337. package/src/ui/components/Placeholder/Placeholder.stories.tsx +77 -0
  338. package/src/ui/components/Placeholder/Placeholder.tsx +155 -0
  339. package/src/{playground/debug → ui/components/Placeholder}/index.ts +1 -1
  340. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +185 -0
  341. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
  342. package/src/ui/components/PluginManager/index.ts +5 -0
  343. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +144 -0
  344. package/src/ui/components/Surface/SurfaceComponent.tsx +303 -0
  345. package/src/ui/components/Surface/SurfaceInfo.tsx +107 -0
  346. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  347. package/src/ui/components/Surface/context.ts +12 -0
  348. package/src/ui/components/Surface/index.ts +54 -0
  349. package/src/ui/components/Surface/types.test.ts +126 -0
  350. package/src/ui/components/Surface/types.ts +269 -0
  351. package/src/ui/components/index.ts +8 -0
  352. package/src/ui/hooks/index.ts +9 -0
  353. package/src/ui/hooks/useApp.test.tsx +159 -0
  354. package/src/ui/hooks/useApp.tsx +413 -0
  355. package/src/ui/hooks/useCapabilities.ts +67 -0
  356. package/src/ui/hooks/useLoading.tsx +76 -0
  357. package/src/ui/hooks/useSettingsState.ts +26 -0
  358. package/src/ui/hooks/useSurface.ts +13 -0
  359. package/src/ui/index.ts +6 -0
  360. package/src/vite-plugin/boot-loader/BootLoader.stories.tsx +263 -0
  361. package/src/vite-plugin/boot-loader/boot-loader.css +294 -0
  362. package/src/vite-plugin/boot-loader/boot-loader.js +274 -0
  363. package/src/vite-plugin/boot-loader/index.ts +112 -0
  364. package/src/vite-plugin/composer/index.ts +277 -0
  365. package/src/vite-plugin/import-map/index.ts +499 -0
  366. package/src/vite-plugin/index.ts +10 -0
  367. package/src/vite-plugin/manifest.test.ts +24 -0
  368. package/src/vite-plugin/manifest.ts +50 -0
  369. package/src/vite-plugin/packages.ts +188 -0
  370. package/tsconfig.json +18 -22
  371. package/tsconfig.node.json +2 -4
  372. package/typedoc.json +2 -4
  373. package/vitest.config.ts +8 -6
  374. package/.eslintrc.cjs +0 -9
  375. package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
  376. package/.swc/plugins/v7_linux_x86_64_13.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429 +0 -0
  377. package/dist/lib/browser/app-graph-builder-BGGXLD6T.mjs +0 -137
  378. package/dist/lib/browser/app-graph-builder-BGGXLD6T.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-2636QSIK.mjs +0 -1518
  380. package/dist/lib/browser/chunk-2636QSIK.mjs.map +0 -7
  381. package/dist/lib/browser/chunk-DHZB7HG7.mjs +0 -413
  382. package/dist/lib/browser/chunk-DHZB7HG7.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-ORWHM7CO.mjs +0 -32
  384. package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
  385. package/dist/lib/browser/intent-dispatcher-TWKB22NI.mjs +0 -11
  386. package/dist/lib/browser/intent-resolver-O67UANYP.mjs +0 -39
  387. package/dist/lib/browser/intent-resolver-O67UANYP.mjs.map +0 -7
  388. package/dist/lib/browser/store-LFKDWHUQ.mjs +0 -30
  389. package/dist/lib/browser/store-LFKDWHUQ.mjs.map +0 -7
  390. package/dist/lib/browser/worker.mjs +0 -79
  391. package/dist/lib/node-esm/app-graph-builder-QHIJUYYW.mjs +0 -138
  392. package/dist/lib/node-esm/app-graph-builder-QHIJUYYW.mjs.map +0 -7
  393. package/dist/lib/node-esm/chunk-NJAFK626.mjs +0 -414
  394. package/dist/lib/node-esm/chunk-NJAFK626.mjs.map +0 -7
  395. package/dist/lib/node-esm/chunk-UMZQERLE.mjs +0 -34
  396. package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
  397. package/dist/lib/node-esm/chunk-VSKRV3NW.mjs +0 -1520
  398. package/dist/lib/node-esm/chunk-VSKRV3NW.mjs.map +0 -7
  399. package/dist/lib/node-esm/intent-dispatcher-5PRM3KGH.mjs +0 -12
  400. package/dist/lib/node-esm/intent-resolver-K3D4BXQQ.mjs +0 -40
  401. package/dist/lib/node-esm/intent-resolver-K3D4BXQQ.mjs.map +0 -7
  402. package/dist/lib/node-esm/store-53XDUBMD.mjs +0 -31
  403. package/dist/lib/node-esm/store-53XDUBMD.mjs.map +0 -7
  404. package/dist/lib/node-esm/worker.mjs +0 -80
  405. package/dist/types/src/App.d.ts +0 -43
  406. package/dist/types/src/App.d.ts.map +0 -1
  407. package/dist/types/src/common/collaboration.d.ts +0 -19
  408. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  409. package/dist/types/src/common/events.d.ts +0 -52
  410. package/dist/types/src/common/events.d.ts.map +0 -1
  411. package/dist/types/src/common/file.d.ts +0 -14
  412. package/dist/types/src/common/file.d.ts.map +0 -1
  413. package/dist/types/src/common/graph.d.ts +0 -21
  414. package/dist/types/src/common/graph.d.ts.map +0 -1
  415. package/dist/types/src/common/layout.d.ts +0 -281
  416. package/dist/types/src/common/layout.d.ts.map +0 -1
  417. package/dist/types/src/common/surface.d.ts +0 -65
  418. package/dist/types/src/common/surface.d.ts.map +0 -1
  419. package/dist/types/src/core/capabilities.d.ts +0 -114
  420. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  421. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  422. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  423. package/dist/types/src/core/events.d.ts.map +0 -1
  424. package/dist/types/src/core/manager.d.ts +0 -122
  425. package/dist/types/src/core/manager.d.ts.map +0 -1
  426. package/dist/types/src/core/manager.test.d.ts +0 -2
  427. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  428. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  429. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  430. package/dist/types/src/playground/debug/index.d.ts +0 -2
  431. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  432. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  433. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  434. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  435. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  436. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  437. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  438. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  439. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  440. package/dist/types/src/playground/generator/index.d.ts +0 -3
  441. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  442. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  443. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  444. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  445. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  446. package/dist/types/src/playground/layout/index.d.ts +0 -2
  447. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  448. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  449. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  450. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  451. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  452. package/dist/types/src/playground/logger/index.d.ts +0 -2
  453. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  454. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  455. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  456. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  457. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  458. package/dist/types/src/playground/playground.stories.d.ts +0 -10
  459. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  460. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  461. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  462. package/dist/types/src/plugin-intent/actions.d.ts +0 -38
  463. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  464. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  465. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  466. package/dist/types/src/plugin-intent/index.d.ts +0 -5
  467. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  468. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  469. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  470. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  471. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  472. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  473. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  474. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
  475. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  476. package/dist/types/src/plugin-settings/actions.d.ts +0 -27
  477. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  478. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
  479. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  480. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  481. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  482. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  483. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  484. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  485. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  486. package/dist/types/src/plugin-settings/translations.d.ts +0 -10
  487. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  488. package/dist/types/src/react/ErrorBoundary.d.ts +0 -31
  489. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  490. package/dist/types/src/react/IntentContext.d.ts +0 -8
  491. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  492. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  493. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  494. package/dist/types/src/react/Surface.d.ts +0 -12
  495. package/dist/types/src/react/Surface.d.ts.map +0 -1
  496. package/dist/types/src/react/Surface.stories.d.ts +0 -16
  497. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  498. package/dist/types/src/react/common.d.ts +0 -13
  499. package/dist/types/src/react/common.d.ts.map +0 -1
  500. package/dist/types/src/react/index.d.ts +0 -7
  501. package/dist/types/src/react/index.d.ts.map +0 -1
  502. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  503. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  504. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  505. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  506. package/dist/types/src/worker.d.ts +0 -4
  507. package/dist/types/src/worker.d.ts.map +0 -1
  508. package/src/App.tsx +0 -276
  509. package/src/common/collaboration.ts +0 -21
  510. package/src/common/events.ts +0 -77
  511. package/src/common/file.ts +0 -22
  512. package/src/common/graph.ts +0 -30
  513. package/src/common/layout.ts +0 -278
  514. package/src/common/surface.ts +0 -86
  515. package/src/core/capabilities.test.ts +0 -136
  516. package/src/core/capabilities.ts +0 -254
  517. package/src/core/manager.test.ts +0 -515
  518. package/src/core/manager.ts +0 -519
  519. package/src/playground/debug/Debug.tsx +0 -39
  520. package/src/playground/debug/plugin.ts +0 -17
  521. package/src/playground/generator/Main.tsx +0 -71
  522. package/src/playground/generator/Toolbar.tsx +0 -46
  523. package/src/playground/generator/generator.ts +0 -48
  524. package/src/playground/generator/index.ts +0 -6
  525. package/src/playground/generator/plugin.ts +0 -23
  526. package/src/playground/layout/Layout.tsx +0 -33
  527. package/src/playground/layout/plugin.ts +0 -17
  528. package/src/playground/logger/Toolbar.tsx +0 -29
  529. package/src/playground/logger/plugin.ts +0 -36
  530. package/src/playground/logger/schema.ts +0 -12
  531. package/src/playground/playground.stories.tsx +0 -42
  532. package/src/plugin-intent/IntentPlugin.ts +0 -20
  533. package/src/plugin-intent/actions.ts +0 -33
  534. package/src/plugin-intent/errors.ts +0 -39
  535. package/src/plugin-intent/index.ts +0 -8
  536. package/src/plugin-intent/intent-dispatcher.test.ts +0 -279
  537. package/src/plugin-intent/intent-dispatcher.ts +0 -333
  538. package/src/plugin-intent/intent.ts +0 -154
  539. package/src/plugin-settings/SettingsPlugin.ts +0 -35
  540. package/src/plugin-settings/actions.ts +0 -29
  541. package/src/plugin-settings/app-graph-builder.ts +0 -157
  542. package/src/plugin-settings/index.ts +0 -6
  543. package/src/plugin-settings/intent-resolver.ts +0 -34
  544. package/src/plugin-settings/store.ts +0 -33
  545. package/src/plugin-settings/translations.ts +0 -19
  546. package/src/react/ErrorBoundary.tsx +0 -45
  547. package/src/react/IntentContext.tsx +0 -34
  548. package/src/react/Surface.stories.tsx +0 -96
  549. package/src/react/Surface.tsx +0 -77
  550. package/src/react/common.ts +0 -12
  551. package/src/react/index.ts +0 -10
  552. package/src/react/useCapabilities.ts +0 -30
  553. package/src/react/useIntentResolver.ts +0 -22
  554. package/src/worker.ts +0 -11
  555. package/typedoc/.nojekyll +0 -1
  556. package/typedoc/assets/hierarchy.js +0 -1
  557. package/typedoc/assets/highlight.css +0 -106
  558. package/typedoc/assets/icons.js +0 -18
  559. package/typedoc/assets/icons.svg +0 -1
  560. package/typedoc/assets/main.js +0 -60
  561. package/typedoc/assets/navigation.js +0 -1
  562. package/typedoc/assets/search.js +0 -1
  563. package/typedoc/assets/style.css +0 -1640
  564. package/typedoc/classes/CollaborationActions.InsertContent.html +0 -421
  565. package/typedoc/classes/ErrorBoundary.html +0 -125
  566. package/typedoc/classes/IntentAction.ShowUndo.html +0 -227
  567. package/typedoc/classes/IntentAction.Track.html +0 -266
  568. package/typedoc/classes/LayoutAction.AddToast.html +0 -265
  569. package/typedoc/classes/LayoutAction.Close.html +0 -382
  570. package/typedoc/classes/LayoutAction.Expose.html +0 -265
  571. package/typedoc/classes/LayoutAction.Open.html +0 -1123
  572. package/typedoc/classes/LayoutAction.RevertWorkspace.html +0 -343
  573. package/typedoc/classes/LayoutAction.ScrollIntoView.html +0 -460
  574. package/typedoc/classes/LayoutAction.Set.html +0 -460
  575. package/typedoc/classes/LayoutAction.SetLayoutMode.html +0 -499
  576. package/typedoc/classes/LayoutAction.SwitchWorkspace.html +0 -265
  577. package/typedoc/classes/LayoutAction.UpdateComplementary.html +0 -616
  578. package/typedoc/classes/LayoutAction.UpdateDialog.html +0 -1123
  579. package/typedoc/classes/LayoutAction.UpdateLayout.html +0 -461
  580. package/typedoc/classes/LayoutAction.UpdatePopover.html +0 -1435
  581. package/typedoc/classes/LayoutAction.UpdateSidebar.html +0 -616
  582. package/typedoc/classes/Plugin.html +0 -6
  583. package/typedoc/classes/PluginContext.html +0 -38
  584. package/typedoc/classes/PluginManager.html +0 -43
  585. package/typedoc/classes/PluginModule.html +0 -18
  586. package/typedoc/classes/SettingsAction.Open.html +0 -226
  587. package/typedoc/classes/SettingsAction.OpenPluginRegistry.html +0 -265
  588. package/typedoc/functions/Events.createStateEvent.html +0 -2
  589. package/typedoc/functions/IntentPlugin.html +0 -1
  590. package/typedoc/functions/SettingsPlugin.html +0 -1
  591. package/typedoc/functions/allOf.html +0 -2
  592. package/typedoc/functions/chain.html +0 -3
  593. package/typedoc/functions/contributes.html +0 -2
  594. package/typedoc/functions/createDispatcher.html +0 -3
  595. package/typedoc/functions/createIntent.html +0 -6
  596. package/typedoc/functions/createResolver.html +0 -2
  597. package/typedoc/functions/createSurface.html +0 -2
  598. package/typedoc/functions/defineCapability.html +0 -2
  599. package/typedoc/functions/defineEvent.html +0 -2
  600. package/typedoc/functions/defineModule.html +0 -2
  601. package/typedoc/functions/definePlugin.html +0 -2
  602. package/typedoc/functions/eventKey.html +0 -2
  603. package/typedoc/functions/getEvents.html +0 -2
  604. package/typedoc/functions/isAllOf.html +0 -2
  605. package/typedoc/functions/isOneOf.html +0 -2
  606. package/typedoc/functions/isSurfaceAvailable.html +0 -2
  607. package/typedoc/functions/lazy.html +0 -2
  608. package/typedoc/functions/oneOf.html +0 -2
  609. package/typedoc/functions/useApp.html +0 -6
  610. package/typedoc/functions/useAppGraph.html +0 -1
  611. package/typedoc/functions/useCapabilities.html +0 -3
  612. package/typedoc/functions/useCapability.html +0 -4
  613. package/typedoc/functions/useIntentDispatcher.html +0 -1
  614. package/typedoc/functions/useIntentResolver.html +0 -1
  615. package/typedoc/functions/useLayout.html +0 -1
  616. package/typedoc/functions/usePluginManager.html +0 -2
  617. package/typedoc/hierarchy.html +0 -1
  618. package/typedoc/index.html +0 -12
  619. package/typedoc/interfaces/LayoutAction.Toast.html +0 -10
  620. package/typedoc/media/LICENSE +0 -8
  621. package/typedoc/modules/Capabilities.html +0 -1
  622. package/typedoc/modules/CollaborationActions.html +0 -1
  623. package/typedoc/modules/Events.html +0 -1
  624. package/typedoc/modules/IntentAction.html +0 -1
  625. package/typedoc/modules/LayoutAction.html +0 -2
  626. package/typedoc/modules/SettingsAction.html +0 -1
  627. package/typedoc/modules.html +0 -1
  628. package/typedoc/types/ActivationEvent.html +0 -8
  629. package/typedoc/types/ActivationEvents.html +0 -2
  630. package/typedoc/types/AnyCapability.html +0 -1
  631. package/typedoc/types/AnyIntent.html +0 -1
  632. package/typedoc/types/AnyIntentChain.html +0 -1
  633. package/typedoc/types/AnyIntentEffectResult.html +0 -1
  634. package/typedoc/types/AnyIntentResolver.html +0 -1
  635. package/typedoc/types/AnyIntentResult.html +0 -1
  636. package/typedoc/types/Capabilities.FileUploader.html +0 -1
  637. package/typedoc/types/Capabilities.IntentResolver.html +0 -1
  638. package/typedoc/types/Capabilities.Layout.html +0 -1
  639. package/typedoc/types/Capabilities.Metadata.html +0 -1
  640. package/typedoc/types/Capabilities.ReactContext.html +0 -1
  641. package/typedoc/types/Capabilities.ReactRoot.html +0 -1
  642. package/typedoc/types/Capabilities.ReactSurface.html +0 -1
  643. package/typedoc/types/Capabilities.Settings.html +0 -4
  644. package/typedoc/types/Capability.html +0 -9
  645. package/typedoc/types/CreateAppOptions.html +0 -10
  646. package/typedoc/types/FileInfo.html +0 -1
  647. package/typedoc/types/Intent.html +0 -10
  648. package/typedoc/types/IntentChain.html +0 -6
  649. package/typedoc/types/IntentContext.html +0 -5
  650. package/typedoc/types/IntentData.html +0 -1
  651. package/typedoc/types/IntentDispatcher.html +0 -2
  652. package/typedoc/types/IntentDispatcherResult.html +0 -2
  653. package/typedoc/types/IntentEffectDefinition.html +0 -2
  654. package/typedoc/types/IntentEffectResult.html +0 -15
  655. package/typedoc/types/IntentParams.html +0 -3
  656. package/typedoc/types/IntentResolver.html +0 -2
  657. package/typedoc/types/IntentResultData.html +0 -1
  658. package/typedoc/types/IntentSchema.html +0 -1
  659. package/typedoc/types/IntentUndo.html +0 -2
  660. package/typedoc/types/InterfaceDef.html +0 -4
  661. package/typedoc/types/Label.html +0 -1
  662. package/typedoc/types/NodeSerializer.html +0 -8
  663. package/typedoc/types/PluginManagerOptions.html +0 -6
  664. package/typedoc/types/PluginMeta.html +0 -21
  665. package/typedoc/types/PromiseIntentDispatcher.html +0 -2
  666. package/typedoc/types/PromiseIntentUndo.html +0 -2
  667. package/typedoc/types/Resource.html +0 -1
  668. package/typedoc/types/ResourceKey.html +0 -1
  669. package/typedoc/types/ResourceLanguage.html +0 -1
  670. package/typedoc/types/SerializedNode.html +0 -4
  671. package/typedoc/types/SurfaceComponent.html +0 -2
  672. package/typedoc/types/SurfaceDefinition.html +0 -2
  673. package/typedoc/types/SurfaceProps.html +0 -4
  674. package/typedoc/variables/Capabilities.AnchorSort.html +0 -1
  675. package/typedoc/variables/Capabilities.AppGraph.html +0 -1
  676. package/typedoc/variables/Capabilities.AppGraphBuilder.html +0 -1
  677. package/typedoc/variables/Capabilities.AppGraphSerializer.html +0 -1
  678. package/typedoc/variables/Capabilities.ArtifactDefinition.html +0 -1
  679. package/typedoc/variables/Capabilities.FileUploader.html +0 -1
  680. package/typedoc/variables/Capabilities.IntentDispatcher.html +0 -1
  681. package/typedoc/variables/Capabilities.IntentResolver.html +0 -1
  682. package/typedoc/variables/Capabilities.Layout.html +0 -1
  683. package/typedoc/variables/Capabilities.Metadata.html +0 -1
  684. package/typedoc/variables/Capabilities.Null.html +0 -1
  685. package/typedoc/variables/Capabilities.PluginManager.html +0 -1
  686. package/typedoc/variables/Capabilities.ReactContext.html +0 -1
  687. package/typedoc/variables/Capabilities.ReactRoot.html +0 -1
  688. package/typedoc/variables/Capabilities.ReactSurface.html +0 -1
  689. package/typedoc/variables/Capabilities.RxRegistry.html +0 -1
  690. package/typedoc/variables/Capabilities.Settings.html +0 -1
  691. package/typedoc/variables/Capabilities.SettingsStore.html +0 -1
  692. package/typedoc/variables/Capabilities.Tools.html +0 -1
  693. package/typedoc/variables/Capabilities.Translations.html +0 -1
  694. package/typedoc/variables/Events.AppGraphReady.html +0 -2
  695. package/typedoc/variables/Events.DispatcherReady.html +0 -2
  696. package/typedoc/variables/Events.LayoutReady.html +0 -1
  697. package/typedoc/variables/Events.SettingsReady.html +0 -2
  698. package/typedoc/variables/Events.SetupAppGraph.html +0 -2
  699. package/typedoc/variables/Events.SetupArtifactDefinition.html +0 -2
  700. package/typedoc/variables/Events.SetupIntentResolver.html +0 -2
  701. package/typedoc/variables/Events.SetupMetadata.html +0 -2
  702. package/typedoc/variables/Events.SetupReactSurface.html +0 -2
  703. package/typedoc/variables/Events.SetupSettings.html +0 -2
  704. package/typedoc/variables/Events.SetupTranslations.html +0 -2
  705. package/typedoc/variables/Events.Startup.html +0 -2
  706. package/typedoc/variables/FileInfoSchema.html +0 -1
  707. package/typedoc/variables/INTENT_ACTION.html +0 -1
  708. package/typedoc/variables/INTENT_PLUGIN.html +0 -1
  709. package/typedoc/variables/LAYOUT_ACTION.html +0 -1
  710. package/typedoc/variables/LAYOUT_PLUGIN.html +0 -1
  711. package/typedoc/variables/Label.html +0 -1
  712. package/typedoc/variables/LayoutAction.Toast.html +0 -1
  713. package/typedoc/variables/LayoutAction.UPDATE_LAYOUT.html +0 -1
  714. package/typedoc/variables/PluginManagerProvider.html +0 -2
  715. package/typedoc/variables/Resource.html +0 -2
  716. package/typedoc/variables/ResourceKey.html +0 -1
  717. package/typedoc/variables/ResourceLanguage.html +0 -1
  718. package/typedoc/variables/SETTINGS_ACTION.html +0 -1
  719. package/typedoc/variables/SETTINGS_ID.html +0 -1
  720. package/typedoc/variables/SETTINGS_KEY.html +0 -1
  721. package/typedoc/variables/SETTINGS_PLUGIN.html +0 -1
  722. package/typedoc/variables/Surface.html +0 -2
  723. package/typedoc/variables/defaultFileTypes.html +0 -1
  724. /package/dist/lib/browser/{intent-dispatcher-TWKB22NI.mjs.map → chunk-G7SDBRKH.mjs.map} +0 -0
  725. /package/dist/lib/browser/{worker.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  726. /package/dist/lib/{node-esm/intent-dispatcher-5PRM3KGH.mjs.map → browser/common/activation-events.mjs.map} +0 -0
  727. /package/dist/lib/{node-esm/worker.mjs.map → browser/common/capabilities.mjs.map} +0 -0
@@ -0,0 +1,354 @@
1
+ import {
2
+ isPlugin
3
+ } from "./chunk-GUJTQEK7.mjs";
4
+ import {
5
+ __export
6
+ } from "./chunk-J5LGTIGS.mjs";
7
+
8
+ // src/core/url-loader.ts
9
+ var url_loader_exports = {};
10
+ __export(url_loader_exports, {
11
+ RemotePluginLoadError: () => RemotePluginLoadError,
12
+ getRemoteEntries: () => getRemoteEntries,
13
+ isLocalUrl: () => isLocalUrl,
14
+ make: () => make,
15
+ preload: () => preload,
16
+ uninstall: () => uninstall
17
+ });
18
+ import * as Effect3 from "effect/Effect";
19
+ import * as Option from "effect/Option";
20
+ import { BaseError as BaseError3 } from "@dxos/errors";
21
+ import { log } from "@dxos/log";
22
+
23
+ // src/core/plugin-asset-cache.ts
24
+ var plugin_asset_cache_exports = {};
25
+ __export(plugin_asset_cache_exports, {
26
+ PluginAssetCacheError: () => PluginAssetCacheError,
27
+ noop: () => noop
28
+ });
29
+ import * as Effect from "effect/Effect";
30
+ import { BaseError } from "@dxos/errors";
31
+ var PluginAssetCacheError = class extends BaseError.extend("PluginAssetCacheError", "Plugin asset cache operation failed") {
32
+ };
33
+ var noop = () => ({
34
+ cache: () => Effect.void,
35
+ evict: () => Effect.void,
36
+ resolve: (_pluginId, url) => Effect.succeed(url),
37
+ list: () => Effect.succeed([])
38
+ });
39
+
40
+ // src/core/plugin-manifest.ts
41
+ var plugin_manifest_exports = {};
42
+ __export(plugin_manifest_exports, {
43
+ Manifest: () => Manifest,
44
+ PluginManifestError: () => PluginManifestError,
45
+ fetchManifest: () => fetchManifest,
46
+ parse: () => parse
47
+ });
48
+ import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
49
+ import * as HttpClient from "@effect/platform/HttpClient";
50
+ import * as HttpClientRequest from "@effect/platform/HttpClientRequest";
51
+ import * as HttpClientResponse from "@effect/platform/HttpClientResponse";
52
+ import * as Effect2 from "effect/Effect";
53
+ import * as Schema from "effect/Schema";
54
+ import { BaseError as BaseError2 } from "@dxos/errors";
55
+ import { PLUGIN_ENTRY_FILENAME } from "@dxos/protocols";
56
+ var PluginManifestError = class extends BaseError2.extend("PluginManifestError", "Plugin manifest is invalid") {
57
+ };
58
+ var Manifest = Schema.Struct({
59
+ id: Schema.String,
60
+ name: Schema.String,
61
+ version: Schema.String,
62
+ assets: Schema.Array(Schema.String)
63
+ });
64
+ var resolve = (manifestUrl, manifest) => ({
65
+ id: manifest.id,
66
+ name: manifest.name,
67
+ version: manifest.version,
68
+ entryUrl: new URL(PLUGIN_ENTRY_FILENAME, manifestUrl).toString(),
69
+ assetUrls: manifest.assets.map((asset) => new URL(asset, manifestUrl).toString())
70
+ });
71
+ var parse = (manifestUrl, payload) => {
72
+ const manifest = Schema.decodeUnknownSync(Manifest)(payload);
73
+ if (!manifest.assets.includes(PLUGIN_ENTRY_FILENAME)) {
74
+ throw new Error(`Manifest at ${manifestUrl} does not list ${PLUGIN_ENTRY_FILENAME} in assets.`);
75
+ }
76
+ return resolve(manifestUrl, manifest);
77
+ };
78
+ var fetchManifest = (manifestUrl) => Effect2.gen(function* () {
79
+ const response = yield* HttpClientRequest.get(manifestUrl).pipe(HttpClient.execute, Effect2.mapError((cause) => new PluginManifestError({
80
+ context: {
81
+ manifestUrl,
82
+ reason: "fetch-failed"
83
+ },
84
+ cause
85
+ })));
86
+ if (response.status >= 400) {
87
+ return yield* Effect2.fail(new PluginManifestError({
88
+ context: {
89
+ manifestUrl,
90
+ reason: "http-error",
91
+ status: response.status
92
+ }
93
+ }));
94
+ }
95
+ const manifest = yield* HttpClientResponse.schemaBodyJson(Manifest)(response).pipe(Effect2.mapError((cause) => new PluginManifestError({
96
+ context: {
97
+ manifestUrl,
98
+ reason: "parse-failed"
99
+ },
100
+ cause
101
+ })));
102
+ if (!manifest.assets.includes(PLUGIN_ENTRY_FILENAME)) {
103
+ return yield* Effect2.fail(new PluginManifestError({
104
+ context: {
105
+ manifestUrl,
106
+ reason: "invalid"
107
+ },
108
+ cause: `assets does not include ${PLUGIN_ENTRY_FILENAME}`
109
+ }));
110
+ }
111
+ return resolve(manifestUrl, manifest);
112
+ }).pipe(Effect2.scoped, Effect2.provide(FetchHttpClient.layer));
113
+
114
+ // src/core/url-loader.ts
115
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/url-loader.ts";
116
+ var DEFAULT_KEY = "org.dxos.composer.remote-plugins";
117
+ var RemotePluginLoadError = class extends BaseError3.extend("RemotePluginLoadError", "Failed to load remote plugin") {
118
+ };
119
+ var defaultStorage = () => ({
120
+ get: (key) => localStorage.getItem(key),
121
+ set: (key, value) => localStorage.setItem(key, value)
122
+ });
123
+ var getPersistedRemotePlugins = (storage, key) => {
124
+ try {
125
+ const parsed = JSON.parse(storage.get(key) ?? "[]");
126
+ if (!Array.isArray(parsed)) {
127
+ return [];
128
+ }
129
+ return parsed.filter((entry) => typeof entry === "object" && entry !== null && typeof entry.id === "string" && typeof entry.url === "string");
130
+ } catch {
131
+ return [];
132
+ }
133
+ };
134
+ var persistRemotePlugin = (storage, key, entry) => {
135
+ try {
136
+ const entries = getPersistedRemotePlugins(storage, key).filter((existing) => existing.id !== entry.id);
137
+ entries.push(entry);
138
+ storage.set(key, JSON.stringify(entries));
139
+ } catch (error) {
140
+ log.warn("failed to persist remote plugin entry", {
141
+ entry,
142
+ error
143
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 40, S: void 0 });
144
+ }
145
+ };
146
+ var removePersistedRemotePlugin = (storage, key, pluginId) => {
147
+ try {
148
+ const entries = getPersistedRemotePlugins(storage, key).filter((existing) => existing.id !== pluginId);
149
+ storage.set(key, JSON.stringify(entries));
150
+ } catch (error) {
151
+ log.warn("failed to remove remote plugin entry", {
152
+ pluginId,
153
+ error
154
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 51, S: void 0 });
155
+ }
156
+ };
157
+ var isUrl = (locator) => {
158
+ try {
159
+ const url = new URL(locator);
160
+ return url.protocol === "http:" || url.protocol === "https:";
161
+ } catch {
162
+ return false;
163
+ }
164
+ };
165
+ var isLocalUrl = (locator) => {
166
+ try {
167
+ const hostname = new URL(locator).hostname.toLowerCase();
168
+ return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1" || hostname === "[::1]";
169
+ } catch {
170
+ return false;
171
+ }
172
+ };
173
+ var getRemoteEntries = (options = {}) => {
174
+ const storage = options.storage ?? defaultStorage();
175
+ const key = options.key ?? DEFAULT_KEY;
176
+ return getPersistedRemotePlugins(storage, key);
177
+ };
178
+ var normalizePluginExport = (mod) => {
179
+ const exported = mod.default;
180
+ if (isPlugin(exported)) {
181
+ return exported;
182
+ }
183
+ if (typeof exported === "function") {
184
+ const result = exported();
185
+ if (isPlugin(result)) {
186
+ return result;
187
+ }
188
+ }
189
+ throw new Error("Remote module default export is not a Plugin or a zero-arg plugin factory.");
190
+ };
191
+ var loadStylesheets = (manifest, cache) => Effect3.gen(function* () {
192
+ if (typeof document === "undefined") {
193
+ return;
194
+ }
195
+ const cssUrls = manifest.assetUrls.filter((url) => url.endsWith(".css"));
196
+ for (const url of cssUrls) {
197
+ const resolved = yield* cache.resolve(manifest.id, url);
198
+ if (document.querySelector(`link[data-dxos-plugin-id="${manifest.id}"][href="${resolved}"]`)) {
199
+ continue;
200
+ }
201
+ const link = document.createElement("link");
202
+ link.rel = "stylesheet";
203
+ link.href = resolved;
204
+ link.dataset.dxosPluginId = manifest.id;
205
+ document.head.appendChild(link);
206
+ }
207
+ });
208
+ var loadFromManifest = (manifestUrl, cache) => Effect3.gen(function* () {
209
+ log.info("loading remote plugin", {
210
+ manifestUrl
211
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 119, S: this });
212
+ const manifest = yield* fetchManifest(manifestUrl).pipe(Effect3.mapError((cause) => new RemotePluginLoadError({
213
+ context: {
214
+ locator: manifestUrl,
215
+ reason: "manifest-error"
216
+ },
217
+ cause
218
+ })));
219
+ const cachedUrls = manifest.assetUrls.indexOf(manifestUrl) === -1 ? [
220
+ manifestUrl,
221
+ ...manifest.assetUrls
222
+ ] : manifest.assetUrls;
223
+ const wrapCacheError = Effect3.mapError((cause) => new RemotePluginLoadError({
224
+ context: {
225
+ locator: manifestUrl,
226
+ reason: "cache-error"
227
+ },
228
+ cause
229
+ }));
230
+ yield* cache.cache(manifest.id, cachedUrls).pipe(wrapCacheError);
231
+ const entryUrl = yield* cache.resolve(manifest.id, manifest.entryUrl).pipe(wrapCacheError);
232
+ const mod = yield* Effect3.tryPromise({
233
+ try: () => import(
234
+ /* @vite-ignore */
235
+ entryUrl
236
+ ),
237
+ catch: (cause) => new RemotePluginLoadError({
238
+ context: {
239
+ locator: manifestUrl,
240
+ reason: "import-failed"
241
+ },
242
+ cause
243
+ })
244
+ });
245
+ const plugin = normalizePluginExport(mod);
246
+ if (!plugin.meta.id || !plugin.meta.name) {
247
+ return yield* Effect3.fail(new RemotePluginLoadError({
248
+ context: {
249
+ locator: manifestUrl,
250
+ reason: "meta-missing"
251
+ }
252
+ }));
253
+ }
254
+ if (plugin.meta.id !== manifest.id) {
255
+ return yield* Effect3.fail(new RemotePluginLoadError({
256
+ context: {
257
+ locator: manifestUrl,
258
+ reason: "meta-mismatch",
259
+ metaId: plugin.meta.id,
260
+ manifestId: manifest.id
261
+ }
262
+ }));
263
+ }
264
+ yield* loadStylesheets(manifest, cache).pipe(wrapCacheError);
265
+ return {
266
+ plugin,
267
+ manifest
268
+ };
269
+ });
270
+ var preload = (options = {}) => Effect3.gen(function* () {
271
+ const storage = options.storage ?? defaultStorage();
272
+ const key = options.key ?? DEFAULT_KEY;
273
+ const cache = options.cache ?? noop();
274
+ const entries = getPersistedRemotePlugins(storage, key);
275
+ if (entries.length === 0) {
276
+ return [];
277
+ }
278
+ log.info("preloading remote plugins", {
279
+ count: entries.length
280
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 196, S: this });
281
+ const results = yield* Effect3.all(entries.map((entry) => loadFromManifest(entry.url, cache).pipe(Effect3.tapError((error) => Effect3.sync(() => log.warn("failed to preload remote plugin", {
282
+ entry,
283
+ error
284
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 199, S: this }))), Effect3.option)), {
285
+ concurrency: "unbounded"
286
+ });
287
+ return results.flatMap((result) => Option.match(result, {
288
+ onNone: () => [],
289
+ onSome: ({ plugin }) => [
290
+ plugin
291
+ ]
292
+ }));
293
+ });
294
+ var make = (builtinPlugins, options = {}) => {
295
+ const storage = options.storage ?? defaultStorage();
296
+ const key = options.key ?? DEFAULT_KEY;
297
+ const cache = options.cache ?? noop();
298
+ return (locator) => Effect3.gen(function* () {
299
+ const builtin = builtinPlugins.find((plugin2) => plugin2.meta.id === locator);
300
+ if (builtin) {
301
+ return builtin;
302
+ }
303
+ if (!isUrl(locator)) {
304
+ return yield* Effect3.fail(new RemotePluginLoadError({
305
+ context: {
306
+ locator,
307
+ reason: "invalid-locator"
308
+ }
309
+ }));
310
+ }
311
+ const { plugin } = yield* loadFromManifest(locator, cache);
312
+ const duplicate = builtinPlugins.find((existing) => existing.meta.id === plugin.meta.id);
313
+ if (duplicate) {
314
+ return yield* Effect3.fail(new RemotePluginLoadError({
315
+ context: {
316
+ locator,
317
+ reason: "duplicate-id",
318
+ id: plugin.meta.id
319
+ }
320
+ }));
321
+ }
322
+ persistRemotePlugin(storage, key, {
323
+ id: plugin.meta.id,
324
+ url: locator
325
+ });
326
+ return plugin;
327
+ });
328
+ };
329
+ var uninstall = (pluginId, options = {}) => Effect3.gen(function* () {
330
+ const storage = options.storage ?? defaultStorage();
331
+ const key = options.key ?? DEFAULT_KEY;
332
+ const cache = options.cache ?? noop();
333
+ removePersistedRemotePlugin(storage, key, pluginId);
334
+ if (typeof document !== "undefined") {
335
+ document.querySelectorAll(`link[data-dxos-plugin-id="${pluginId}"]`).forEach((node) => node.remove());
336
+ }
337
+ yield* cache.evict(pluginId).pipe(Effect3.tapError((error) => Effect3.sync(() => log.warn("failed to evict plugin assets", {
338
+ pluginId,
339
+ error
340
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 268, S: this }))), Effect3.ignore);
341
+ });
342
+
343
+ export {
344
+ plugin_asset_cache_exports,
345
+ plugin_manifest_exports,
346
+ RemotePluginLoadError,
347
+ isLocalUrl,
348
+ getRemoteEntries,
349
+ preload,
350
+ make,
351
+ uninstall,
352
+ url_loader_exports
353
+ };
354
+ //# sourceMappingURL=chunk-UNGY3SDY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/core/url-loader.ts", "../../../src/core/plugin-asset-cache.ts", "../../../src/core/plugin-manifest.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { BaseError } from '@dxos/errors';\nimport { log } from '@dxos/log';\n\nimport * as Plugin from './plugin';\nimport * as PluginAssetCache from './plugin-asset-cache';\nimport * as PluginManifest from './plugin-manifest';\n\nconst DEFAULT_KEY = 'org.dxos.composer.remote-plugins';\n\n/**\n * Tagged error for any failure during remote plugin loading. Construction sites\n * set `context.locator` and `context.reason` (one of `'invalid-locator' |\n * 'manifest-error' | 'cache-error' | 'import-failed' | 'meta-missing' |\n * 'meta-mismatch' | 'duplicate-id'`) so handlers can route on the failure mode.\n */\nexport class RemotePluginLoadError extends BaseError.extend('RemotePluginLoadError', 'Failed to load remote plugin') {}\n\n/**\n * Abstraction over key-value storage (defaults to localStorage).\n */\nexport type Storage = {\n get(key: string): string | null;\n set(key: string, value: string): void;\n};\n\n/**\n * Options for configuring the URL loader.\n */\nexport type Options = {\n storage?: Storage;\n key?: string;\n /**\n * Per-platform offline asset cache. Defaults to a no-op cache (no offline support).\n */\n cache?: PluginAssetCache.Cache;\n};\n\n/**\n * Persisted record of a remote plugin that has been loaded previously.\n *\n * `url` is the URL of the plugin manifest (`plugin.json`), not the entry module.\n */\nexport type RemotePluginEntry = {\n id: string;\n url: string;\n};\n\nconst defaultStorage = (): Storage => ({\n get: (key) => localStorage.getItem(key),\n set: (key, value) => localStorage.setItem(key, value),\n});\n\nconst getPersistedRemotePlugins = (storage: Storage, key: string): RemotePluginEntry[] => {\n try {\n const parsed: unknown = JSON.parse(storage.get(key) ?? '[]');\n if (!Array.isArray(parsed)) {\n return [];\n }\n return parsed.filter(\n (entry): entry is RemotePluginEntry =>\n typeof entry === 'object' && entry !== null && typeof entry.id === 'string' && typeof entry.url === 'string',\n );\n } catch {\n return [];\n }\n};\n\nconst persistRemotePlugin = (storage: Storage, key: string, entry: RemotePluginEntry): void => {\n try {\n const entries = getPersistedRemotePlugins(storage, key).filter((existing) => existing.id !== entry.id);\n entries.push(entry);\n storage.set(key, JSON.stringify(entries));\n } catch (error) {\n log.warn('failed to persist remote plugin entry', { entry, error });\n }\n};\n\nconst removePersistedRemotePlugin = (storage: Storage, key: string, pluginId: string): void => {\n try {\n const entries = getPersistedRemotePlugins(storage, key).filter((existing) => existing.id !== pluginId);\n storage.set(key, JSON.stringify(entries));\n } catch (error) {\n log.warn('failed to remove remote plugin entry', { pluginId, error });\n }\n};\n\nconst isUrl = (locator: string): boolean => {\n try {\n const url = new URL(locator);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n};\n\n/**\n * Returns true when the URL's hostname is the local host (localhost, 127.0.0.1, or ::1).\n */\nexport const isLocalUrl = (locator: string): boolean => {\n try {\n const hostname = new URL(locator).hostname.toLowerCase();\n // WHATWG URL returns '::1' without brackets in Node; some browsers return '[::1]'.\n return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1' || hostname === '[::1]';\n } catch {\n return false;\n }\n};\n\n/**\n * Returns the list of remote plugin entries previously persisted by {@link make}.\n * Useful for UI code that needs to know which loaded plugins were installed from a URL\n * (e.g. to surface a tag on remote or localhost-hosted plugins).\n */\nexport const getRemoteEntries = (options: Options = {}): readonly RemotePluginEntry[] => {\n const storage = options.storage ?? defaultStorage();\n const key = options.key ?? DEFAULT_KEY;\n return getPersistedRemotePlugins(storage, key);\n};\n\nconst normalizePluginExport = (mod: Record<string, unknown>): Plugin.Plugin => {\n const exported = mod.default;\n if (Plugin.isPlugin(exported)) {\n return exported;\n }\n if (typeof exported === 'function') {\n const result = (exported as () => unknown)();\n if (Plugin.isPlugin(result)) {\n return result;\n }\n }\n throw new Error('Remote module default export is not a Plugin or a zero-arg plugin factory.');\n};\n\n/**\n * Loads stylesheets declared in the manifest by appending `<link rel=\"stylesheet\">` elements to the host document.\n * Each link is tagged with `data-dxos-plugin-id` so `uninstall` can clean them up.\n */\nconst loadStylesheets = (\n manifest: PluginManifest.ResolvedManifest,\n cache: PluginAssetCache.Cache,\n): Effect.Effect<void, PluginAssetCache.PluginAssetCacheError> =>\n Effect.gen(function* () {\n if (typeof document === 'undefined') {\n return;\n }\n const cssUrls = manifest.assetUrls.filter((url) => url.endsWith('.css'));\n for (const url of cssUrls) {\n const resolved = yield* cache.resolve(manifest.id, url);\n if (document.querySelector(`link[data-dxos-plugin-id=\"${manifest.id}\"][href=\"${resolved}\"]`)) {\n continue;\n }\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = resolved;\n link.dataset.dxosPluginId = manifest.id;\n document.head.appendChild(link);\n }\n });\n\nconst loadFromManifest = (\n manifestUrl: string,\n cache: PluginAssetCache.Cache,\n): Effect.Effect<{ plugin: Plugin.Plugin; manifest: PluginManifest.ResolvedManifest }, RemotePluginLoadError> =>\n Effect.gen(function* () {\n log.info('loading remote plugin', { manifestUrl });\n const manifest = yield* PluginManifest.fetchManifest(manifestUrl).pipe(\n Effect.mapError(\n (cause) => new RemotePluginLoadError({ context: { locator: manifestUrl, reason: 'manifest-error' }, cause }),\n ),\n );\n // Cache the manifest URL alongside its declared assets. Without it, `preload` on a\n // subsequent reload would fetch the manifest from the network — and fail when the\n // plugin's host is offline, dropping the plugin from the runtime.\n const cachedUrls =\n manifest.assetUrls.indexOf(manifestUrl) === -1 ? [manifestUrl, ...manifest.assetUrls] : manifest.assetUrls;\n const wrapCacheError = Effect.mapError(\n (cause: PluginAssetCache.PluginAssetCacheError) =>\n new RemotePluginLoadError({ context: { locator: manifestUrl, reason: 'cache-error' }, cause }),\n );\n yield* cache.cache(manifest.id, cachedUrls).pipe(wrapCacheError);\n const entryUrl = yield* cache.resolve(manifest.id, manifest.entryUrl).pipe(wrapCacheError);\n const mod = yield* Effect.tryPromise({\n try: () => import(/* @vite-ignore */ entryUrl),\n catch: (cause) =>\n new RemotePluginLoadError({ context: { locator: manifestUrl, reason: 'import-failed' }, cause }),\n });\n const plugin = normalizePluginExport(mod);\n if (!plugin.meta.id || !plugin.meta.name) {\n return yield* Effect.fail(\n new RemotePluginLoadError({ context: { locator: manifestUrl, reason: 'meta-missing' } }),\n );\n }\n if (plugin.meta.id !== manifest.id) {\n return yield* Effect.fail(\n new RemotePluginLoadError({\n context: {\n locator: manifestUrl,\n reason: 'meta-mismatch',\n metaId: plugin.meta.id,\n manifestId: manifest.id,\n },\n }),\n );\n }\n // Append stylesheets only after the entry imports cleanly and meta validation\n // passes. If we did this earlier and the import or meta checks failed, the\n // `<link>` tags would leak into the host DOM with no plugin to own their\n // teardown — `uninstall` only runs for plugins the manager actually accepted.\n yield* loadStylesheets(manifest, cache).pipe(wrapCacheError);\n return { plugin, manifest };\n });\n\n/**\n * Preloads previously persisted remote plugins from storage. Per-entry failures\n * are logged and swallowed — the returned effect always succeeds with whichever\n * plugins loaded cleanly, so a single bad entry can't block the host's startup.\n */\nexport const preload = (options: Options = {}): Effect.Effect<Plugin.Plugin[], never> =>\n Effect.gen(function* () {\n const storage = options.storage ?? defaultStorage();\n const key = options.key ?? DEFAULT_KEY;\n const cache = options.cache ?? PluginAssetCache.noop();\n\n const entries = getPersistedRemotePlugins(storage, key);\n if (entries.length === 0) {\n return [];\n }\n log.info('preloading remote plugins', { count: entries.length });\n const results = yield* Effect.all(\n entries.map((entry) =>\n loadFromManifest(entry.url, cache).pipe(\n Effect.tapError((error) => Effect.sync(() => log.warn('failed to preload remote plugin', { entry, error }))),\n Effect.option,\n ),\n ),\n { concurrency: 'unbounded' },\n );\n return results.flatMap((result) =>\n Option.match(result, {\n onNone: () => [],\n onSome: ({ plugin }) => [plugin],\n }),\n );\n });\n\n/**\n * Creates a plugin loader that resolves built-in plugins by ID or loads remote plugins from URLs.\n *\n * Remote URLs must point at a plugin manifest (`plugin.json`). The loader fetches the manifest,\n * eagerly persists every declared asset via the configured `PluginAssetCache`, then dynamic-imports\n * the entry module.\n */\nexport const make = (builtinPlugins: Plugin.Plugin[], options: Options = {}) => {\n const storage = options.storage ?? defaultStorage();\n const key = options.key ?? DEFAULT_KEY;\n const cache = options.cache ?? PluginAssetCache.noop();\n\n return (locator: string): Effect.Effect<Plugin.Plugin, RemotePluginLoadError> =>\n Effect.gen(function* () {\n const builtin = builtinPlugins.find((plugin) => plugin.meta.id === locator);\n if (builtin) {\n return builtin;\n }\n if (!isUrl(locator)) {\n return yield* Effect.fail(new RemotePluginLoadError({ context: { locator, reason: 'invalid-locator' } }));\n }\n const { plugin } = yield* loadFromManifest(locator, cache);\n const duplicate = builtinPlugins.find((existing) => existing.meta.id === plugin.meta.id);\n if (duplicate) {\n return yield* Effect.fail(\n new RemotePluginLoadError({ context: { locator, reason: 'duplicate-id', id: plugin.meta.id } }),\n );\n }\n persistRemotePlugin(storage, key, { id: plugin.meta.id, url: locator });\n return plugin;\n });\n};\n\n/**\n * Removes a previously installed remote plugin: drops the persisted entry, evicts cached\n * assets, and removes any stylesheet `<link>` tags that {@link loadFromManifest} appended.\n *\n * Cache eviction failures are logged and swallowed — the persisted entry has already been\n * dropped so the user-visible state is consistent regardless of whether the platform\n * cache cooperated.\n */\nexport const uninstall = (pluginId: string, options: Options = {}): Effect.Effect<void, never> =>\n Effect.gen(function* () {\n const storage = options.storage ?? defaultStorage();\n const key = options.key ?? DEFAULT_KEY;\n const cache = options.cache ?? PluginAssetCache.noop();\n\n removePersistedRemotePlugin(storage, key, pluginId);\n if (typeof document !== 'undefined') {\n document.querySelectorAll(`link[data-dxos-plugin-id=\"${pluginId}\"]`).forEach((node) => node.remove());\n }\n yield* cache.evict(pluginId).pipe(\n Effect.tapError((error) => Effect.sync(() => log.warn('failed to evict plugin assets', { pluginId, error }))),\n Effect.ignore,\n );\n });\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { BaseError } from '@dxos/errors';\n\n/**\n * Tagged error for cache operations. Construction sites supply `context.operation`\n * (one of `'cache' | 'evict' | 'resolve' | 'list'`) and `context.pluginId` so\n * downstream handlers can route on the failed call without scanning the message.\n */\nexport class PluginAssetCacheError extends BaseError.extend(\n 'PluginAssetCacheError',\n 'Plugin asset cache operation failed',\n) {}\n\n/**\n * Per-platform offline cache for third-party plugin assets.\n *\n * Implementations live alongside their platform glue (composer-app's\n * `asset-cache/{tauri,service-worker}.ts`); the no-op default is for tests\n * and unsupported environments.\n */\nexport interface Cache {\n /**\n * Persist all listed URLs under the namespace of `pluginId`. Idempotent.\n * The order of `urls` is significant — the first entry is treated as the entry module.\n */\n cache(pluginId: string, urls: readonly string[]): Effect.Effect<void, PluginAssetCacheError>;\n\n /**\n * Drop all assets for a plugin (uninstall).\n */\n evict(pluginId: string): Effect.Effect<void, PluginAssetCacheError>;\n\n /**\n * Resolves a plugin asset URL to a platform-specific cached URL when one is available.\n * Returns the original URL when no cached copy exists or the platform serves cached\n * responses transparently (e.g. service worker fetch interception on web).\n */\n resolve(pluginId: string, url: string): Effect.Effect<string, PluginAssetCacheError>;\n\n /**\n * List currently cached plugin ids (diagnostic).\n */\n list(): Effect.Effect<readonly string[], PluginAssetCacheError>;\n}\n\n/**\n * No-op implementation. Used when no platform cache is registered (tests, unsupported environments).\n * Plugins still load — they just have no offline guarantee.\n */\nexport const noop = (): Cache => ({\n cache: () => Effect.void,\n evict: () => Effect.void,\n resolve: (_pluginId, url) => Effect.succeed(url),\n list: () => Effect.succeed([] as readonly string[]),\n});\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as HttpClient from '@effect/platform/HttpClient';\nimport * as HttpClientRequest from '@effect/platform/HttpClientRequest';\nimport * as HttpClientResponse from '@effect/platform/HttpClientResponse';\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { BaseError } from '@dxos/errors';\nimport { PLUGIN_ENTRY_FILENAME } from '@dxos/protocols';\n\n/**\n * Tagged error for manifest fetch / parse failures. Construction sites set\n * `context.manifestUrl` and `context.reason` (one of `'fetch-failed' |\n * 'http-error' | 'parse-failed' | 'invalid'`) so handlers can route on the\n * specific failure mode.\n */\nexport class PluginManifestError extends BaseError.extend('PluginManifestError', 'Plugin manifest is invalid') {}\n\n/**\n * Schema for a third-party plugin manifest.\n *\n * The manifest is published as a sibling of the plugin's entry module\n * ({@link PLUGIN_ENTRY_FILENAME}) and advertises every file the plugin needs at\n * runtime so the host can eagerly cache them for offline use.\n */\nexport const Manifest = Schema.Struct({\n id: Schema.String,\n name: Schema.String,\n version: Schema.String,\n assets: Schema.Array(Schema.String),\n});\n\nexport type Manifest = Schema.Schema.Type<typeof Manifest>;\n\n/**\n * Resolved manifest with all asset paths converted to absolute URLs.\n */\nexport type ResolvedManifest = {\n id: string;\n name: string;\n version: string;\n entryUrl: string;\n assetUrls: readonly string[];\n};\n\n/**\n * Resolves a parsed manifest's relative asset paths against the manifest's URL.\n */\nconst resolve = (manifestUrl: string, manifest: Manifest): ResolvedManifest => ({\n id: manifest.id,\n name: manifest.name,\n version: manifest.version,\n entryUrl: new URL(PLUGIN_ENTRY_FILENAME, manifestUrl).toString(),\n assetUrls: manifest.assets.map((asset) => new URL(asset, manifestUrl).toString()),\n});\n\n/**\n * Synchronous decode + validate + resolve for an in-memory manifest payload. Used\n * by tests and tooling that have the manifest body already loaded; the runtime\n * path goes through {@link fetchManifest}.\n */\nexport const parse = (manifestUrl: string, payload: unknown): ResolvedManifest => {\n const manifest = Schema.decodeUnknownSync(Manifest)(payload);\n if (!manifest.assets.includes(PLUGIN_ENTRY_FILENAME)) {\n throw new Error(`Manifest at ${manifestUrl} does not list ${PLUGIN_ENTRY_FILENAME} in assets.`);\n }\n return resolve(manifestUrl, manifest);\n};\n\n/**\n * Fetches and parses a manifest from the given URL via Effect's HTTP client and\n * Schema-driven JSON decoding. All failure modes surface as a single tagged\n * {@link PluginManifestError}; callers route on `error.context.reason`.\n */\nexport const fetchManifest = (manifestUrl: string): Effect.Effect<ResolvedManifest, PluginManifestError> =>\n Effect.gen(function* () {\n const response = yield* HttpClientRequest.get(manifestUrl).pipe(\n HttpClient.execute,\n Effect.mapError((cause) => new PluginManifestError({ context: { manifestUrl, reason: 'fetch-failed' }, cause })),\n );\n if (response.status >= 400) {\n return yield* Effect.fail(\n new PluginManifestError({ context: { manifestUrl, reason: 'http-error', status: response.status } }),\n );\n }\n const manifest = yield* HttpClientResponse.schemaBodyJson(Manifest)(response).pipe(\n Effect.mapError((cause) => new PluginManifestError({ context: { manifestUrl, reason: 'parse-failed' }, cause })),\n );\n if (!manifest.assets.includes(PLUGIN_ENTRY_FILENAME)) {\n return yield* Effect.fail(\n new PluginManifestError({\n context: { manifestUrl, reason: 'invalid' },\n cause: `assets does not include ${PLUGIN_ENTRY_FILENAME}`,\n }),\n );\n }\n return resolve(manifestUrl, manifest);\n }).pipe(Effect.scoped, Effect.provide(FetchHttpClient.layer));\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Option", "BaseError", "log", "Effect", "BaseError", "PluginAssetCacheError", "extend", "noop", "cache", "void", "evict", "resolve", "_pluginId", "url", "succeed", "list", "FetchHttpClient", "HttpClient", "HttpClientRequest", "HttpClientResponse", "Effect", "Schema", "BaseError", "PLUGIN_ENTRY_FILENAME", "PluginManifestError", "extend", "Manifest", "Struct", "id", "String", "name", "version", "assets", "Array", "resolve", "manifestUrl", "manifest", "entryUrl", "URL", "toString", "assetUrls", "map", "asset", "parse", "payload", "decodeUnknownSync", "includes", "Error", "fetchManifest", "gen", "response", "get", "pipe", "execute", "mapError", "cause", "context", "reason", "status", "fail", "schemaBodyJson", "scoped", "provide", "layer", "DEFAULT_KEY", "defaultStorage", "BaseError", "value", "localStorage", "getPersistedRemotePlugins", "storage", "key", "get", "parsed", "entries", "error", "log", "entry", "pluginId", "url", "URL", "hostname", "locator", "options", "normalizePluginExport", "mod", "exported", "Plugin", "result", "resolved", "resolve", "manifest", "document", "querySelector", "link", "href", "dataset", "head", "loadFromManifest", "manifestUrl", "context", "reason", "cause", "assetUrls", "wrapCacheError", "cache", "entryUrl", "Effect", "tryPromise", "try", "catch", "RemotePluginLoadError", "plugin", "metaId", "manifestId", "PluginAssetCache", "noop", "length", "info", "results", "concurrency", "flatMap", "onSome", "gen", "builtin", "duplicate", "id", "persistRemotePlugin", "removePersistedRemotePlugin", "querySelectorAll", "evict", "pipe", "sync", "warn"]
7
+ }