@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.ae835ea

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 (310) hide show
  1. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs +31 -0
  2. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
  6. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
  7. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
  8. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs +520 -0
  10. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-3R5NVV7U.mjs} +14 -14
  12. package/dist/lib/browser/app-graph-serializer-3R5NVV7U.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-2NS3VPSY.mjs +20 -0
  14. package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-4V4JNJ33.mjs} +80 -10
  16. package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-ENBBJSNE.mjs} +482 -448
  18. package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
  20. package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-OWNBEI5J.mjs} +221 -57
  22. package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-SLDQWMQ2.mjs} +77 -12
  24. package/dist/lib/browser/chunk-SLDQWMQ2.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
  30. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
  31. package/dist/lib/browser/index.mjs +109 -40
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-MBVOLXFQ.mjs} +194 -32
  34. package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-NKEKCEYM.mjs} +11 -11
  37. package/dist/lib/browser/react-root-NKEKCEYM.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-PYSN2MBY.mjs} +78 -77
  39. package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-DWYK7TYW.mjs} +5 -5
  41. package/dist/lib/browser/schema-defs-DWYK7TYW.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-ZUCC3ZLB.mjs} +5 -5
  43. package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-ZUCC3ZLB.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-HTWWJHLR.mjs} +18 -16
  45. package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
  46. package/dist/lib/browser/{state-522XTUR4.mjs → state-ISVAKMO7.mjs} +7 -7
  47. package/dist/lib/browser/state-ISVAKMO7.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs +32 -0
  50. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
  54. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
  56. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-B23W62HY.mjs} +215 -58
  58. package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-3Z3EXEEF.mjs} +14 -14
  60. package/dist/lib/node-esm/app-graph-serializer-3Z3EXEEF.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  62. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-G4PDWB7G.mjs} +80 -10
  64. package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  66. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-KKPCCA5O.mjs} +482 -448
  68. package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
  70. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-XEVIWD3O.mjs} +221 -57
  72. package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-YFQXFQGT.mjs} +77 -12
  74. package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
  78. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
  79. package/dist/lib/node-esm/index.mjs +109 -40
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-IWI47NTW.mjs} +194 -32
  82. package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-LX7SIG6M.mjs} +11 -11
  85. package/dist/lib/node-esm/react-root-LX7SIG6M.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-6SVGOZNJ.mjs} +78 -77
  87. package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-EOG2UPJU.mjs} +5 -5
  89. package/dist/lib/node-esm/schema-defs-EOG2UPJU.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-ZDJNLFGW.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-ZDJNLFGW.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-VUGYPF4L.mjs} +18 -16
  93. package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-QZ4Q6ZRL.mjs} +7 -7
  95. package/dist/lib/node-esm/state-QZ4Q6ZRL.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +12 -5
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  115. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionMain.d.ts +1 -0
  123. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
  125. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1664 -4
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  129. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  131. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  132. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  133. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  135. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/MembersContainer.stories.d.ts +1664 -5
  137. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  139. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  140. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  141. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  142. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  143. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  144. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  145. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  146. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  147. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  148. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
  149. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  151. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  152. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  153. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  154. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  155. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  156. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  157. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  158. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  159. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  160. package/dist/types/src/components/RecordMain.d.ts +8 -0
  161. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  162. package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
  163. package/dist/types/src/components/RecordMain.stories.d.ts.map +1 -0
  164. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  165. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  166. package/dist/types/src/components/SpacePresence.stories.d.ts +1492 -4
  167. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  168. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  169. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1497 -4
  170. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  172. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  173. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1498 -5
  174. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  176. package/dist/types/src/components/ViewEditor.d.ts +8 -0
  177. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  178. package/dist/types/src/components/index.d.ts +13 -2
  179. package/dist/types/src/components/index.d.ts.map +1 -1
  180. package/dist/types/src/events.d.ts +1 -0
  181. package/dist/types/src/events.d.ts.map +1 -1
  182. package/dist/types/src/hooks/index.d.ts +1 -0
  183. package/dist/types/src/hooks/index.d.ts.map +1 -1
  184. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  186. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  187. package/dist/types/src/hooks/usePath.d.ts +1 -1
  188. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  190. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  191. package/dist/types/src/meta.d.ts +0 -1
  192. package/dist/types/src/meta.d.ts.map +1 -1
  193. package/dist/types/src/translations.d.ts +1342 -11
  194. package/dist/types/src/translations.d.ts.map +1 -1
  195. package/dist/types/src/types/types.d.ts +128 -66
  196. package/dist/types/src/types/types.d.ts.map +1 -1
  197. package/dist/types/src/util.d.ts +37 -7
  198. package/dist/types/src/util.d.ts.map +1 -1
  199. package/dist/types/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +63 -60
  201. package/src/SpacePlugin.ts +201 -139
  202. package/src/capabilities/app-graph-builder.ts +265 -47
  203. package/src/capabilities/app-graph-serializer.ts +7 -7
  204. package/src/capabilities/capabilities.ts +20 -9
  205. package/src/capabilities/identity-created.ts +1 -1
  206. package/src/capabilities/index.ts +0 -1
  207. package/src/capabilities/intent-resolver.ts +147 -21
  208. package/src/capabilities/react-root.tsx +4 -3
  209. package/src/capabilities/react-surface.tsx +79 -99
  210. package/src/capabilities/schema-defs.ts +3 -2
  211. package/src/capabilities/spaces-ready.ts +11 -8
  212. package/src/capabilities/state.ts +5 -4
  213. package/src/components/AwaitingObject.tsx +7 -9
  214. package/src/components/CollectionMain.tsx +4 -2
  215. package/src/components/CollectionSection.tsx +2 -2
  216. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  217. package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -36
  218. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  219. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
  220. package/src/components/JoinDialog.tsx +7 -7
  221. package/src/components/MembersContainer.stories.tsx +36 -10
  222. package/src/components/MembersContainer.tsx +18 -17
  223. package/src/components/MenuFooter.tsx +4 -5
  224. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +52 -0
  225. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  226. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  227. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  228. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  229. package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
  230. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  231. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  232. package/src/components/ObjectSettings/index.ts +3 -1
  233. package/src/components/PersistenceStatus.tsx +7 -8
  234. package/src/components/PopoverRenameObject.tsx +10 -16
  235. package/src/components/PopoverRenameSpace.tsx +4 -4
  236. package/src/components/RecordMain.stories.tsx +116 -0
  237. package/src/components/RecordMain.tsx +83 -0
  238. package/src/components/SchemaContainer.tsx +5 -5
  239. package/src/components/SpacePluginSettings.tsx +8 -9
  240. package/src/components/SpacePresence.stories.tsx +23 -22
  241. package/src/components/SpacePresence.tsx +10 -10
  242. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  243. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
  244. package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
  245. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  246. package/src/components/SyncStatus/SyncStatus.tsx +98 -7
  247. package/src/components/SyncStatus/status.ts +4 -4
  248. package/src/components/ViewEditor.tsx +58 -0
  249. package/src/components/index.ts +8 -2
  250. package/src/events.ts +7 -6
  251. package/src/hooks/index.ts +1 -0
  252. package/src/hooks/useActiveSpace.ts +2 -2
  253. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  254. package/src/hooks/usePath.ts +1 -1
  255. package/src/hooks/useTypeOptions.ts +59 -0
  256. package/src/meta.ts +6 -3
  257. package/src/translations.ts +77 -5
  258. package/src/types/types.ts +78 -16
  259. package/src/util.tsx +215 -57
  260. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
  261. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  262. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
  265. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  267. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  271. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
  274. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  275. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  276. package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
  277. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  278. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  279. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  280. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  281. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  282. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  283. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  284. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
  287. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
  289. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  292. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  295. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  297. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  298. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
  299. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  300. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  301. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  302. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  303. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  304. package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
  305. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  306. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  308. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  309. package/src/capabilities/schema-tool.test.ts +0 -44
  310. package/src/capabilities/schema-tools.ts +0 -125
