@dxos/plugin-space 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb

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 (231) hide show
  1. package/dist/lib/browser/CollectionArticle-LKTAABXP.mjs +128 -0
  2. package/dist/lib/browser/CollectionArticle-LKTAABXP.mjs.map +7 -0
  3. package/dist/lib/browser/{ObjectCardStack-TWHN6C2Y.mjs → ObjectCardStack-CXNBCSMR.mjs} +2 -2
  4. package/dist/lib/browser/ObjectCardStack-CXNBCSMR.mjs.map +7 -0
  5. package/dist/lib/browser/{ObjectDetails-GEDIISKK.mjs → ObjectDetails-HXV4IQEM.mjs} +6 -5
  6. package/dist/lib/browser/ObjectDetails-HXV4IQEM.mjs.map +7 -0
  7. package/dist/lib/browser/{RecordArticle-W57QE7QV.mjs → RecordArticle-36LDKFWF.mjs} +11 -10
  8. package/dist/lib/browser/RecordArticle-36LDKFWF.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-SJHTZXZF.mjs → app-graph-builder-GLV46QSI.mjs} +26 -19
  10. package/dist/lib/browser/app-graph-builder-GLV46QSI.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-7AT7QMSK.mjs → app-graph-serializer-VOLRDNVE.mjs} +9 -8
  12. package/dist/lib/browser/app-graph-serializer-VOLRDNVE.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-ZT2VPYRM.mjs → chunk-7D63MVRS.mjs} +3 -3
  14. package/dist/lib/browser/chunk-7D63MVRS.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-4WZUGLQQ.mjs → chunk-A7ZCVQGZ.mjs} +10 -9
  16. package/dist/lib/browser/chunk-A7ZCVQGZ.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-CCRSHECL.mjs → chunk-KGLWYGIF.mjs} +4 -3
  18. package/dist/lib/browser/chunk-KGLWYGIF.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-AWVAX26X.mjs → chunk-NF3ZFAB4.mjs} +2 -2
  20. package/dist/lib/browser/{chunk-SUI34XSA.mjs → chunk-WAOJLA2S.mjs} +12 -12
  21. package/dist/lib/browser/chunk-WAOJLA2S.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-3X2EA2OA.mjs → chunk-XRTOZE23.mjs} +128 -137
  23. package/dist/lib/browser/chunk-XRTOZE23.mjs.map +7 -0
  24. package/dist/lib/browser/cli/index.mjs +31 -29
  25. package/dist/lib/browser/cli/index.mjs.map +3 -3
  26. package/dist/lib/browser/index.mjs +58 -53
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/{operation-resolver-SIRQT36Z.mjs → operation-resolver-PJJ3PCM7.mjs} +45 -42
  30. package/dist/lib/browser/operation-resolver-PJJ3PCM7.mjs.map +7 -0
  31. package/dist/lib/browser/{react-root-PI7VTZUZ.mjs → react-root-MRIDHLHH.mjs} +8 -8
  32. package/dist/lib/browser/react-root-MRIDHLHH.mjs.map +7 -0
  33. package/dist/lib/browser/{react-surface-BPE7VWI7.mjs → react-surface-ARZZ343H.mjs} +38 -37
  34. package/dist/lib/browser/react-surface-ARZZ343H.mjs.map +7 -0
  35. package/dist/lib/browser/{repair-CJG26D52.mjs → repair-DKU4TUD2.mjs} +2 -2
  36. package/dist/lib/browser/{settings-ZS2AQ73E.mjs → settings-M2DMD2ZA.mjs} +5 -4
  37. package/dist/lib/browser/settings-M2DMD2ZA.mjs.map +7 -0
  38. package/dist/lib/browser/{spaces-ready-OQDGWUOS.mjs → spaces-ready-XWJUJ43N.mjs} +13 -12
  39. package/dist/lib/browser/spaces-ready-XWJUJ43N.mjs.map +7 -0
  40. package/dist/lib/browser/{state-7YZQB2KY.mjs → state-V637BLIM.mjs} +5 -5
  41. package/dist/lib/browser/state-V637BLIM.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +1 -1
  43. package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs +129 -0
  44. package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs.map +7 -0
  45. package/dist/lib/node-esm/{ObjectCardStack-C5ZXRKP7.mjs → ObjectCardStack-EHXPNRQW.mjs} +2 -2
  46. package/dist/lib/node-esm/ObjectCardStack-EHXPNRQW.mjs.map +7 -0
  47. package/dist/lib/node-esm/{ObjectDetails-6ZLDRKCO.mjs → ObjectDetails-N73UI4ZL.mjs} +6 -5
  48. package/dist/lib/node-esm/ObjectDetails-N73UI4ZL.mjs.map +7 -0
  49. package/dist/lib/node-esm/{RecordArticle-SSV74Z46.mjs → RecordArticle-CMEXNNOZ.mjs} +11 -10
  50. package/dist/lib/node-esm/RecordArticle-CMEXNNOZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/{app-graph-builder-HZ3XXDFZ.mjs → app-graph-builder-KCEHEKVS.mjs} +26 -19
  52. package/dist/lib/node-esm/app-graph-builder-KCEHEKVS.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-serializer-WJ2TIQG6.mjs → app-graph-serializer-7C4MV5NB.mjs} +9 -8
  54. package/dist/lib/node-esm/app-graph-serializer-7C4MV5NB.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-2SW6S2BB.mjs → chunk-5N3YIAXD.mjs} +3 -3
  56. package/dist/lib/node-esm/chunk-5N3YIAXD.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-JOBIWCBC.mjs → chunk-A5A7M37T.mjs} +10 -9
  58. package/dist/lib/node-esm/chunk-A5A7M37T.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-7KMYUWSR.mjs → chunk-FB5YNROS.mjs} +12 -12
  60. package/dist/lib/node-esm/chunk-FB5YNROS.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-MPL6NHQX.mjs → chunk-NYSDQPNM.mjs} +4 -3
  62. package/dist/lib/node-esm/chunk-NYSDQPNM.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-HREWB23G.mjs → chunk-PG7DNOEX.mjs} +2 -2
  64. package/dist/lib/node-esm/{chunk-EYS3L2NO.mjs → chunk-QDIOQTXY.mjs} +128 -137
  65. package/dist/lib/node-esm/chunk-QDIOQTXY.mjs.map +7 -0
  66. package/dist/lib/node-esm/cli/index.mjs +31 -29
  67. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  68. package/dist/lib/node-esm/index.mjs +58 -53
  69. package/dist/lib/node-esm/index.mjs.map +3 -3
  70. package/dist/lib/node-esm/meta.json +1 -1
  71. package/dist/lib/node-esm/{operation-resolver-ZE3XJL5J.mjs → operation-resolver-2K7N4KYC.mjs} +45 -42
  72. package/dist/lib/node-esm/operation-resolver-2K7N4KYC.mjs.map +7 -0
  73. package/dist/lib/node-esm/{react-root-KUXM33JI.mjs → react-root-LKSSWFGF.mjs} +8 -8
  74. package/dist/lib/node-esm/react-root-LKSSWFGF.mjs.map +7 -0
  75. package/dist/lib/node-esm/{react-surface-STCQKUZ4.mjs → react-surface-QG5RNBPD.mjs} +38 -37
  76. package/dist/lib/node-esm/react-surface-QG5RNBPD.mjs.map +7 -0
  77. package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs → repair-C2H6JQCL.mjs} +2 -2
  78. package/dist/lib/node-esm/{settings-PVI2VG56.mjs → settings-VCPCNBOY.mjs} +5 -4
  79. package/dist/lib/node-esm/settings-VCPCNBOY.mjs.map +7 -0
  80. package/dist/lib/node-esm/{spaces-ready-R744OHQG.mjs → spaces-ready-5JOGEWON.mjs} +13 -12
  81. package/dist/lib/node-esm/spaces-ready-5JOGEWON.mjs.map +7 -0
  82. package/dist/lib/node-esm/{state-XE5YGPHM.mjs → state-5MCEPWN3.mjs} +5 -5
  83. package/dist/lib/node-esm/state-5MCEPWN3.mjs.map +7 -0
  84. package/dist/lib/node-esm/types/index.mjs +1 -1
  85. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +2 -1
  87. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +1 -1
  89. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +2 -2
  91. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +1 -1
  93. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  95. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  97. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  100. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  102. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/settings/index.d.ts +1 -1
  104. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/settings/settings.d.ts +3 -2
  106. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/spaces-ready/spaces-ready.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
  109. package/dist/types/src/cli/commands/database/add.d.ts.map +1 -1
  110. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  111. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  112. package/dist/types/src/components/CollectionArticle.d.ts +2 -2
  113. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -1
  114. package/dist/types/src/components/CollectionSection.d.ts +1 -1
  115. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  116. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  117. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1 -1
  118. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +4 -1
  119. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  120. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -1
  121. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -1
  122. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1 -1
  123. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +1 -1
  124. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -1
  125. package/dist/types/src/components/RecordArticle.d.ts +1 -1
  126. package/dist/types/src/components/RecordArticle.d.ts.map +1 -1
  127. package/dist/types/src/components/RecordArticle.stories.d.ts +1 -1
  128. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  130. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  131. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -1
  132. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +4 -1
  133. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +4 -1
  135. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/index.d.ts +3 -3
  137. package/dist/types/src/components/index.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  139. package/dist/types/src/types/events.d.ts.map +1 -1
  140. package/dist/types/src/types/types.d.ts +18 -12
  141. package/dist/types/src/types/types.d.ts.map +1 -1
  142. package/dist/types/src/util.d.ts +2 -1
  143. package/dist/types/src/util.d.ts.map +1 -1
  144. package/dist/types/tsconfig.tsbuildinfo +1 -1
  145. package/package.json +66 -65
  146. package/src/SpacePlugin.ts +59 -40
  147. package/src/capabilities/app-graph-builder/app-graph-builder.ts +17 -13
  148. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +5 -4
  149. package/src/capabilities/operation-resolver/operation-resolver.ts +31 -29
  150. package/src/capabilities/react-root/react-root.tsx +3 -3
  151. package/src/capabilities/react-surface/react-surface.tsx +34 -32
  152. package/src/capabilities/settings/settings.ts +3 -2
  153. package/src/capabilities/spaces-ready/spaces-ready.ts +8 -7
  154. package/src/capabilities/state/state.ts +3 -3
  155. package/src/cli/commands/database/add.ts +7 -8
  156. package/src/cli/commands/database/query/query.ts +1 -1
  157. package/src/cli/commands/database/remove.ts +2 -2
  158. package/src/cli/commands/database/stats.ts +1 -1
  159. package/src/cli/plugin.ts +33 -26
  160. package/src/components/AwaitingObject.tsx +4 -3
  161. package/src/components/CollectionArticle.tsx +71 -72
  162. package/src/components/CollectionSection.tsx +1 -1
  163. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -1
  164. package/src/components/CreateDialog/CreateObjectDialog.tsx +20 -17
  165. package/src/components/CreateDialog/CreateObjectPanel.tsx +38 -39
  166. package/src/components/CreateDialog/CreateSpaceDialog.tsx +21 -21
  167. package/src/components/JoinDialog/JoinDialog.tsx +8 -7
  168. package/src/components/MembersContainer/MembersContainer.stories.tsx +1 -1
  169. package/src/components/MembersContainer/MembersContainer.tsx +45 -48
  170. package/src/components/ObjectCardStack/ObjectCardStack.tsx +1 -1
  171. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +4 -4
  172. package/src/components/ObjectDetails/ObjectDetails.tsx +6 -5
  173. package/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx +3 -3
  174. package/src/components/RecordArticle.stories.tsx +6 -5
  175. package/src/components/RecordArticle.tsx +23 -21
  176. package/src/components/SchemaContainer.tsx +20 -17
  177. package/src/components/SpacePluginSettings.tsx +34 -31
  178. package/src/components/SpacePresence/SpacePresence.stories.tsx +1 -1
  179. package/src/components/SpacePresence/SpacePresence.tsx +2 -1
  180. package/src/components/SpaceRenamePopover/SpaceRenamePopover.tsx +3 -3
  181. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +1 -1
  182. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +161 -179
  183. package/src/components/SyncStatus/InlineSyncStatus.tsx +1 -1
  184. package/src/components/SyncStatus/SyncStatus.stories.tsx +1 -1
  185. package/src/components/ViewEditor.tsx +1 -1
  186. package/src/hooks/useActiveSpace.ts +5 -4
  187. package/src/hooks/useInputSurfaceLookup.tsx +3 -3
  188. package/src/translations.ts +2 -2
  189. package/src/types/events.ts +3 -2
  190. package/src/types/types.ts +10 -3
  191. package/src/util.tsx +9 -6
  192. package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs +0 -129
  193. package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs.map +0 -7
  194. package/dist/lib/browser/ObjectCardStack-TWHN6C2Y.mjs.map +0 -7
  195. package/dist/lib/browser/ObjectDetails-GEDIISKK.mjs.map +0 -7
  196. package/dist/lib/browser/RecordArticle-W57QE7QV.mjs.map +0 -7
  197. package/dist/lib/browser/app-graph-builder-SJHTZXZF.mjs.map +0 -7
  198. package/dist/lib/browser/app-graph-serializer-7AT7QMSK.mjs.map +0 -7
  199. package/dist/lib/browser/chunk-3X2EA2OA.mjs.map +0 -7
  200. package/dist/lib/browser/chunk-4WZUGLQQ.mjs.map +0 -7
  201. package/dist/lib/browser/chunk-CCRSHECL.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-SUI34XSA.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-ZT2VPYRM.mjs.map +0 -7
  204. package/dist/lib/browser/operation-resolver-SIRQT36Z.mjs.map +0 -7
  205. package/dist/lib/browser/react-root-PI7VTZUZ.mjs.map +0 -7
  206. package/dist/lib/browser/react-surface-BPE7VWI7.mjs.map +0 -7
  207. package/dist/lib/browser/settings-ZS2AQ73E.mjs.map +0 -7
  208. package/dist/lib/browser/spaces-ready-OQDGWUOS.mjs.map +0 -7
  209. package/dist/lib/browser/state-7YZQB2KY.mjs.map +0 -7
  210. package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs +0 -130
  211. package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs.map +0 -7
  212. package/dist/lib/node-esm/ObjectCardStack-C5ZXRKP7.mjs.map +0 -7
  213. package/dist/lib/node-esm/ObjectDetails-6ZLDRKCO.mjs.map +0 -7
  214. package/dist/lib/node-esm/RecordArticle-SSV74Z46.mjs.map +0 -7
  215. package/dist/lib/node-esm/app-graph-builder-HZ3XXDFZ.mjs.map +0 -7
  216. package/dist/lib/node-esm/app-graph-serializer-WJ2TIQG6.mjs.map +0 -7
  217. package/dist/lib/node-esm/chunk-2SW6S2BB.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-7KMYUWSR.mjs.map +0 -7
  219. package/dist/lib/node-esm/chunk-EYS3L2NO.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-JOBIWCBC.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-MPL6NHQX.mjs.map +0 -7
  222. package/dist/lib/node-esm/operation-resolver-ZE3XJL5J.mjs.map +0 -7
  223. package/dist/lib/node-esm/react-root-KUXM33JI.mjs.map +0 -7
  224. package/dist/lib/node-esm/react-surface-STCQKUZ4.mjs.map +0 -7
  225. package/dist/lib/node-esm/settings-PVI2VG56.mjs.map +0 -7
  226. package/dist/lib/node-esm/spaces-ready-R744OHQG.mjs.map +0 -7
  227. package/dist/lib/node-esm/state-XE5YGPHM.mjs.map +0 -7
  228. /package/dist/lib/browser/{chunk-AWVAX26X.mjs.map → chunk-NF3ZFAB4.mjs.map} +0 -0
  229. /package/dist/lib/browser/{repair-CJG26D52.mjs.map → repair-DKU4TUD2.mjs.map} +0 -0
  230. /package/dist/lib/node-esm/{chunk-HREWB23G.mjs.map → chunk-PG7DNOEX.mjs.map} +0 -0
  231. /package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs.map → repair-C2H6JQCL.mjs.map} +0 -0
