@dxos/app-framework 0.10.0 → 0.11.1

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 (294) hide show
  1. package/.storybook/main.mts +1 -1
  2. package/.storybook/preview.mts +2 -2
  3. package/CHANGELOG.md +120 -0
  4. package/TASKS.md +11 -0
  5. package/dist/lib/chunk-SurfaceManager.mjs +960 -0
  6. package/dist/lib/chunk-SurfaceManager.mjs.map +1 -0
  7. package/dist/lib/chunk-capability.mjs +15 -0
  8. package/dist/lib/chunk-capability.mjs.map +1 -0
  9. package/dist/lib/{browser/chunk-FJ4765WW.mjs → chunk-context.mjs} +4 -5
  10. package/dist/lib/chunk-context.mjs.map +1 -0
  11. package/dist/lib/chunk-history-tracker.mjs +160 -0
  12. package/dist/lib/chunk-history-tracker.mjs.map +1 -0
  13. package/dist/lib/chunk-plugin-manager.mjs +1390 -0
  14. package/dist/lib/chunk-plugin-manager.mjs.map +1 -0
  15. package/dist/lib/chunk-plugin-manifest.mjs +125 -0
  16. package/dist/lib/chunk-plugin-manifest.mjs.map +1 -0
  17. package/dist/lib/chunk-process-manager-capability.mjs +126 -0
  18. package/dist/lib/chunk-process-manager-capability.mjs.map +1 -0
  19. package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
  20. package/dist/lib/chunk-url-loader.mjs +347 -0
  21. package/dist/lib/chunk-url-loader.mjs.map +1 -0
  22. package/dist/lib/cli.mjs +78 -0
  23. package/dist/lib/cli.mjs.map +1 -0
  24. package/dist/lib/common/activation-events.mjs +35 -0
  25. package/dist/lib/common/activation-events.mjs.map +1 -0
  26. package/dist/lib/common/capabilities.mjs +184 -0
  27. package/dist/lib/common/capabilities.mjs.map +1 -0
  28. package/dist/lib/config.mjs +2 -0
  29. package/dist/lib/core/activation-event.mjs +55 -0
  30. package/dist/lib/core/activation-event.mjs.map +1 -0
  31. package/dist/lib/core/capability.mjs +189 -0
  32. package/dist/lib/core/capability.mjs.map +1 -0
  33. package/dist/lib/core/plugin-manager.mjs +2 -0
  34. package/dist/lib/core/plugin.mjs +340 -0
  35. package/dist/lib/core/plugin.mjs.map +1 -0
  36. package/dist/lib/core/url-loader.mjs +2 -0
  37. package/dist/lib/index.mjs +134 -0
  38. package/dist/lib/index.mjs.map +1 -0
  39. package/dist/lib/testing/react.mjs +70 -0
  40. package/dist/lib/testing/react.mjs.map +1 -0
  41. package/dist/lib/testing.mjs +399 -0
  42. package/dist/lib/testing.mjs.map +1 -0
  43. package/dist/lib/ui.mjs +636 -0
  44. package/dist/lib/ui.mjs.map +1 -0
  45. package/dist/lib/vite-plugin.mjs +986 -0
  46. package/dist/lib/vite-plugin.mjs.map +1 -0
  47. package/dist/plugin/node-esm/index.mjs +4 -3
  48. package/dist/plugin/node-esm/index.mjs.map +3 -3
  49. package/dist/plugin/node-esm/meta.json +1 -1
  50. package/dist/types/src/common/Role.d.ts +31 -0
  51. package/dist/types/src/common/Role.d.ts.map +1 -0
  52. package/dist/types/src/common/Role.test.d.ts +2 -0
  53. package/dist/types/src/common/Role.test.d.ts.map +1 -0
  54. package/dist/types/src/common/capabilities.d.ts +11 -2
  55. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  56. package/dist/types/src/common/index.d.ts +1 -0
  57. package/dist/types/src/common/index.d.ts.map +1 -1
  58. package/dist/types/src/core/capability-manager.d.ts +1 -1
  59. package/dist/types/src/core/capability-manager.d.ts.map +1 -1
  60. package/dist/types/src/core/capability.d.ts +38 -5
  61. package/dist/types/src/core/capability.d.ts.map +1 -1
  62. package/dist/types/src/core/plugin-manager.d.ts +1 -1
  63. package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
  64. package/dist/types/src/core/plugin.d.ts +14 -1
  65. package/dist/types/src/core/plugin.d.ts.map +1 -1
  66. package/dist/types/src/core/registry.d.ts +1 -1
  67. package/dist/types/src/core/registry.d.ts.map +1 -1
  68. package/dist/types/src/plugin-process-manager/history/capability.d.ts +1 -1
  69. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts +1 -1
  70. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts.map +1 -1
  71. package/dist/types/src/testing/StorybookErrorFallback.d.ts +15 -0
  72. package/dist/types/src/testing/StorybookErrorFallback.d.ts.map +1 -0
  73. package/dist/types/src/testing/harness.d.ts +1 -1
  74. package/dist/types/src/testing/harness.d.ts.map +1 -1
  75. package/dist/types/src/testing/index.d.ts +2 -0
  76. package/dist/types/src/testing/index.d.ts.map +1 -1
  77. package/dist/types/src/testing/react.d.ts +4 -4
  78. package/dist/types/src/testing/react.d.ts.map +1 -1
  79. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  80. package/dist/types/src/testing/withPluginManager.stories.d.ts +6 -0
  81. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  82. package/dist/types/src/testing/withSurfaceDebug.d.ts +10 -0
  83. package/dist/types/src/testing/withSurfaceDebug.d.ts.map +1 -0
  84. package/dist/types/src/ui/components/App/App.d.ts +0 -32
  85. package/dist/types/src/ui/components/App/App.d.ts.map +1 -1
  86. package/dist/types/src/ui/components/App/index.d.ts +1 -0
  87. package/dist/types/src/ui/components/App/index.d.ts.map +1 -1
  88. package/dist/types/src/ui/components/App/loader.d.ts +35 -0
  89. package/dist/types/src/ui/components/App/loader.d.ts.map +1 -0
  90. package/dist/types/src/ui/components/HomeSection/HomeSection.d.ts +26 -0
  91. package/dist/types/src/ui/components/HomeSection/HomeSection.d.ts.map +1 -0
  92. package/dist/types/src/ui/components/HomeSection/HomeSection.stories.d.ts +15 -0
  93. package/dist/types/src/ui/components/HomeSection/HomeSection.stories.d.ts.map +1 -0
  94. package/dist/types/src/ui/components/HomeSection/index.d.ts +2 -0
  95. package/dist/types/src/ui/components/HomeSection/index.d.ts.map +1 -0
  96. package/dist/types/src/ui/components/NamePopover/NamePopover.d.ts +14 -0
  97. package/dist/types/src/ui/components/NamePopover/NamePopover.d.ts.map +1 -0
  98. package/dist/types/src/ui/components/NamePopover/index.d.ts +2 -0
  99. package/dist/types/src/ui/components/NamePopover/index.d.ts.map +1 -0
  100. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +21 -9
  101. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -1
  102. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts +4 -1
  103. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -1
  104. package/dist/types/src/ui/components/Surface/SurfaceComponent.test.d.ts +2 -0
  105. package/dist/types/src/ui/components/Surface/SurfaceComponent.test.d.ts.map +1 -0
  106. package/dist/types/src/ui/components/Surface/SurfaceDebug.d.ts +40 -0
  107. package/dist/types/src/ui/components/Surface/SurfaceDebug.d.ts.map +1 -0
  108. package/dist/types/src/ui/components/Surface/SurfaceManager.d.ts +23 -0
  109. package/dist/types/src/ui/components/Surface/SurfaceManager.d.ts.map +1 -0
  110. package/dist/types/src/ui/components/Surface/SurfaceManagerContext.d.ts +11 -0
  111. package/dist/types/src/ui/components/Surface/SurfaceManagerContext.d.ts.map +1 -0
  112. package/dist/types/src/ui/components/Surface/SurfaceMetrics.d.ts +72 -0
  113. package/dist/types/src/ui/components/Surface/SurfaceMetrics.d.ts.map +1 -0
  114. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -1
  115. package/dist/types/src/ui/components/Surface/index.d.ts +20 -25
  116. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -1
  117. package/dist/types/src/ui/components/Surface/types.d.ts +56 -52
  118. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -1
  119. package/dist/types/src/ui/components/index.d.ts +2 -0
  120. package/dist/types/src/ui/components/index.d.ts.map +1 -1
  121. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -1
  122. package/dist/types/tsconfig.tsbuildinfo +1 -1
  123. package/moon.yml +25 -18
  124. package/package.json +58 -73
  125. package/src/common/Role.test.ts +41 -0
  126. package/src/common/Role.ts +54 -0
  127. package/src/common/capabilities.ts +17 -2
  128. package/src/common/index.ts +1 -0
  129. package/src/core/capability-manager.test.ts +1 -1
  130. package/src/core/capability-manager.ts +1 -1
  131. package/src/core/capability.ts +45 -6
  132. package/src/core/plugin-manager.test.ts +38 -3
  133. package/src/core/plugin-manager.ts +18 -1
  134. package/src/core/plugin.ts +16 -1
  135. package/src/core/registry.ts +1 -1
  136. package/src/plugin-process-manager/process-manager-capability.ts +25 -2
  137. package/src/testing/StorybookErrorFallback.tsx +40 -0
  138. package/src/testing/harness.ts +1 -1
  139. package/src/testing/index.ts +2 -0
  140. package/src/testing/react.test.tsx +2 -1
  141. package/src/testing/react.tsx +14 -8
  142. package/src/testing/withPluginManager.stories.tsx +16 -1
  143. package/src/testing/withPluginManager.tsx +13 -2
  144. package/src/testing/withSurfaceDebug.tsx +22 -0
  145. package/src/ui/components/App/App.tsx +7 -35
  146. package/src/ui/components/App/index.ts +1 -0
  147. package/src/ui/components/App/loader.ts +39 -0
  148. package/src/ui/components/HomeSection/HomeSection.stories.tsx +43 -0
  149. package/src/ui/components/HomeSection/HomeSection.tsx +69 -0
  150. package/src/ui/components/HomeSection/index.ts +5 -0
  151. package/src/ui/components/NamePopover/NamePopover.tsx +70 -0
  152. package/src/ui/components/NamePopover/index.ts +5 -0
  153. package/src/ui/components/Surface/DESIGN.md +136 -0
  154. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +70 -41
  155. package/src/ui/components/Surface/SurfaceComponent.test.tsx +403 -0
  156. package/src/ui/components/Surface/SurfaceComponent.tsx +209 -189
  157. package/src/ui/components/Surface/SurfaceDebug.tsx +435 -0
  158. package/src/ui/components/Surface/SurfaceManager.ts +95 -0
  159. package/src/ui/components/Surface/SurfaceManagerContext.ts +23 -0
  160. package/src/ui/components/Surface/SurfaceMetrics.ts +202 -0
  161. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +12 -2
  162. package/src/ui/components/Surface/index.ts +24 -22
  163. package/src/ui/components/Surface/types.test.ts +47 -54
  164. package/src/ui/components/Surface/types.ts +66 -91
  165. package/src/ui/components/index.ts +2 -0
  166. package/src/ui/hooks/useApp.tsx +7 -3
  167. package/src/vite-plugin/boot-loader/loader-app/boot-loader.css +1 -1
  168. package/tsconfig.json +3 -0
  169. package/vite.config.ts +26 -0
  170. package/dist/lib/browser/capability-S44TE2H7.mjs +0 -35
  171. package/dist/lib/browser/capability-S44TE2H7.mjs.map +0 -7
  172. package/dist/lib/browser/chunk-3NQLTQCP.mjs +0 -47
  173. package/dist/lib/browser/chunk-3NQLTQCP.mjs.map +0 -7
  174. package/dist/lib/browser/chunk-53HJHMS5.mjs +0 -7
  175. package/dist/lib/browser/chunk-53HJHMS5.mjs.map +0 -7
  176. package/dist/lib/browser/chunk-FJ4765WW.mjs.map +0 -7
  177. package/dist/lib/browser/chunk-J5LGTIGS.mjs +0 -10
  178. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +0 -7
  179. package/dist/lib/browser/chunk-KRJ4KK2W.mjs +0 -505
  180. package/dist/lib/browser/chunk-KRJ4KK2W.mjs.map +0 -7
  181. package/dist/lib/browser/chunk-LUH4Y5F2.mjs +0 -430
  182. package/dist/lib/browser/chunk-LUH4Y5F2.mjs.map +0 -7
  183. package/dist/lib/browser/chunk-NKVRSMFN.mjs +0 -95
  184. package/dist/lib/browser/chunk-NKVRSMFN.mjs.map +0 -7
  185. package/dist/lib/browser/chunk-OO53M5UK.mjs +0 -260
  186. package/dist/lib/browser/chunk-OO53M5UK.mjs.map +0 -7
  187. package/dist/lib/browser/chunk-OPTS3ZSN.mjs +0 -83
  188. package/dist/lib/browser/chunk-OPTS3ZSN.mjs.map +0 -7
  189. package/dist/lib/browser/chunk-Q2GLJTVV.mjs +0 -12
  190. package/dist/lib/browser/chunk-Q2GLJTVV.mjs.map +0 -7
  191. package/dist/lib/browser/chunk-SYXIYT6T.mjs +0 -143
  192. package/dist/lib/browser/chunk-SYXIYT6T.mjs.map +0 -7
  193. package/dist/lib/browser/chunk-U5MESPM5.mjs +0 -603
  194. package/dist/lib/browser/chunk-U5MESPM5.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-UGYCLOXE.mjs +0 -1471
  196. package/dist/lib/browser/chunk-UGYCLOXE.mjs.map +0 -7
  197. package/dist/lib/browser/chunk-VF37YTXJ.mjs +0 -28
  198. package/dist/lib/browser/chunk-VF37YTXJ.mjs.map +0 -7
  199. package/dist/lib/browser/chunk-YUVQIOTB.mjs +0 -60
  200. package/dist/lib/browser/chunk-YUVQIOTB.mjs.map +0 -7
  201. package/dist/lib/browser/cli/index.mjs +0 -74
  202. package/dist/lib/browser/cli/index.mjs.map +0 -7
  203. package/dist/lib/browser/common/activation-events.mjs +0 -20
  204. package/dist/lib/browser/common/activation-events.mjs.map +0 -7
  205. package/dist/lib/browser/common/capabilities.mjs +0 -56
  206. package/dist/lib/browser/common/capabilities.mjs.map +0 -7
  207. package/dist/lib/browser/config/index.mjs +0 -8
  208. package/dist/lib/browser/config/index.mjs.map +0 -7
  209. package/dist/lib/browser/core/activation-event.mjs +0 -20
  210. package/dist/lib/browser/core/activation-event.mjs.map +0 -7
  211. package/dist/lib/browser/core/capability.mjs +0 -32
  212. package/dist/lib/browser/core/capability.mjs.map +0 -7
  213. package/dist/lib/browser/core/plugin-manager.mjs +0 -19
  214. package/dist/lib/browser/core/plugin-manager.mjs.map +0 -7
  215. package/dist/lib/browser/core/plugin.mjs +0 -51
  216. package/dist/lib/browser/core/plugin.mjs.map +0 -7
  217. package/dist/lib/browser/core/url-loader.mjs +0 -24
  218. package/dist/lib/browser/core/url-loader.mjs.map +0 -7
  219. package/dist/lib/browser/index.mjs +0 -98
  220. package/dist/lib/browser/index.mjs.map +0 -7
  221. package/dist/lib/browser/meta.json +0 -1
  222. package/dist/lib/browser/process-manager-capability-QK4BMKMN.mjs +0 -132
  223. package/dist/lib/browser/process-manager-capability-QK4BMKMN.mjs.map +0 -7
  224. package/dist/lib/browser/testing/index.mjs +0 -359
  225. package/dist/lib/browser/testing/index.mjs.map +0 -7
  226. package/dist/lib/browser/testing/react.mjs +0 -78
  227. package/dist/lib/browser/testing/react.mjs.map +0 -7
  228. package/dist/lib/browser/ui/index.mjs +0 -60
  229. package/dist/lib/browser/ui/index.mjs.map +0 -7
  230. package/dist/lib/node-esm/capability-3YRF77LV.mjs +0 -36
  231. package/dist/lib/node-esm/capability-3YRF77LV.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-2UPUZXGU.mjs +0 -9
  233. package/dist/lib/node-esm/chunk-2UPUZXGU.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs +0 -10
  235. package/dist/lib/node-esm/chunk-37Z53PXZ.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-4SE7SX7N.mjs +0 -261
  237. package/dist/lib/node-esm/chunk-4SE7SX7N.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-BMW6P6QA.mjs +0 -48
  239. package/dist/lib/node-esm/chunk-BMW6P6QA.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-COHOWGGJ.mjs +0 -144
  241. package/dist/lib/node-esm/chunk-COHOWGGJ.mjs.map +0 -7
  242. package/dist/lib/node-esm/chunk-DRT75WGD.mjs +0 -604
  243. package/dist/lib/node-esm/chunk-DRT75WGD.mjs.map +0 -7
  244. package/dist/lib/node-esm/chunk-FKMVORZN.mjs +0 -431
  245. package/dist/lib/node-esm/chunk-FKMVORZN.mjs.map +0 -7
  246. package/dist/lib/node-esm/chunk-FPW45EZH.mjs +0 -14
  247. package/dist/lib/node-esm/chunk-FPW45EZH.mjs.map +0 -7
  248. package/dist/lib/node-esm/chunk-GLH4LGHZ.mjs +0 -84
  249. package/dist/lib/node-esm/chunk-GLH4LGHZ.mjs.map +0 -7
  250. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  251. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  252. package/dist/lib/node-esm/chunk-IL7O7IRX.mjs +0 -1472
  253. package/dist/lib/node-esm/chunk-IL7O7IRX.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-ND2HETHD.mjs +0 -506
  255. package/dist/lib/node-esm/chunk-ND2HETHD.mjs.map +0 -7
  256. package/dist/lib/node-esm/chunk-TLKYZKPW.mjs +0 -29
  257. package/dist/lib/node-esm/chunk-TLKYZKPW.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-VCPGX7WN.mjs +0 -62
  259. package/dist/lib/node-esm/chunk-VCPGX7WN.mjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-XSZMX53L.mjs +0 -96
  261. package/dist/lib/node-esm/chunk-XSZMX53L.mjs.map +0 -7
  262. package/dist/lib/node-esm/cli/index.mjs +0 -75
  263. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  264. package/dist/lib/node-esm/common/activation-events.mjs +0 -21
  265. package/dist/lib/node-esm/common/activation-events.mjs.map +0 -7
  266. package/dist/lib/node-esm/common/capabilities.mjs +0 -57
  267. package/dist/lib/node-esm/common/capabilities.mjs.map +0 -7
  268. package/dist/lib/node-esm/config/index.mjs +0 -9
  269. package/dist/lib/node-esm/config/index.mjs.map +0 -7
  270. package/dist/lib/node-esm/core/activation-event.mjs +0 -21
  271. package/dist/lib/node-esm/core/activation-event.mjs.map +0 -7
  272. package/dist/lib/node-esm/core/capability.mjs +0 -33
  273. package/dist/lib/node-esm/core/capability.mjs.map +0 -7
  274. package/dist/lib/node-esm/core/plugin-manager.mjs +0 -20
  275. package/dist/lib/node-esm/core/plugin-manager.mjs.map +0 -7
  276. package/dist/lib/node-esm/core/plugin.mjs +0 -52
  277. package/dist/lib/node-esm/core/plugin.mjs.map +0 -7
  278. package/dist/lib/node-esm/core/url-loader.mjs +0 -25
  279. package/dist/lib/node-esm/core/url-loader.mjs.map +0 -7
  280. package/dist/lib/node-esm/index.mjs +0 -99
  281. package/dist/lib/node-esm/index.mjs.map +0 -7
  282. package/dist/lib/node-esm/meta.json +0 -1
  283. package/dist/lib/node-esm/process-manager-capability-5S7WZ2JR.mjs +0 -133
  284. package/dist/lib/node-esm/process-manager-capability-5S7WZ2JR.mjs.map +0 -7
  285. package/dist/lib/node-esm/testing/index.mjs +0 -360
  286. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  287. package/dist/lib/node-esm/testing/react.mjs +0 -79
  288. package/dist/lib/node-esm/testing/react.mjs.map +0 -7
  289. package/dist/lib/node-esm/ui/index.mjs +0 -61
  290. package/dist/lib/node-esm/ui/index.mjs.map +0 -7
  291. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +0 -11
  292. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +0 -1
  293. package/src/ui/components/Surface/SurfaceInfo.tsx +0 -106
  294. package/vitest.config.ts +0 -14