@@ -3,32 +3,38 @@
3
3
  //
4
4
 
5
5
  import { Rx } from '@effect-rx/rx-react';
6
- import { Array, Option, pipe } from 'effect';
6
+ import * as Array from 'effect/Array';
7
+ import * as Function from 'effect/Function';
8
+ import * as Option from 'effect/Option';
9
+ import * as Schema from 'effect/Schema';
7
10
 
8
- import { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';
9
- import { getSpace, SpaceState, type Space, isSpace, type QueryResult } from '@dxos/client/echo';
11
+ import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
12
+ import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
10
13
  import { Filter, Obj, Query, Type } from '@dxos/echo';
11
14
  import { log } from '@dxos/log';
12
15
  import { ClientCapabilities } from '@dxos/plugin-client';
13
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
14
- import { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';
15
- import { DataType } from '@dxos/schema';
16
+ import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
17
+ import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
18
+ import { DataType, getTypenameFromQuery } from '@dxos/schema';
16
19
  import { isNonNullable } from '@dxos/util';
17
20
 
18
- import { SpaceCapabilities } from './capabilities';
19
21
  import { getActiveSpace } from '../hooks';
20
- import { SPACE_PLUGIN } from '../meta';
22
+ import { meta } from '../meta';
21
23
  import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
22
24
  import {
25
+ SHARED,
26
+ SPACES,
23
27
  constructObjectActions,
24
28
  constructSpaceActions,
25
29
  constructSpaceNode,
26
30
  createObjectNode,
31
+ createStaticSchemaActions,
32
+ createStaticSchemaNode,
27
33
  rxFromQuery,
28
- SHARED,
29
- SPACES,
30
34
  } from '../util';
31
35
 
36
+ import { SpaceCapabilities } from './capabilities';
37
+
32
38
  export default (context: PluginContext) => {
33
39
  // TODO(wittjosiah): Make reactive.
34
40
  const resolve = (typename: string) =>
@@ -39,7 +45,7 @@ export default (context: PluginContext) => {
39
45
  type: SPACES,
40
46
  cacheable: ['label', 'role'],
41
47
  properties: {
42
- label: ['spaces label', { ns: SPACE_PLUGIN }],
48
+ label: ['spaces label', { ns: meta.id }],
43
49
  icon: 'ph--planet--regular',
44
50
  testId: 'spacePlugin.spaces',
45
51
  role: 'branch',
@@ -74,11 +80,11 @@ export default (context: PluginContext) => {
74
80
  return contributes(Capabilities.AppGraphBuilder, [
75
81
  // Primary actions.
76
82
  createExtension({
77
- id: `${SPACE_PLUGIN}/primary-actions`,
83
+ id: `${meta.id}/primary-actions`,
78
84
  position: 'hoist',
79
85
  actions: (node) =>
80
86
  Rx.make((get) =>
81
- pipe(
87
+ Function.pipe(
82
88
  get(node),
83
89
  Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
84
90
  Option.map(() => [
@@ -89,7 +95,7 @@ export default (context: PluginContext) => {
89
95
  await dispatch(createIntent(SpaceAction.OpenCreateSpace));
90
96
  },
91
97
  properties: {
92
- label: ['create space label', { ns: SPACE_PLUGIN }],
98
+ label: ['create space label', { ns: meta.id }],
93
99
  icon: 'ph--plus--regular',
94
100
  testId: 'spacePlugin.createSpace',
95
101
  disposition: 'menu',
@@ -102,7 +108,7 @@ export default (context: PluginContext) => {
102
108
  await dispatch(createIntent(SpaceAction.Join));
103
109
  },
104
110
  properties: {
105
- label: ['join space label', { ns: SPACE_PLUGIN }],
111
+ label: ['join space label', { ns: meta.id }],
106
112
  icon: 'ph--sign-in--regular',
107
113
  testId: 'spacePlugin.joinSpace',
108
114
  disposition: 'menu',
@@ -117,7 +123,7 @@ export default (context: PluginContext) => {
117
123
  await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
118
124
  },
119
125
  properties: {
120
- label: ['share space label', { ns: SPACE_PLUGIN }],
126
+ label: ['share space label', { ns: meta.id }],
121
127
  icon: 'ph--users--regular',
122
128
  testId: 'spacePlugin.shareSpace',
123
129
  keyBinding: {
@@ -135,7 +141,7 @@ export default (context: PluginContext) => {
135
141
  await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
136
142
  },
137
143
  properties: {
138
- label: ['open current space settings label', { ns: SPACE_PLUGIN }],
144
+ label: ['open current space settings label', { ns: meta.id }],
139
145
  icon: 'ph--faders--regular',
140
146
  keyBinding: {
141
147
  macos: 'meta+shift+,',
@@ -151,11 +157,11 @@ export default (context: PluginContext) => {
151
157
 
152
158
  // Create spaces group node.
153
159
  createExtension({
154
- id: `${SPACE_PLUGIN}/root`,
160
+ id: `${meta.id}/root`,
155
161
  position: 'hoist',
156
162
  connector: (node) =>
157
163
  Rx.make((get) =>
158
- pipe(
164
+ Function.pipe(
159
165
  get(node),
160
166
  Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
161
167
  Option.map(() => [spacesNode]),
@@ -171,7 +177,7 @@ export default (context: PluginContext) => {
171
177
  connector: (node) => {
172
178
  let query: QueryResult<Type.Expando> | undefined;
173
179
  return Rx.make((get) =>
174
- pipe(
180
+ Function.pipe(
175
181
  get(node),
176
182
  Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
177
183
  Option.map(() => {
@@ -188,7 +194,7 @@ export default (context: PluginContext) => {
188
194
  }
189
195
 
190
196
  const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
191
- SPACE_PLUGIN,
197
+ meta.id,
192
198
  )?.value;
193
199
 
194
200
  // TODO(wittjosiah): During client reset, accessing default space throws.
@@ -273,10 +279,10 @@ export default (context: PluginContext) => {
273
279
 
274
280
  // Create space actions.
275
281
  createExtension({
276
- id: `${SPACE_PLUGIN}/actions`,
282
+ id: `${meta.id}/actions`,
277
283
  actions: (node) =>
278
284
  Rx.make((get) =>
279
- pipe(
285
+ Function.pipe(
280
286
  get(node),
281
287
  Option.flatMap((node) =>
282
288
  node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
@@ -305,10 +311,10 @@ export default (context: PluginContext) => {
305
311
 
306
312
  // Create nodes for objects in the root collection of a space.
307
313
  createExtension({
308
- id: `${SPACE_PLUGIN}/root-collection`,
314
+ id: `${meta.id}/root-collection`,
309
315
  connector: (node) =>
310
316
  Rx.make((get) =>
311
- pipe(
317
+ Function.pipe(
312
318
  get(node),
313
319
  Option.flatMap((node) =>
314
320
  node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
@@ -331,7 +337,7 @@ export default (context: PluginContext) => {
331
337
 
332
338
  return get(
333
339
  rxFromSignal(() =>
334
- pipe(
340
+ Function.pipe(
335
341
  collection.objects,
336
342
  Array.map((object) => object.target),
337
343
  Array.filter(isNonNullable),
@@ -355,10 +361,10 @@ export default (context: PluginContext) => {
355
361
 
356
362
  // Create nodes for objects in a collection or by its fully qualified id.
357
363
  createExtension({
358
- id: `${SPACE_PLUGIN}/objects`,
364
+ id: `${meta.id}/objects`,
359
365
  connector: (node) =>
360
366
  Rx.make((get) =>
361
- pipe(
367
+ Function.pipe(
362
368
  get(node),
363
369
  Option.flatMap((node) =>
364
370
  Obj.instanceOf(DataType.Collection, node.data) ? Option.some(node.data) : Option.none(),
@@ -369,7 +375,7 @@ export default (context: PluginContext) => {
369
375
 
370
376
  return get(
371
377
  rxFromSignal(() =>
372
- pipe(
378
+ Function.pipe(
373
379
  collection.objects,
374
380
  Array.map((object) => object.target),
375
381
  Array.filter(isNonNullable),
@@ -426,20 +432,19 @@ export default (context: PluginContext) => {
426
432
 
427
433
  // Create nodes for objects in a query collection.
428
434
  createExtension({
429
- id: `${SPACE_PLUGIN}/query-collection-objects`,
435
+ id: `${meta.id}/query-collection-objects`,
430
436
  connector: (node) => {
431
437
  let query: QueryResult<Type.Expando> | undefined;
432
438
  return Rx.make((get) =>
433
- pipe(
439
+ Function.pipe(
434
440
  get(node),
435
441
  Option.flatMap((node) =>
436
442
  Obj.instanceOf(DataType.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
437
443
  ),
438
444
  Option.flatMap((collection) => {
439
445
  const space = getSpace(collection);
440
- return collection.query.typename && space
441
- ? Option.some({ typename: collection.query.typename, space })
442
- : Option.none();
446
+ const typename = getTypenameFromQuery(collection.query);
447
+ return typename && space ? Option.some({ typename, space }) : Option.none();
443
448
  }),
444
449
  Option.map(({ typename, space }) => {
445
450
  const state = context.getCapability(SpaceCapabilities.State);
@@ -456,16 +461,144 @@ export default (context: PluginContext) => {
456
461
  ),
457
462
  );
458
463
  }
464
+ return (
465
+ get(rxFromQuery(query))
466
+ // TODO(wittjosiah): This should be the default sort order.
467
+ .toSorted((a, b) => a.id.localeCompare(b.id))
468
+ .map((object) =>
469
+ get(
470
+ rxFromSignal(() =>
471
+ createObjectNode({
472
+ object,
473
+ space,
474
+ resolve,
475
+ droppable: false, // Cannot rearrange query collections.
476
+ navigable: state.navigableCollections,
477
+ }),
478
+ ),
479
+ ),
480
+ )
481
+ .filter(isNonNullable)
482
+ );
483
+ }),
484
+ Option.getOrElse(() => []),
485
+ ),
486
+ );
487
+ },
488
+ }),
489
+
490
+ // Static schema records.
491
+ createExtension({
492
+ id: `${meta.id}/static-schemas`,
493
+ connector: (node) => {
494
+ const client = context.getCapability(ClientCapabilities.Client);
495
+ return Rx.make((get) =>
496
+ Function.pipe(
497
+ get(node),
498
+ Option.flatMap((node) =>
499
+ Obj.instanceOf(DataType.QueryCollection, node.data) &&
500
+ getTypenameFromQuery(node.data.query) === DataType.StoredSchema.typename
501
+ ? Option.some(node.data)
502
+ : Option.none(),
503
+ ),
504
+ Option.flatMap((collection) => {
505
+ const space = getSpace(collection);
506
+ return space?.properties.staticRecords ? Option.some(space) : Option.none();
507
+ }),
508
+ Option.map((space) => {
509
+ return get(rxFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
510
+ .map((typename) =>
511
+ client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
512
+ )
513
+ .filter(isNonNullable)
514
+ .map((schema) => createStaticSchemaNode({ schema, space }));
515
+ }),
516
+ Option.getOrElse(() => []),
517
+ ),
518
+ );
519
+ },
520
+ }),
521
+
522
+ // Create static schema actions.
523
+ createExtension({
524
+ id: `${meta.id}/static-schema-actions`,
525
+ actions: (node) => {
526
+ let query: QueryResult<DataType.View> | undefined;
527
+ return Rx.make((get) =>
528
+ Function.pipe(
529
+ get(node),
530
+ Option.flatMap((node) => {
531
+ const space = isSpace(node.properties.space) ? node.properties.space : undefined;
532
+ return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();
533
+ }),
534
+ Option.map(({ space, schema }) => {
535
+ if (!query) {
536
+ // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
537
+ query = space.db.query(Filter.type(DataType.View));
538
+ }
539
+
540
+ const views = get(rxFromQuery(query));
541
+ const filteredViews = get(
542
+ rxFromSignal(() =>
543
+ // TODO(wittjosiah): Remove cast.
544
+ views.filter(
545
+ (view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
546
+ ),
547
+ ),
548
+ );
549
+ const deletable = filteredViews.length === 0;
550
+
551
+ const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
552
+ if (!dispatcher) {
553
+ return [];
554
+ }
555
+
556
+ // TODO(wittjosiah): Remove cast.
557
+ return createStaticSchemaActions({
558
+ schema: schema as Type.Obj.Any,
559
+ space,
560
+ dispatch: dispatcher.dispatchPromise,
561
+ deletable,
562
+ });
563
+ }),
564
+ Option.getOrElse(() => []),
565
+ ),
566
+ );
567
+ },
568
+ }),
569
+
570
+ // Create nodes for schema views.
571
+ createExtension({
572
+ id: `${meta.id}/schema-views`,
573
+ connector: (node) => {
574
+ let query: QueryResult<DataType.View> | undefined;
575
+ return Rx.make((get) =>
576
+ Function.pipe(
577
+ get(node),
578
+ Option.flatMap((node) => {
579
+ const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
580
+ return space && (Obj.instanceOf(DataType.StoredSchema, node.data) || Schema.isSchema(node.data))
581
+ ? Option.some({ space, schema: node.data })
582
+ : Option.none();
583
+ }),
584
+ Option.map(({ space, schema }) => {
585
+ if (!query) {
586
+ // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
587
+ query = space.db.query(Filter.type(DataType.View));
588
+ }
589
+
590
+ // TODO(wittjosiah): Remove cast.
591
+ const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
459
592
  return get(rxFromQuery(query))
460
- .map((object) =>
593
+ .filter((view) => getTypenameFromQuery(view.query.ast) === typename)
594
+ .map((view) =>
461
595
  get(
462
596
  rxFromSignal(() =>
463
597
  createObjectNode({
464
- object,
598
+ object: view,
465
599
  space,
466
600
  resolve,
467
- droppable: false, // Cannot rearrange query collections.
468
- navigable: state.navigableCollections,
601
+ droppable: false,
469
602
  }),
470
603
  ),
471
604
  ),
@@ -478,15 +611,73 @@ export default (context: PluginContext) => {
478
611
  },
479
612
  }),
480
613
 
614
+ // Create record nodes.
615
+ createExtension({
616
+ id: `${meta.id}/records`,
617
+ resolver: (id) => {
618
+ let query: QueryResult<Type.Expando> | undefined;
619
+ return Rx.make((get) => {
620
+ const client = context.getCapability(ClientCapabilities.Client);
621
+ const { spaceId, objectId } = parseId(id);
622
+ if (!spaceId || !objectId) {
623
+ return null;
624
+ }
625
+
626
+ const space = client.spaces.get(spaceId);
627
+ if (!space) {
628
+ return null;
629
+ }
630
+
631
+ if (!query) {
632
+ query = space.db.query(Filter.ids(objectId));
633
+ }
634
+
635
+ const object = get(rxFromQuery(query)).at(0);
636
+ if (!object) {
637
+ return null;
638
+ }
639
+
640
+ return createObjectNode({ object, space, resolve, disposition: 'hidden' });
641
+ });
642
+ },
643
+ }),
644
+
481
645
  // Create collection actions and action groups.
482
646
  createExtension({
483
- id: `${SPACE_PLUGIN}/object-actions`,
484
- actions: (node) =>
485
- Rx.make((get) =>
486
- pipe(
647
+ id: `${meta.id}/object-actions`,
648
+ actions: (node) => {
649
+ let query: QueryResult<DataType.View> | undefined;
650
+ return Rx.make((get) =>
651
+ Function.pipe(
487
652
  get(node),
488
- Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),
489
- Option.flatMap((object) => {
653
+ Option.flatMap((node) => {
654
+ const space = getSpace(node.data);
655
+ return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
656
+ ? Option.some({ space, object: node.data })
657
+ : Option.none();
658
+ }),
659
+ Option.flatMap(({ space, object }) => {
660
+ const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
661
+ if (!query && isSchema) {
662
+ // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
663
+ query = space.db.query(Filter.type(DataType.View));
664
+ }
665
+
666
+ let deletable =
667
+ !isSchema &&
668
+ // Don't allow the Records smart collection to be deleted.
669
+ !(
670
+ Obj.instanceOf(DataType.QueryCollection, object) &&
671
+ getTypenameFromQuery(object.query) === DataType.StoredSchema.typename
672
+ );
673
+ if (isSchema && query) {
674
+ const views = get(rxFromQuery(query));
675
+ const filteredViews = get(
676
+ rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)),
677
+ );
678
+ deletable = filteredViews.length === 0;
679
+ }
680
+
490
681
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
491
682
  const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
492
683
  const [state] = get(context.capabilities(SpaceCapabilities.State));
@@ -500,6 +691,7 @@ export default (context: PluginContext) => {
500
691
  graph: appGraph.graph,
501
692
  dispatch: dispatcher.dispatchPromise,
502
693
  objectForms,
694
+ deletable,
503
695
  navigable: get(rxFromSignal(() => state.navigableCollections)),
504
696
  });
505
697
  }
@@ -507,15 +699,41 @@ export default (context: PluginContext) => {
507
699
  Option.map((params) => constructObjectActions(params)),
508
700
  Option.getOrElse(() => []),
509
701
  ),
702
+ );
703
+ },
704
+ }),
705
+
706
+ // View selected objects.
707
+ createExtension({
708
+ id: `${meta.id}/selected-objects`,
709
+ connector: (node) =>
710
+ Rx.make((get) =>
711
+ Function.pipe(
712
+ get(node),
713
+ Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),
714
+ Option.map((node) => [
715
+ {
716
+ id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
717
+ type: PLANK_COMPANION_TYPE,
718
+ data: 'selected-objects',
719
+ properties: {
720
+ label: ['companion selected objects label', { ns: meta.id }],
721
+ icon: 'ph--tree-view--regular',
722
+ disposition: 'hidden',
723
+ },
724
+ },
725
+ ]),
726
+ Option.getOrElse(() => []),
727
+ ),
510
728
  ),
511
729
  }),
512
730
 
513
731
  // Object settings plank companion.
514
732
  createExtension({
515
- id: `${SPACE_PLUGIN}/settings`,
733
+ id: `${meta.id}/settings`,
516
734
  connector: (node) =>
517
735
  Rx.make((get) =>
518
- pipe(
736
+ Function.pipe(
519
737
  get(node),
520
738
  Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
521
739
  Option.map((node) => [
@@ -524,7 +742,7 @@ export default (context: PluginContext) => {
524
742
  type: PLANK_COMPANION_TYPE,
525
743
  data: 'settings',
526
744
  properties: {
527
- label: ['object settings label', { ns: SPACE_PLUGIN }],
745
+ label: ['object settings label', { ns: meta.id }],
528
746
  icon: 'ph--sliders--regular',
529
747
  disposition: 'hidden',
530
748
  position: 'fallback',
@@ -7,7 +7,7 @@ import { isSpace } from '@dxos/client/echo';
7
7
  import { Obj, Type } from '@dxos/echo';
8
8
  import { DataType } from '@dxos/schema';
9
9
 
10
- import { SPACE_PLUGIN } from '../meta';
10
+ import { meta } from '../meta';
11
11
  import { translations } from '../translations';
12
12
  import { SPACE_TYPE, SpaceAction } from '../types';
13
13
  import { SPACES } from '../util';
@@ -23,8 +23,8 @@ export default (context: PluginContext) =>
23
23
  inputType: SPACES,
24
24
  outputType: DIRECTORY_TYPE,
25
25
  serialize: (node) => ({
26
- name: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'] ?? 'Spaces',
27
- data: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'] ?? 'Spaces',
26
+ name: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
27
+ data: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
28
28
  type: DIRECTORY_TYPE,
29
29
  }),
30
30
  deserialize: () => {
@@ -35,8 +35,8 @@ export default (context: PluginContext) =>
35
35
  inputType: SPACE_TYPE,
36
36
  outputType: DIRECTORY_TYPE,
37
37
  serialize: (node) => ({
38
- name: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],
39
- data: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],
38
+ name: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
39
+ data: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
40
40
  type: DIRECTORY_TYPE,
41
41
  }),
42
42
  deserialize: async (data) => {
@@ -49,8 +49,8 @@ export default (context: PluginContext) =>
49
49
  inputType: COLLECTION_TYPE,
50
50
  outputType: DIRECTORY_TYPE,
51
51
  serialize: (node) => ({
52
- name: node.data.name ?? translations[0]['en-US'][SPACE_PLUGIN]['object name placeholder'],
53
- data: node.data.name ?? translations[0]['en-US'][SPACE_PLUGIN]['object name placeholder'],
52
+ name: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
53
+ data: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
54
54
  type: DIRECTORY_TYPE,
55
55
  }),
56
56
  deserialize: async (data, ancestors) => {
@@ -2,23 +2,34 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { defineCapability, type Label } from '@dxos/app-framework';
5
+ import type * as Schema from 'effect/Schema';
6
+
7
+ import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
6
8
  import { type Space } from '@dxos/react-client/echo';
7
9
  import { type DataType } from '@dxos/schema';
8
- import { type Position, type DeepReadonly, type MaybePromise } from '@dxos/util';
10
+ import { type DeepReadonly, type Position } from '@dxos/util';
9
11
 
10
- import { SPACE_PLUGIN } from '../meta';
12
+ import { meta } from '../meta';
11
13
  import { type ObjectForm, type PluginState } from '../types';
12
14
 
13
15
  export namespace SpaceCapabilities {
14
- export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);
15
- export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);
16
+ export const State = defineCapability<DeepReadonly<PluginState>>(`${meta.id}/capability/state`);
17
+ export const MutableState = defineCapability<PluginState>(`${meta.id}/capability/state`);
16
18
 
17
19
  export type SettingsSection = { id: string; label: Label; position?: Position };
18
- export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);
20
+ export const SettingsSection = defineCapability<SettingsSection>(`${meta.id}/capability/settings-section`);
21
+
22
+ export type onCreateSpace = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
23
+ export const onCreateSpace = defineCapability<onCreateSpace>(`${meta.id}/capability/on-space-created`);
19
24
 
20
- export type OnSpaceCreated = (params: { space: Space; rootCollection: DataType.Collection }) => MaybePromise<void>;
21
- export const OnSpaceCreated = defineCapability<OnSpaceCreated>(`${SPACE_PLUGIN}/capability/on-space-created`);
25
+ export type OnSchemaAdded = (params: {
26
+ space: Space;
27
+ schema: Schema.Schema.AnyNoContext;
28
+ // TODO(wittjosiah): This is leaky.
29
+ show?: boolean;
30
+ }) => AnyIntentChain;
31
+ export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
22
32
 
23
- export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);
33
+ // TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
34
+ export const ObjectForm = defineCapability<ObjectForm<any>>(`${meta.id}/capability/object-form`);
24
35
  }
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginContext, Capabilities } from '@dxos/app-framework';
5
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
6
6
  import { Obj, Ref } from '@dxos/echo';
7
7
  import { Migrations } from '@dxos/migrations';
8
8
  import { ClientCapabilities } from '@dxos/plugin-client';
@@ -11,7 +11,6 @@ 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
13
  export const SchemaDefs = lazy(() => import('./schema-defs'));
14
- export const SchemaTools = lazy(() => import('./schema-tools'));
15
14
  export const SpaceSettings = lazy(() => import('./settings'));
16
15
  export const SpaceState = lazy(() => import('./state'));
17
16
  export const SpacesReady = lazy(() => import('./spaces-ready'));