@@ -4,7 +4,8 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
- import { Capability, Common, Plugin, UndoMapping } from '@dxos/app-framework';
7
+ import { Capabilities, Capability, Plugin, UndoMapping } from '@dxos/app-framework';
8
+ import { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
8
9
  import { SpaceState, getSpace } from '@dxos/client/echo';
9
10
  import { Database, Obj, Query, Ref, Relation, Type } from '@dxos/echo';
10
11
  import { EchoDatabaseImpl, Serializer } from '@dxos/echo-db';
@@ -28,6 +29,7 @@ import {
28
29
  OBJECT_RENAME_POPOVER,
29
30
  SPACE_RENAME_POPOVER,
30
31
  } from '../../constants';
32
+ import { meta } from '../../meta';
31
33
  import { SpaceEvents } from '../../types';
32
34
  import { SpaceCapabilities, SpaceOperation } from '../../types';
33
35
  import { COMPOSER_SPACE_LOCK, cloneObject, getNestedObjects } from '../../util';
@@ -43,11 +45,11 @@ export default Capability.makeModule(
43
45
  const capabilityManager = yield* Capability.Service;
44
46
 
45
47
  const resolve = (typename: string) =>
46
- capabilityManager.getAll(Common.Capability.Metadata).find(({ id }: { id: string }) => id === typename)
47
- ?.metadata ?? {};
48
+ capabilityManager.getAll(AppCapabilities.Metadata).find(({ id }: { id: string }) => id === typename)?.metadata ??
49
+ {};
48
50
 
49
51
  return [
50
- Capability.contributes(Common.Capability.UndoMapping, [
52
+ Capability.contributes(Capabilities.UndoMapping, [
51
53
  UndoMapping.make({
52
54
  operation: SpaceOperation.DeleteField,
53
55
  inverse: SpaceOperation.RestoreField,
@@ -57,7 +59,7 @@ export default Capability.makeModule(
57
59
  props: output.props,
58
60
  index: output.index,
59
61
  }),
60
- message: ['field deleted label', { ns: 'dxos.org/plugin/space' }],
62
+ message: ['field deleted label', { ns: meta.id }],
61
63
  }),
62
64
  UndoMapping.make({
63
65
  operation: SpaceOperation.RemoveObjects,
@@ -72,12 +74,12 @@ export default Capability.makeModule(
72
74
  message: (input, _output) => {
73
75
  const ns = Obj.getTypename(input.objects[0]);
74
76
  return ns && input.objects.length === 1
75
- ? ['object deleted label', { ns }]
76
- : ['objects deleted label', { ns: 'plugin-space' }];
77
+ ? ['object deleted label', { ns: meta.id }]
78
+ : ['objects deleted label', { ns: meta.id }];
77
79
  },
78
80
  }),
79
81
  ]),
80
- Capability.contributes(Common.Capability.OperationResolver, [
82
+ Capability.contributes(Capabilities.OperationResolver, [
81
83
  //
82
84
  // Open
83
85
  //
@@ -106,7 +108,7 @@ export default Capability.makeModule(
106
108
  OperationResolver.make({
107
109
  operation: SpaceOperation.Join,
108
110
  handler: Effect.fnUntraced(function* (input) {
109
- yield* Operation.invoke(Common.LayoutOperation.UpdateDialog, {
111
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
110
112
  subject: JOIN_DIALOG,
111
113
  blockAlign: 'start',
112
114
  props: {
@@ -123,7 +125,7 @@ export default Capability.makeModule(
123
125
  OperationResolver.make({
124
126
  operation: SpaceOperation.WaitForObject,
125
127
  handler: Effect.fnUntraced(function* (input) {
126
- yield* Common.Capability.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({
128
+ yield* Capabilities.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({
127
129
  ...current,
128
130
  awaiting: input.id,
129
131
  }));
@@ -136,7 +138,7 @@ export default Capability.makeModule(
136
138
  OperationResolver.make({
137
139
  operation: SpaceOperation.OpenSettings,
138
140
  handler: Effect.fnUntraced(function* (input) {
139
- yield* Operation.invoke(Common.LayoutOperation.Open, {
141
+ yield* Operation.invoke(LayoutOperation.Open, {
140
142
  subject: [`properties-settings${ATTENDABLE_PATH_SEPARATOR}${input.space.id}`],
141
143
  workspace: input.space.id,
142
144
  });
@@ -149,7 +151,7 @@ export default Capability.makeModule(
149
151
  OperationResolver.make({
150
152
  operation: SpaceOperation.RemoveObjects,
151
153
  handler: Effect.fnUntraced(function* (input) {
152
- const layout = yield* Common.Capability.getAtomValue(Common.Capability.Layout);
154
+ const layout = yield* Capabilities.getAtomValue(AppCapabilities.Layout);
153
155
  const objects = input.objects as Obj.Unknown[];
154
156
 
155
157
  // All objects must be a member of the same space.
@@ -205,7 +207,7 @@ export default Capability.makeModule(
205
207
  }
206
208
 
207
209
  if (wasActive.length > 0) {
208
- yield* Operation.invoke(Common.LayoutOperation.Close, { subject: wasActive });
210
+ yield* Operation.invoke(LayoutOperation.Close, { subject: wasActive });
209
211
  }
210
212
 
211
213
  // Return data needed for undo.
@@ -225,7 +227,7 @@ export default Capability.makeModule(
225
227
  OperationResolver.make({
226
228
  operation: SpaceOperation.DeleteField,
227
229
  handler: Effect.fnUntraced(function* (input) {
228
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
230
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
229
231
  const view = input.view as any;
230
232
  const db = Obj.getDatabase(view);
231
233
  invariant(db);
@@ -259,9 +261,9 @@ export default Capability.makeModule(
259
261
  OperationResolver.make({
260
262
  operation: SpaceOperation.OpenCreateObject,
261
263
  handler: Effect.fnUntraced(function* (input) {
262
- const ephemeralState = yield* Common.Capability.getAtomValue(SpaceCapabilities.EphemeralState);
264
+ const ephemeralState = yield* Capabilities.getAtomValue(SpaceCapabilities.EphemeralState);
263
265
  const navigable = input.navigable ?? true;
264
- yield* Operation.invoke(Common.LayoutOperation.UpdateDialog, {
266
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
265
267
  subject: CREATE_OBJECT_DIALOG,
266
268
  blockAlign: 'start',
267
269
  props: {
@@ -297,7 +299,7 @@ export default Capability.makeModule(
297
299
  object,
298
300
  target: Database.isDatabase(target) ? undefined : target,
299
301
  hidden: input.hidden,
300
- }).pipe(Effect.provide(Database.Service.layer(db)));
302
+ }).pipe(Effect.provide(Database.layer(db)));
301
303
 
302
304
  yield* Operation.schedule(ObservabilityOperation.SendEvent, {
303
305
  name: 'space.object.add',
@@ -381,7 +383,7 @@ export default Capability.makeModule(
381
383
  OperationResolver.make({
382
384
  operation: SpaceOperation.OpenCreateSpace,
383
385
  handler: Effect.fnUntraced(function* () {
384
- yield* Operation.invoke(Common.LayoutOperation.UpdateDialog, {
386
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
385
387
  subject: CREATE_SPACE_DIALOG,
386
388
  blockAlign: 'start',
387
389
  });
@@ -447,12 +449,12 @@ export default Capability.makeModule(
447
449
  const { space, version: targetVersion } = input;
448
450
 
449
451
  if (space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION) {
450
- yield* Common.Capability.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({
452
+ yield* Capabilities.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({
451
453
  ...current,
452
454
  sdkMigrationRunning: { ...current.sdkMigrationRunning, [space.id]: true },
453
455
  }));
454
456
  yield* Effect.promise(() => space.internal.migrate());
455
- yield* Common.Capability.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({
457
+ yield* Capabilities.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({
456
458
  ...current,
457
459
  sdkMigrationRunning: { ...current.sdkMigrationRunning, [space.id]: false },
458
460
  }));
@@ -494,7 +496,7 @@ export default Capability.makeModule(
494
496
  OperationResolver.make({
495
497
  operation: SpaceOperation.Rename,
496
498
  handler: Effect.fnUntraced(function* (input) {
497
- yield* Operation.invoke(Common.LayoutOperation.UpdatePopover, {
499
+ yield* Operation.invoke(LayoutOperation.UpdatePopover, {
498
500
  subject: SPACE_RENAME_POPOVER,
499
501
  anchorId: `dxos.org/ui/${input.caller}/${input.space.id}`,
500
502
  props: input.space,
@@ -509,7 +511,7 @@ export default Capability.makeModule(
509
511
  operation: SpaceOperation.RenameObject,
510
512
  handler: Effect.fnUntraced(function* (input) {
511
513
  const object = input.object as Obj.Unknown;
512
- yield* Operation.invoke(Common.LayoutOperation.UpdatePopover, {
514
+ yield* Operation.invoke(LayoutOperation.UpdatePopover, {
513
515
  subject: OBJECT_RENAME_POPOVER,
514
516
  anchorId: `dxos.org/ui/${input.caller}/${Obj.getDXN(object).toString()}`,
515
517
  props: object,
@@ -523,7 +525,7 @@ export default Capability.makeModule(
523
525
  OperationResolver.make({
524
526
  operation: SpaceOperation.OpenMembers,
525
527
  handler: Effect.fnUntraced(function* (input) {
526
- yield* Operation.invoke(Common.LayoutOperation.Open, {
528
+ yield* Operation.invoke(LayoutOperation.Open, {
527
529
  subject: [`members-settings${ATTENDABLE_PATH_SEPARATOR}${input.space.id}`],
528
530
  workspace: input.space.id,
529
531
  });
@@ -615,10 +617,10 @@ export default Capability.makeModule(
615
617
  OperationResolver.make({
616
618
  operation: SpaceOperation.AddSchema,
617
619
  handler: Effect.fnUntraced(function* (input) {
618
- const db = input.db as any;
619
- const schemas = (yield* Effect.promise(() => db.schemaRegistry.register([input.schema]))) as any[];
620
+ const db = input.db;
621
+ const schemas = yield* Effect.promise(() => db.schemaRegistry.register([input.schema]));
620
622
  const schema = schemas[0];
621
- Obj.change(schema.storedSchema, (s) => {
623
+ Obj.change(schema.persistentSchema, (s) => {
622
624
  if (input.name) {
623
625
  s.name = input.name;
624
626
  }
@@ -646,7 +648,7 @@ export default Capability.makeModule(
646
648
  },
647
649
  });
648
650
 
649
- return { id: schema.id, object: schema.storedSchema, schema };
651
+ return { id: schema.id, object: schema.persistentSchema, schema };
650
652
  }),
651
653
  }),
652
654
 
@@ -690,7 +692,7 @@ export default Capability.makeModule(
690
692
  OperationResolver.make({
691
693
  operation: SpaceOperation.RestoreField,
692
694
  handler: Effect.fnUntraced(function* (input) {
693
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
695
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
694
696
  const view = input.view as any;
695
697
  const db = Obj.getDatabase(view);
696
698
  invariant(db);
@@ -750,7 +752,7 @@ export default Capability.makeModule(
750
752
 
751
753
  // Re-open objects that were active.
752
754
  if (wasActive.length > 0) {
753
- yield* Operation.invoke(Common.LayoutOperation.Open, { subject: wasActive });
755
+ yield* Operation.invoke(LayoutOperation.Open, { subject: wasActive });
754
756
  }
755
757
  }),
756
758
  }),
@@ -5,8 +5,8 @@
5
5
  import * as Effect from 'effect/Effect';
6
6
  import React from 'react';
7
7
 
8
- import { Capability, Common } from '@dxos/app-framework';
9
- import { useAtomCapability } from '@dxos/app-framework/react';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import { useAtomCapability } from '@dxos/app-framework/ui';
10
10
 
11
11
  import { AwaitingObject } from '../../components';
12
12
  import { meta } from '../../meta';
@@ -14,7 +14,7 @@ import { SpaceCapabilities } from '../../types';
14
14
 
15
15
  export default Capability.makeModule(() =>
16
16
  Effect.succeed(
17
- Capability.contributes(Common.Capability.ReactRoot, {
17
+ Capability.contributes(Capabilities.ReactRoot, {
18
18
  id: meta.id,
19
19
  root: () => {
20
20
  const ephemeral = useAtomCapability(SpaceCapabilities.EphemeralState);
@@ -7,8 +7,10 @@ import * as Option from 'effect/Option';
7
7
  import type * as Schema from 'effect/Schema';
8
8
  import React, { useCallback } from 'react';
9
9
 
10
- import { Capability, Common } from '@dxos/app-framework';
11
- import { Surface, useAtomCapability, useLayout, useSettingsState } from '@dxos/app-framework/react';
10
+ import { Capabilities, Capability } from '@dxos/app-framework';
11
+ import { Surface, useAtomCapability, useSettingsState } from '@dxos/app-framework/ui';
12
+ import { AppCapabilities } from '@dxos/app-toolkit';
13
+ import { useLayout } from '@dxos/app-toolkit/ui';
12
14
  import { Database, Obj, type Ref } from '@dxos/echo';
13
15
  import { findAnnotation } from '@dxos/effect';
14
16
  import { type Space, SpaceState, getSpace, isSpace, parseId, useSpace } from '@dxos/react-client/echo';
@@ -67,15 +69,15 @@ export default Capability.makeModule(
67
69
  Effect.fnUntraced(function* (props?: ReactSurfaceOptions) {
68
70
  const { createInvitationUrl } = props!;
69
71
 
70
- return Capability.contributes(Common.Capability.ReactSurface, [
71
- Common.createSurface({
72
+ return Capability.contributes(Capabilities.ReactSurface, [
73
+ Surface.create({
72
74
  id: `${meta.id}/article`,
73
75
  role: 'article',
74
76
  filter: (data): data is { subject: Space } =>
75
77
  // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.
76
78
  isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY,
77
79
  component: ({ data, role, ...rest }) => (
78
- <Surface
80
+ <Surface.Surface
79
81
  data={{
80
82
  id: data.subject.id,
81
83
  subject: data.subject.properties[Collection.Collection.typename]?.target,
@@ -85,7 +87,7 @@ export default Capability.makeModule(
85
87
  />
86
88
  ),
87
89
  }),
88
- Common.createSurface({
90
+ Surface.create({
89
91
  id: `${meta.id}/collection-fallback`,
90
92
  role: 'article',
91
93
  position: 'fallback',
@@ -93,31 +95,31 @@ export default Capability.makeModule(
93
95
  Obj.instanceOf(Collection.Collection, data.subject) || Obj.instanceOf(Collection.Managed, data.subject),
94
96
  component: ({ data }) => <CollectionArticle subject={data.subject} />,
95
97
  }),
96
- Common.createSurface({
98
+ Surface.create({
97
99
  id: `${meta.id}/record-article`,
98
100
  role: 'article',
99
101
  position: 'fallback',
100
102
  filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),
101
103
  component: ({ data }) => <RecordArticle subject={data.subject} />,
102
104
  }),
103
- Common.createSurface({
105
+ Surface.create({
104
106
  id: `${meta.id}/plugin-settings`,
105
107
  role: 'article',
106
- filter: (data): data is { subject: Common.Capability.Settings } =>
107
- Common.Capability.isSettings(data.subject) && data.subject.prefix === meta.id,
108
+ filter: (data): data is { subject: AppCapabilities.Settings } =>
109
+ AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,
108
110
  component: ({ data: { subject } }) => {
109
111
  const { settings, updateSettings } = useSettingsState<SpaceSettingsProps>(subject.atom);
110
112
  return <SpacePluginSettings settings={settings} onSettingsChange={updateSettings} />;
111
113
  },
112
114
  }),
113
- Common.createSurface({
115
+ Surface.create({
114
116
  id: `${meta.id}/companion/object-settings`,
115
117
  role: 'article',
116
118
  filter: (data): data is { companionTo: Obj.Unknown } =>
117
119
  Obj.isObject(data.companionTo) && data.subject === 'settings',
118
120
  component: ({ ref, data, role }) => <ObjectDetails subject={data.companionTo} role={role} ref={ref} />,
119
121
  }),
120
- Common.createSurface({
122
+ Surface.create({
121
123
  id: `${meta.id}/space-settings-properties`,
122
124
  role: 'article',
123
125
  filter: (data): data is { subject: string } => data.subject === `${meta.id}/properties`,
@@ -129,10 +131,10 @@ export default Capability.makeModule(
129
131
  return null;
130
132
  }
131
133
 
132
- return <SpaceSettingsContainer space={space} ref={ref} />;
134
+ return <SpaceSettingsContainer space={space} />;
133
135
  },
134
136
  }),
135
- Common.createSurface({
137
+ Surface.create({
136
138
  id: `${meta.id}/space-settings-members`,
137
139
  role: 'article',
138
140
  position: 'hoist',
@@ -148,7 +150,7 @@ export default Capability.makeModule(
148
150
  return <MembersContainer space={space} createInvitationUrl={createInvitationUrl} />;
149
151
  },
150
152
  }),
151
- Common.createSurface({
153
+ Surface.create({
152
154
  id: `${meta.id}/space-settings-schema`,
153
155
  role: 'article',
154
156
  filter: (data): data is { subject: string } => data.subject === `${meta.id}/schema`,
@@ -163,7 +165,7 @@ export default Capability.makeModule(
163
165
  return <SchemaContainer space={space} />;
164
166
  },
165
167
  }),
166
- Common.createSurface({
168
+ Surface.create({
167
169
  id: `${meta.id}/selected-objects`,
168
170
  role: 'article',
169
171
  filter: (data): data is { companionTo: Obj.Obj<{ view: Ref.Ref<View.View> }>; subject: 'selected-objects' } => {
@@ -187,25 +189,25 @@ export default Capability.makeModule(
187
189
  />
188
190
  ),
189
191
  }),
190
- Common.createSurface({
192
+ Surface.create({
191
193
  id: JOIN_DIALOG,
192
194
  role: 'dialog',
193
195
  filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,
194
196
  component: ({ data }) => <JoinDialog {...data.props} />,
195
197
  }),
196
- Common.createSurface({
198
+ Surface.create({
197
199
  id: CREATE_SPACE_DIALOG,
198
200
  role: 'dialog',
199
201
  filter: (data): data is any => data.component === CREATE_SPACE_DIALOG,
200
202
  component: () => <CreateSpaceDialog />,
201
203
  }),
202
- Common.createSurface({
204
+ Surface.create({
203
205
  id: CREATE_OBJECT_DIALOG,
204
206
  role: 'dialog',
205
207
  filter: (data): data is { props: CreateObjectDialogProps } => data.component === CREATE_OBJECT_DIALOG,
206
208
  component: ({ data }) => <CreateObjectDialog {...data.props} />,
207
209
  }),
208
- Common.createSurface({
210
+ Surface.create({
209
211
  id: `${meta.id}/create-initial-space-form-[hue]`,
210
212
  role: 'form-input',
211
213
  filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {
@@ -224,7 +226,7 @@ export default Capability.makeModule(
224
226
  );
225
227
  },
226
228
  }),
227
- Common.createSurface({
229
+ Surface.create({
228
230
  id: `${meta.id}/create-initial-space-form-[icon]`,
229
231
  role: 'form-input',
230
232
  filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {
@@ -248,7 +250,7 @@ export default Capability.makeModule(
248
250
  );
249
251
  },
250
252
  }),
251
- Common.createSurface({
253
+ Surface.create({
252
254
  id: `${meta.id}/typename-form-input`,
253
255
  role: 'form-input',
254
256
  filter: (
@@ -275,7 +277,7 @@ export default Capability.makeModule(
275
277
  return <SelectField {...props} options={options} />;
276
278
  },
277
279
  }),
278
- Common.createSurface({
280
+ Surface.create({
279
281
  id: `${meta.id}/object-settings`,
280
282
  role: 'object-settings',
281
283
  filter: (data): data is { subject: { view: Ref.Ref<View.View> } } => {
@@ -298,26 +300,26 @@ export default Capability.makeModule(
298
300
  return <ViewEditor view={view} />;
299
301
  },
300
302
  }),
301
- Common.createSurface({
303
+ Surface.create({
302
304
  id: SPACE_RENAME_POPOVER,
303
305
  role: 'popover',
304
306
  filter: (data): data is { props: Space } => data.component === SPACE_RENAME_POPOVER && isSpace(data.props),
305
307
  component: ({ data }) => <SpaceRenamePopover space={data.props} />,
306
308
  }),
307
- Common.createSurface({
309
+ Surface.create({
308
310
  id: OBJECT_RENAME_POPOVER,
309
311
  role: 'popover',
310
312
  filter: (data): data is { props: Obj.Unknown } =>
311
313
  data.component === OBJECT_RENAME_POPOVER && Obj.isObject(data.props),
312
314
  component: ({ data }) => <ObjectRenamePopover object={data.props} />,
313
315
  }),
314
- Common.createSurface({
316
+ Surface.create({
315
317
  id: `${meta.id}/menu-footer`,
316
318
  role: 'menu-footer',
317
319
  filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),
318
320
  component: ({ data }) => <MenuFooter object={data.subject} />,
319
321
  }),
320
- Common.createSurface({
322
+ Surface.create({
321
323
  id: `${meta.id}/navtree-presence`,
322
324
  role: 'navtree-item-end',
323
325
  filter: (data): data is { id: string; subject: Obj.Unknown; open?: boolean } =>
@@ -328,7 +330,7 @@ export default Capability.makeModule(
328
330
  },
329
331
  }),
330
332
  // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
331
- Common.createSurface({
333
+ Surface.create({
332
334
  id: `${meta.id}/navtree-presence-fallback`,
333
335
  role: 'navtree-item-end',
334
336
  position: 'fallback',
@@ -336,13 +338,13 @@ export default Capability.makeModule(
336
338
  component: ({ data }) => <SmallPresenceLive id={data.id} open={data.open} />,
337
339
  }),
338
340
  // TODO(wittjosiah): Broken?
339
- Common.createSurface({
341
+ Surface.create({
340
342
  id: `${meta.id}/navtree-sync-status`,
341
343
  role: 'navtree-item-end',
342
344
  filter: (data): data is { subject: Space; open?: boolean } => isSpace(data.subject),
343
345
  component: ({ data }) => <InlineSyncStatus space={data.subject} open={data.open} />,
344
346
  }),
345
- Common.createSurface({
347
+ Surface.create({
346
348
  id: `${meta.id}/navbar-presence`,
347
349
  role: 'navbar-end',
348
350
  position: 'hoist',
@@ -358,14 +360,14 @@ export default Capability.makeModule(
358
360
  return object ? <SpacePresence object={object} /> : null;
359
361
  },
360
362
  }),
361
- Common.createSurface({
363
+ Surface.create({
362
364
  id: `${meta.id}/collection-section`,
363
365
  role: 'section',
364
366
  filter: (data): data is { subject: Collection.Collection } =>
365
367
  Obj.instanceOf(Collection.Collection, data.subject),
366
368
  component: ({ data }) => <CollectionSection subject={data.subject} />,
367
369
  }),
368
- Common.createSurface({
370
+ Surface.create({
369
371
  id: `${meta.id}/status`,
370
372
  role: 'status',
371
373
  component: () => <SyncStatus />,
@@ -4,7 +4,8 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
- import { Capability, Common } from '@dxos/app-framework';
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { AppCapabilities } from '@dxos/app-toolkit';
8
9
  import { createKvsStore } from '@dxos/effect';
9
10
 
10
11
  import { meta } from '../../meta';
@@ -22,7 +23,7 @@ export default Capability.makeModule(() =>
22
23
 
23
24
  return [
24
25
  Capability.contributes(SpaceCapabilities.Settings, settingsAtom),
25
- Capability.contributes(Common.Capability.Settings, {
26
+ Capability.contributes(AppCapabilities.Settings, {
26
27
  prefix: meta.id,
27
28
  schema: SpaceSettingsSchema,
28
29
  atom: settingsAtom,
@@ -5,7 +5,8 @@
5
5
  import * as Effect from 'effect/Effect';
6
6
  import * as Option from 'effect/Option';
7
7
 
8
- import { Capability, Common } from '@dxos/app-framework';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
9
10
  import { SubscriptionList } from '@dxos/async';
10
11
  import { Filter, Obj } from '@dxos/echo';
11
12
  import { log } from '@dxos/log';
@@ -32,10 +33,10 @@ export default Capability.makeModule(
32
33
  const subscriptions = new SubscriptionList();
33
34
  const spaceSubscriptions = new SubscriptionList();
34
35
 
35
- const { invoke, invokePromise } = yield* Capability.get(Common.Capability.OperationInvoker);
36
- const { graph } = yield* Capability.get(Common.Capability.AppGraph);
37
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
38
- const layoutAtom = yield* Capability.get(Common.Capability.Layout);
36
+ const { invoke, invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);
37
+ const { graph } = yield* Capability.get(AppCapabilities.AppGraph);
38
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
39
+ const layoutAtom = yield* Capability.get(AppCapabilities.Layout);
39
40
  const attention = yield* Capability.get(AttentionCapabilities.Attention);
40
41
  const stateAtom = yield* Capability.get(SpaceCapabilities.State);
41
42
  const ephemeralAtom = yield* Capability.get(SpaceCapabilities.EphemeralState);
@@ -47,7 +48,7 @@ export default Capability.makeModule(
47
48
  // Check if deck state indicates we should switch to default space.
48
49
  const layout = registry.get(layoutAtom);
49
50
  if (layout.workspace === 'default') {
50
- yield* invoke(Common.LayoutOperation.SwitchWorkspace, { subject: defaultSpace.id });
51
+ yield* invoke(LayoutOperation.SwitchWorkspace, { subject: defaultSpace.id });
51
52
  }
52
53
 
53
54
  // Initialize space sharing lock in default space.
@@ -279,7 +280,7 @@ export default Capability.makeModule(
279
280
  log.catch(err);
280
281
  }
281
282
 
282
- return Capability.contributes(Common.Capability.Null, null, () =>
283
+ return Capability.contributes(Capabilities.Null, null, () =>
283
284
  Effect.sync(() => {
284
285
  spaceSubscriptions.clear();
285
286
  subscriptions.clear();
@@ -5,7 +5,7 @@
5
5
  import { Atom } from '@effect-atom/atom-react';
6
6
  import * as Effect from 'effect/Effect';
7
7
 
8
- import { Capability, Common } from '@dxos/app-framework';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
9
  import { createKvsStore } from '@dxos/effect';
10
10
  import { PublicKey } from '@dxos/keys';
11
11
  import { ComplexMap } from '@dxos/util';
@@ -21,7 +21,7 @@ const defaultSpaceState: SpaceCapabilities.SpaceState = {
21
21
 
22
22
  export default Capability.makeModule(
23
23
  Effect.fnUntraced(function* () {
24
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
24
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
25
25
 
26
26
  // Persisted state using KVS store.
27
27
  const stateAtom = createKvsStore({
@@ -39,7 +39,7 @@ export default Capability.makeModule(
39
39
  viewersByIdentity: new ComplexMap<PublicKey, Set<string>>(PublicKey.hash),
40
40
  }).pipe(Atom.keepAlive);
41
41
 
42
- const manager = yield* Capability.get(Common.Capability.PluginManager);
42
+ const manager = yield* Capability.get(Capabilities.PluginManager);
43
43
  // Update navigableCollections based on plugin state.
44
44
  const updateNavigableCollections = () => {
45
45
  const enabled = manager.getEnabled().includes('dxos.org/plugin/stack');
@@ -11,7 +11,8 @@ import * as Option from 'effect/Option';
11
11
  import type * as Schema from 'effect/Schema';
12
12
 
13
13
  // eslint-disable-next-line unused-imports/no-unused-imports
14
- import { Common as AppFrameworkCommon, type Capability, Plugin } from '@dxos/app-framework';
14
+ import { type Capability, Plugin } from '@dxos/app-framework';
15
+ import { AppActivationEvents, AppCapabilities } from '@dxos/app-toolkit';
15
16
  import { CommandConfig, Common, flushAndSync, print, spaceLayer } from '@dxos/cli-util';
16
17
  import { SpaceProperties } from '@dxos/client/echo';
17
18
  import { Database, Filter, Obj, Ref, Type } from '@dxos/echo';
@@ -42,19 +43,17 @@ export const add = Command.make(
42
43
  const manager = yield* Plugin.Service;
43
44
  const { db } = yield* Database.Service;
44
45
 
45
- yield* manager.activate(AppFrameworkCommon.ActivationEvent.SetupMetadata);
46
+ yield* manager.activate(AppActivationEvents.SetupMetadata);
46
47
 
47
48
  const resolve = (typename: string) => {
48
49
  const metadata = manager.capabilities
49
- .getAll(AppFrameworkCommon.Capability.Metadata)
50
+ .getAll(AppCapabilities.Metadata)
50
51
  .find(({ id }) => id === typename)?.metadata;
51
52
  return metadata?.createObject ? (metadata as Metadata) : undefined;
52
53
  };
53
54
 
54
- const [properties] = yield* Database.Service.runQuery(Filter.type(SpaceProperties));
55
- const collection = yield* Database.Service.load<Collection.Collection>(
56
- properties[Collection.Collection.typename],
57
- );
55
+ const [properties] = yield* Database.runQuery(Filter.type(SpaceProperties));
56
+ const collection = yield* Database.load<Collection.Collection>(properties[Collection.Collection.typename]);
58
57
 
59
58
  const selectedTypename = yield* Option.match(typename, {
60
59
  onNone: () => selectTypename(resolve),
@@ -92,7 +91,7 @@ export const add = Command.make(
92
91
  * Prompts for typename selection if not provided.
93
92
  */
94
93
  const selectTypename = Effect.fn(function* (resolve: (typename: string) => Metadata | undefined) {
95
- const schemas = yield* Database.Service.runSchemaQuery({
94
+ const schemas = yield* Database.runSchemaQuery({
96
95
  location: ['database', 'runtime'],
97
96
  includeSystem: false,
98
97
  }).pipe(
@@ -20,7 +20,7 @@ export const handler = ({ typename }: { typename: Option.Option<string> }) =>
20
20
  onNone: () => Filter.everything(),
21
21
  onSome: (typename) => Filter.typename(typename),
22
22
  });
23
- const objects = yield* Database.Service.runQuery(filter);
23
+ const objects = yield* Database.runQuery(filter);
24
24
 
25
25
  if (json) {
26
26
  yield* Console.log(JSON.stringify(objects, null, 2));
@@ -34,9 +34,9 @@ export const remove = Command.make(
34
34
  } else {
35
35
  throw new Error('Must specify typename or id');
36
36
  }
37
- const objects = yield* Database.Service.runQuery(query);
37
+ const objects = yield* Database.runQuery(query);
38
38
  for (const object of objects) {
39
- yield* Database.Service.remove(object);
39
+ yield* Database.remove(object);
40
40
  }
41
41
 
42
42
  if (json) {
@@ -24,7 +24,7 @@ export const stats = Command.make(
24
24
  () =>
25
25
  Effect.gen(function* () {
26
26
  const { json } = yield* CommandConfig;
27
- const objects = yield* Database.Service.runQuery(Query.select(Filter.everything()));
27
+ const objects = yield* Database.runQuery(Query.select(Filter.everything()));
28
28
  const stats = Function.pipe(
29
29
  objects,
30
30
  Array.groupBy((obj) => Obj.getTypename(obj) ?? '<empty>'),