@@ -1,62 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // src/core/edge-registry-plugin-provider.ts
4
- import * as Effect from "effect/Effect";
5
- import { Context } from "@dxos/context";
6
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/core/edge-registry-plugin-provider.ts";
7
- var toRegistryPlugin = (entry) => {
8
- if (!entry.releases?.length) {
9
- return null;
10
- }
11
- const latestRelease = entry.releases.find((release) => release.version === entry.latestVersion) ?? entry.releases[0];
12
- return {
13
- profile: {
14
- ...entry.profile,
15
- // Provenance: the verified publisher is the author (handle preferred, DID fallback).
16
- author: entry.handle ?? entry.did
17
- },
18
- release: latestRelease
19
- };
20
- };
21
- var EdgeRegistryPluginProvider = class {
22
- _client;
23
- // Cached on first load so getPlugin/listVersions can resolve without re-fetching.
24
- #cachedPlugins = [];
25
- #cachedEntries = [];
26
- constructor(_client) {
27
- this._client = _client;
28
- }
29
- listPlugins() {
30
- return Effect.tryPromise({
31
- try: () => this._client.getRegistryPlugins(Context.default(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 48 })),
32
- catch: (error) => error instanceof Error ? error : new Error(String(error))
33
- }).pipe(Effect.map((body) => {
34
- this.#cachedEntries = body.plugins;
35
- const plugins = body.plugins.map(toRegistryPlugin).filter((entry) => entry !== null);
36
- this.#cachedPlugins = plugins;
37
- return plugins;
38
- }));
39
- }
40
- listVersions(id) {
41
- const entry = this.#cachedEntries.find((candidate) => candidate.profile.key === id);
42
- if (!entry) {
43
- return Effect.fail(new Error(`Plugin not found in catalog: ${id}`));
44
- }
45
- return Effect.succeed(entry.releases);
46
- }
47
- getPlugin(id, version) {
48
- const plugin = this.#cachedPlugins.find((candidate) => candidate.profile.key === id);
49
- if (!plugin) {
50
- return Effect.fail(new Error(`Plugin not found in catalog: ${id}`));
51
- }
52
- if (version && version !== plugin.release?.version) {
53
- return Effect.fail(new Error(`Version ${version} not available for ${id}; only ${plugin.release?.version} is cached`));
54
- }
55
- return Effect.succeed(plugin);
56
- }
57
- };
58
-
59
- export {
60
- EdgeRegistryPluginProvider
61
- };
62
- //# sourceMappingURL=chunk-VCPGX7WN.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/core/edge-registry-plugin-provider.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Context } from '@dxos/context';\nimport { type EdgeHttpClient } from '@dxos/edge-client';\nimport { type PluginView } from '@dxos/protocols';\n\nimport type * as Plugin from './plugin';\nimport * as Registry from './registry';\n\n/**\n * Maps a wire-format `PluginView` (from `@dxos/protocols`) to a runtime `Plugin.Meta`: the nested\n * `profile` (the view's profile plus the resolved provenance `author`) and the latest `release`.\n *\n * This is the one translation seam between the nested wire view and the resolved runtime manifest.\n * `profile.key` is the composer plugin id — a valid NSID — so `DXN.make(profile.key, release.version)`\n * reconstructs the canonical plugin DXN.\n */\nconst toRegistryPlugin = (entry: PluginView): Plugin.Meta | null => {\n if (!entry.releases?.length) {\n return null;\n }\n const latestRelease = entry.releases.find((release) => release.version === entry.latestVersion) ?? entry.releases[0];\n return {\n profile: {\n ...entry.profile,\n // Provenance: the verified publisher is the author (handle preferred, DID fallback).\n author: entry.handle ?? entry.did,\n },\n release: latestRelease,\n };\n};\n\n/**\n * Implements `Registry.PluginProvider` against the Edge `/registry` HTTP endpoints.\n *\n * Lives in app-framework (rather than the more obvious home of `@dxos/edge-client`)\n * because edge-client doesn't depend on app-framework; siting the implementation\n * here keeps the dependency arrow `app-framework → edge-client` and avoids a\n * cycle. The class needs only the public `EdgeHttpClient` type, so a one-way\n * type-import is enough.\n *\n * `listVersions` is served directly from the `releases` array inlined on each\n * entry — no separate endpoint is needed.\n */\nexport class EdgeRegistryPluginProvider implements Registry.PluginProvider {\n // Cached on first load so getPlugin/listVersions can resolve without re-fetching.\n #cachedPlugins: readonly Plugin.Meta[] = [];\n #cachedEntries: readonly PluginView[] = [];\n\n constructor(private readonly _client: EdgeHttpClient) {}\n\n listPlugins(): Effect.Effect<readonly Plugin.Meta[], Error> {\n return Effect.tryPromise({\n try: () => this._client.getRegistryPlugins(Context.default()),\n catch: (error) => (error instanceof Error ? error : new Error(String(error))),\n }).pipe(\n Effect.map((body) => {\n this.#cachedEntries = body.plugins;\n const plugins = body.plugins.map(toRegistryPlugin).filter((entry): entry is Plugin.Meta => entry !== null);\n this.#cachedPlugins = plugins;\n return plugins;\n }),\n );\n }\n\n listVersions(id: string): Effect.Effect<readonly Plugin.Release[], Error> {\n const entry = this.#cachedEntries.find((candidate) => candidate.profile.key === id);\n if (!entry) {\n return Effect.fail(new Error(`Plugin not found in catalog: ${id}`));\n }\n // Releases are already `PluginRelease`-shaped on the wire view; serve them directly.\n return Effect.succeed(entry.releases);\n }\n\n getPlugin(id: string, version?: string): Effect.Effect<Plugin.Meta, Error> {\n const plugin = this.#cachedPlugins.find((candidate) => candidate.profile.key === id);\n if (!plugin) {\n return Effect.fail(new Error(`Plugin not found in catalog: ${id}`));\n }\n if (version && version !== plugin.release?.version) {\n return Effect.fail(\n new Error(`Version ${version} not available for ${id}; only ${plugin.release?.version} is cached`),\n );\n }\n return Effect.succeed(plugin);\n }\n}\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,eAAe;AAOxB,IAAA,eAAA;IAUI,mBAAO,CAAA,UAAA;AACT,MAAA,CAAA,MAAA,UAAA,QAAA;AACA,WAAMC;EACN;QACEC,gBAAS,MAAA,SAAA,KAAA,CAAA,YAAA,QAAA,YAAA,MAAA,aAAA,KAAA,MAAA,SAAA,CAAA;;aAEP;MACAC,GAAAA,MAAQC;;MAEVC,QAASJ,MAAAA,UAAAA,MAAAA;IACX;IACF,SAAA;EAEA;;AAaE,IAAA,6BAAA,MAAA;EACA;;EAGA,iBAA6BK,CAAAA;mBAAAA,CAAAA;EAA0B,YAAA,SAAA;AAEvDC,SAAAA,UAA4D;;gBAEnD;WACGC,kBAAWA;MAClBC,KACDV,MAAAA,KAAU,QAAEW,mBAAAA,QAAAA,QAAAA,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,cAAAA,GAAAA,GAAAA,CAAAA,CAAAA;MACV,OAAK,CAAA,UAAA,iBAAsBC,QAAO,QAAA,IAAA,MAAA,OAAA,KAAA,CAAA;YAC5BA,WAAAA,CAAUD,SAAKC;AACrB,WAAK,iBAAiBA,KAAAA;AACtB,YAAA,UAAOA,KAAAA,QAAAA,IAAAA,gBAAAA,EAAAA,OAAAA,CAAAA,UAAAA,UAAAA,IAAAA;AACT,WAAA,iBAAA;AAEJ,aAAA;IAEAC,CAAAA,CAAAA;;eAEOR,IAAO;UACV,QAAOL,KAAOc,eAAgB,KAAA,CAAA,cAAA,UAAA,QAAmC,QAAA,EAAA;AACnE,QAAA,CAAA,OAAA;AACA,aAAA,YAAA,IAAA,MAAA,gCAAA,EAAA,EAAA,CAAA;IACA;AAGFC,WAAsBC,eAAqD,MAAA,QAAA;;YAEpEC,IAAAA,SAAQ;UACX,SAAOjB,KAAOc,eAAgB,KAAA,CAAA,cAAA,UAA6B,QAAM,QAAA,EAAA;AACnE,QAAA,CAAA,QAAA;AACIE,aAAWA,YAAAA,IAAYC,MAAAA,gCAAyB,EAAA,EAAA,CAAA;;AAIpD,QAAA,WAAA,YAAA,OAAA,SAAA,SAAA;AACA,aAAcC,YAAQD,IAAAA,MAAAA,WAAAA,OAAAA,sBAAAA,EAAAA,UAAAA,OAAAA,SAAAA,OAAAA,YAAAA,CAAAA;IACxB;AACF,WAAA,eAAA,MAAA;;;",
6
- "names": ["Effect", "Context", "latestRelease", "profile", "author", "entry", "release", "_client", "listPlugins", "error", "pipe", "body", "plugins", "listVersions", "fail", "getPlugin", "version", "plugin", "succeed"]
7
- }
@@ -1,96 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- capability_exports
4
- } from "./chunk-GLH4LGHZ.mjs";
5
- import {
6
- __export
7
- } from "./chunk-HSLMI22Q.mjs";
8
-
9
- // src/common/capabilities.ts
10
- var capabilities_exports = {};
11
- __export(capabilities_exports, {
12
- AtomRegistry: () => AtomRegistry,
13
- Command: () => Command,
14
- HistoryTracker: () => HistoryTracker,
15
- Layer: () => Layer,
16
- LayerSpec: () => LayerSpec,
17
- ManagedRuntime: () => ManagedRuntime,
18
- Null: () => Null,
19
- OperationHandler: () => OperationHandler,
20
- OperationInvoker: () => OperationInvoker,
21
- PluginManager: () => PluginManager,
22
- ProcessManagerRuntime: () => ProcessManagerRuntime,
23
- ProcessMonitor: () => ProcessMonitor,
24
- ReactContext: () => ReactContext,
25
- ReactRoot: () => ReactRoot,
26
- ReactSurface: () => ReactSurface,
27
- ServiceResolver: () => ServiceResolver,
28
- TraceSink: () => TraceSink,
29
- UndoMapping: () => UndoMapping,
30
- UndoRegistry: () => UndoRegistry,
31
- getAtomValue: () => getAtomValue,
32
- subscribeAtom: () => subscribeAtom,
33
- updateAtomValue: () => updateAtomValue
34
- });
35
- import * as Effect from "effect/Effect";
36
- var Null = capability_exports.make("org.dxos.app-framework.capability.null");
37
- var PluginManager = capability_exports.make("org.dxos.app-framework.capability.pluginManager");
38
- var AtomRegistry = capability_exports.make("org.dxos.app-framework.capability.atomRegistry");
39
- var ReactContext = capability_exports.make("org.dxos.app-framework.capability.reactContext");
40
- var ReactRoot = capability_exports.make("org.dxos.app-framework.capability.reactRoot");
41
- var ReactSurface = capability_exports.make("org.dxos.app-framework.capability.reactSurface");
42
- var Command = capability_exports.make("org.dxos.app-framework.capability.command");
43
- var Layer = capability_exports.make("org.dxos.app-framework.capability.layer");
44
- var LayerSpec = capability_exports.make("org.dxos.app-framework.capability.layerSpec");
45
- var TraceSink = capability_exports.make("org.dxos.app-framework.capability.traceSink");
46
- var ServiceResolver = capability_exports.make("org.dxos.app-framework.capability.serviceResolver");
47
- var ProcessMonitor = capability_exports.make("org.dxos.app-framework.capability.processMonitor");
48
- var ProcessManagerRuntime = capability_exports.make("org.dxos.app-framework.capability.processManagerRuntime");
49
- var ManagedRuntime = capability_exports.make("org.dxos.app-framework.capability.managedRuntime");
50
- var OperationHandler = capability_exports.make("org.dxos.app-framework.capability.operationHandler");
51
- var UndoMapping = capability_exports.make("org.dxos.app-framework.capability.undoMapping");
52
- var OperationInvoker = capability_exports.make("org.dxos.app-framework.capability.operationInvoker");
53
- var UndoRegistry = capability_exports.make("org.dxos.app-framework.capability.undoRegistry");
54
- var HistoryTracker = capability_exports.make("org.dxos.app-framework.capability.historyTracker");
55
- var getAtomValue = (atomCapability) => Effect.gen(function* () {
56
- const registry = yield* capability_exports.get(AtomRegistry);
57
- const atom = yield* capability_exports.get(atomCapability);
58
- return registry.get(atom);
59
- });
60
- var updateAtomValue = (atomCapability, fn) => Effect.gen(function* () {
61
- const registry = yield* capability_exports.get(AtomRegistry);
62
- const atom = yield* capability_exports.get(atomCapability);
63
- registry.set(atom, fn(registry.get(atom)));
64
- });
65
- var subscribeAtom = (atomCapability, callback) => Effect.gen(function* () {
66
- const registry = yield* capability_exports.get(AtomRegistry);
67
- const atom = yield* capability_exports.get(atomCapability);
68
- return registry.subscribe(atom, () => callback(registry.get(atom)));
69
- });
70
-
71
- export {
72
- Null,
73
- PluginManager,
74
- AtomRegistry,
75
- ReactContext,
76
- ReactRoot,
77
- ReactSurface,
78
- Command,
79
- Layer,
80
- LayerSpec,
81
- TraceSink,
82
- ServiceResolver,
83
- ProcessMonitor,
84
- ProcessManagerRuntime,
85
- ManagedRuntime,
86
- OperationHandler,
87
- UndoMapping,
88
- OperationInvoker,
89
- UndoRegistry,
90
- HistoryTracker,
91
- getAtomValue,
92
- updateAtomValue,
93
- subscribeAtom,
94
- capabilities_exports
95
- };
96
- //# sourceMappingURL=chunk-XSZMX53L.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/common/capabilities.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom, type Registry } from '@effect-atom/atom-react';\nimport type * as Command$ from '@effect/cli/Command';\nimport * as Effect from 'effect/Effect';\nimport type * as Exit$ from 'effect/Exit';\nimport type * as Fiber$ from 'effect/Fiber';\nimport type * as Layer$ from 'effect/Layer';\nimport type * as ManagedRuntime$ from 'effect/ManagedRuntime';\nimport type * as Runtime$ from 'effect/Runtime';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport type {\n OperationHandlerSet,\n LayerSpec as LayerSpec$,\n Operation as Operation$,\n Process as Process$,\n ServiceResolver as ServiceResolver$,\n Trace as Trace$,\n} from '@dxos/compute';\nimport type { ProcessManager as ProcessManager$ } from '@dxos/compute-runtime';\nimport { OperationInvoker as OperationInvoker$ } from '@dxos/operation';\n\nimport { Capability as Capability$, Plugin as Plugin$, type PluginManager as PluginManager$ } from '../core';\nimport type {\n HistoryTracker as HistoryTracker$,\n UndoMapping as UndoMapping$,\n UndoRegistry as UndoRegistry$,\n} from '../plugin-process-manager';\nimport type { Surface } from '../ui';\n\n/**\n * Null capability.\n * @category Capability\n */\nexport const Null = Capability$.make<null>('org.dxos.app-framework.capability.null');\n\n/**\n * @category Capability\n */\nexport const PluginManager = Capability$.make<PluginManager$.PluginManager>(\n 'org.dxos.app-framework.capability.pluginManager',\n);\n\n/**\n * @category Capability\n */\nexport const AtomRegistry = Capability$.make<Registry.Registry>('org.dxos.app-framework.capability.atomRegistry');\n\nexport type ReactContext = Readonly<{\n id: string;\n dependsOn?: string[];\n context: FC<PropsWithChildren>;\n}>;\n\n/**\n * @category Capability\n */\nexport const ReactContext = Capability$.make<ReactContext>('org.dxos.app-framework.capability.reactContext');\n\nexport type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;\n\n/**\n * @category Capability\n */\nexport const ReactRoot = Capability$.make<ReactRoot>('org.dxos.app-framework.capability.reactRoot');\n\n/**\n * Surface definitions that can be either React components or Web Components.\n */\nexport type ReactSurface = Surface.Definition | readonly Surface.Definition[];\n\n/**\n * @category Capability\n */\nexport const ReactSurface = Capability$.make<ReactSurface>('org.dxos.app-framework.capability.reactSurface');\n\nexport type AnyCommand = Command$.Command<any, any, any, any>;\n\n/**\n * @category Capability\n */\nexport const Command = Capability$.make<AnyCommand>('org.dxos.app-framework.capability.command');\n\n/**\n * @category Capability\n */\nexport const Layer = Capability$.make<Layer$.Layer<any, any, any>>('org.dxos.app-framework.capability.layer');\n\n/**\n * Layer specification contributed by plugins.\n *\n * Plugins contribute {@link LayerSpec.LayerSpec} entries that are collected by the\n * process-manager module and composed into a {@link LayerStack} which backs the\n * {@link ProcessManagerRuntime}'s service resolver.\n *\n * @category Capability\n */\nexport const LayerSpec = Capability$.make<LayerSpec$.LayerSpec>('org.dxos.app-framework.capability.layerSpec');\n\n/**\n * Context passed to {@link TraceSinkFactory} implementations when the\n * process-manager capability materialises contributed sinks.\n */\nexport interface TraceSinkFactoryContext {\n /**\n * Service resolver backing the shared {@link ProcessManagerRuntime}. Use it\n * to resolve per-space (or per-process) services like `FeedTraceSink` when\n * building a routing sink.\n */\n readonly resolver: ServiceResolver$.ServiceResolver;\n}\n\n/**\n * Factory that builds a {@link Trace$.Sink} when the process-manager\n * capability is ready. Plugins that only need a static sink can ignore the\n * context (e.g. `() => myConsoleSink`); plugins that need per-space routing\n * can use {@link TraceSinkFactoryContext.resolver} to look up services.\n */\nexport type TraceSinkFactory = (ctx: TraceSinkFactoryContext) => Trace$.Sink;\n\n/**\n * Trace sink contribution.\n *\n * Plugins contribute {@link TraceSinkFactory} functions; the process-manager\n * capability invokes each factory with the runtime's\n * {@link ServiceResolver$.ServiceResolver}, collects the resulting\n * {@link Trace$.Sink}s, merges them via {@link Trace$.mergeSinks}, and\n * installs the merged sink as {@link Trace$.TraceSink} in the runtime layer\n * so every process writes to every contributed sink.\n *\n * @category Capability\n */\nexport const TraceSink = Capability$.make<TraceSinkFactory>('org.dxos.app-framework.capability.traceSink');\n\n/**\n * Service resolver backing the shared {@link ProcessManagerRuntime}.\n *\n * Contributed by the process-manager capability module. Consumers can combine\n * it with {@link ServiceResolver$.provide} to build space-scoped layers without\n * having to go through the process-manager runtime:\n *\n * @example\n * ```ts\n * const resolver = yield* Capability.get(Capabilities.ServiceResolver);\n * yield* effect.pipe(\n * Effect.provide(\n * ServiceResolver.provide({ space }, Database.Service).pipe(\n * Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, resolver)),\n * ),\n * ),\n * );\n * ```\n *\n * @category Capability\n */\nexport const ServiceResolver = Capability$.make<ServiceResolver$.ServiceResolver>(\n 'org.dxos.app-framework.capability.serviceResolver',\n);\n\n/**\n * Process monitor backing the shared {@link ProcessManagerRuntime}. Exposes the\n * live process tree (including inactive/terminated entries) via\n * {@link Process$.Monitor#processTreeAtom}.\n *\n * @category Capability\n */\nexport const ProcessMonitor = Capability$.make<Process$.Monitor>('org.dxos.app-framework.capability.processMonitor');\n\n/**\n * Services that are always available when running effects through a {@link ProcessManagerRuntime}.\n */\nexport type ProcessManagerRuntimeServices =\n | Capability$.Service\n | Plugin$.Service\n | ProcessManager$.ProcessManagerService\n | Operation$.Service\n | ProcessManager$.ProcessOperationInvoker.Service\n | ServiceResolver$.ServiceResolver;\n\n/**\n * Runtime that runs effects requiring a fixed set of capability-manager and\n * process-manager services.\n *\n * The shape mirrors {@link ManagedRuntime$.ManagedRuntime} but deliberately does\n * not expose `dispose` – lifecycle is driven by the host plugin manager.\n */\nexport interface ProcessManagerRuntime {\n runPromise<A, E>(\n effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>,\n options?: { readonly signal?: AbortSignal },\n ): Promise<A>;\n runPromiseExit<A, E>(\n effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>,\n options?: { readonly signal?: AbortSignal },\n ): Promise<Exit$.Exit<A, E>>;\n runFork<A, E>(\n effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>,\n options?: Runtime$.RunForkOptions,\n ): Fiber$.RuntimeFiber<A, E>;\n runSync<A, E>(effect: Effect.Effect<A, E, ProcessManagerRuntimeServices>): A;\n}\n\n/**\n * @category Capability\n */\nexport const ProcessManagerRuntime = Capability$.make<ProcessManagerRuntime>(\n 'org.dxos.app-framework.capability.processManagerRuntime',\n);\n\nexport type ManagedRuntime = ManagedRuntime$.ManagedRuntime<any, any>;\n\n/**\n * @category Capability\n */\nexport const ManagedRuntime = Capability$.make<ManagedRuntime>('org.dxos.app-framework.capability.managedRuntime');\n\n//\n// Operation System Capabilities\n//\n\nexport const OperationHandler = Capability$.make<OperationHandlerSet.OperationHandlerSet>(\n 'org.dxos.app-framework.capability.operationHandler',\n);\n\nexport type UndoMapping = UndoMapping$.UndoMapping;\n\n/**\n * Undo mapping registration - contributed by plugins.\n * @category Capability\n */\nexport const UndoMapping = Capability$.make<UndoMapping[]>('org.dxos.app-framework.capability.undoMapping');\n\n/**\n * Operation invoker backed by the process manager. Spawns a process per\n * operation invocation; see {@link ProcessManager$.ProcessOperationInvoker}.\n */\nexport type OperationInvoker = OperationInvoker$.OperationInvoker;\n\n/**\n * Operation invoker - provided by the process-manager capability.\n * @category Capability\n */\nexport const OperationInvoker = Capability$.make<OperationInvoker>(\n 'org.dxos.app-framework.capability.operationInvoker',\n);\n\nexport type UndoRegistry = UndoRegistry$.UndoRegistry;\n\n/**\n * Undo registry - provided by ProcessManagerPlugin.\n * @category Capability\n */\nexport const UndoRegistry = Capability$.make<UndoRegistry>('org.dxos.app-framework.capability.undoRegistry');\n\nexport type HistoryTracker = HistoryTracker$.HistoryTracker;\n\n/**\n * History tracker - provided by ProcessManagerPlugin.\n * @category Capability\n */\nexport const HistoryTracker = Capability$.make<HistoryTracker>('org.dxos.app-framework.capability.historyTracker');\n\n//\n// Atom Capability Helpers\n//\n\n/**\n * Get the current value of an atom capability.\n * @example const settings = yield* Capabilities.getAtomValue(CommentCapabilities.Settings);\n */\nexport const getAtomValue = <T>(\n atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,\n): Effect.Effect<T, Error, Capability$.Service> =>\n Effect.gen(function* () {\n const registry = yield* Capability$.get(AtomRegistry);\n const atom = yield* Capability$.get(atomCapability);\n return registry.get(atom);\n });\n\n/**\n * Update an atom capability value (requires writable atom).\n * @example yield* Capabilities.updateAtomValue(CommentCapabilities.Settings, (s) => ({ ...s, foo: true }));\n */\nexport const updateAtomValue = <T>(\n atomCapability: Capability$.InterfaceDef<Atom.Writable<T>>,\n fn: (current: T) => T,\n): Effect.Effect<void, Error, Capability$.Service> =>\n Effect.gen(function* () {\n const registry = yield* Capability$.get(AtomRegistry);\n const atom = yield* Capability$.get(atomCapability);\n registry.set(atom, fn(registry.get(atom)));\n });\n\n/**\n * Subscribe to an atom capability.\n * @example const unsubscribe = yield* Capabilities.subscribeAtom(CommentCapabilities.Settings, (value) => ...);\n */\nexport const subscribeAtom = <T>(\n atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,\n callback: (value: T) => void,\n): Effect.Effect<() => void, Error, Capability$.Service> =>\n Effect.gen(function* () {\n const registry = yield* Capability$.get(AtomRegistry);\n const atom = yield* Capability$.get(atomCapability);\n return registry.subscribe(atom, () => callback(registry.get(atom)));\n });\n"],
5
- "mappings": ";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,YAAYA,YAAY;AA+BjB,IAAMC,OAAOC,mBAAYC,KAAW,wCAAA;AAKpC,IAAMC,gBAAgBF,mBAAYC,KACvC,iDAAA;AAMK,IAAME,eAAeH,mBAAYC,KAAwB,gDAAA;AAWzD,IAAMG,eAAeJ,mBAAYC,KAAmB,gDAAA;AAOpD,IAAMI,YAAYL,mBAAYC,KAAgB,6CAAA;AAU9C,IAAMK,eAAeN,mBAAYC,KAAmB,gDAAA;AAOpD,IAAMM,UAAUP,mBAAYC,KAAiB,2CAAA;AAK7C,IAAMO,QAAQR,mBAAYC,KAAkC,yCAAA;AAW5D,IAAMQ,YAAYT,mBAAYC,KAA2B,6CAAA;AAmCzD,IAAMS,YAAYV,mBAAYC,KAAuB,6CAAA;AAuBrD,IAAMU,kBAAkBX,mBAAYC,KACzC,mDAAA;AAUK,IAAMW,iBAAiBZ,mBAAYC,KAAuB,kDAAA;AAuC1D,IAAMY,wBAAwBb,mBAAYC,KAC/C,yDAAA;AAQK,IAAMa,iBAAiBd,mBAAYC,KAAqB,kDAAA;AAMxD,IAAMc,mBAAmBf,mBAAYC,KAC1C,oDAAA;AASK,IAAMe,cAAchB,mBAAYC,KAAoB,+CAAA;AAYpD,IAAMgB,mBAAmBjB,mBAAYC,KAC1C,oDAAA;AASK,IAAMiB,eAAelB,mBAAYC,KAAmB,gDAAA;AAQpD,IAAMkB,iBAAiBnB,mBAAYC,KAAqB,kDAAA;AAUxD,IAAMmB,eAAe,CAC1BC,mBAEOC,WAAI,aAAA;AACT,QAAMC,WAAW,OAAOvB,mBAAYwB,IAAIrB,YAAAA;AACxC,QAAMsB,OAAO,OAAOzB,mBAAYwB,IAAIH,cAAAA;AACpC,SAAOE,SAASC,IAAIC,IAAAA;AACtB,CAAA;AAMK,IAAMC,kBAAkB,CAC7BL,gBACAM,OAEOL,WAAI,aAAA;AACT,QAAMC,WAAW,OAAOvB,mBAAYwB,IAAIrB,YAAAA;AACxC,QAAMsB,OAAO,OAAOzB,mBAAYwB,IAAIH,cAAAA;AACpCE,WAASK,IAAIH,MAAME,GAAGJ,SAASC,IAAIC,IAAAA,CAAAA,CAAAA;AACrC,CAAA;AAMK,IAAMI,gBAAgB,CAC3BR,gBACAS,aAEOR,WAAI,aAAA;AACT,QAAMC,WAAW,OAAOvB,mBAAYwB,IAAIrB,YAAAA;AACxC,QAAMsB,OAAO,OAAOzB,mBAAYwB,IAAIH,cAAAA;AACpC,SAAOE,SAASQ,UAAUN,MAAM,MAAMK,SAASP,SAASC,IAAIC,IAAAA,CAAAA,CAAAA;AAC9D,CAAA;",
6
- "names": ["Effect", "Null", "Capability$", "make", "PluginManager", "AtomRegistry", "ReactContext", "ReactRoot", "ReactSurface", "Command", "Layer", "LayerSpec", "TraceSink", "ServiceResolver", "ProcessMonitor", "ProcessManagerRuntime", "ManagedRuntime", "OperationHandler", "UndoMapping", "OperationInvoker", "UndoRegistry", "HistoryTracker", "getAtomValue", "atomCapability", "gen", "registry", "get", "atom", "updateAtomValue", "fn", "set", "subscribeAtom", "callback", "subscribe"]
7
- }
@@ -1,75 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import "../chunk-FPW45EZH.mjs";
3
- import {
4
- capabilities_exports
5
- } from "../chunk-XSZMX53L.mjs";
6
- import {
7
- activation_events_exports
8
- } from "../chunk-TLKYZKPW.mjs";
9
- import "../chunk-VCPGX7WN.mjs";
10
- import "../chunk-FKMVORZN.mjs";
11
- import {
12
- plugin_manager_exports
13
- } from "../chunk-IL7O7IRX.mjs";
14
- import "../chunk-BMW6P6QA.mjs";
15
- import {
16
- plugin_exports
17
- } from "../chunk-4SE7SX7N.mjs";
18
- import {
19
- capability_exports
20
- } from "../chunk-GLH4LGHZ.mjs";
21
- import "../chunk-HSLMI22Q.mjs";
22
-
23
- // src/cli/cli.ts
24
- import * as Command from "@effect/cli/Command";
25
- import * as Effect from "effect/Effect";
26
- import * as Layer from "effect/Layer";
27
- import { invariant } from "@dxos/invariant";
28
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/cli/cli.ts";
29
- var defaultPluginLoader = (plugins) => (id) => Effect.sync(() => {
30
- const plugin = plugins.find((plugin2) => plugin2.meta.profile.key === id);
31
- invariant(plugin, `Plugin not found: ${id}`, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 12, S: void 0, A: ["plugin", "`Plugin not found: ${id}`"] });
32
- return {
33
- plugin
34
- };
35
- });
36
- var createCliApp = Effect.fn(function* ({ rootCommand, subCommands: subCommandsProp, pluginManager: pluginManagerProp, pluginLoader: pluginLoaderProp, plugins: pluginsProp = [], enabled: enabledProp = [], safeMode = false }) {
37
- const plugins = pluginsProp;
38
- const pluginLoader = pluginLoaderProp ?? defaultPluginLoader(plugins);
39
- const enabled = safeMode ? [] : enabledProp;
40
- const manager = pluginManagerProp ?? plugin_manager_exports.make({
41
- pluginLoader,
42
- plugins,
43
- enabled
44
- });
45
- manager.capabilities.contribute({
46
- interface: capabilities_exports.PluginManager,
47
- implementation: manager,
48
- module: "org.dxos.app-framework.plugin-manager"
49
- });
50
- manager.capabilities.contribute({
51
- interface: capabilities_exports.AtomRegistry,
52
- implementation: manager.registry,
53
- module: "org.dxos.app-framework.atom-registry"
54
- });
55
- yield* manager.activate(activation_events_exports.Startup);
56
- const layers = manager.capabilities.getAll(capabilities_exports.Layer);
57
- const capabilityServiceLayer = Layer.succeed(capability_exports.Service, manager.capabilities);
58
- const pluginServiceLayer = Layer.succeed(plugin_exports.Service, manager);
59
- const layer = Layer.mergeAll(capabilityServiceLayer, pluginServiceLayer, ...layers);
60
- const pluginCommands = manager.capabilities.getAll(capabilities_exports.Command);
61
- const subCommands = subCommandsProp ? [
62
- ...subCommandsProp,
63
- ...pluginCommands
64
- ] : pluginCommands;
65
- invariant(subCommands.length > 0, "No subcommands provided", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 63, S: this, A: ["subCommands.length > 0", "'No subcommands provided'"] });
66
- const command = rootCommand.pipe(Command.withSubcommands(subCommands));
67
- return {
68
- command,
69
- layer
70
- };
71
- });
72
- export {
73
- createCliApp
74
- };
75
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/cli/cli.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { invariant } from '@dxos/invariant';\n\nimport { ActivationEvents, Capabilities } from '../common';\nimport { Capability, Plugin, PluginManager } from '../core';\n\nconst defaultPluginLoader =\n (plugins: Plugin.Plugin[]): PluginManager.ManagerOptions['pluginLoader'] =>\n (id: string) =>\n Effect.sync(() => {\n const plugin = plugins.find((plugin) => plugin.meta.profile.key === id);\n invariant(plugin, `Plugin not found: ${id}`);\n return { plugin };\n });\n\ntype SubCommands = [Command.Command<any, any, any, any>, ...Array<Command.Command<any, any, any, any>>];\n\nexport type CreateCliAppOptions = {\n rootCommand: Command.Command<any, any, any, any>;\n subCommands?: SubCommands;\n pluginManager?: PluginManager.PluginManager;\n pluginLoader?: PluginManager.ManagerOptions['pluginLoader'];\n plugins?: Plugin.Plugin[];\n enabled?: string[];\n safeMode?: boolean;\n};\n\n/**\n * Creates a CLI application with plugin support.\n * Similar to useApp but for CLI environments.\n *\n * @example\n * const plugins = [ClientPluginCLI()];\n * const manager = await createCliApp({ plugins });\n * const commands = manager.capabilities.getAll(Capabilities.Command);\n *\n * @param options.pluginManager Optional existing PluginManager instance.\n * @param options.pluginLoader Function to load plugins by ID.\n * @param options.plugins All plugins available to the application. Plugins whose `meta.profile.tags` includes `'system'` are treated as core.\n * @param options.enabled Enabled plugins.\n * @param options.safeMode Whether to enable safe mode, which disables optional plugins.\n */\nexport const createCliApp = Effect.fn(function* ({\n rootCommand,\n subCommands: subCommandsProp,\n pluginManager: pluginManagerProp,\n pluginLoader: pluginLoaderProp,\n plugins: pluginsProp = [],\n enabled: enabledProp = [],\n safeMode = false,\n}: CreateCliAppOptions) {\n const plugins = pluginsProp;\n const pluginLoader = pluginLoaderProp ?? defaultPluginLoader(plugins);\n const enabled = safeMode ? [] : enabledProp;\n const manager =\n pluginManagerProp ??\n PluginManager.make({\n pluginLoader,\n plugins,\n enabled,\n });\n\n manager.capabilities.contribute({\n interface: Capabilities.PluginManager,\n implementation: manager,\n module: 'org.dxos.app-framework.plugin-manager',\n });\n\n manager.capabilities.contribute({\n interface: Capabilities.AtomRegistry,\n implementation: manager.registry,\n module: 'org.dxos.app-framework.atom-registry',\n });\n\n // Activate startup event to load CLI commands and Effect layers.\n yield* manager.activate(ActivationEvents.Startup);\n\n // Gather all layers and merge them into a single layer.\n const layers = manager.capabilities.getAll(Capabilities.Layer);\n const capabilityServiceLayer = Layer.succeed(Capability.Service, manager.capabilities);\n const pluginServiceLayer = Layer.succeed(Plugin.Service, manager);\n const layer = (Layer.mergeAll as (...args: Layer.Layer<any, any, any>[]) => Layer.Layer<any, any, never>)(\n capabilityServiceLayer,\n pluginServiceLayer,\n ...layers,\n );\n\n // Gather all commands and provide them to the root command.\n const pluginCommands = manager.capabilities.getAll(Capabilities.Command);\n const subCommands = subCommandsProp ? [...subCommandsProp, ...pluginCommands] : pluginCommands;\n invariant(subCommands.length > 0, 'No subcommands provided');\n const command = rootCommand.pipe(Command.withSubcommands(subCommands as SubCommands));\n\n return { command, layer };\n});\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAIA,YAAYA,aAAa;AACzB,YAAYC,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,iBAAiB;AAK1B,IAAA,eAAMC;0BAKUC,CAAAA,YAAS,CAAA,OAAoBC,YAAI,MAAA;AAC3C,QAAA,SAAO,QAAA,KAAA,CAAAD,YAAAA,QAAA,KAAA,QAAA,QAAA,EAAA;YAAEA,QAAAA,qBAAAA,EAAAA,IAAAA,EAAAA,YAAAA,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,QAAAA,GAAAA,CAAAA,UAAAA,2BAAAA,EAAAA,CAAAA;AAAO,SAAA;IAClB;EAcJ;;AAyBQE,IAAAA,eAAeC,UAAAA,WAAoBJ,EAAAA,aAAoBK,aAAAA,iBAAAA,eAAAA,mBAAAA,cAAAA,kBAAAA,SAAAA,cAAAA,CAAAA,GAAAA,SAAAA,cAAAA,CAAAA,GAAAA,WAAAA,MAAAA,GAAAA;AAC7D,QAAMC,UAAUC;AAChB,QAAMC,eACJC,oBACAC,oBAAmB,OAAA;QACjBP,UAAAA,WAAAA,CAAAA,IAAAA;QACAE,UAAAA,qBAAAA,uBAAAA,KAAAA;IACAC;IACF;IAEFE;;UAEEG,aAAgBH,WAAAA;IAChBI,WAAQ,qBAAA;IACV,gBAAA;IAEAJ,QAAQK;;UAENF,aAAgBH,WAAQM;IACxBF,WAAQ,qBAAA;IACV,gBAAA,QAAA;IAEA,QAAA;EACA,CAAA;AAGA,SAAMG,QAASP,SAAQK,0BAAaG,OAAOC;AAE3C,QAAMC,SAAAA,QAAAA,aAA2BC,OAAQC,qBAAc,KAAEZ;AACzD,QAAMa,yBACJC,cAAAA,mBACAJ,SAAAA,QAAAA,YACGH;AAGL,QAAA,qBAAA,cAAA,eAAA,SAAA,OAA4D;AAC5D,QAAMQ,QAAAA,eAAiBf,wBAA4BS,oBAAoB,GAAA,MAAA;yBAC7BO,QAAAA,aAAAA,OAAAA,qBAAAA,OAAAA;sBAAoBD,kBAAAA;IAAkBA,GAAAA;IAChFE,GAAAA;EACA,IAAA;AAEA,YAAO,YAAA,SAAA,GAAA,2BAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,0BAAA,2BAAA,EAAA,CAAA;QAAEC,UAAAA,YAAAA,KAAAA,wBAAAA,WAAAA,CAAAA;SAASL;IAAM;IACvB;;;",
6
- "names": ["Command", "Effect", "Layer", "invariant", "defaultPluginLoader", "plugin", "id", "pluginLoader", "pluginLoaderProp", "plugins", "enabled", "safeMode", "manager", "pluginManagerProp", "PluginManager", "implementation", "module", "capabilities", "registry", "layers", "getAll", "Capabilities", "pluginServiceLayer", "succeed", "Plugin", "layer", "capabilityServiceLayer", "pluginCommands", "subCommandsProp", "invariant", "command"]
7
- }
@@ -1,21 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- ProcessManagerReady,
4
- SetupProcessManager,
5
- SetupReactSurface,
6
- Startup
7
- } from "../chunk-TLKYZKPW.mjs";
8
- import "../chunk-VCPGX7WN.mjs";
9
- import "../chunk-FKMVORZN.mjs";
10
- import "../chunk-IL7O7IRX.mjs";
11
- import "../chunk-BMW6P6QA.mjs";
12
- import "../chunk-4SE7SX7N.mjs";
13
- import "../chunk-GLH4LGHZ.mjs";
14
- import "../chunk-HSLMI22Q.mjs";
15
- export {
16
- ProcessManagerReady,
17
- SetupProcessManager,
18
- SetupReactSurface,
19
- Startup
20
- };
21
- //# sourceMappingURL=activation-events.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,57 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- AtomRegistry,
4
- Command,
5
- HistoryTracker,
6
- Layer,
7
- LayerSpec,
8
- ManagedRuntime,
9
- Null,
10
- OperationHandler,
11
- OperationInvoker,
12
- PluginManager,
13
- ProcessManagerRuntime,
14
- ProcessMonitor,
15
- ReactContext,
16
- ReactRoot,
17
- ReactSurface,
18
- ServiceResolver,
19
- TraceSink,
20
- UndoMapping,
21
- UndoRegistry,
22
- getAtomValue,
23
- subscribeAtom,
24
- updateAtomValue
25
- } from "../chunk-XSZMX53L.mjs";
26
- import "../chunk-VCPGX7WN.mjs";
27
- import "../chunk-FKMVORZN.mjs";
28
- import "../chunk-IL7O7IRX.mjs";
29
- import "../chunk-BMW6P6QA.mjs";
30
- import "../chunk-4SE7SX7N.mjs";
31
- import "../chunk-GLH4LGHZ.mjs";
32
- import "../chunk-HSLMI22Q.mjs";
33
- export {
34
- AtomRegistry,
35
- Command,
36
- HistoryTracker,
37
- Layer,
38
- LayerSpec,
39
- ManagedRuntime,
40
- Null,
41
- OperationHandler,
42
- OperationInvoker,
43
- PluginManager,
44
- ProcessManagerRuntime,
45
- ProcessMonitor,
46
- ReactContext,
47
- ReactRoot,
48
- ReactSurface,
49
- ServiceResolver,
50
- TraceSink,
51
- UndoMapping,
52
- UndoRegistry,
53
- getAtomValue,
54
- subscribeAtom,
55
- updateAtomValue
56
- };
57
- //# sourceMappingURL=capabilities.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,9 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- Config2
4
- } from "../chunk-2UPUZXGU.mjs";
5
- import "../chunk-HSLMI22Q.mjs";
6
- export {
7
- Config2
8
- };
9
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,21 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- allOf,
4
- eventKey,
5
- getEvents,
6
- isAllOf,
7
- isOneOf,
8
- make,
9
- oneOf
10
- } from "../chunk-BMW6P6QA.mjs";
11
- import "../chunk-HSLMI22Q.mjs";
12
- export {
13
- allOf,
14
- eventKey,
15
- getEvents,
16
- isAllOf,
17
- isOneOf,
18
- make,
19
- oneOf
20
- };
21
- //# sourceMappingURL=activation-event.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,33 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- ModuleTag,
4
- Service,
5
- asLayer,
6
- atom,
7
- atomByModule,
8
- contributes,
9
- get,
10
- getAll,
11
- getModuleTag,
12
- lazy,
13
- make,
14
- makeModule,
15
- waitFor
16
- } from "../chunk-GLH4LGHZ.mjs";
17
- import "../chunk-HSLMI22Q.mjs";
18
- export {
19
- ModuleTag,
20
- Service,
21
- asLayer,
22
- atom,
23
- atomByModule,
24
- contributes,
25
- get,
26
- getAll,
27
- getModuleTag,
28
- lazy,
29
- make,
30
- makeModule,
31
- waitFor
32
- };
33
- //# sourceMappingURL=capability.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,20 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- ManagerTypeId,
4
- PluginInitializationError,
5
- PluginTimeoutError,
6
- isManager,
7
- make
8
- } from "../chunk-IL7O7IRX.mjs";
9
- import "../chunk-BMW6P6QA.mjs";
10
- import "../chunk-4SE7SX7N.mjs";
11
- import "../chunk-GLH4LGHZ.mjs";
12
- import "../chunk-HSLMI22Q.mjs";
13
- export {
14
- ManagerTypeId,
15
- PluginInitializationError,
16
- PluginTimeoutError,
17
- isManager,
18
- make
19
- };
20
- //# sourceMappingURL=plugin-manager.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,52 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- LazyPluginError,
4
- Meta,
5
- PluginDependencyError,
6
- PluginModuleTypeId,
7
- PluginTypeId,
8
- Profile,
9
- Release,
10
- Service,
11
- activate,
12
- addModule,
13
- define,
14
- getMetaFromConfig,
15
- getURI,
16
- isLazy,
17
- isPlugin,
18
- isPluginModule,
19
- lazy,
20
- make,
21
- makeMeta,
22
- reset,
23
- resolveLazy,
24
- shutdown
25
- } from "../chunk-4SE7SX7N.mjs";
26
- import "../chunk-GLH4LGHZ.mjs";
27
- import "../chunk-HSLMI22Q.mjs";
28
- export {
29
- LazyPluginError,
30
- Meta,
31
- PluginDependencyError,
32
- PluginModuleTypeId,
33
- PluginTypeId,
34
- Profile,
35
- Release,
36
- Service,
37
- activate,
38
- addModule,
39
- define,
40
- getMetaFromConfig,
41
- getURI,
42
- isLazy,
43
- isPlugin,
44
- isPluginModule,
45
- lazy,
46
- make,
47
- makeMeta,
48
- reset,
49
- resolveLazy,
50
- shutdown
51
- };
52
- //# sourceMappingURL=plugin.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,25 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- RemotePluginLoadError,
4
- getInstalledVersion,
5
- getRemoteEntries,
6
- isLocalUrl,
7
- make,
8
- preload,
9
- setInstalledVersion,
10
- uninstall
11
- } from "../chunk-FKMVORZN.mjs";
12
- import "../chunk-4SE7SX7N.mjs";
13
- import "../chunk-GLH4LGHZ.mjs";
14
- import "../chunk-HSLMI22Q.mjs";
15
- export {
16
- RemotePluginLoadError,
17
- getInstalledVersion,
18
- getRemoteEntries,
19
- isLocalUrl,
20
- make,
21
- preload,
22
- setInstalledVersion,
23
- uninstall
24
- };
25
- //# sourceMappingURL=url-loader.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }