@dxos/plugin-space 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (283) hide show
  1. package/dist/lib/browser/app-graph-builder-7X3SIPCD.mjs +328 -0
  2. package/dist/lib/browser/app-graph-builder-7X3SIPCD.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-6WIAFHYK.mjs → app-graph-serializer-VRU57AEZ.mjs} +6 -6
  4. package/dist/lib/browser/app-graph-serializer-VRU57AEZ.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-MHTZAZT2.mjs → chunk-43UQWMD3.mjs} +327 -535
  6. package/dist/lib/browser/chunk-43UQWMD3.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-AR5R2F6B.mjs +88 -0
  8. package/dist/lib/browser/chunk-AR5R2F6B.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-CY35NLWL.mjs +296 -0
  10. package/dist/lib/browser/chunk-CY35NLWL.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FSHDAPFY.mjs → chunk-IQFFOAWD.mjs} +24 -38
  12. package/dist/lib/browser/chunk-IQFFOAWD.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-MIJHUABE.mjs → chunk-UBSVH2NQ.mjs} +3 -4
  14. package/dist/lib/browser/chunk-UBSVH2NQ.mjs.map +7 -0
  15. package/dist/lib/browser/{identity-created-DVHNLGYU.mjs → identity-created-ANRJHNMQ.mjs} +3 -3
  16. package/dist/lib/browser/identity-created-ANRJHNMQ.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +24 -23
  18. package/dist/lib/browser/index.mjs.map +3 -3
  19. package/dist/lib/browser/{intent-resolver-72IWBVYE.mjs → intent-resolver-KRINV5QI.mjs} +90 -94
  20. package/dist/lib/browser/intent-resolver-KRINV5QI.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-root-DRVM5ACV.mjs → react-root-J3SP2HVW.mjs} +5 -4
  23. package/dist/lib/browser/{react-surface-KODNQYDN.mjs → react-surface-J7T2IMH4.mjs} +6 -30
  24. package/dist/lib/browser/react-surface-J7T2IMH4.mjs.map +7 -0
  25. package/dist/lib/browser/schema-defs-OCBY7APN.mjs +26 -0
  26. package/dist/lib/browser/schema-defs-OCBY7APN.mjs.map +7 -0
  27. package/dist/lib/browser/{schema-tools-YAXPRIXP.mjs → schema-tools-MYC4LTQD.mjs} +22 -22
  28. package/dist/lib/browser/schema-tools-MYC4LTQD.mjs.map +7 -0
  29. package/dist/lib/browser/{settings-2UIV5WX5.mjs → settings-G24447B7.mjs} +2 -2
  30. package/dist/lib/browser/{spaces-ready-3URIMLCR.mjs → spaces-ready-5I3RKYTT.mjs} +16 -15
  31. package/dist/lib/browser/spaces-ready-5I3RKYTT.mjs.map +7 -0
  32. package/dist/lib/browser/{state-CYV6QCTN.mjs → state-SI4B5GHC.mjs} +2 -2
  33. package/dist/lib/browser/state-SI4B5GHC.mjs.map +7 -0
  34. package/dist/lib/browser/types/index.mjs +1 -1
  35. package/dist/lib/node/app-graph-builder-C2ISDMSL.cjs +328 -0
  36. package/dist/lib/node/app-graph-builder-C2ISDMSL.cjs.map +7 -0
  37. package/dist/lib/node/{app-graph-serializer-GOLCQHFQ.cjs → app-graph-serializer-VLBCR3IX.cjs} +22 -22
  38. package/dist/lib/node/app-graph-serializer-VLBCR3IX.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-EI3ZPOLJ.cjs → chunk-5YHUQJVB.cjs} +7 -8
  40. package/dist/lib/node/chunk-5YHUQJVB.cjs.map +7 -0
  41. package/dist/lib/node/chunk-DQN4ZQDW.cjs +119 -0
  42. package/dist/lib/node/chunk-DQN4ZQDW.cjs.map +7 -0
  43. package/dist/lib/node/chunk-K6ZO4WDJ.cjs +324 -0
  44. package/dist/lib/node/chunk-K6ZO4WDJ.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-GPZPEQXP.cjs → chunk-MXBE2VET.cjs} +351 -550
  46. package/dist/lib/node/chunk-MXBE2VET.cjs.map +7 -0
  47. package/dist/lib/node/{chunk-U63V2254.cjs → chunk-SCATWJKX.cjs} +46 -61
  48. package/dist/lib/node/chunk-SCATWJKX.cjs.map +7 -0
  49. package/dist/lib/node/{identity-created-YYTW4K3Z.cjs → identity-created-NIPYGVG3.cjs} +7 -7
  50. package/dist/lib/node/identity-created-NIPYGVG3.cjs.map +7 -0
  51. package/dist/lib/node/index.cjs +74 -74
  52. package/dist/lib/node/index.cjs.map +3 -3
  53. package/dist/lib/node/{intent-resolver-KA56XGUX.cjs → intent-resolver-MJVRY6YE.cjs} +133 -136
  54. package/dist/lib/node/intent-resolver-MJVRY6YE.cjs.map +7 -0
  55. package/dist/lib/node/meta.json +1 -1
  56. package/dist/lib/node/{react-root-6WGN5WRQ.cjs → react-root-M4BZ6VXB.cjs} +9 -8
  57. package/dist/lib/node/{react-root-6WGN5WRQ.cjs.map → react-root-M4BZ6VXB.cjs.map} +1 -1
  58. package/dist/lib/node/{react-surface-37AVZFPL.cjs → react-surface-RYKSYYKM.cjs} +42 -64
  59. package/dist/lib/node/react-surface-RYKSYYKM.cjs.map +7 -0
  60. package/dist/lib/node/{schema-PPJ5BZ3A.cjs → schema-defs-2HJLXSNK.cjs} +13 -11
  61. package/dist/lib/node/schema-defs-2HJLXSNK.cjs.map +7 -0
  62. package/dist/lib/node/{schema-tools-BLIMOZYY.cjs → schema-tools-OE3MFYYH.cjs} +24 -24
  63. package/dist/lib/node/schema-tools-OE3MFYYH.cjs.map +7 -0
  64. package/dist/lib/node/{settings-HJROTHC4.cjs → settings-AFWO4AWK.cjs} +6 -6
  65. package/dist/lib/node/{spaces-ready-IWDDIAAD.cjs → spaces-ready-BMPXSFHF.cjs} +24 -23
  66. package/dist/lib/node/spaces-ready-BMPXSFHF.cjs.map +7 -0
  67. package/dist/lib/node/{state-JLN7TGRR.cjs → state-L2ZSDKLS.cjs} +5 -5
  68. package/dist/lib/node/state-L2ZSDKLS.cjs.map +7 -0
  69. package/dist/lib/node/types/index.cjs +15 -15
  70. package/dist/lib/node/types/index.cjs.map +1 -1
  71. package/dist/lib/node-esm/app-graph-builder-WVCQZ324.mjs +329 -0
  72. package/dist/lib/node-esm/app-graph-builder-WVCQZ324.mjs.map +7 -0
  73. package/dist/lib/node-esm/{app-graph-serializer-AZXSO7HK.mjs → app-graph-serializer-GEUYYXKD.mjs} +6 -6
  74. package/dist/lib/node-esm/app-graph-serializer-GEUYYXKD.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-DUA32XUX.mjs → chunk-5NIBYPVF.mjs} +3 -4
  76. package/dist/lib/node-esm/chunk-5NIBYPVF.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-CLRCW6PU.mjs +297 -0
  78. package/dist/lib/node-esm/chunk-CLRCW6PU.mjs.map +7 -0
  79. package/dist/lib/node-esm/{chunk-ABKX22IP.mjs → chunk-FI3WV22Y.mjs} +327 -535
  80. package/dist/lib/node-esm/chunk-FI3WV22Y.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-HNKAG5CX.mjs +90 -0
  82. package/dist/lib/node-esm/chunk-HNKAG5CX.mjs.map +7 -0
  83. package/dist/lib/node-esm/{chunk-TVN6VHTT.mjs → chunk-S2W6HS4A.mjs} +24 -38
  84. package/dist/lib/node-esm/chunk-S2W6HS4A.mjs.map +7 -0
  85. package/dist/lib/node-esm/{identity-created-MP4GLXHO.mjs → identity-created-O5X2FFWU.mjs} +3 -3
  86. package/dist/lib/node-esm/identity-created-O5X2FFWU.mjs.map +7 -0
  87. package/dist/lib/node-esm/index.mjs +24 -23
  88. package/dist/lib/node-esm/index.mjs.map +3 -3
  89. package/dist/lib/node-esm/{intent-resolver-SG2ECM5R.mjs → intent-resolver-JT6EB47M.mjs} +90 -94
  90. package/dist/lib/node-esm/intent-resolver-JT6EB47M.mjs.map +7 -0
  91. package/dist/lib/node-esm/meta.json +1 -1
  92. package/dist/lib/node-esm/{react-root-MSUT6S2S.mjs → react-root-S2LW4FS7.mjs} +5 -4
  93. package/dist/lib/{browser/react-root-DRVM5ACV.mjs.map → node-esm/react-root-S2LW4FS7.mjs.map} +1 -1
  94. package/dist/lib/node-esm/{react-surface-G73SO23W.mjs → react-surface-ZNNMO7QQ.mjs} +6 -30
  95. package/dist/lib/node-esm/react-surface-ZNNMO7QQ.mjs.map +7 -0
  96. package/dist/lib/node-esm/schema-defs-B74N3GQ5.mjs +27 -0
  97. package/dist/lib/node-esm/schema-defs-B74N3GQ5.mjs.map +7 -0
  98. package/dist/lib/node-esm/{schema-tools-IU7EX5A5.mjs → schema-tools-YTJLA3NQ.mjs} +22 -22
  99. package/dist/lib/node-esm/schema-tools-YTJLA3NQ.mjs.map +7 -0
  100. package/dist/lib/node-esm/{settings-KCLKPJVY.mjs → settings-MJVSCOI4.mjs} +2 -2
  101. package/dist/lib/node-esm/{spaces-ready-Z3SXKWX2.mjs → spaces-ready-XKG57SL5.mjs} +16 -15
  102. package/dist/lib/node-esm/spaces-ready-XKG57SL5.mjs.map +7 -0
  103. package/dist/lib/node-esm/{state-YZPY5T5A.mjs → state-QUDYGEU6.mjs} +2 -2
  104. package/dist/lib/node-esm/state-QUDYGEU6.mjs.map +7 -0
  105. package/dist/lib/node-esm/types/index.mjs +1 -1
  106. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  108. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/app-graph-serializer.d.ts +2 -2
  110. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/identity-created.d.ts +2 -2
  112. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/index.d.ts +9 -184
  114. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -3
  116. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/schema-defs.d.ts +4 -0
  119. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/schema-tools.d.ts +2 -2
  121. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
  122. package/dist/types/src/capabilities/spaces-ready.d.ts +2 -2
  123. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/state.d.ts +2 -2
  125. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  126. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  127. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  128. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  129. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  131. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  132. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  133. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/MenuFooter.d.ts +2 -2
  136. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  137. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts +2 -2
  138. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  139. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  140. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  141. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  142. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +2 -2
  143. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  144. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  145. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  146. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  147. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  148. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  149. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  150. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  152. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  153. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  154. package/dist/types/src/components/SyncStatus/save-tracker.d.ts.map +1 -1
  155. package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
  156. package/dist/types/src/components/index.d.ts +0 -2
  157. package/dist/types/src/components/index.d.ts.map +1 -1
  158. package/dist/types/src/hooks/index.d.ts +1 -0
  159. package/dist/types/src/hooks/index.d.ts.map +1 -1
  160. package/dist/types/src/hooks/useActiveSpace.d.ts +4 -0
  161. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -0
  162. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +2 -2
  163. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  164. package/dist/types/src/hooks/usePath.d.ts +3 -2
  165. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  166. package/dist/types/src/index.d.ts +1 -0
  167. package/dist/types/src/index.d.ts.map +1 -1
  168. package/dist/types/src/translations.d.ts +2 -263
  169. package/dist/types/src/translations.d.ts.map +1 -1
  170. package/dist/types/src/types/collection.d.ts +9 -8
  171. package/dist/types/src/types/collection.d.ts.map +1 -1
  172. package/dist/types/src/types/thread.d.ts +205 -110
  173. package/dist/types/src/types/thread.d.ts.map +1 -1
  174. package/dist/types/src/types/types.d.ts +154 -142
  175. package/dist/types/src/types/types.d.ts.map +1 -1
  176. package/dist/types/src/util.d.ts +10 -16
  177. package/dist/types/src/util.d.ts.map +1 -1
  178. package/dist/types/tsconfig.tsbuildinfo +1 -1
  179. package/package.json +51 -45
  180. package/src/SpacePlugin.tsx +9 -8
  181. package/src/capabilities/app-graph-builder.ts +376 -268
  182. package/src/capabilities/app-graph-serializer.ts +4 -4
  183. package/src/capabilities/identity-created.ts +3 -3
  184. package/src/capabilities/index.ts +2 -2
  185. package/src/capabilities/intent-resolver.ts +85 -95
  186. package/src/capabilities/react-surface.tsx +17 -38
  187. package/src/capabilities/schema-defs.ts +30 -0
  188. package/src/capabilities/schema-tool.test.ts +2 -3
  189. package/src/capabilities/schema-tools.ts +25 -25
  190. package/src/capabilities/spaces-ready.ts +14 -12
  191. package/src/capabilities/state.ts +3 -3
  192. package/src/components/AwaitingObject.tsx +1 -1
  193. package/src/components/CollectionMain.tsx +2 -5
  194. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +2 -2
  195. package/src/components/CreateDialog/CreateObjectDialog.tsx +1 -1
  196. package/src/components/CreateDialog/CreateSpaceDialog.tsx +2 -3
  197. package/src/components/MembersContainer.stories.tsx +1 -5
  198. package/src/components/MembersContainer.tsx +23 -15
  199. package/src/components/MenuFooter.tsx +2 -2
  200. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +2 -2
  201. package/src/components/ObjectSettings/BaseObjectSettings.tsx +2 -2
  202. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -4
  203. package/src/components/PersistenceStatus.tsx +11 -14
  204. package/src/components/PopoverRenameObject.tsx +12 -6
  205. package/src/components/PopoverRenameSpace.tsx +8 -0
  206. package/src/components/SpacePresence.stories.tsx +1 -1
  207. package/src/components/SpacePresence.tsx +34 -43
  208. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +5 -3
  209. package/src/components/SyncStatus/InlineSyncStatus.tsx +10 -17
  210. package/src/components/index.ts +0 -2
  211. package/src/hooks/index.ts +1 -0
  212. package/src/hooks/useActiveSpace.ts +20 -0
  213. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  214. package/src/hooks/usePath.ts +9 -6
  215. package/src/index.ts +1 -0
  216. package/src/translations.ts +1 -2
  217. package/src/types/collection.ts +6 -4
  218. package/src/types/thread.ts +14 -8
  219. package/src/types/types.ts +109 -96
  220. package/src/util.tsx +36 -73
  221. package/dist/lib/browser/app-graph-builder-J4PN5HOM.mjs +0 -369
  222. package/dist/lib/browser/app-graph-builder-J4PN5HOM.mjs.map +0 -7
  223. package/dist/lib/browser/app-graph-serializer-6WIAFHYK.mjs.map +0 -7
  224. package/dist/lib/browser/chunk-FSHDAPFY.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-KDNV4YRD.mjs +0 -283
  226. package/dist/lib/browser/chunk-KDNV4YRD.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-MHTZAZT2.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-MIJHUABE.mjs.map +0 -7
  229. package/dist/lib/browser/identity-created-DVHNLGYU.mjs.map +0 -7
  230. package/dist/lib/browser/intent-resolver-72IWBVYE.mjs.map +0 -7
  231. package/dist/lib/browser/react-surface-KODNQYDN.mjs.map +0 -7
  232. package/dist/lib/browser/schema-FHTA26SW.mjs +0 -24
  233. package/dist/lib/browser/schema-FHTA26SW.mjs.map +0 -7
  234. package/dist/lib/browser/schema-tools-YAXPRIXP.mjs.map +0 -7
  235. package/dist/lib/browser/spaces-ready-3URIMLCR.mjs.map +0 -7
  236. package/dist/lib/browser/state-CYV6QCTN.mjs.map +0 -7
  237. package/dist/lib/node/app-graph-builder-3BNPC5GB.cjs +0 -371
  238. package/dist/lib/node/app-graph-builder-3BNPC5GB.cjs.map +0 -7
  239. package/dist/lib/node/app-graph-serializer-GOLCQHFQ.cjs.map +0 -7
  240. package/dist/lib/node/chunk-3UKLWXNJ.cjs +0 -311
  241. package/dist/lib/node/chunk-3UKLWXNJ.cjs.map +0 -7
  242. package/dist/lib/node/chunk-EI3ZPOLJ.cjs.map +0 -7
  243. package/dist/lib/node/chunk-GPZPEQXP.cjs.map +0 -7
  244. package/dist/lib/node/chunk-U63V2254.cjs.map +0 -7
  245. package/dist/lib/node/identity-created-YYTW4K3Z.cjs.map +0 -7
  246. package/dist/lib/node/intent-resolver-KA56XGUX.cjs.map +0 -7
  247. package/dist/lib/node/react-surface-37AVZFPL.cjs.map +0 -7
  248. package/dist/lib/node/schema-PPJ5BZ3A.cjs.map +0 -7
  249. package/dist/lib/node/schema-tools-BLIMOZYY.cjs.map +0 -7
  250. package/dist/lib/node/spaces-ready-IWDDIAAD.cjs.map +0 -7
  251. package/dist/lib/node/state-JLN7TGRR.cjs.map +0 -7
  252. package/dist/lib/node-esm/app-graph-builder-OVMSUAX3.mjs +0 -370
  253. package/dist/lib/node-esm/app-graph-builder-OVMSUAX3.mjs.map +0 -7
  254. package/dist/lib/node-esm/app-graph-serializer-AZXSO7HK.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-35OHQARN.mjs +0 -284
  256. package/dist/lib/node-esm/chunk-35OHQARN.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-ABKX22IP.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-DUA32XUX.mjs.map +0 -7
  259. package/dist/lib/node-esm/chunk-TVN6VHTT.mjs.map +0 -7
  260. package/dist/lib/node-esm/identity-created-MP4GLXHO.mjs.map +0 -7
  261. package/dist/lib/node-esm/intent-resolver-SG2ECM5R.mjs.map +0 -7
  262. package/dist/lib/node-esm/react-surface-G73SO23W.mjs.map +0 -7
  263. package/dist/lib/node-esm/schema-OUZKVYM5.mjs +0 -25
  264. package/dist/lib/node-esm/schema-OUZKVYM5.mjs.map +0 -7
  265. package/dist/lib/node-esm/schema-tools-IU7EX5A5.mjs.map +0 -7
  266. package/dist/lib/node-esm/spaces-ready-Z3SXKWX2.mjs.map +0 -7
  267. package/dist/lib/node-esm/state-YZPY5T5A.mjs.map +0 -7
  268. package/dist/types/src/capabilities/schema.d.ts +0 -4
  269. package/dist/types/src/capabilities/schema.d.ts.map +0 -1
  270. package/dist/types/src/components/PopoverAddSpace.d.ts +0 -4
  271. package/dist/types/src/components/PopoverAddSpace.d.ts.map +0 -1
  272. package/dist/types/src/components/ShareSpaceButton.d.ts +0 -9
  273. package/dist/types/src/components/ShareSpaceButton.d.ts.map +0 -1
  274. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -10
  275. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +0 -1
  276. package/src/capabilities/schema.ts +0 -27
  277. package/src/components/PopoverAddSpace.tsx +0 -52
  278. package/src/components/ShareSpaceButton.stories.tsx +0 -27
  279. package/src/components/ShareSpaceButton.tsx +0 -32
  280. /package/dist/lib/{node-esm/react-root-MSUT6S2S.mjs.map → browser/react-root-J3SP2HVW.mjs.map} +0 -0
  281. /package/dist/lib/browser/{settings-2UIV5WX5.mjs.map → settings-G24447B7.mjs.map} +0 -0
  282. /package/dist/lib/node/{settings-HJROTHC4.cjs.map → settings-AFWO4AWK.cjs.map} +0 -0
  283. /package/dist/lib/node-esm/{settings-KCLKPJVY.mjs.map → settings-MJVSCOI4.mjs.map} +0 -0
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createIntent, type PluginsContext } from '@dxos/app-framework';
5
+ import { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';
6
6
  import { isSpace } from '@dxos/client/echo';
7
7
  import { live } from '@dxos/live-object';
8
8
 
@@ -14,7 +14,7 @@ import { SPACES } from '../util';
14
14
  // https://stackoverflow.com/a/19016910
15
15
  const DIRECTORY_TYPE = 'text/directory';
16
16
 
17
- export default (context: PluginsContext) =>
17
+ export default (context: PluginContext) =>
18
18
  contributes(Capabilities.AppGraphSerializer, [
19
19
  {
20
20
  inputType: SPACES,
@@ -37,7 +37,7 @@ export default (context: PluginsContext) =>
37
37
  type: DIRECTORY_TYPE,
38
38
  }),
39
39
  deserialize: async (data) => {
40
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
40
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
41
41
  const result = await dispatch(createIntent(SpaceAction.Create, { name: data.name, edgeReplication: true }));
42
42
  return result.data?.space;
43
43
  },
@@ -59,7 +59,7 @@ export default (context: PluginsContext) =>
59
59
  return;
60
60
  }
61
61
 
62
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
62
+ const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
63
63
  const result = await dispatch(
64
64
  createIntent(SpaceAction.AddObject, {
65
65
  target: collection,
@@ -2,15 +2,15 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginsContext, Capabilities } from '@dxos/app-framework';
5
+ import { contributes, type PluginContext, Capabilities } from '@dxos/app-framework';
6
6
  import { live, makeRef } from '@dxos/live-object';
7
7
  import { Migrations } from '@dxos/migrations';
8
8
  import { ClientCapabilities } from '@dxos/plugin-client';
9
9
 
10
10
  import { CollectionType } from '../types';
11
11
 
12
- export default async (context: PluginsContext) => {
13
- const client = context.requestCapability(ClientCapabilities.Client);
12
+ export default async (context: PluginContext) => {
13
+ const client = context.getCapability(ClientCapabilities.Client);
14
14
  await client.spaces.waitUntilReady();
15
15
 
16
16
  const defaultSpace = client.spaces.default;
@@ -10,8 +10,8 @@ export const IdentityCreated = lazy(() => import('./identity-created'));
10
10
  export const IntentResolver = lazy(() => import('./intent-resolver'));
11
11
  export const ReactRoot = lazy(() => import('./react-root'));
12
12
  export const ReactSurface = lazy(() => import('./react-surface'));
13
- export const Schema = lazy(() => import('./schema'));
14
- export const Tools = lazy(() => import('./schema-tools'));
13
+ export const SchemaDefs = lazy(() => import('./schema-defs'));
14
+ export const SchemaTools = lazy(() => import('./schema-tools'));
15
15
  export const SpaceSettings = lazy(() => import('./settings'));
16
16
  export const SpaceState = lazy(() => import('./state'));
17
17
  export const SpacesReady = lazy(() => import('./spaces-ready'));
@@ -2,16 +2,15 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { pipe } from 'effect';
5
+ import { Effect } from 'effect';
6
6
 
7
7
  import {
8
8
  Capabilities,
9
- chain,
10
9
  contributes,
11
10
  createIntent,
12
11
  createResolver,
13
12
  LayoutAction,
14
- type PluginsContext,
13
+ type PluginContext,
15
14
  } from '@dxos/app-framework';
16
15
  import { type Expando, getTypename, type HasId } from '@dxos/echo-schema';
17
16
  import { invariant } from '@dxos/invariant';
@@ -21,6 +20,7 @@ import { ClientCapabilities } from '@dxos/plugin-client';
21
20
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
22
21
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
23
22
  import { isSpace, getSpace, SpaceState, fullyQualifiedId, isEchoObject } from '@dxos/react-client/echo';
23
+ import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
24
24
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
25
25
 
26
26
  import { SpaceCapabilities } from './capabilities';
@@ -32,7 +32,6 @@ import {
32
32
  CREATE_OBJECT_DIALOG,
33
33
  type CreateObjectDialogProps,
34
34
  POPOVER_RENAME_OBJECT,
35
- POPOVER_ADD_SPACE,
36
35
  } from '../components';
37
36
  import { SPACE_PLUGIN } from '../meta';
38
37
  import { CollectionAction, CollectionType, SpaceAction } from '../types';
@@ -42,13 +41,14 @@ import { cloneObject, COMPOSER_SPACE_LOCK, getNestedObjects } from '../util';
42
41
  const SPACE_MAX_OBJECTS = 500;
43
42
 
44
43
  type IntentResolverOptions = {
45
- context: PluginsContext;
44
+ context: PluginContext;
45
+ createInvitationUrl: (invitationCode: string) => string;
46
46
  observability?: boolean;
47
47
  };
48
48
 
49
- export default ({ context, observability }: IntentResolverOptions) => {
49
+ export default ({ context, observability, createInvitationUrl }: IntentResolverOptions) => {
50
50
  const resolve = (typename: string) =>
51
- context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
51
+ context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
52
52
 
53
53
  return contributes(Capabilities.IntentResolver, [
54
54
  createResolver({
@@ -68,7 +68,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
68
68
  createResolver({
69
69
  intent: SpaceAction.Create,
70
70
  resolve: async ({ name, hue, icon, edgeReplication }) => {
71
- const client = context.requestCapability(ClientCapabilities.Client);
71
+ const client = context.getCapability(ClientCapabilities.Client);
72
72
  const space = await client.spaces.create({ name, hue, icon });
73
73
  if (edgeReplication) {
74
74
  await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
@@ -120,48 +120,74 @@ export default ({ context, observability }: IntentResolverOptions) => {
120
120
  ],
121
121
  }),
122
122
  }),
123
+ createResolver({
124
+ intent: SpaceAction.OpenMembers,
125
+ resolve: ({ space }) => ({
126
+ intents: [
127
+ createIntent(LayoutAction.Open, {
128
+ part: 'main',
129
+ subject: [`members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`],
130
+ options: {
131
+ workspace: space.id,
132
+ },
133
+ }),
134
+ ],
135
+ }),
136
+ }),
123
137
  createResolver({
124
138
  intent: SpaceAction.Share,
125
- resolve: ({ space }) => {
126
- const layout = context.requestCapability(Capabilities.Layout);
127
- const id = `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`;
128
- if (layout.active.includes(id)) {
129
- return {
130
- intents: [
131
- createIntent(LayoutAction.ScrollIntoView, {
132
- part: 'current',
133
- subject: id,
134
- }),
135
- ],
136
- };
137
- }
138
-
139
+ resolve: ({ space, type, authMethod, multiUse, target }) => {
140
+ const invitation = space.share({ type, authMethod, multiUse, target });
139
141
  return {
140
- intents: [
141
- pipe(
142
- createIntent(LayoutAction.SwitchWorkspace, {
143
- part: 'workspace',
144
- subject: space.id,
145
- }),
146
- chain(LayoutAction.Open, {
147
- part: 'main',
148
- subject: [id],
149
- }),
150
- ),
151
- ...(observability
152
- ? [
153
- createIntent(ObservabilityAction.SendEvent, {
154
- name: 'space.share',
155
- properties: {
156
- spaceId: space.id,
157
- },
158
- }),
159
- ]
160
- : []),
161
- ],
142
+ data: invitation,
143
+ intents: observability
144
+ ? [
145
+ createIntent(ObservabilityAction.SendEvent, {
146
+ name: 'space.share',
147
+ properties: {
148
+ spaceId: space.id,
149
+ },
150
+ }),
151
+ ]
152
+ : [],
162
153
  };
163
154
  },
164
155
  }),
156
+ createResolver({
157
+ intent: SpaceAction.GetShareLink,
158
+ resolve: ({ space, target, copyToClipboard }) =>
159
+ Effect.gen(function* () {
160
+ const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
161
+ const invitation = yield* dispatch(
162
+ createIntent(SpaceAction.Share, {
163
+ space,
164
+ type: Invitation.Type.DELEGATED,
165
+ authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
166
+ multiUse: true,
167
+ target,
168
+ }),
169
+ );
170
+
171
+ // TODO(wittjosiah): Better api to for this.
172
+ // NOTE: Delegated invitations are invalid until the connecting state when keys are filled in.
173
+ const invitationCode = yield* Effect.tryPromise(
174
+ () =>
175
+ new Promise<string>((resolve) => {
176
+ invitation.subscribe((invitation) => {
177
+ if (invitation.state === Invitation.State.CONNECTING) {
178
+ resolve(InvitationEncoder.encode(invitation));
179
+ }
180
+ });
181
+ }),
182
+ );
183
+ const url = createInvitationUrl(invitationCode);
184
+ if (copyToClipboard) {
185
+ yield* Effect.tryPromise(() => navigator.clipboard.writeText(url));
186
+ }
187
+
188
+ return { data: url };
189
+ }),
190
+ }),
165
191
  createResolver({
166
192
  intent: SpaceAction.Lock,
167
193
  resolve: ({ space }) => {
@@ -219,55 +245,19 @@ export default ({ context, observability }: IntentResolverOptions) => {
219
245
  };
220
246
  },
221
247
  }),
222
- createResolver({
223
- intent: SpaceAction.AddSpace,
224
- resolve: () => {
225
- return {
226
- intents: [
227
- createIntent(LayoutAction.UpdatePopover, {
228
- part: 'popover',
229
- subject: POPOVER_ADD_SPACE,
230
- options: {
231
- variant: 'react',
232
- anchorId: SpaceAction.AddSpace._tag,
233
- side: 'right',
234
- },
235
- }),
236
- ],
237
- };
238
- },
239
- }),
240
248
  createResolver({
241
249
  intent: SpaceAction.OpenSettings,
242
- resolve: ({ space }) => {
243
- const layout = context.requestCapability(Capabilities.Layout);
244
- const id = `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`;
245
- if (layout.active.includes(id)) {
246
- return {
247
- intents: [
248
- createIntent(LayoutAction.ScrollIntoView, {
249
- part: 'current',
250
- subject: id,
251
- }),
252
- ],
253
- };
254
- }
255
-
256
- return {
257
- intents: [
258
- pipe(
259
- createIntent(LayoutAction.SwitchWorkspace, {
260
- part: 'workspace',
261
- subject: space.id,
262
- }),
263
- chain(LayoutAction.Open, {
264
- part: 'main',
265
- subject: [id],
266
- }),
267
- ),
268
- ],
269
- };
270
- },
250
+ resolve: ({ space }) => ({
251
+ intents: [
252
+ createIntent(LayoutAction.Open, {
253
+ part: 'main',
254
+ subject: [`properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`],
255
+ options: {
256
+ workspace: space.id,
257
+ },
258
+ }),
259
+ ],
260
+ }),
271
261
  }),
272
262
  createResolver({
273
263
  intent: SpaceAction.Open,
@@ -284,7 +274,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
284
274
  createResolver({
285
275
  intent: SpaceAction.Migrate,
286
276
  resolve: async ({ space, version: targetVersion }) => {
287
- const state = context.requestCapability(SpaceCapabilities.MutableState);
277
+ const state = context.getCapability(SpaceCapabilities.MutableState);
288
278
 
289
279
  if (space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION) {
290
280
  state.sdkMigrationRunning[space.id] = true;
@@ -315,7 +305,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
315
305
  createResolver({
316
306
  intent: SpaceAction.OpenCreateObject,
317
307
  resolve: ({ target, navigable = true }) => {
318
- const state = context.requestCapability(SpaceCapabilities.State);
308
+ const state = context.getCapability(SpaceCapabilities.State);
319
309
 
320
310
  return {
321
311
  intents: [
@@ -415,7 +405,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
415
405
  createResolver({
416
406
  intent: SpaceAction.RemoveObjects,
417
407
  resolve: async ({ objects, target, deletionData }, undo) => {
418
- const layout = context.requestCapability(Capabilities.Layout);
408
+ const layout = context.getCapability(Capabilities.Layout);
419
409
 
420
410
  // All objects must be a member of the same space.
421
411
  const space = getSpace(objects[0]);
@@ -544,7 +534,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
544
534
  createResolver({
545
535
  intent: SpaceAction.WaitForObject,
546
536
  resolve: async ({ id }) => {
547
- const state = context.requestCapability(SpaceCapabilities.MutableState);
537
+ const state = context.getCapability(SpaceCapabilities.MutableState);
548
538
  state.awaiting = id;
549
539
  },
550
540
  }),
@@ -2,11 +2,11 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Schema as S } from 'effect';
5
+ import { type Schema } from 'effect';
6
6
  import React, { useCallback } from 'react';
7
7
 
8
8
  import { Capabilities, contributes, createSurface, Surface, useCapability, useLayout } from '@dxos/app-framework';
9
- import { getSchema, isInstanceOf } from '@dxos/echo-schema';
9
+ import { isInstanceOf } from '@dxos/echo-schema';
10
10
  import { findAnnotation } from '@dxos/effect';
11
11
  import { SettingsStore } from '@dxos/local-storage';
12
12
  import {
@@ -17,11 +17,11 @@ import {
17
17
  parseId,
18
18
  SpaceState,
19
19
  useSpace,
20
- type ReactiveEchoObject,
20
+ type AnyLiveObject,
21
21
  type Space,
22
22
  } from '@dxos/react-client/echo';
23
23
  import { Input } from '@dxos/react-ui';
24
- import { Form, type InputProps } from '@dxos/react-ui-form';
24
+ import { type InputProps } from '@dxos/react-ui-form';
25
25
  import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
26
26
  import { type JoinPanelProps } from '@dxos/shell/react';
27
27
 
@@ -36,22 +36,20 @@ import {
36
36
  InlineSyncStatus,
37
37
  JOIN_DIALOG,
38
38
  JoinDialog,
39
+ MembersContainer,
39
40
  MenuFooter,
41
+ ObjectSettingsContainer,
40
42
  POPOVER_RENAME_OBJECT,
41
43
  POPOVER_RENAME_SPACE,
42
44
  PopoverRenameObject,
43
45
  PopoverRenameSpace,
46
+ SchemaContainer,
44
47
  SmallPresenceLive,
45
48
  SpacePluginSettings,
46
49
  SpacePresence,
50
+ SpaceSettingsContainer,
47
51
  SyncStatus,
48
52
  type CreateObjectDialogProps,
49
- POPOVER_ADD_SPACE,
50
- PopoverAddSpace,
51
- MembersContainer,
52
- ObjectSettingsContainer,
53
- SpaceSettingsContainer,
54
- SchemaContainer,
55
53
  } from '../components';
56
54
  import { SPACE_PLUGIN } from '../meta';
57
55
  import { CollectionType, HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';
@@ -93,7 +91,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
93
91
  createSurface({
94
92
  id: `${SPACE_PLUGIN}/companion/object-settings`,
95
93
  role: 'article',
96
- filter: (data): data is { companionTo: ReactiveEchoObject<any> } =>
94
+ filter: (data): data is { companionTo: AnyLiveObject<any> } =>
97
95
  isEchoObject(data.companionTo) && data.subject === 'settings',
98
96
  component: ({ data, role }) => <ObjectSettingsContainer object={data.companionTo} role={role} />,
99
97
  }),
@@ -164,8 +162,8 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
164
162
  createSurface({
165
163
  id: `${SPACE_PLUGIN}/create-initial-space-form-[hue]`,
166
164
  role: 'form-input',
167
- filter: (data): data is { prop: string; schema: S.Schema<any> } => {
168
- const annotation = findAnnotation<boolean>((data.schema as S.Schema.All).ast, HueAnnotationId);
165
+ filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {
166
+ const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, HueAnnotationId);
169
167
  return !!annotation;
170
168
  },
171
169
  component: ({ data: _, ...inputProps }) => {
@@ -183,8 +181,8 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
183
181
  createSurface({
184
182
  id: `${SPACE_PLUGIN}/create-initial-space-form-[icon]`,
185
183
  role: 'form-input',
186
- filter: (data): data is { prop: string; schema: S.Schema<any> } => {
187
- const annotation = findAnnotation<boolean>((data.schema as S.Schema.All).ast, IconAnnotationId);
184
+ filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {
185
+ const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, IconAnnotationId);
188
186
  return !!annotation;
189
187
  },
190
188
  component: ({ data: _, ...inputProps }) => {
@@ -199,19 +197,6 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
199
197
  );
200
198
  },
201
199
  }),
202
- createSurface({
203
- id: `${SPACE_PLUGIN}/preview-popover`,
204
- role: 'popover',
205
- filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),
206
- component: ({ data }) => {
207
- const schema = getSchema(data.subject);
208
- if (!schema) {
209
- return null;
210
- }
211
-
212
- return <Form schema={schema} values={data.subject} readonly />;
213
- },
214
- }),
215
200
  createSurface({
216
201
  id: POPOVER_RENAME_SPACE,
217
202
  role: 'popover',
@@ -221,26 +206,20 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
221
206
  createSurface({
222
207
  id: POPOVER_RENAME_OBJECT,
223
208
  role: 'popover',
224
- filter: (data): data is { props: ReactiveEchoObject<any> } =>
209
+ filter: (data): data is { props: AnyLiveObject<any> } =>
225
210
  data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),
226
211
  component: ({ data }) => <PopoverRenameObject object={data.props} />,
227
212
  }),
228
- createSurface({
229
- id: POPOVER_ADD_SPACE,
230
- role: 'popover',
231
- filter: (data): data is any => data.component === POPOVER_ADD_SPACE,
232
- component: () => <PopoverAddSpace />,
233
- }),
234
213
  createSurface({
235
214
  id: `${SPACE_PLUGIN}/menu-footer`,
236
215
  role: 'menu-footer',
237
- filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),
216
+ filter: (data): data is { subject: AnyLiveObject<any> } => isEchoObject(data.subject),
238
217
  component: ({ data }) => <MenuFooter object={data.subject} />,
239
218
  }),
240
219
  createSurface({
241
220
  id: `${SPACE_PLUGIN}/navtree-presence`,
242
221
  role: 'navtree-item-end',
243
- filter: (data): data is { id: string; subject: ReactiveEchoObject<any>; open?: boolean } =>
222
+ filter: (data): data is { id: string; subject: AnyLiveObject<any>; open?: boolean } =>
244
223
  typeof data.id === 'string' && isEchoObject(data.subject),
245
224
  component: ({ data }) => {
246
225
  // TODO(wittjosiah): Doesn't need to be mutable but readonly type messes with ComplexMap.
@@ -267,7 +246,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
267
246
  id: `${SPACE_PLUGIN}/navbar-presence`,
268
247
  role: 'navbar-end',
269
248
  position: 'hoist',
270
- filter: (data): data is { subject: Space | ReactiveEchoObject<any> } =>
249
+ filter: (data): data is { subject: Space | AnyLiveObject<any> } =>
271
250
  isSpace(data.subject) || isEchoObject(data.subject),
272
251
  component: ({ data }) => {
273
252
  const space = isSpace(data.subject) ? data.subject : getSpace(data.subject);
@@ -0,0 +1,30 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
6
+ import { ClientCapabilities } from '@dxos/plugin-client';
7
+
8
+ import { SpaceCapabilities } from './capabilities';
9
+ import { type ObjectForm } from '../types';
10
+
11
+ export default (context: PluginContext) => {
12
+ const registry = context.getCapability(Capabilities.RxRegistry);
13
+ const client = context.getCapability(ClientCapabilities.Client);
14
+
15
+ // TODO(wittjosiah): Unregister schemas when they are disabled.
16
+ let previous: ObjectForm[] = [];
17
+ const cancel = registry.subscribe(
18
+ context.capabilities(SpaceCapabilities.ObjectForm),
19
+ (_forms) => {
20
+ const forms = Array.from(new Set(_forms));
21
+ // TODO(wittjosiah): Filter out schemas which the client has already registered.
22
+ const newSchemas = forms.filter((form) => !previous.includes(form)).map((form) => form.objectSchema);
23
+ previous = forms;
24
+ client.addTypes(newSchemas);
25
+ },
26
+ { immediate: true },
27
+ );
28
+
29
+ return contributes(Capabilities.Null, null, () => cancel());
30
+ };
@@ -2,10 +2,9 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import { describe, it, expect } from 'vitest';
6
7
 
7
- import { S } from '@dxos/echo-schema';
8
-
9
8
  import { TypeNameSchema } from './schema-tools';
10
9
 
11
10
  describe('TypeNameSchema format', () => {
@@ -29,7 +28,7 @@ describe('TypeNameSchema format', () => {
29
28
  '.org/Type', // Must have domain
30
29
  ];
31
30
 
32
- const validate = S.validateSync(TypeNameSchema);
31
+ const validate = Schema.validateSync(TypeNameSchema);
33
32
 
34
33
  valid.forEach((typename) => {
35
34
  it(`should accept valid typename: ${typename}`, () => {
@@ -2,12 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { DescriptionAnnotationId, ExamplesAnnotationId, TitleAnnotationId } from 'effect/SchemaAST';
5
+ import { Schema, SchemaAST } from 'effect';
6
6
 
7
7
  import { Capabilities, contributes, type PromiseIntentDispatcher } from '@dxos/app-framework';
8
8
  import { defineTool, ToolResult } from '@dxos/artifact';
9
9
  import { type Space } from '@dxos/client/echo';
10
- import { FormatEnum, FormatEnums, S, SelectOptionSchema, GeoPoint, toJsonSchema } from '@dxos/echo-schema';
10
+ import { FormatEnum, FormatEnums, SelectOptionSchema, GeoPoint, toJsonSchema } from '@dxos/echo-schema';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { hues } from '@dxos/react-ui-theme';
13
13
  import { getSchemaFromPropertyDefinitions } from '@dxos/schema';
@@ -21,13 +21,13 @@ declare global {
21
21
  }
22
22
 
23
23
  // TODO(ZaymonFC): Move this somewhere common.
24
- export const TypeNameSchema = S.String.pipe(
25
- S.pattern(/^\w+\.\w{2,}\/[\w/]+$/i),
26
- S.annotations({
27
- [TitleAnnotationId]: 'TypeName',
28
- [DescriptionAnnotationId]:
24
+ export const TypeNameSchema = Schema.String.pipe(
25
+ Schema.pattern(/^\w+\.\w{2,}\/[\w/]+$/i),
26
+ Schema.annotations({
27
+ [SchemaAST.TitleAnnotationId]: 'TypeName',
28
+ [SchemaAST.DescriptionAnnotationId]:
29
29
  'Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.',
30
- [ExamplesAnnotationId]: ['example.com/type/Document', 'example.com/type/FlightList'],
30
+ [SchemaAST.ExamplesAnnotationId]: ['example.com/type/Document', 'example.com/type/FlightList'],
31
31
  }),
32
32
  );
33
33
 
@@ -36,23 +36,23 @@ const formatDescription = `The format of the property. Additional information:
36
36
  This tuple is GeoJSON. You must specify \`${FormatEnum.GeoPoint}\` as [Longitude, Latitude]`;
37
37
 
38
38
  // TODO(ZaymonFC): All properties are default optional, but maybe we should allow for required properties.
39
- const PropertyDefinitionSchema = S.Struct({
40
- name: S.String.annotations({ [DescriptionAnnotationId]: 'The name of the property.' }),
41
- format: S.Union(...FormatEnums.map((format) => S.Literal(format))).annotations({
42
- [DescriptionAnnotationId]: formatDescription,
39
+ const PropertyDefinitionSchema = Schema.Struct({
40
+ name: Schema.String.annotations({ [SchemaAST.DescriptionAnnotationId]: 'The name of the property.' }),
41
+ format: Schema.Union(...FormatEnums.map((format) => Schema.Literal(format))).annotations({
42
+ [SchemaAST.DescriptionAnnotationId]: formatDescription,
43
43
  }),
44
- config: S.optional(
45
- S.Struct({
46
- options: S.optional(
47
- S.Array(SelectOptionSchema)
44
+ config: Schema.optional(
45
+ Schema.Struct({
46
+ options: Schema.optional(
47
+ Schema.Array(SelectOptionSchema)
48
48
  .annotations({
49
49
  description: `Options for SingleSelect/MultiSelect formats. Available colors: ${hues.join(', ')}`,
50
50
  })
51
- .pipe(S.mutable),
51
+ .pipe(Schema.mutable),
52
52
  ),
53
53
  }),
54
54
  ),
55
- }).pipe(S.mutable);
55
+ }).pipe(Schema.mutable);
56
56
 
57
57
  const SYSTEM_NAMESPACE = 'dxos.org/echo/schema';
58
58
 
@@ -62,7 +62,7 @@ export default () =>
62
62
  name: 'list',
63
63
  description: 'List registered schemas in the space.',
64
64
  caption: 'Listing registered schemas...',
65
- schema: S.Struct({}),
65
+ schema: Schema.Struct({}),
66
66
  execute: async (_input, { extensions }) => {
67
67
  invariant(extensions?.space, 'No space.');
68
68
  const space = extensions.space;
@@ -80,8 +80,8 @@ export default () =>
80
80
  name: 'get',
81
81
  description: 'Get a specific schema by its typename.',
82
82
  caption: 'Getting schema...',
83
- schema: S.Struct({
84
- typename: S.String.annotations({
83
+ schema: Schema.Struct({
84
+ typename: Schema.String.annotations({
85
85
  description: 'The fully qualified typename of the schema.',
86
86
  }),
87
87
  }),
@@ -101,14 +101,14 @@ export default () =>
101
101
  name: 'create',
102
102
  description: 'Create a new schema with the provided definition.',
103
103
  caption: 'Creating schema...',
104
- schema: S.Struct({
104
+ schema: Schema.Struct({
105
105
  typename: TypeNameSchema.annotations({
106
106
  description:
107
107
  'The fully qualified schema typename. Must start with a domain, and then one or more path components (e.g., "example.com/type/TypeName").',
108
108
  }),
109
- properties: S.Array(PropertyDefinitionSchema).pipe(
110
- S.annotations({ description: 'Array of property definitions for the schema.' }),
111
- S.mutable,
109
+ properties: Schema.Array(PropertyDefinitionSchema).pipe(
110
+ Schema.annotations({ description: 'Array of property definitions for the schema.' }),
111
+ Schema.mutable,
112
112
  ),
113
113
  }),
114
114
  execute: async ({ typename, properties }, { extensions }) => {