@dxos/plugin-space 0.8.4-main.422d1c7879 → 0.8.4-main.43cb759274

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 (756) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +626 -0
  3. package/README.md +1 -1
  4. package/dist/lib/neutral/CollectionArticle-S3OF5KJ7.mjs +96 -0
  5. package/dist/lib/neutral/CollectionArticle-S3OF5KJ7.mjs.map +7 -0
  6. package/dist/lib/neutral/CollectionSection-A5WRHE5Z.mjs +19 -0
  7. package/dist/lib/neutral/CollectionSection-A5WRHE5Z.mjs.map +7 -0
  8. package/dist/lib/neutral/CreateObjectDialog-APLFTWSB.mjs +167 -0
  9. package/dist/lib/neutral/CreateObjectDialog-APLFTWSB.mjs.map +7 -0
  10. package/dist/lib/neutral/CreateSpaceDialog-WPKMRZH3.mjs +57 -0
  11. package/dist/lib/neutral/CreateSpaceDialog-WPKMRZH3.mjs.map +7 -0
  12. package/dist/lib/neutral/EntityRenamePopover-MYSW262F.mjs +59 -0
  13. package/dist/lib/neutral/EntityRenamePopover-MYSW262F.mjs.map +7 -0
  14. package/dist/lib/neutral/ImportSpaceDialog-7GKV4OTF.mjs +64 -0
  15. package/dist/lib/neutral/ImportSpaceDialog-7GKV4OTF.mjs.map +7 -0
  16. package/dist/lib/neutral/InlineSyncStatus-TBJKZCH7.mjs +49 -0
  17. package/dist/lib/neutral/InlineSyncStatus-TBJKZCH7.mjs.map +7 -0
  18. package/dist/lib/neutral/JoinDialog-SSFKRFTJ.mjs +114 -0
  19. package/dist/lib/neutral/JoinDialog-SSFKRFTJ.mjs.map +7 -0
  20. package/dist/lib/neutral/MembersContainer-KMCQDWCS.mjs +227 -0
  21. package/dist/lib/neutral/MembersContainer-KMCQDWCS.mjs.map +7 -0
  22. package/dist/lib/neutral/MenuFooter-J3YE4JGI.mjs +33 -0
  23. package/dist/lib/neutral/MenuFooter-J3YE4JGI.mjs.map +7 -0
  24. package/dist/lib/neutral/ObjectCardStack-HWLILOA3.mjs +55 -0
  25. package/dist/lib/neutral/ObjectCardStack-HWLILOA3.mjs.map +7 -0
  26. package/dist/lib/neutral/ObjectProperties-BF6KGFFC.mjs +33 -0
  27. package/dist/lib/neutral/ObjectProperties-BF6KGFFC.mjs.map +7 -0
  28. package/dist/lib/neutral/RecordArticle-QWGH25NT.mjs +51 -0
  29. package/dist/lib/neutral/RecordArticle-QWGH25NT.mjs.map +7 -0
  30. package/dist/lib/neutral/RelatedArticle-YDNGUDAJ.mjs +68 -0
  31. package/dist/lib/neutral/RelatedArticle-YDNGUDAJ.mjs.map +7 -0
  32. package/dist/lib/neutral/SchemaContainer-Q4BP6X2M.mjs +49 -0
  33. package/dist/lib/neutral/SchemaContainer-Q4BP6X2M.mjs.map +7 -0
  34. package/dist/lib/neutral/SmallPresenceLive-GUF4WLUC.mjs +8 -0
  35. package/dist/lib/neutral/SpacePlugin.mjs +10 -0
  36. package/dist/lib/{browser/cli/index.mjs → neutral/SpacePlugin.node.mjs} +97 -122
  37. package/dist/lib/neutral/SpacePlugin.node.mjs.map +7 -0
  38. package/dist/lib/neutral/SpacePlugin.workerd.mjs +34 -0
  39. package/dist/lib/neutral/SpacePlugin.workerd.mjs.map +7 -0
  40. package/dist/lib/neutral/SpacePresence-ACEXUS3N.mjs +11 -0
  41. package/dist/lib/neutral/SpaceRenamePopover-KFWL4CTJ.mjs +56 -0
  42. package/dist/lib/neutral/SpaceRenamePopover-KFWL4CTJ.mjs.map +7 -0
  43. package/dist/lib/{browser/SpaceSettings-TR2IMHOL.mjs → neutral/SpaceSettings-RJWNYZAL.mjs} +3 -3
  44. package/dist/lib/neutral/SpaceSettingsContainer-IB34TEOB.mjs +276 -0
  45. package/dist/lib/neutral/SpaceSettingsContainer-IB34TEOB.mjs.map +7 -0
  46. package/dist/lib/neutral/SyncStatus-CWOXWDDZ.mjs +147 -0
  47. package/dist/lib/neutral/SyncStatus-CWOXWDDZ.mjs.map +7 -0
  48. package/dist/lib/neutral/ViewEditor-BR26G555.mjs +101 -0
  49. package/dist/lib/neutral/ViewEditor-BR26G555.mjs.map +7 -0
  50. package/dist/lib/{browser/add-object-XUA4QRWE.mjs → neutral/add-object-NXJGPV7U.mjs} +15 -28
  51. package/dist/lib/neutral/add-object-NXJGPV7U.mjs.map +7 -0
  52. package/dist/lib/{browser/add-relation-YNTOBNYM.mjs → neutral/add-relation-4XGLANGJ.mjs} +4 -4
  53. package/dist/lib/neutral/add-relation-4XGLANGJ.mjs.map +7 -0
  54. package/dist/lib/neutral/add-type-EOQMBI63.mjs +57 -0
  55. package/dist/lib/neutral/add-type-EOQMBI63.mjs.map +7 -0
  56. package/dist/lib/neutral/app-graph-builder-5QSN3MP7.mjs +1254 -0
  57. package/dist/lib/neutral/app-graph-builder-5QSN3MP7.mjs.map +7 -0
  58. package/dist/lib/neutral/app-graph-serializer-BKLAS7NE.mjs +81 -0
  59. package/dist/lib/neutral/app-graph-serializer-BKLAS7NE.mjs.map +7 -0
  60. package/dist/lib/neutral/capabilities/index.mjs +43 -0
  61. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  62. package/dist/lib/neutral/capabilities/node.mjs +15 -0
  63. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-2DHCIE27.mjs +25 -0
  65. package/dist/lib/neutral/chunk-2DHCIE27.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-4RTSNTDC.mjs +37 -0
  67. package/dist/lib/neutral/chunk-4RTSNTDC.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-CRZHK3BW.mjs +154 -0
  69. package/dist/lib/neutral/chunk-CRZHK3BW.mjs.map +7 -0
  70. package/dist/lib/{browser/chunk-FBRDXXNK.mjs → neutral/chunk-E55TPDLR.mjs} +8 -3
  71. package/dist/lib/neutral/chunk-E55TPDLR.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-EEXRKYOD.mjs +163 -0
  73. package/dist/lib/neutral/chunk-EEXRKYOD.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-F5MESIRH.mjs +19 -0
  75. package/dist/lib/neutral/chunk-F5MESIRH.mjs.map +7 -0
  76. package/dist/lib/{browser/chunk-BJAZV3HI.mjs → neutral/chunk-HCDLT7WU.mjs} +165 -81
  77. package/dist/lib/neutral/chunk-HCDLT7WU.mjs.map +7 -0
  78. package/dist/lib/{browser/chunk-JH2UWMN2.mjs → neutral/chunk-JHZGRYGS.mjs} +1 -1
  79. package/dist/lib/{browser/chunk-JH2UWMN2.mjs.map → neutral/chunk-JHZGRYGS.mjs.map} +2 -2
  80. package/dist/lib/neutral/chunk-LE2BYN7U.mjs +8 -0
  81. package/dist/lib/neutral/chunk-LE2BYN7U.mjs.map +7 -0
  82. package/dist/lib/{browser/close-MPL6CV3Z.mjs → neutral/close-5LMOR4PD.mjs} +4 -4
  83. package/dist/lib/{browser/close-MPL6CV3Z.mjs.map → neutral/close-5LMOR4PD.mjs.map} +1 -1
  84. package/dist/lib/neutral/components/index.mjs +404 -0
  85. package/dist/lib/neutral/components/index.mjs.map +7 -0
  86. package/dist/lib/neutral/containers/index.mjs +49 -0
  87. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  88. package/dist/lib/{browser/create-AE3FYWXG.mjs → neutral/create-KUJARM45.mjs} +14 -13
  89. package/dist/lib/neutral/create-KUJARM45.mjs.map +7 -0
  90. package/dist/lib/neutral/create-object-22WUOWZQ.mjs +101 -0
  91. package/dist/lib/neutral/create-object-22WUOWZQ.mjs.map +7 -0
  92. package/dist/lib/neutral/delete-HONXXXUH.mjs +17 -0
  93. package/dist/lib/neutral/delete-HONXXXUH.mjs.map +7 -0
  94. package/dist/lib/{browser/delete-field-G77IGW6B.mjs → neutral/delete-field-OVN35NPO.mjs} +11 -36
  95. package/dist/lib/neutral/delete-field-OVN35NPO.mjs.map +7 -0
  96. package/dist/lib/neutral/duplicate-object-7HODEIGW.mjs +17 -0
  97. package/dist/lib/neutral/duplicate-object-7HODEIGW.mjs.map +7 -0
  98. package/dist/lib/neutral/export-space-HGI6N3IA.mjs +34 -0
  99. package/dist/lib/neutral/export-space-HGI6N3IA.mjs.map +7 -0
  100. package/dist/lib/{browser/get-share-link-R745OMNC.mjs → neutral/get-share-link-76OF5TPM.mjs} +5 -5
  101. package/dist/lib/{browser/get-share-link-R745OMNC.mjs.map → neutral/get-share-link-76OF5TPM.mjs.map} +1 -1
  102. package/dist/lib/neutral/hooks/index.mjs +121 -0
  103. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  104. package/dist/lib/neutral/identity-created-57RML5XT.mjs +32 -0
  105. package/dist/lib/neutral/identity-created-57RML5XT.mjs.map +7 -0
  106. package/dist/lib/neutral/import-space-P57N4PSP.mjs +28 -0
  107. package/dist/lib/neutral/import-space-P57N4PSP.mjs.map +7 -0
  108. package/dist/lib/{node-esm/types → neutral}/index.mjs +23 -4
  109. package/dist/lib/{browser/join-EDCBOGMO.mjs → neutral/join-WCAPNPUJ.mjs} +5 -5
  110. package/dist/lib/{browser/join-EDCBOGMO.mjs.map → neutral/join-WCAPNPUJ.mjs.map} +1 -1
  111. package/dist/lib/neutral/meta.json +1 -0
  112. package/dist/lib/{browser → neutral}/meta.mjs +1 -1
  113. package/dist/lib/{browser/migrate-J7OVAUIM.mjs → neutral/migrate-OSPAOAVW.mjs} +9 -7
  114. package/dist/lib/neutral/migrate-OSPAOAVW.mjs.map +7 -0
  115. package/dist/lib/neutral/navigation-handler-CXZ655SE.mjs +38 -0
  116. package/dist/lib/neutral/navigation-handler-CXZ655SE.mjs.map +7 -0
  117. package/dist/lib/neutral/navigation-resolver-WQ5A4637.mjs +65 -0
  118. package/dist/lib/neutral/navigation-resolver-WQ5A4637.mjs.map +7 -0
  119. package/dist/lib/{browser/open-LGLVOLR3.mjs → neutral/open-KU76PZVS.mjs} +4 -4
  120. package/dist/lib/{browser/open-LGLVOLR3.mjs.map → neutral/open-KU76PZVS.mjs.map} +1 -1
  121. package/dist/lib/{browser/open-create-object-QQFDBDDC.mjs → neutral/open-create-object-K5FI2KMV.mjs} +5 -5
  122. package/dist/lib/neutral/open-create-object-K5FI2KMV.mjs.map +7 -0
  123. package/dist/lib/{browser/open-create-space-7IVA2QOK.mjs → neutral/open-create-space-2ODSFMLD.mjs} +5 -5
  124. package/dist/lib/{browser/open-create-space-7IVA2QOK.mjs.map → neutral/open-create-space-2ODSFMLD.mjs.map} +1 -1
  125. package/dist/lib/neutral/open-import-space-VMILOCQO.mjs +24 -0
  126. package/dist/lib/neutral/open-import-space-VMILOCQO.mjs.map +7 -0
  127. package/dist/lib/{browser/open-members-RF5E7PAE.mjs → neutral/open-members-ZJUBRLFW.mjs} +4 -4
  128. package/dist/lib/{browser/open-members-RF5E7PAE.mjs.map → neutral/open-members-ZJUBRLFW.mjs.map} +1 -1
  129. package/dist/lib/{browser/open-settings-A56XL7NJ.mjs → neutral/open-settings-T5GEFCGI.mjs} +5 -5
  130. package/dist/lib/{browser/open-settings-A56XL7NJ.mjs.map → neutral/open-settings-T5GEFCGI.mjs.map} +1 -1
  131. package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs +13 -0
  132. package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs.map +7 -0
  133. package/dist/lib/neutral/operations/index.mjs +13 -0
  134. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  135. package/dist/lib/neutral/plugin.mjs +18 -0
  136. package/dist/lib/neutral/plugin.mjs.map +7 -0
  137. package/dist/lib/neutral/react-root-2DJPZQT4.mjs +23 -0
  138. package/dist/lib/neutral/react-root-2DJPZQT4.mjs.map +7 -0
  139. package/dist/lib/neutral/react-surface-UAHPI22Y.mjs +375 -0
  140. package/dist/lib/neutral/react-surface-UAHPI22Y.mjs.map +7 -0
  141. package/dist/lib/neutral/remove-objects-3LYKANEQ.mjs +55 -0
  142. package/dist/lib/neutral/remove-objects-3LYKANEQ.mjs.map +7 -0
  143. package/dist/lib/{browser/rename-UOGQQJ3T.mjs → neutral/rename-P3KRT5SX.mjs} +5 -5
  144. package/dist/lib/{browser/rename-UOGQQJ3T.mjs.map → neutral/rename-P3KRT5SX.mjs.map} +1 -1
  145. package/dist/lib/{browser/rename-object-V2LDZGOE.mjs → neutral/rename-object-Y5CZY66F.mjs} +8 -9
  146. package/dist/lib/neutral/rename-object-Y5CZY66F.mjs.map +7 -0
  147. package/dist/lib/neutral/repair-PSYRVSJ6.mjs +32 -0
  148. package/dist/lib/neutral/repair-PSYRVSJ6.mjs.map +7 -0
  149. package/dist/lib/{browser/restore-field-TQJP2YJI.mjs → neutral/restore-field-RAHWH43Z.mjs} +11 -36
  150. package/dist/lib/neutral/restore-field-RAHWH43Z.mjs.map +7 -0
  151. package/dist/lib/{browser/restore-objects-23VJYK72.mjs → neutral/restore-objects-YOFCXTWE.mjs} +11 -28
  152. package/dist/lib/neutral/restore-objects-YOFCXTWE.mjs.map +7 -0
  153. package/dist/lib/neutral/settings-DUCCRYX7.mjs +30 -0
  154. package/dist/lib/neutral/settings-DUCCRYX7.mjs.map +7 -0
  155. package/dist/lib/{browser/share-2PZJXFJM.mjs → neutral/share-OOKWURCK.mjs} +5 -5
  156. package/dist/lib/{browser/share-2PZJXFJM.mjs.map → neutral/share-OOKWURCK.mjs.map} +1 -1
  157. package/dist/lib/{browser/snapshot-OOA2JZ67.mjs → neutral/snapshot-3IIGQ7ZS.mjs} +5 -13
  158. package/dist/lib/neutral/snapshot-3IIGQ7ZS.mjs.map +7 -0
  159. package/dist/lib/neutral/spaces-ready-LFRQW3VQ.mjs +268 -0
  160. package/dist/lib/neutral/spaces-ready-LFRQW3VQ.mjs.map +7 -0
  161. package/dist/lib/neutral/state-DPBOZRAW.mjs +55 -0
  162. package/dist/lib/neutral/state-DPBOZRAW.mjs.map +7 -0
  163. package/dist/lib/neutral/testing.mjs +8 -0
  164. package/dist/lib/neutral/testing.mjs.map +7 -0
  165. package/dist/lib/neutral/translations.mjs +309 -0
  166. package/dist/lib/neutral/translations.mjs.map +7 -0
  167. package/dist/lib/{browser → neutral}/types/index.mjs +5 -1
  168. package/dist/lib/neutral/types/index.mjs.map +7 -0
  169. package/dist/lib/neutral/undo-mappings-OBRQOYN4.mjs +68 -0
  170. package/dist/lib/neutral/undo-mappings-OBRQOYN4.mjs.map +7 -0
  171. package/dist/lib/{browser/wait-for-object-2XLXLCNS.mjs → neutral/wait-for-object-YAE3NYNU.mjs} +4 -4
  172. package/dist/lib/{browser/wait-for-object-2XLXLCNS.mjs.map → neutral/wait-for-object-YAE3NYNU.mjs.map} +1 -1
  173. package/dist/types/src/SpacePlugin.d.ts +1 -0
  174. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  175. package/dist/types/src/{cli/plugin.d.ts → SpacePlugin.node.d.ts} +2 -1
  176. package/dist/types/src/SpacePlugin.node.d.ts.map +1 -0
  177. package/dist/types/src/SpacePlugin.test.d.ts +2 -0
  178. package/dist/types/src/SpacePlugin.test.d.ts.map +1 -0
  179. package/dist/types/src/SpacePlugin.workerd.d.ts +4 -0
  180. package/dist/types/src/SpacePlugin.workerd.d.ts.map +1 -0
  181. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  182. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +32 -8
  183. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
  184. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts +3 -3
  185. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -1
  186. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts +68 -0
  187. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -0
  188. package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts +1 -1
  189. package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts.map +1 -1
  190. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +11 -3
  191. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -1
  192. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +6 -7
  193. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -1
  194. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +24 -6
  195. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
  196. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +1 -1
  197. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -1
  198. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  199. package/dist/types/src/capabilities/create-object.d.ts +37 -0
  200. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  201. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  202. package/dist/types/src/capabilities/index.d.ts +32 -2
  203. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  204. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -1
  205. package/dist/types/src/capabilities/navigation-resolver.d.ts +1 -1
  206. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -1
  207. package/dist/types/src/capabilities/node.d.ts +32 -1
  208. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  209. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  210. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  211. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  212. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  213. package/dist/types/src/capabilities/repair.d.ts.map +1 -1
  214. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  215. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  216. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  217. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -1
  218. package/dist/types/src/commands/database/add.d.ts +10 -0
  219. package/dist/types/src/commands/database/add.d.ts.map +1 -0
  220. package/dist/types/src/commands/database/index.d.ts.map +1 -0
  221. package/dist/types/src/commands/database/query/index.d.ts.map +1 -0
  222. package/dist/types/src/{cli/commands → commands}/database/query/query.d.ts +2 -2
  223. package/dist/types/src/commands/database/query/query.d.ts.map +1 -0
  224. package/dist/types/src/commands/database/query/query.test.d.ts.map +1 -0
  225. package/dist/types/src/{cli/commands → commands}/database/remove.d.ts +1 -1
  226. package/dist/types/src/commands/database/remove.d.ts.map +1 -0
  227. package/dist/types/src/{cli/commands → commands}/database/stats.d.ts +1 -1
  228. package/dist/types/src/commands/database/stats.d.ts.map +1 -0
  229. package/dist/types/src/commands/database/util.d.ts.map +1 -0
  230. package/dist/types/src/commands/index.d.ts.map +1 -0
  231. package/dist/types/src/{cli/commands → commands}/queue/index.d.ts +2 -2
  232. package/dist/types/src/commands/queue/index.d.ts.map +1 -0
  233. package/dist/types/src/commands/queue/query.d.ts +7 -0
  234. package/dist/types/src/commands/queue/query.d.ts.map +1 -0
  235. package/dist/types/src/commands/queue/util.d.ts.map +1 -0
  236. package/dist/types/src/commands/space/close/close.d.ts +12 -0
  237. package/dist/types/src/commands/space/close/close.d.ts.map +1 -0
  238. package/dist/types/src/commands/space/close/index.d.ts.map +1 -0
  239. package/dist/types/src/{cli/commands → commands}/space/create/create.d.ts +2 -2
  240. package/dist/types/src/commands/space/create/create.d.ts.map +1 -0
  241. package/dist/types/src/commands/space/create/create.test.d.ts.map +1 -0
  242. package/dist/types/src/commands/space/create/index.d.ts.map +1 -0
  243. package/dist/types/src/{cli/commands → commands}/space/index.d.ts +13 -13
  244. package/dist/types/src/commands/space/index.d.ts.map +1 -0
  245. package/dist/types/src/commands/space/info/index.d.ts.map +1 -0
  246. package/dist/types/src/{cli/commands → commands}/space/info/info.d.ts +2 -2
  247. package/dist/types/src/commands/space/info/info.d.ts.map +1 -0
  248. package/dist/types/src/commands/space/info/info.test.d.ts.map +1 -0
  249. package/dist/types/src/commands/space/join/index.d.ts.map +1 -0
  250. package/dist/types/src/{cli/commands → commands}/space/join/join.d.ts +2 -2
  251. package/dist/types/src/commands/space/join/join.d.ts.map +1 -0
  252. package/dist/types/src/commands/space/join/util.d.ts.map +1 -0
  253. package/dist/types/src/commands/space/list/index.d.ts.map +1 -0
  254. package/dist/types/src/{cli/commands → commands}/space/list/list.d.ts +2 -2
  255. package/dist/types/src/commands/space/list/list.d.ts.map +1 -0
  256. package/dist/types/src/commands/space/list/list.test.d.ts.map +1 -0
  257. package/dist/types/src/commands/space/members/index.d.ts.map +1 -0
  258. package/dist/types/src/{cli/commands → commands}/space/members/members.d.ts +2 -2
  259. package/dist/types/src/commands/space/members/members.d.ts.map +1 -0
  260. package/dist/types/src/commands/space/members/members.test.d.ts.map +1 -0
  261. package/dist/types/src/commands/space/members/util.d.ts.map +1 -0
  262. package/dist/types/src/commands/space/open/index.d.ts.map +1 -0
  263. package/dist/types/src/commands/space/open/open.d.ts +12 -0
  264. package/dist/types/src/commands/space/open/open.d.ts.map +1 -0
  265. package/dist/types/src/{cli/commands → commands}/space/schema/index.d.ts +1 -1
  266. package/dist/types/src/commands/space/schema/index.d.ts.map +1 -0
  267. package/dist/types/src/commands/space/schema/list/index.d.ts.map +1 -0
  268. package/dist/types/src/{cli/commands → commands}/space/schema/list/list.d.ts +2 -3
  269. package/dist/types/src/commands/space/schema/list/list.d.ts.map +1 -0
  270. package/dist/types/src/commands/space/schema/list/list.test.d.ts.map +1 -0
  271. package/dist/types/src/commands/space/schema/list/util.d.ts.map +1 -0
  272. package/dist/types/src/commands/space/share/index.d.ts.map +1 -0
  273. package/dist/types/src/{cli/commands → commands}/space/share/share.d.ts +2 -2
  274. package/dist/types/src/commands/space/share/share.d.ts.map +1 -0
  275. package/dist/types/src/commands/space/sync/index.d.ts.map +1 -0
  276. package/dist/types/src/commands/space/sync/sync.d.ts.map +1 -0
  277. package/dist/types/src/commands/space/sync/sync.test.d.ts.map +1 -0
  278. package/dist/types/src/components/AwaitingObject/AwaitingObject.d.ts.map +1 -1
  279. package/dist/types/src/components/{CreateDialog → CreateObjectPanel}/CreateObjectPanel.d.ts +11 -14
  280. package/dist/types/src/components/CreateObjectPanel/CreateObjectPanel.d.ts.map +1 -0
  281. package/dist/types/src/components/CreateObjectPanel/index.d.ts.map +1 -0
  282. package/dist/types/src/components/ForeignKeys/ForeignKeys.d.ts.map +1 -1
  283. package/dist/types/src/components/SpaceSettings/SpaceSettings.d.ts.map +1 -1
  284. package/dist/types/src/components/SpaceSettings/SpaceSettings.stories.d.ts +590 -248
  285. package/dist/types/src/components/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
  286. package/dist/types/src/components/SyncStatus/save-tracker.d.ts +1 -1
  287. package/dist/types/src/components/SyncStatus/save-tracker.d.ts.map +1 -1
  288. package/dist/types/src/components/SyncStatus/status.d.ts +1 -1
  289. package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
  290. package/dist/types/src/components/index.d.ts +1 -1
  291. package/dist/types/src/components/index.d.ts.map +1 -1
  292. package/dist/types/src/constants.d.ts +7 -5
  293. package/dist/types/src/constants.d.ts.map +1 -1
  294. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts.map +1 -1
  295. package/dist/types/src/containers/CollectionSection/CollectionSection.d.ts.map +1 -1
  296. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
  297. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts +590 -248
  298. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  299. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +590 -248
  300. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
  301. package/dist/types/src/containers/EntityRenamePopover/EntityRenamePopover.d.ts +7 -0
  302. package/dist/types/src/containers/EntityRenamePopover/EntityRenamePopover.d.ts.map +1 -0
  303. package/dist/types/src/containers/EntityRenamePopover/index.d.ts +2 -0
  304. package/dist/types/src/containers/{ObjectRenamePopover → EntityRenamePopover}/index.d.ts.map +1 -1
  305. package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts +3 -0
  306. package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts.map +1 -0
  307. package/dist/types/src/containers/ImportSpaceDialog/index.d.ts +2 -0
  308. package/dist/types/src/containers/ImportSpaceDialog/index.d.ts.map +1 -0
  309. package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts.map +1 -1
  310. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
  311. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +590 -248
  312. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
  313. package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts.map +1 -1
  314. package/dist/types/src/containers/MenuFooter/MenuFooter.d.ts.map +1 -1
  315. package/dist/types/src/containers/ObjectCardStack/ObjectCardStack.d.ts.map +1 -1
  316. package/dist/types/src/containers/ObjectProperties/ObjectProperties.d.ts +1 -1
  317. package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts.map +1 -1
  318. package/dist/types/src/containers/RecordArticle/RecordArticle.stories.d.ts.map +1 -1
  319. package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts.map +1 -1
  320. package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts +3 -3
  321. package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts.map +1 -1
  322. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
  323. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +590 -248
  324. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  325. package/dist/types/src/containers/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -1
  326. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.d.ts +4 -4
  327. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.d.ts.map +1 -1
  328. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +590 -248
  329. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
  330. package/dist/types/src/containers/SyncStatus/SyncStatus.d.ts.map +1 -1
  331. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +590 -248
  332. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  333. package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts.map +1 -1
  334. package/dist/types/src/containers/index.d.ts +2 -1
  335. package/dist/types/src/containers/index.d.ts.map +1 -1
  336. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  337. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  338. package/dist/types/src/hooks/useRelatedObjects.d.ts.map +1 -1
  339. package/dist/types/src/index.d.ts +2 -3
  340. package/dist/types/src/index.d.ts.map +1 -1
  341. package/dist/types/src/meta.d.ts +1 -1
  342. package/dist/types/src/meta.d.ts.map +1 -1
  343. package/dist/types/src/operations/add-object.d.ts +1 -1
  344. package/dist/types/src/operations/add-object.d.ts.map +1 -1
  345. package/dist/types/src/operations/add-relation.d.ts +1 -1
  346. package/dist/types/src/operations/add-relation.d.ts.map +1 -1
  347. package/dist/types/src/operations/{add-schema.d.ts → add-type.d.ts} +3 -3
  348. package/dist/types/src/operations/add-type.d.ts.map +1 -0
  349. package/dist/types/src/operations/close.d.ts +1 -1
  350. package/dist/types/src/operations/close.d.ts.map +1 -1
  351. package/dist/types/src/operations/create.d.ts +1 -1
  352. package/dist/types/src/operations/create.d.ts.map +1 -1
  353. package/dist/types/src/operations/definitions.d.ts +72 -55
  354. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  355. package/dist/types/src/operations/delete-field.d.ts +1 -1
  356. package/dist/types/src/operations/delete-field.d.ts.map +1 -1
  357. package/dist/types/src/operations/delete.d.ts +5 -0
  358. package/dist/types/src/operations/delete.d.ts.map +1 -0
  359. package/dist/types/src/operations/duplicate-object.d.ts +1 -1
  360. package/dist/types/src/operations/duplicate-object.d.ts.map +1 -1
  361. package/dist/types/src/operations/export-space.d.ts +5 -0
  362. package/dist/types/src/operations/export-space.d.ts.map +1 -0
  363. package/dist/types/src/operations/get-share-link.d.ts +1 -1
  364. package/dist/types/src/operations/get-share-link.d.ts.map +1 -1
  365. package/dist/types/src/operations/import-space.d.ts +5 -0
  366. package/dist/types/src/operations/import-space.d.ts.map +1 -0
  367. package/dist/types/src/operations/index.d.ts +1 -1
  368. package/dist/types/src/operations/index.d.ts.map +1 -1
  369. package/dist/types/src/operations/join.d.ts +1 -1
  370. package/dist/types/src/operations/join.d.ts.map +1 -1
  371. package/dist/types/src/operations/migrate.d.ts +1 -1
  372. package/dist/types/src/operations/migrate.d.ts.map +1 -1
  373. package/dist/types/src/operations/open-create-object.d.ts +1 -1
  374. package/dist/types/src/operations/open-create-object.d.ts.map +1 -1
  375. package/dist/types/src/operations/open-create-space.d.ts +1 -1
  376. package/dist/types/src/operations/open-create-space.d.ts.map +1 -1
  377. package/dist/types/src/operations/open-import-space.d.ts +5 -0
  378. package/dist/types/src/operations/open-import-space.d.ts.map +1 -0
  379. package/dist/types/src/operations/open-members.d.ts +1 -1
  380. package/dist/types/src/operations/open-members.d.ts.map +1 -1
  381. package/dist/types/src/operations/open-settings.d.ts +1 -1
  382. package/dist/types/src/operations/open-settings.d.ts.map +1 -1
  383. package/dist/types/src/operations/open.d.ts +1 -1
  384. package/dist/types/src/operations/open.d.ts.map +1 -1
  385. package/dist/types/src/operations/remove-objects.d.ts +1 -1
  386. package/dist/types/src/operations/remove-objects.d.ts.map +1 -1
  387. package/dist/types/src/operations/rename-object.d.ts +1 -1
  388. package/dist/types/src/operations/rename-object.d.ts.map +1 -1
  389. package/dist/types/src/operations/rename.d.ts +1 -1
  390. package/dist/types/src/operations/rename.d.ts.map +1 -1
  391. package/dist/types/src/operations/restore-field.d.ts +1 -1
  392. package/dist/types/src/operations/restore-field.d.ts.map +1 -1
  393. package/dist/types/src/operations/restore-objects.d.ts +1 -1
  394. package/dist/types/src/operations/restore-objects.d.ts.map +1 -1
  395. package/dist/types/src/operations/share.d.ts +1 -1
  396. package/dist/types/src/operations/share.d.ts.map +1 -1
  397. package/dist/types/src/operations/snapshot.d.ts +1 -1
  398. package/dist/types/src/operations/snapshot.d.ts.map +1 -1
  399. package/dist/types/src/operations/wait-for-object.d.ts +1 -1
  400. package/dist/types/src/operations/wait-for-object.d.ts.map +1 -1
  401. package/dist/types/src/plugin.d.ts +4 -0
  402. package/dist/types/src/plugin.d.ts.map +1 -0
  403. package/dist/types/src/testing.d.ts +2 -0
  404. package/dist/types/src/testing.d.ts.map +1 -0
  405. package/dist/types/src/translations.d.ts +590 -248
  406. package/dist/types/src/translations.d.ts.map +1 -1
  407. package/dist/types/src/types/capabilities.d.ts +45 -8
  408. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  409. package/dist/types/src/types/events.d.ts +1 -1
  410. package/dist/types/src/types/events.d.ts.map +1 -1
  411. package/dist/types/src/types/types.d.ts +6 -3
  412. package/dist/types/src/types/types.d.ts.map +1 -1
  413. package/dist/types/src/util.d.ts +1 -6
  414. package/dist/types/src/util.d.ts.map +1 -1
  415. package/dist/types/tsconfig.tsbuildinfo +1 -1
  416. package/package.json +134 -101
  417. package/src/{cli/plugin.ts → SpacePlugin.node.ts} +7 -27
  418. package/src/SpacePlugin.test.ts +33 -0
  419. package/src/SpacePlugin.ts +20 -118
  420. package/src/SpacePlugin.workerd.ts +46 -0
  421. package/src/capabilities/app-graph-builder/app-graph-builder.ts +3 -3
  422. package/src/capabilities/app-graph-builder/extensions/collections.ts +36 -36
  423. package/src/capabilities/app-graph-builder/extensions/companions.ts +12 -10
  424. package/src/capabilities/app-graph-builder/extensions/{types.ts → database.ts} +89 -92
  425. package/src/capabilities/app-graph-builder/extensions/index.ts +1 -1
  426. package/src/capabilities/app-graph-builder/extensions/settings.ts +46 -22
  427. package/src/capabilities/app-graph-builder/extensions/shared.test.ts +80 -22
  428. package/src/capabilities/app-graph-builder/extensions/shared.ts +41 -19
  429. package/src/capabilities/app-graph-builder/extensions/spaces.ts +61 -23
  430. package/src/capabilities/app-graph-serializer.ts +6 -6
  431. package/src/capabilities/create-object.ts +107 -0
  432. package/src/capabilities/identity-created.ts +8 -9
  433. package/src/capabilities/index.ts +2 -2
  434. package/src/capabilities/navigation-handler/navigation-handler.ts +1 -1
  435. package/src/capabilities/navigation-resolver.ts +8 -20
  436. package/src/capabilities/node.ts +2 -1
  437. package/src/capabilities/operation-handler.ts +1 -1
  438. package/src/capabilities/react-surface.tsx +110 -72
  439. package/src/capabilities/repair.ts +6 -3
  440. package/src/capabilities/spaces-ready.ts +107 -90
  441. package/src/capabilities/state.ts +1 -1
  442. package/src/capabilities/undo-mappings.ts +3 -4
  443. package/src/{cli/commands → commands}/database/add.ts +24 -29
  444. package/src/{cli/commands → commands}/database/query/query.test.ts +3 -3
  445. package/src/{cli/commands → commands}/database/stats.ts +1 -2
  446. package/src/{cli/commands → commands}/database/util.ts +1 -1
  447. package/src/{cli/commands → commands}/queue/query.ts +20 -14
  448. package/src/{cli/commands → commands}/space/create/create.ts +1 -1
  449. package/src/{cli/commands → commands}/space/list/list.test.ts +1 -1
  450. package/src/{cli/commands → commands}/space/schema/list/list.ts +10 -17
  451. package/src/components/AwaitingObject/AwaitingObject.tsx +31 -32
  452. package/src/components/{CreateDialog → CreateObjectPanel}/CreateObjectPanel.tsx +64 -34
  453. package/src/components/SpaceSettings/SpaceSettings.stories.tsx +2 -1
  454. package/src/components/SyncStatus/save-tracker.ts +2 -1
  455. package/src/components/index.ts +1 -1
  456. package/src/constants.ts +8 -5
  457. package/src/containers/CollectionArticle/CollectionArticle.tsx +14 -37
  458. package/src/containers/CreateObjectDialog/CreateObjectDialog.stories.tsx +2 -3
  459. package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +65 -33
  460. package/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.tsx +5 -4
  461. package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +1 -1
  462. package/src/containers/{ObjectRenamePopover/ObjectRenamePopover.tsx → EntityRenamePopover/EntityRenamePopover.tsx} +9 -9
  463. package/src/containers/EntityRenamePopover/index.ts +5 -0
  464. package/src/containers/ImportSpaceDialog/ImportSpaceDialog.tsx +62 -0
  465. package/src/containers/ImportSpaceDialog/index.ts +5 -0
  466. package/src/containers/JoinDialog/JoinDialog.stories.tsx +3 -2
  467. package/src/containers/JoinDialog/JoinDialog.tsx +1 -1
  468. package/src/containers/MembersContainer/MembersContainer.tsx +8 -5
  469. package/src/containers/ObjectCardStack/ObjectCardStack.tsx +6 -7
  470. package/src/containers/RecordArticle/RecordArticle.stories.tsx +6 -4
  471. package/src/containers/RecordArticle/RecordArticle.tsx +23 -16
  472. package/src/containers/RelatedArticle/RelatedArticle.tsx +7 -15
  473. package/src/containers/SchemaContainer/SchemaContainer.tsx +13 -18
  474. package/src/containers/SpacePresence/SpacePresence.stories.tsx +2 -1
  475. package/src/containers/SpacePresence/SpacePresence.tsx +1 -1
  476. package/src/containers/SpaceRenamePopover/SpaceRenamePopover.tsx +3 -3
  477. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.tsx +4 -3
  478. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +68 -56
  479. package/src/containers/SyncStatus/SyncStatus.stories.tsx +2 -1
  480. package/src/containers/SyncStatus/SyncStatus.tsx +8 -2
  481. package/src/containers/ViewEditor/ViewEditor.tsx +31 -29
  482. package/src/containers/index.ts +2 -1
  483. package/src/hooks/useInputSurfaceLookup.tsx +9 -2
  484. package/src/index.ts +2 -4
  485. package/src/meta.ts +24 -6
  486. package/src/operations/add-object.ts +16 -13
  487. package/src/operations/add-relation.ts +1 -1
  488. package/src/operations/add-type.ts +51 -0
  489. package/src/operations/close.ts +1 -1
  490. package/src/operations/create.ts +17 -10
  491. package/src/operations/definitions.ts +142 -57
  492. package/src/operations/delete-field.ts +5 -4
  493. package/src/operations/delete.ts +18 -0
  494. package/src/operations/duplicate-object.ts +4 -17
  495. package/src/operations/export-space.ts +30 -0
  496. package/src/operations/get-share-link.ts +1 -1
  497. package/src/operations/import-space.ts +23 -0
  498. package/src/operations/index.ts +6 -2
  499. package/src/operations/join.ts +1 -1
  500. package/src/operations/migrate.ts +6 -4
  501. package/src/operations/open-create-object.ts +1 -1
  502. package/src/operations/open-create-space.ts +1 -1
  503. package/src/operations/open-import-space.ts +21 -0
  504. package/src/operations/open-members.ts +1 -1
  505. package/src/operations/open-settings.ts +2 -2
  506. package/src/operations/open.ts +1 -1
  507. package/src/operations/remove-objects.ts +29 -46
  508. package/src/operations/rename-object.ts +4 -6
  509. package/src/operations/rename.ts +1 -1
  510. package/src/operations/restore-field.ts +5 -4
  511. package/src/operations/restore-objects.ts +8 -18
  512. package/src/operations/share.ts +2 -2
  513. package/src/operations/snapshot.ts +1 -1
  514. package/src/operations/wait-for-object.ts +1 -1
  515. package/src/plugin.ts +11 -0
  516. package/src/testing.ts +7 -0
  517. package/src/translations.ts +48 -18
  518. package/src/types/capabilities.ts +33 -8
  519. package/src/types/events.ts +1 -1
  520. package/src/types/types.ts +8 -3
  521. package/src/util.ts +1 -44
  522. package/src/vite-env.d.ts +10 -0
  523. package/dist/lib/browser/add-object-XUA4QRWE.mjs.map +0 -7
  524. package/dist/lib/browser/add-relation-YNTOBNYM.mjs.map +0 -7
  525. package/dist/lib/browser/add-schema-Q5X2SAX4.mjs +0 -60
  526. package/dist/lib/browser/add-schema-Q5X2SAX4.mjs.map +0 -7
  527. package/dist/lib/browser/chunk-5CKPBXLB.mjs +0 -16
  528. package/dist/lib/browser/chunk-5CKPBXLB.mjs.map +0 -7
  529. package/dist/lib/browser/chunk-BJAZV3HI.mjs.map +0 -7
  530. package/dist/lib/browser/chunk-FBRDXXNK.mjs.map +0 -7
  531. package/dist/lib/browser/chunk-VV4C4APQ.mjs +0 -16
  532. package/dist/lib/browser/chunk-VV4C4APQ.mjs.map +0 -7
  533. package/dist/lib/browser/chunk-YSV6LKD6.mjs +0 -71
  534. package/dist/lib/browser/chunk-YSV6LKD6.mjs.map +0 -7
  535. package/dist/lib/browser/cli/index.mjs.map +0 -7
  536. package/dist/lib/browser/create-AE3FYWXG.mjs.map +0 -7
  537. package/dist/lib/browser/delete-field-G77IGW6B.mjs.map +0 -7
  538. package/dist/lib/browser/duplicate-object-B3Q64ELR.mjs +0 -42
  539. package/dist/lib/browser/duplicate-object-B3Q64ELR.mjs.map +0 -7
  540. package/dist/lib/browser/index.mjs +0 -913
  541. package/dist/lib/browser/index.mjs.map +0 -7
  542. package/dist/lib/browser/meta.json +0 -1
  543. package/dist/lib/browser/migrate-J7OVAUIM.mjs.map +0 -7
  544. package/dist/lib/browser/open-create-object-QQFDBDDC.mjs.map +0 -7
  545. package/dist/lib/browser/operations/index.mjs +0 -14
  546. package/dist/lib/browser/operations/index.mjs.map +0 -7
  547. package/dist/lib/browser/remove-objects-5JFRQRGL.mjs +0 -79
  548. package/dist/lib/browser/remove-objects-5JFRQRGL.mjs.map +0 -7
  549. package/dist/lib/browser/rename-object-V2LDZGOE.mjs.map +0 -7
  550. package/dist/lib/browser/restore-field-TQJP2YJI.mjs.map +0 -7
  551. package/dist/lib/browser/restore-objects-23VJYK72.mjs.map +0 -7
  552. package/dist/lib/browser/snapshot-OOA2JZ67.mjs.map +0 -7
  553. package/dist/lib/node-esm/SpaceSettings-YW75BDWT.mjs +0 -48
  554. package/dist/lib/node-esm/SpaceSettings-YW75BDWT.mjs.map +0 -7
  555. package/dist/lib/node-esm/add-object-OULSB2DR.mjs +0 -87
  556. package/dist/lib/node-esm/add-object-OULSB2DR.mjs.map +0 -7
  557. package/dist/lib/node-esm/add-relation-K6EZYWKL.mjs +0 -27
  558. package/dist/lib/node-esm/add-relation-K6EZYWKL.mjs.map +0 -7
  559. package/dist/lib/node-esm/add-schema-4GSWOILA.mjs +0 -61
  560. package/dist/lib/node-esm/add-schema-4GSWOILA.mjs.map +0 -7
  561. package/dist/lib/node-esm/chunk-64AL4GHY.mjs +0 -18
  562. package/dist/lib/node-esm/chunk-64AL4GHY.mjs.map +0 -7
  563. package/dist/lib/node-esm/chunk-7Z5ON2QQ.mjs +0 -99
  564. package/dist/lib/node-esm/chunk-7Z5ON2QQ.mjs.map +0 -7
  565. package/dist/lib/node-esm/chunk-GTF56ZOK.mjs +0 -10
  566. package/dist/lib/node-esm/chunk-GTF56ZOK.mjs.map +0 -7
  567. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  568. package/dist/lib/node-esm/chunk-IHOQPYNT.mjs +0 -73
  569. package/dist/lib/node-esm/chunk-IHOQPYNT.mjs.map +0 -7
  570. package/dist/lib/node-esm/chunk-IYW6CXLN.mjs +0 -18
  571. package/dist/lib/node-esm/chunk-IYW6CXLN.mjs.map +0 -7
  572. package/dist/lib/node-esm/chunk-TZTVDLGM.mjs +0 -490
  573. package/dist/lib/node-esm/chunk-TZTVDLGM.mjs.map +0 -7
  574. package/dist/lib/node-esm/cli/index.mjs +0 -861
  575. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  576. package/dist/lib/node-esm/close-JSUMHN7R.mjs +0 -18
  577. package/dist/lib/node-esm/close-JSUMHN7R.mjs.map +0 -7
  578. package/dist/lib/node-esm/create-BRA5OQHY.mjs +0 -75
  579. package/dist/lib/node-esm/create-BRA5OQHY.mjs.map +0 -7
  580. package/dist/lib/node-esm/delete-field-UNKELUX7.mjs +0 -68
  581. package/dist/lib/node-esm/delete-field-UNKELUX7.mjs.map +0 -7
  582. package/dist/lib/node-esm/duplicate-object-QDZHK24D.mjs +0 -43
  583. package/dist/lib/node-esm/duplicate-object-QDZHK24D.mjs.map +0 -7
  584. package/dist/lib/node-esm/get-share-link-XLBJHWDY.mjs +0 -42
  585. package/dist/lib/node-esm/get-share-link-XLBJHWDY.mjs.map +0 -7
  586. package/dist/lib/node-esm/index.mjs +0 -914
  587. package/dist/lib/node-esm/index.mjs.map +0 -7
  588. package/dist/lib/node-esm/join-RGM74NMA.mjs +0 -29
  589. package/dist/lib/node-esm/join-RGM74NMA.mjs.map +0 -7
  590. package/dist/lib/node-esm/meta.json +0 -1
  591. package/dist/lib/node-esm/meta.mjs +0 -9
  592. package/dist/lib/node-esm/migrate-NXBHBCFU.mjs +0 -51
  593. package/dist/lib/node-esm/migrate-NXBHBCFU.mjs.map +0 -7
  594. package/dist/lib/node-esm/open-ZUK63Z2F.mjs +0 -18
  595. package/dist/lib/node-esm/open-ZUK63Z2F.mjs.map +0 -7
  596. package/dist/lib/node-esm/open-create-object-CMNXPKSF.mjs +0 -43
  597. package/dist/lib/node-esm/open-create-object-CMNXPKSF.mjs.map +0 -7
  598. package/dist/lib/node-esm/open-create-space-W6DDCTCA.mjs +0 -25
  599. package/dist/lib/node-esm/open-create-space-W6DDCTCA.mjs.map +0 -7
  600. package/dist/lib/node-esm/open-members-BUANVOZL.mjs +0 -24
  601. package/dist/lib/node-esm/open-members-BUANVOZL.mjs.map +0 -7
  602. package/dist/lib/node-esm/open-settings-U2SJX5EW.mjs +0 -24
  603. package/dist/lib/node-esm/open-settings-U2SJX5EW.mjs.map +0 -7
  604. package/dist/lib/node-esm/operations/index.mjs +0 -15
  605. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  606. package/dist/lib/node-esm/remove-objects-KTAS3FB3.mjs +0 -80
  607. package/dist/lib/node-esm/remove-objects-KTAS3FB3.mjs.map +0 -7
  608. package/dist/lib/node-esm/rename-F5GAS22G.mjs +0 -26
  609. package/dist/lib/node-esm/rename-F5GAS22G.mjs.map +0 -7
  610. package/dist/lib/node-esm/rename-object-D2AVOXBO.mjs +0 -27
  611. package/dist/lib/node-esm/rename-object-D2AVOXBO.mjs.map +0 -7
  612. package/dist/lib/node-esm/restore-field-O7T4WCMB.mjs +0 -66
  613. package/dist/lib/node-esm/restore-field-O7T4WCMB.mjs.map +0 -7
  614. package/dist/lib/node-esm/restore-objects-IRKTUGP2.mjs +0 -57
  615. package/dist/lib/node-esm/restore-objects-IRKTUGP2.mjs.map +0 -7
  616. package/dist/lib/node-esm/share-5CZU3XKX.mjs +0 -32
  617. package/dist/lib/node-esm/share-5CZU3XKX.mjs.map +0 -7
  618. package/dist/lib/node-esm/snapshot-H3SRUIPR.mjs +0 -39
  619. package/dist/lib/node-esm/snapshot-H3SRUIPR.mjs.map +0 -7
  620. package/dist/lib/node-esm/wait-for-object-G2HJINN3.mjs +0 -24
  621. package/dist/lib/node-esm/wait-for-object-G2HJINN3.mjs.map +0 -7
  622. package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts +0 -38
  623. package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts.map +0 -1
  624. package/dist/types/src/capabilities/migrations.d.ts +0 -5
  625. package/dist/types/src/capabilities/migrations.d.ts.map +0 -1
  626. package/dist/types/src/cli/commands/database/add.d.ts +0 -16
  627. package/dist/types/src/cli/commands/database/add.d.ts.map +0 -1
  628. package/dist/types/src/cli/commands/database/index.d.ts.map +0 -1
  629. package/dist/types/src/cli/commands/database/query/index.d.ts.map +0 -1
  630. package/dist/types/src/cli/commands/database/query/query.d.ts.map +0 -1
  631. package/dist/types/src/cli/commands/database/query/query.test.d.ts.map +0 -1
  632. package/dist/types/src/cli/commands/database/remove.d.ts.map +0 -1
  633. package/dist/types/src/cli/commands/database/stats.d.ts.map +0 -1
  634. package/dist/types/src/cli/commands/database/util.d.ts.map +0 -1
  635. package/dist/types/src/cli/commands/index.d.ts.map +0 -1
  636. package/dist/types/src/cli/commands/queue/index.d.ts.map +0 -1
  637. package/dist/types/src/cli/commands/queue/query.d.ts +0 -8
  638. package/dist/types/src/cli/commands/queue/query.d.ts.map +0 -1
  639. package/dist/types/src/cli/commands/queue/util.d.ts.map +0 -1
  640. package/dist/types/src/cli/commands/space/close/close.d.ts +0 -12
  641. package/dist/types/src/cli/commands/space/close/close.d.ts.map +0 -1
  642. package/dist/types/src/cli/commands/space/close/index.d.ts.map +0 -1
  643. package/dist/types/src/cli/commands/space/create/create.d.ts.map +0 -1
  644. package/dist/types/src/cli/commands/space/create/create.test.d.ts.map +0 -1
  645. package/dist/types/src/cli/commands/space/create/index.d.ts.map +0 -1
  646. package/dist/types/src/cli/commands/space/index.d.ts.map +0 -1
  647. package/dist/types/src/cli/commands/space/info/index.d.ts.map +0 -1
  648. package/dist/types/src/cli/commands/space/info/info.d.ts.map +0 -1
  649. package/dist/types/src/cli/commands/space/info/info.test.d.ts.map +0 -1
  650. package/dist/types/src/cli/commands/space/join/index.d.ts.map +0 -1
  651. package/dist/types/src/cli/commands/space/join/join.d.ts.map +0 -1
  652. package/dist/types/src/cli/commands/space/join/util.d.ts.map +0 -1
  653. package/dist/types/src/cli/commands/space/list/index.d.ts.map +0 -1
  654. package/dist/types/src/cli/commands/space/list/list.d.ts.map +0 -1
  655. package/dist/types/src/cli/commands/space/list/list.test.d.ts.map +0 -1
  656. package/dist/types/src/cli/commands/space/members/index.d.ts.map +0 -1
  657. package/dist/types/src/cli/commands/space/members/members.d.ts.map +0 -1
  658. package/dist/types/src/cli/commands/space/members/members.test.d.ts.map +0 -1
  659. package/dist/types/src/cli/commands/space/members/util.d.ts.map +0 -1
  660. package/dist/types/src/cli/commands/space/open/index.d.ts.map +0 -1
  661. package/dist/types/src/cli/commands/space/open/open.d.ts +0 -12
  662. package/dist/types/src/cli/commands/space/open/open.d.ts.map +0 -1
  663. package/dist/types/src/cli/commands/space/schema/index.d.ts.map +0 -1
  664. package/dist/types/src/cli/commands/space/schema/list/index.d.ts.map +0 -1
  665. package/dist/types/src/cli/commands/space/schema/list/list.d.ts.map +0 -1
  666. package/dist/types/src/cli/commands/space/schema/list/list.test.d.ts.map +0 -1
  667. package/dist/types/src/cli/commands/space/schema/list/util.d.ts.map +0 -1
  668. package/dist/types/src/cli/commands/space/share/index.d.ts.map +0 -1
  669. package/dist/types/src/cli/commands/space/share/share.d.ts.map +0 -1
  670. package/dist/types/src/cli/commands/space/sync/index.d.ts.map +0 -1
  671. package/dist/types/src/cli/commands/space/sync/sync.d.ts.map +0 -1
  672. package/dist/types/src/cli/commands/space/sync/sync.test.d.ts.map +0 -1
  673. package/dist/types/src/cli/index.d.ts +0 -2
  674. package/dist/types/src/cli/index.d.ts.map +0 -1
  675. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  676. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +0 -1
  677. package/dist/types/src/components/CreateDialog/index.d.ts.map +0 -1
  678. package/dist/types/src/containers/ObjectRenamePopover/ObjectRenamePopover.d.ts +0 -7
  679. package/dist/types/src/containers/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +0 -1
  680. package/dist/types/src/containers/ObjectRenamePopover/index.d.ts +0 -2
  681. package/dist/types/src/operations/add-schema.d.ts.map +0 -1
  682. package/src/capabilities/migrations.ts +0 -59
  683. package/src/cli/index.ts +0 -5
  684. package/src/containers/ObjectRenamePopover/index.ts +0 -5
  685. package/src/operations/add-schema.ts +0 -51
  686. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/SmallPresenceLive-GUF4WLUC.mjs.map} +0 -0
  687. /package/dist/lib/{browser/meta.mjs.map → neutral/SpacePlugin.mjs.map} +0 -0
  688. /package/dist/lib/{browser/types/index.mjs.map → neutral/SpacePresence-ACEXUS3N.mjs.map} +0 -0
  689. /package/dist/lib/{browser/SpaceSettings-TR2IMHOL.mjs.map → neutral/SpaceSettings-RJWNYZAL.mjs.map} +0 -0
  690. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  691. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  692. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  693. /package/dist/lib/{node-esm → neutral}/meta.mjs.map +0 -0
  694. /package/dist/types/src/{cli/commands → commands}/database/index.d.ts +0 -0
  695. /package/dist/types/src/{cli/commands → commands}/database/query/index.d.ts +0 -0
  696. /package/dist/types/src/{cli/commands → commands}/database/query/query.test.d.ts +0 -0
  697. /package/dist/types/src/{cli/commands → commands}/database/util.d.ts +0 -0
  698. /package/dist/types/src/{cli/commands → commands}/index.d.ts +0 -0
  699. /package/dist/types/src/{cli/commands → commands}/queue/util.d.ts +0 -0
  700. /package/dist/types/src/{cli/commands → commands}/space/close/index.d.ts +0 -0
  701. /package/dist/types/src/{cli/commands → commands}/space/create/create.test.d.ts +0 -0
  702. /package/dist/types/src/{cli/commands → commands}/space/create/index.d.ts +0 -0
  703. /package/dist/types/src/{cli/commands → commands}/space/info/index.d.ts +0 -0
  704. /package/dist/types/src/{cli/commands → commands}/space/info/info.test.d.ts +0 -0
  705. /package/dist/types/src/{cli/commands → commands}/space/join/index.d.ts +0 -0
  706. /package/dist/types/src/{cli/commands → commands}/space/join/util.d.ts +0 -0
  707. /package/dist/types/src/{cli/commands → commands}/space/list/index.d.ts +0 -0
  708. /package/dist/types/src/{cli/commands → commands}/space/list/list.test.d.ts +0 -0
  709. /package/dist/types/src/{cli/commands → commands}/space/members/index.d.ts +0 -0
  710. /package/dist/types/src/{cli/commands → commands}/space/members/members.test.d.ts +0 -0
  711. /package/dist/types/src/{cli/commands → commands}/space/members/util.d.ts +0 -0
  712. /package/dist/types/src/{cli/commands → commands}/space/open/index.d.ts +0 -0
  713. /package/dist/types/src/{cli/commands → commands}/space/schema/list/index.d.ts +0 -0
  714. /package/dist/types/src/{cli/commands → commands}/space/schema/list/list.test.d.ts +0 -0
  715. /package/dist/types/src/{cli/commands → commands}/space/schema/list/util.d.ts +0 -0
  716. /package/dist/types/src/{cli/commands → commands}/space/share/index.d.ts +0 -0
  717. /package/dist/types/src/{cli/commands → commands}/space/sync/index.d.ts +0 -0
  718. /package/dist/types/src/{cli/commands → commands}/space/sync/sync.d.ts +0 -0
  719. /package/dist/types/src/{cli/commands → commands}/space/sync/sync.test.d.ts +0 -0
  720. /package/dist/types/src/components/{CreateDialog → CreateObjectPanel}/index.d.ts +0 -0
  721. /package/src/{cli/commands → commands}/database/index.ts +0 -0
  722. /package/src/{cli/commands → commands}/database/query/index.ts +0 -0
  723. /package/src/{cli/commands → commands}/database/query/query.ts +0 -0
  724. /package/src/{cli/commands → commands}/database/remove.ts +0 -0
  725. /package/src/{cli/commands → commands}/index.ts +0 -0
  726. /package/src/{cli/commands → commands}/queue/index.ts +0 -0
  727. /package/src/{cli/commands → commands}/queue/util.ts +0 -0
  728. /package/src/{cli/commands → commands}/space/close/close.ts +0 -0
  729. /package/src/{cli/commands → commands}/space/close/index.ts +0 -0
  730. /package/src/{cli/commands → commands}/space/create/create.test.ts +0 -0
  731. /package/src/{cli/commands → commands}/space/create/index.ts +0 -0
  732. /package/src/{cli/commands → commands}/space/index.ts +0 -0
  733. /package/src/{cli/commands → commands}/space/info/index.ts +0 -0
  734. /package/src/{cli/commands → commands}/space/info/info.test.ts +0 -0
  735. /package/src/{cli/commands → commands}/space/info/info.ts +0 -0
  736. /package/src/{cli/commands → commands}/space/join/index.ts +0 -0
  737. /package/src/{cli/commands → commands}/space/join/join.ts +0 -0
  738. /package/src/{cli/commands → commands}/space/join/util.ts +0 -0
  739. /package/src/{cli/commands → commands}/space/list/index.ts +0 -0
  740. /package/src/{cli/commands → commands}/space/list/list.ts +0 -0
  741. /package/src/{cli/commands → commands}/space/members/index.ts +0 -0
  742. /package/src/{cli/commands → commands}/space/members/members.test.ts +0 -0
  743. /package/src/{cli/commands → commands}/space/members/members.ts +0 -0
  744. /package/src/{cli/commands → commands}/space/members/util.ts +0 -0
  745. /package/src/{cli/commands → commands}/space/open/index.ts +0 -0
  746. /package/src/{cli/commands → commands}/space/open/open.ts +0 -0
  747. /package/src/{cli/commands → commands}/space/schema/index.ts +0 -0
  748. /package/src/{cli/commands → commands}/space/schema/list/index.ts +0 -0
  749. /package/src/{cli/commands → commands}/space/schema/list/list.test.ts +0 -0
  750. /package/src/{cli/commands → commands}/space/schema/list/util.ts +0 -0
  751. /package/src/{cli/commands → commands}/space/share/index.ts +0 -0
  752. /package/src/{cli/commands → commands}/space/share/share.ts +0 -0
  753. /package/src/{cli/commands → commands}/space/sync/index.ts +0 -0
  754. /package/src/{cli/commands → commands}/space/sync/sync.test.ts +0 -0
  755. /package/src/{cli/commands → commands}/space/sync/sync.ts +0 -0
  756. /package/src/components/{CreateDialog → CreateObjectPanel}/index.ts +0 -0
@@ -6,27 +6,26 @@ import { type Atom } from '@effect-atom/atom-react';
6
6
  import * as Effect from 'effect/Effect';
7
7
  import * as Match from 'effect/Match';
8
8
  import * as Option from 'effect/Option';
9
- import * as Schema from 'effect/Schema';
10
9
 
11
- import { Capability } from '@dxos/app-framework';
12
- import { AppCapabilities, AppNode, LayoutOperation, Segments } from '@dxos/app-toolkit';
10
+ import { Capability, type CapabilityManager } from '@dxos/app-framework';
11
+ import { AppNode, AppNodeMatcher, LayoutOperation, Segments } from '@dxos/app-toolkit';
13
12
  import { type Space, SpaceState, isSpace } from '@dxos/client/echo';
14
- import { Collection, Filter, Obj, Query, Type } from '@dxos/echo';
13
+ import { Operation } from '@dxos/compute';
14
+ import { Annotation, Collection, Filter, Obj, Query, Scope, Type } from '@dxos/echo';
15
15
  import { AtomObj, AtomQuery } from '@dxos/echo-atom';
16
- import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';
17
- import { Operation } from '@dxos/operation';
18
- import { ClientCapabilities } from '@dxos/plugin-client/types';
16
+ import { HiddenAnnotation } from '@dxos/echo/internal';
17
+ import { ClientCapabilities } from '@dxos/plugin-client';
19
18
  import { CreateAtom, GraphBuilder, Node } from '@dxos/plugin-graph';
20
19
  import { ViewAnnotation } from '@dxos/schema';
21
20
  import { createFilename, isNonNullable } from '@dxos/util';
22
21
 
23
22
  import { meta } from '#meta';
24
23
  import { SpaceOperation } from '#operations';
24
+ import { SpaceCapabilities } from '#types';
25
25
 
26
26
  import {
27
27
  ADD_VIEW_TO_SCHEMA_LABEL,
28
28
  BLOCK_REORDER_ABOVE,
29
- type MetadataResolver,
30
29
  SNAPSHOT_BY_SCHEMA_LABEL,
31
30
  STATIC_SCHEMA_TYPE,
32
31
  TYPES_SECTION_TYPE,
@@ -35,25 +34,21 @@ import {
35
34
  createObjectNode,
36
35
  downloadBlob,
37
36
  getDynamicLabel,
38
- whenSpace,
39
37
  } from './shared';
40
38
 
41
39
  //
42
40
  // Extension Factory
43
41
  //
44
42
 
45
- /** Creates type-related extensions: types section, schema nodes, schema children, and schema actions. */
46
- export const createTypeExtensions = Effect.fnUntraced(function* () {
43
+ /** Creates database extensions: types section, schema nodes, schema children, and schema actions. */
44
+ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
47
45
  const capabilities = yield* Capability.Service;
48
46
 
49
- const resolve = (_get: any) => (typename: string) =>
50
- capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
51
-
52
47
  return yield* Effect.all([
53
48
  // Types section virtual node under each space.
54
49
  GraphBuilder.createExtension({
55
- id: 'types-section',
56
- match: whenSpace,
50
+ id: 'typesSection',
51
+ match: AppNodeMatcher.whenSpace,
57
52
  connector: (space, get) => {
58
53
  const spaceState = get(CreateAtom.fromObservable(space.state));
59
54
  if (spaceState !== SpaceState.SPACE_READY) {
@@ -65,8 +60,9 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
65
60
  id: Segments.types,
66
61
  type: TYPES_SECTION_TYPE,
67
62
  label: ['types-section.label', { ns: meta.id }],
68
- icon: 'ph--shapes--regular',
63
+ icon: 'ph--database--regular',
69
64
  space,
65
+ position: 'last',
70
66
  testId: 'spacePlugin.typesSection',
71
67
  }),
72
68
  ]);
@@ -81,21 +77,24 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
81
77
  return node.type === TYPES_SECTION_TYPE && space ? Option.some(space) : Option.none();
82
78
  },
83
79
  connector: (space, get) => {
80
+ // Persisted types live in the space db; static/runtime types live in the shared registry.
81
+ // Fan across both so the space's own types appear without leaking other spaces' types.
84
82
  const allSchemas = get(
85
- AtomQuery.fromQuery(space.db.schemaRegistry.query({ location: ['database', 'runtime'] })),
83
+ AtomQuery.make(space.db, Query.select(Filter.type(Type.Type)).from(Scope.space(), Scope.registry())),
86
84
  );
87
85
 
88
- const userSchemas = allSchemas.filter((schema) => {
89
- if (getTypeAnnotation(schema)?.kind === EntityKind.Relation) {
86
+ const userSchemas = allSchemas.filter((type) => {
87
+ if (Type.isRelation(type)) {
90
88
  return false;
91
89
  }
92
- if (SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false))) {
90
+ if (Type.isTypeKind(type)) {
93
91
  return false;
94
92
  }
95
- if (ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false))) {
93
+ const schema = Type.getSchema(type);
94
+ if (HiddenAnnotation.get(schema).pipe(Option.getOrElse(() => false))) {
96
95
  return false;
97
96
  }
98
- if (Type.getTypename(schema) === Collection.Collection.typename) {
97
+ if (Type.getTypename(type) === Type.getTypename(Collection.Collection)) {
99
98
  return false;
100
99
  }
101
100
  return true;
@@ -104,36 +103,33 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
104
103
  const viewIndex = buildViewIndex(get, space, allSchemas);
105
104
 
106
105
  const visibleSchemas = userSchemas.filter((schema) => {
107
- if (Type.isMutable(schema)) {
106
+ if (Type.getDatabase(schema) != null) {
108
107
  return true;
109
108
  }
110
109
  const typename = Type.getTypename(schema);
111
110
  const objects = get(AtomQuery.make(space.db, Filter.typename(typename)));
111
+ if (ViewAnnotation.has(schema)) {
112
+ return objects.some((obj) => !viewIndex.isView(obj));
113
+ }
112
114
  return objects.length > 0 || viewIndex.typenamesWithViews.has(typename);
113
115
  });
114
116
 
115
- return Effect.succeed(
116
- visibleSchemas.map((schema) => createSchemaNode({ schema, space, resolve: resolve(get), get })),
117
- );
117
+ return Effect.succeed(visibleSchemas.map((schema) => createSchemaNode({ schema, space, get })));
118
118
  },
119
119
  }),
120
120
 
121
121
  // {All} virtual node + view objects under each schema node.
122
122
  GraphBuilder.createExtension({
123
- id: 'schema-children',
123
+ id: 'schemaChildren',
124
124
  match: (node) => {
125
125
  const space = isSpace(node.properties.space) ? node.properties.space : undefined;
126
- return space && (Obj.instanceOf(Type.PersistentType, node.data) || Schema.isSchema(node.data))
127
- ? Option.some({ space, schema: node.data })
128
- : Option.none();
126
+ return space && Type.isType(node.data) ? Option.some({ space, schema: node.data }) : Option.none();
129
127
  },
130
128
  connector: ({ space, schema }, get) => {
131
129
  const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);
132
- const schemas = client
133
- ? get(AtomQuery.fromQuery(client.graph.schemaRegistry.query({ location: ['runtime'] })))
134
- : [];
130
+ const schemas = client ? get(AtomQuery.make(client.graph.registry, Filter.type(Type.Type))) : [];
135
131
 
136
- const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.AnyObj) : schema.typename;
132
+ const typename = Type.getTypename(schema);
137
133
 
138
134
  // {All} virtual node.
139
135
  const allNode = Node.make({
@@ -157,12 +153,11 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
157
153
  // View objects for this schema.
158
154
  const viewIndex = buildViewIndex(get, space, schemas);
159
155
  const viewNodes = viewIndex
160
- .getViewsForTypename(typename)
156
+ .getViewsForTypename(typename!)
161
157
  .map((object: Obj.Unknown) =>
162
158
  createObjectNode({
163
159
  db: space.db,
164
160
  object,
165
- resolve: resolve(get),
166
161
  droppable: false,
167
162
  }),
168
163
  )
@@ -174,7 +169,7 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
174
169
 
175
170
  // Objects of the schema type under the {All} node.
176
171
  GraphBuilder.createExtension({
177
- id: 'type-collection-objects',
172
+ id: 'typeCollectionObjects',
178
173
  match: (node) => {
179
174
  if (node.type !== TYPE_COLLECTION_TYPE || !node.data?.space || !node.data?.typename) {
180
175
  return Option.none();
@@ -182,7 +177,12 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
182
177
  return Option.some({ space: node.data.space as Space, typename: node.data.typename as string });
183
178
  },
184
179
  connector: ({ space, typename }, get) => {
185
- const objects = get(AtomQuery.make(space.db, Filter.typename(typename)));
180
+ const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);
181
+ const schemas = client ? get(AtomQuery.make(client.graph.registry, Filter.type(Type.Type))) : [];
182
+ const viewIndex = buildViewIndex(get, space, schemas);
183
+ const objects = get(AtomQuery.make(space.db, Filter.typename(typename))).filter(
184
+ (object: Obj.Unknown) => !viewIndex.isView(object) && !Obj.getParent(object),
185
+ );
186
186
 
187
187
  return Effect.succeed(
188
188
  objects
@@ -191,7 +191,6 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
191
191
  return createObjectNode({
192
192
  db: space.db,
193
193
  object,
194
- resolve: resolve(get),
195
194
  droppable: false,
196
195
  });
197
196
  })
@@ -207,30 +206,21 @@ export const createTypeExtensions = Effect.fnUntraced(function* () {
207
206
 
208
207
  // Actions for schema nodes.
209
208
  GraphBuilder.createExtension({
210
- id: 'schema-actions',
209
+ id: 'schemaActions',
211
210
  match: (node) => {
212
211
  const space = isSpace(node.properties.space) ? node.properties.space : undefined;
213
- return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();
212
+ return space && Type.isType(node.data) ? Option.some({ space, schema: node.data }) : Option.none();
214
213
  },
215
214
  actions: ({ space, schema }, get) => {
216
215
  const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);
217
- const schemas = client
218
- ? get(AtomQuery.fromQuery(client.graph.schemaRegistry.query({ location: ['runtime'] })))
219
- : [];
216
+ const schemas = client ? get(AtomQuery.make(client.graph.registry, Filter.type(Type.Type))) : [];
220
217
 
221
- const targetTypename = Type.getTypename(schema as Type.AnyObj);
218
+ const targetTypename = Type.getTypename(schema);
222
219
  const viewIndex = buildViewIndex(get, space, schemas);
223
220
  const deletable =
224
- Type.isMutable(schema as Type.AnyObj) && viewIndex.getViewsForTypename(targetTypename).length === 0;
221
+ Type.getDatabase(schema) != null && viewIndex.getViewsForTypename(targetTypename).length === 0;
225
222
 
226
- return Effect.succeed(
227
- createSchemaActions({
228
- schema: schema as Type.AnyObj,
229
- space,
230
- deletable,
231
- resolve: resolve(get),
232
- }),
233
- );
223
+ return Effect.succeed(createSchemaActions({ type: schema, space, deletable, capabilities }));
234
224
  },
235
225
  }),
236
226
  ]);
@@ -254,32 +244,39 @@ const uniqueSchemasByTypename = <TSchema extends Type.AnyEntity>(schemas: TSchem
254
244
  const createSchemaNode = ({
255
245
  schema,
256
246
  space,
257
- resolve,
258
247
  get,
259
248
  }: {
260
249
  schema: Type.AnyEntity;
261
250
  space: Space;
262
- resolve: MetadataResolver;
263
251
  get: Atom.Context;
264
252
  }): Node.NodeArg<Type.AnyEntity> => {
265
253
  const typename = Type.getTypename(schema);
266
- const metadata = resolve(typename);
254
+ const iconAnnotation =
255
+ Type.getDatabase(schema) == null
256
+ ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(schema)))
257
+ : undefined;
267
258
  const { label, nodeId } = Match.value(schema).pipe(
268
- Match.when(Type.isMutable, (mutableSchema) => {
269
- const persistentSchema = mutableSchema.persistentSchema;
270
- const snapshot = get(AtomObj.make(persistentSchema));
271
- return {
272
- label: snapshot.name || ['object-name.placeholder', { ns: Type.PersistentType.typename }],
273
- nodeId: typename,
274
- };
275
- }),
259
+ Match.when(
260
+ (value: Type.AnyEntity) => Type.getDatabase(value) != null,
261
+ (mutableSchema) => {
262
+ const snapshot = get(AtomObj.make(mutableSchema));
263
+ return {
264
+ label: (snapshot as { name?: string }).name || [
265
+ 'object-name.placeholder',
266
+ { ns: Type.getTypename(Type.Type) },
267
+ ],
268
+ nodeId: typename,
269
+ };
270
+ },
271
+ ),
276
272
  Match.orElse(() => ({
277
- label: getDynamicLabel('typename.label', typename, { count: 2, default: typename }),
273
+ label: getDynamicLabel('typename.label', typename, { count: 2, defaultValue: typename }),
278
274
  nodeId: typename,
279
275
  })),
280
276
  );
281
- const icon = Type.isMutable(schema) ? 'ph--cube--regular' : (metadata.icon ?? 'ph--placeholder--regular');
282
- const iconHue = Type.isMutable(schema) ? 'neutral' : metadata.iconHue;
277
+ const icon =
278
+ Type.getDatabase(schema) != null ? 'ph--cube--regular' : (iconAnnotation?.icon ?? 'ph--circle-dashed--regular');
279
+ const iconHue = Type.getDatabase(schema) != null ? 'neutral' : iconAnnotation?.hue;
283
280
  return Node.make({
284
281
  id: nodeId,
285
282
  type: STATIC_SCHEMA_TYPE,
@@ -301,20 +298,22 @@ const createSchemaNode = ({
301
298
 
302
299
  /** Builds schema actions (add view, rename, delete, snapshot). */
303
300
  const createSchemaActions = ({
304
- schema,
301
+ type,
305
302
  space,
306
303
  deletable,
307
- resolve,
304
+ capabilities,
308
305
  }: {
309
- schema: Type.AnyObj;
306
+ type: Type.AnyEntity;
310
307
  space: Space;
311
308
  deletable: boolean;
312
- resolve: MetadataResolver;
309
+ capabilities: CapabilityManager.CapabilityManager;
313
310
  }) => {
314
- const typename = Type.getTypename(schema);
315
- const metadata = resolve(typename);
316
- const createObjectFn = metadata.createObject;
317
- const inputSchema = metadata.inputSchema;
311
+ const typename = Type.getTypename(type);
312
+ const createEntry = capabilities
313
+ .getAll(SpaceCapabilities.CreateObjectEntry)
314
+ .find((entry: SpaceCapabilities.CreateObjectEntry) => entry.id === typename);
315
+ const createObjectFn = createEntry?.createObject;
316
+ const inputSchema = createEntry?.inputSchema;
318
317
 
319
318
  const actions: Node.NodeArg<Node.ActionData<Operation.Service>>[] = [
320
319
  ...(createObjectFn
@@ -328,11 +327,9 @@ const createSchemaActions = ({
328
327
  typename,
329
328
  });
330
329
  } else {
331
- const result = yield* createObjectFn({}, { db: space.db, target: space.db }) as Effect.Effect<
332
- { subject: readonly string[] },
333
- Error,
334
- never
335
- >;
330
+ const result = yield* createObjectFn({}, { db: space.db, target: space.db }).pipe(
331
+ Effect.provideService(Capability.Service, capabilities),
332
+ );
336
333
  if (result.subject.length > 0) {
337
334
  yield* Operation.invoke(LayoutOperation.Open, {
338
335
  subject: [...result.subject],
@@ -356,7 +353,7 @@ const createSchemaActions = ({
356
353
  Operation.invoke(SpaceOperation.OpenCreateObject, {
357
354
  target: space.db,
358
355
  views: true,
359
- initialFormValues: { typename: Type.getTypename(schema) },
356
+ initialFormValues: { typename: Type.getTypename(type) },
360
357
  }),
361
358
  properties: {
362
359
  label: ADD_VIEW_TO_SCHEMA_LABEL,
@@ -368,16 +365,16 @@ const createSchemaActions = ({
368
365
  Node.makeAction({
369
366
  id: SpaceOperation.RenameObject.meta.key,
370
367
  data: (params?: Node.InvokeProps) =>
371
- Type.isMutable(schema)
368
+ Type.getDatabase(type) != null
372
369
  ? Operation.invoke(SpaceOperation.RenameObject, {
373
- object: (schema as Type.RuntimeType).persistentSchema as any,
370
+ object: type,
374
371
  caller: `${params?.caller}:${params?.parent?.id}`,
375
372
  })
376
373
  : Effect.fail(new Error('Cannot rename immutable schema')),
377
374
  properties: {
378
- label: getDynamicLabel('rename object label', Type.getTypename(Type.PersistentType)),
375
+ label: getDynamicLabel('rename-object.label', Type.getTypename(Type.Type)),
379
376
  icon: 'ph--pencil-simple-line--regular',
380
- disabled: !Type.isMutable(schema),
377
+ disabled: Type.getDatabase(type) == null,
381
378
  disposition: 'list-item',
382
379
  testId: 'spacePlugin.renameObject',
383
380
  },
@@ -385,13 +382,13 @@ const createSchemaActions = ({
385
382
  Node.makeAction({
386
383
  id: SpaceOperation.RemoveObjects.meta.key,
387
384
  data: () =>
388
- Type.isMutable(schema)
385
+ Type.getDatabase(type) != null
389
386
  ? Operation.invoke(SpaceOperation.RemoveObjects, {
390
- objects: [(schema as Type.RuntimeType).persistentSchema as Obj.Unknown],
387
+ objects: [type],
391
388
  })
392
389
  : Effect.succeed(undefined),
393
390
  properties: {
394
- label: getDynamicLabel('delete object label', Type.getTypename(Type.PersistentType)),
391
+ label: getDynamicLabel('delete object label', Type.getTypename(Type.Type)),
395
392
  icon: 'ph--trash--regular',
396
393
  disposition: 'list-item',
397
394
  disabled: !deletable,
@@ -403,11 +400,11 @@ const createSchemaActions = ({
403
400
  data: Effect.fnUntraced(function* () {
404
401
  const result = yield* Operation.invoke(SpaceOperation.Snapshot, {
405
402
  db: space.db,
406
- query: Query.select(Filter.type(schema)).ast,
403
+ query: Query.select(Filter.type(type)).ast,
407
404
  });
408
405
  if (result.snapshot) {
409
406
  yield* Effect.tryPromise(() =>
410
- downloadBlob(result.snapshot, createFilename({ parts: [space.id, Type.getTypename(schema)], ext: 'json' })),
407
+ downloadBlob(result.snapshot, createFilename({ parts: [space.id, Type.getTypename(type)], ext: 'json' })),
411
408
  );
412
409
  }
413
410
  }),
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  export { createSpaceExtensions } from './spaces';
6
- export { createTypeExtensions } from './types';
6
+ export { createDatabaseExtensions } from './database';
7
7
  export { createCollectionExtensions } from './collections';
8
8
  export { createCompanionExtensions } from './companions';
9
9
  export { createSettingsExtensions } from './settings';
@@ -3,23 +3,54 @@
3
3
  //
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
+ import * as Option from 'effect/Option';
6
7
 
7
- import { isPersonalSpace } from '@dxos/app-toolkit';
8
- import { GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';
8
+ import { AppNode, AppNodeMatcher, isPersonalSpace } from '@dxos/app-toolkit';
9
+ import { type Space, isSpace } from '@dxos/client/echo';
10
+ import { GraphBuilder, Node } from '@dxos/plugin-graph';
9
11
 
10
12
  import { meta } from '#meta';
13
+ import { SETTINGS_SECTION_ID, SETTINGS_SECTION_TYPE } from '#types';
11
14
 
12
15
  //
13
16
  // Extension Factory
14
17
  //
15
18
 
16
- /** Creates the settings-sections extension for space settings panel. */
19
+ /**
20
+ * Settings section attached directly under each Space node, plus its children.
21
+ *
22
+ * The virtual `settings` section is pinned to the top via `position: 'first'`
23
+ * so it sits above the un-positioned middle band (collections, mailboxes,
24
+ * automations, integrations, etc.). It groups the panels contributed by this
25
+ * plugin (general, members) and by other plugins (automation, functions).
26
+ */
17
27
  export const createSettingsExtensions = Effect.fnUntraced(function* () {
18
- const extension = yield* GraphBuilder.createExtension({
19
- id: 'settings-sections',
20
- match: NodeMatcher.whenNodeType(`${meta.id}.settings`),
21
- connector: (node) => {
22
- const personal = node.properties.space && isPersonalSpace(node.properties.space);
28
+ const sectionExtension = yield* GraphBuilder.createExtension({
29
+ id: 'settingsSection',
30
+ match: AppNodeMatcher.whenSpace,
31
+ connector: (space) =>
32
+ Effect.succeed([
33
+ AppNode.makeSection({
34
+ id: SETTINGS_SECTION_ID,
35
+ type: SETTINGS_SECTION_TYPE,
36
+ label: ['settings-section.label', { ns: meta.id }],
37
+ icon: 'ph--sliders--regular',
38
+ iconHue: 'indigo',
39
+ space,
40
+ position: 'first',
41
+ testId: 'spacePlugin.settings',
42
+ }),
43
+ ]),
44
+ });
45
+
46
+ const childrenExtension = yield* GraphBuilder.createExtension({
47
+ id: 'settingsSections',
48
+ match: (node) => {
49
+ const space = isSpace(node.properties.space) ? (node.properties.space as Space) : undefined;
50
+ return node.type === SETTINGS_SECTION_TYPE && space ? Option.some(space) : Option.none();
51
+ },
52
+ connector: (space) => {
53
+ const personal = isPersonalSpace(space);
23
54
  return Effect.succeed([
24
55
  Node.make({
25
56
  id: 'general',
@@ -27,8 +58,9 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
27
58
  data: `${meta.id}.general`,
28
59
  properties: {
29
60
  label: ['space-settings-properties.label', { ns: meta.id }],
30
- icon: 'ph--sliders--regular',
31
- position: 'hoist',
61
+ icon: 'ph--brackets-curly--regular',
62
+ iconHue: 'indigo',
63
+ space,
32
64
  testId: 'spacePlugin.general',
33
65
  },
34
66
  }),
@@ -41,24 +73,16 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
41
73
  properties: {
42
74
  label: ['members-panel.label', { ns: meta.id }],
43
75
  icon: 'ph--users--regular',
44
- position: 'hoist',
76
+ iconHue: 'indigo',
77
+ space,
45
78
  testId: 'spacePlugin.members',
46
79
  },
47
80
  }),
48
81
  ]
49
82
  : []),
50
- Node.make({
51
- id: 'schema',
52
- type: `${meta.id}.schema`,
53
- data: `${meta.id}.schema`,
54
- properties: {
55
- label: ['space-settings-schema.label', { ns: meta.id }],
56
- icon: 'ph--shapes--regular',
57
- testId: 'spacePlugin.schema',
58
- },
59
- }),
60
83
  ]);
61
84
  },
62
85
  });
63
- return [extension];
86
+
87
+ return [sectionExtension, childrenExtension];
64
88
  });
@@ -6,32 +6,23 @@ import * as Registry from '@effect-atom/atom/Registry';
6
6
  import * as Schema from 'effect/Schema';
7
7
  import { afterEach, beforeEach, describe, test } from 'vitest';
8
8
 
9
- import { Filter, Obj, Query, Ref, Type, View } from '@dxos/echo';
9
+ import { type Space, SpaceState } from '@dxos/client/echo';
10
+ import { Annotation, DXN, Entity, Filter, Obj, Query, Ref, Type, View } from '@dxos/echo';
10
11
  import { type EchoDatabase } from '@dxos/echo-db';
11
12
  import { EchoTestBuilder } from '@dxos/echo-db/testing';
13
+ import { MigrationVersionAnnotation, Migrations } from '@dxos/migrations';
12
14
  import { ViewAnnotation } from '@dxos/schema';
13
15
 
14
- import { buildViewIndex } from './shared';
16
+ import { buildViewIndex, checkPendingMigration } from './shared';
15
17
 
16
18
  const TestContact = Schema.Struct({
17
19
  name: Schema.String,
18
- }).pipe(
19
- Type.object({
20
- typename: 'test/Contact',
21
- version: '0.1.0',
22
- }),
23
- );
20
+ }).pipe(Type.makeObject(DXN.make('com.example.type.contact', '0.1.0')));
24
21
 
25
22
  const TestViewWrapper = Schema.Struct({
26
23
  name: Schema.optional(Schema.String),
27
24
  view: Ref.Ref(View.View),
28
- }).pipe(
29
- Type.object({
30
- typename: 'test/ViewWrapper',
31
- version: '0.1.0',
32
- }),
33
- ViewAnnotation.set(true),
34
- );
25
+ }).pipe(ViewAnnotation.set(['view']), Type.makeObject(DXN.make('com.example.type.viewWrapper', '0.1.0')));
35
26
 
36
27
  describe('buildViewIndex', () => {
37
28
  let testBuilder: EchoTestBuilder;
@@ -58,7 +49,10 @@ describe('buildViewIndex', () => {
58
49
  db.add(Obj.make(TestViewWrapper, { view: Ref.make(viewObj) }));
59
50
  await db.flush();
60
51
 
61
- const allSchemas = db.schemaRegistry.query({ location: ['runtime'] }).runSync();
52
+ const allSchemas = db.graph.registry
53
+ .list()
54
+ .filter(Type.isType)
55
+ .filter((t) => !Type.isTypeKind(t));
62
56
  const viewIndex = buildViewIndex(registry.get.bind(registry) as any, { db } as any, allSchemas);
63
57
 
64
58
  expect(viewIndex.typenamesWithViews.has(Type.getTypename(TestContact))).toBe(true);
@@ -73,7 +67,10 @@ describe('buildViewIndex', () => {
73
67
  db.add(Obj.make(TestViewWrapper, { view: Ref.make(viewObj) }));
74
68
  await db.flush();
75
69
 
76
- const allSchemas = db.schemaRegistry.query({ location: ['runtime'] }).runSync();
70
+ const allSchemas = db.graph.registry
71
+ .list()
72
+ .filter(Type.isType)
73
+ .filter((t) => !Type.isTypeKind(t));
77
74
  const viewIndex = buildViewIndex(registry.get.bind(registry) as any, { db } as any, allSchemas);
78
75
 
79
76
  expect(viewIndex.typenamesWithViews.has(Type.getTypename(TestContact))).toBe(false);
@@ -89,7 +86,10 @@ describe('buildViewIndex', () => {
89
86
  const tableView = db.add(Obj.make(TestViewWrapper, { view: Ref.make(viewObj) }));
90
87
  await db.flush();
91
88
 
92
- const allSchemas = db.schemaRegistry.query({ location: ['runtime'] }).runSync();
89
+ const allSchemas = db.graph.registry
90
+ .list()
91
+ .filter(Type.isType)
92
+ .filter((t) => !Type.isTypeKind(t));
93
93
  const viewIndex = buildViewIndex(registry.get.bind(registry) as any, { db } as any, allSchemas);
94
94
 
95
95
  const views = viewIndex.getViewsForTypename(Type.getTypename(TestContact));
@@ -100,13 +100,71 @@ describe('buildViewIndex', () => {
100
100
  test('returns empty index when no view schemas exist', async ({ expect }) => {
101
101
  await db.flush();
102
102
 
103
- const userSchemas = db.schemaRegistry
104
- .query({ location: ['runtime'] })
105
- .runSync()
106
- .filter((schema) => !ViewAnnotation.get(schema).pipe((opt) => opt._tag === 'Some' && opt.value));
103
+ const userSchemas = db.graph.registry
104
+ .list()
105
+ .filter(Type.isType)
106
+ .filter((t) => !Type.isTypeKind(t))
107
+ .filter((schema) => !ViewAnnotation.has(schema));
107
108
  const viewIndex = buildViewIndex(registry.get.bind(registry) as any, { db } as any, userSchemas);
108
109
 
109
110
  expect(viewIndex.typenamesWithViews.size).toBe(0);
110
111
  expect(viewIndex.getViewsForTypename(Type.getTypename(TestContact))).toHaveLength(0);
111
112
  });
112
113
  });
114
+
115
+ describe('checkPendingMigration', () => {
116
+ const TARGET = '1970-01-02';
117
+
118
+ // Minimal fake exercising only the fields checkPendingMigration reads (state, properties).
119
+ // Must pass isEntity (checks for Entity.KindId) and have Obj.Meta so Annotation.get works.
120
+ const makeFakeProperties = (version?: string): Record<string | symbol, unknown> => {
121
+ const annotations: Record<string, unknown> = {};
122
+ if (version !== undefined) {
123
+ Annotation.setDictionary(annotations as any, MigrationVersionAnnotation, version);
124
+ }
125
+ return {
126
+ [Entity.KindId]: Entity.Kind.Object,
127
+ [Obj.Meta]: { keys: [], annotations },
128
+ };
129
+ };
130
+
131
+ const makeFakeSpace = (state: SpaceState, version?: string): Space =>
132
+ ({ state: { get: () => state }, properties: makeFakeProperties(version) }) as unknown as Space;
133
+
134
+ let savedNamespace: string | undefined;
135
+ let savedMigrations: typeof Migrations.migrations;
136
+
137
+ beforeEach(() => {
138
+ savedNamespace = Migrations.namespace;
139
+ savedMigrations = Migrations.migrations;
140
+ Migrations.define('test', [
141
+ { version: '1970-01-01', next: async () => {} },
142
+ { version: TARGET, next: async () => {} },
143
+ ]);
144
+ });
145
+
146
+ afterEach(() => {
147
+ Migrations.namespace = savedNamespace;
148
+ Migrations.migrations = savedMigrations;
149
+ });
150
+
151
+ test('SPACE_REQUIRES_MIGRATION is pending regardless of version property', ({ expect }) => {
152
+ const space = makeFakeSpace(SpaceState.SPACE_REQUIRES_MIGRATION, TARGET);
153
+ expect(checkPendingMigration(space)).toBe(true);
154
+ });
155
+
156
+ test('READY with version matching target is not pending', ({ expect }) => {
157
+ const space = makeFakeSpace(SpaceState.SPACE_READY, TARGET);
158
+ expect(checkPendingMigration(space)).toBe(false);
159
+ });
160
+
161
+ test('READY with undefined version is pending (legacy property-migration preserved)', ({ expect }) => {
162
+ const space = makeFakeSpace(SpaceState.SPACE_READY);
163
+ expect(checkPendingMigration(space)).toBe(true);
164
+ });
165
+
166
+ test('READY with stale version is pending', ({ expect }) => {
167
+ const space = makeFakeSpace(SpaceState.SPACE_READY, '1970-01-01');
168
+ expect(checkPendingMigration(space)).toBe(true);
169
+ });
170
+ });