@dxos/plugin-space 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d

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 (217) hide show
  1. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs +31 -0
  2. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs +88 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs.map +7 -0
  5. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +68 -0
  6. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-builder-PMDF6PJV.mjs → app-graph-builder-VZW75QPJ.mjs} +174 -26
  8. package/dist/lib/browser/app-graph-builder-VZW75QPJ.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-YPHYVZAP.mjs} +4 -4
  10. package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-3UFG6LQQ.mjs} +57 -3
  11. package/dist/lib/browser/chunk-3UFG6LQQ.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-C7KGJTAL.mjs → chunk-CBYL62HG.mjs} +3 -2
  13. package/dist/lib/browser/chunk-CBYL62HG.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-DYKFFVN6.mjs} +2 -2
  15. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs.map → chunk-DYKFFVN6.mjs.map} +3 -3
  16. package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-PSIBVBTA.mjs} +386 -319
  17. package/dist/lib/browser/chunk-PSIBVBTA.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-XXIPJLJF.mjs → chunk-Q5EEPP3S.mjs} +2 -1
  19. package/dist/lib/browser/chunk-Q5EEPP3S.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-SMB4DGYO.mjs} +129 -25
  21. package/dist/lib/browser/chunk-SMB4DGYO.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-WAXS2ZVX.mjs} +68 -7
  23. package/dist/lib/browser/chunk-WAXS2ZVX.mjs.map +7 -0
  24. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-T6ZNVE7S.mjs} +2 -2
  25. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-T6ZNVE7S.mjs.map} +3 -3
  26. package/dist/lib/browser/index.mjs +103 -12
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-TS6CCKST.mjs} +166 -16
  29. package/dist/lib/browser/intent-resolver-TS6CCKST.mjs.map +7 -0
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-RQGTZ2ZO.mjs} +6 -6
  32. package/dist/lib/browser/{react-root-7S6FIC5G.mjs.map → react-root-RQGTZ2ZO.mjs.map} +2 -2
  33. package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-V3ARS2BP.mjs} +48 -16
  34. package/dist/lib/browser/react-surface-V3ARS2BP.mjs.map +7 -0
  35. package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-5LBA43X5.mjs} +2 -2
  36. package/dist/lib/browser/schema-defs-5LBA43X5.mjs.map +7 -0
  37. package/dist/lib/browser/{schema-tools-BNP4JTD7.mjs → schema-tools-LPL35WOJ.mjs} +11 -11
  38. package/dist/lib/browser/schema-tools-LPL35WOJ.mjs.map +7 -0
  39. package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-FLLBP5KI.mjs} +2 -2
  40. package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-FXEP6XEW.mjs} +14 -12
  41. package/dist/lib/browser/spaces-ready-FXEP6XEW.mjs.map +7 -0
  42. package/dist/lib/browser/{state-522XTUR4.mjs → state-K3UBPKYP.mjs} +2 -2
  43. package/dist/lib/{node-esm/state-C4IOXPZP.mjs.map → browser/state-K3UBPKYP.mjs.map} +2 -2
  44. package/dist/lib/browser/types/index.mjs +1 -1
  45. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs +32 -0
  46. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +7 -0
  47. package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs +89 -0
  48. package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs.map +7 -0
  49. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +70 -0
  50. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +7 -0
  51. package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-XNVQOJLE.mjs} +174 -26
  52. package/dist/lib/node-esm/app-graph-builder-XNVQOJLE.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-PKVLWV6V.mjs} +4 -4
  54. package/dist/lib/node-esm/{chunk-AT7LGFER.mjs → chunk-7MZ3J3LI.mjs} +2 -1
  55. package/dist/lib/node-esm/chunk-7MZ3J3LI.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-CTQMR7E3.mjs} +129 -25
  57. package/dist/lib/node-esm/chunk-CTQMR7E3.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-72QMMRKC.mjs → chunk-FJZNSJC4.mjs} +3 -2
  59. package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-HYIZVPOA.mjs} +68 -7
  61. package/dist/lib/node-esm/chunk-HYIZVPOA.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-KLG4Y4GY.mjs} +2 -2
  63. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs.map → chunk-KLG4Y4GY.mjs.map} +3 -3
  64. package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-KYUHPPRN.mjs} +386 -319
  65. package/dist/lib/node-esm/chunk-KYUHPPRN.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-S7MKRQHY.mjs} +57 -3
  67. package/dist/lib/node-esm/chunk-S7MKRQHY.mjs.map +7 -0
  68. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-AL7NNCKH.mjs} +2 -2
  69. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-AL7NNCKH.mjs.map} +3 -3
  70. package/dist/lib/node-esm/index.mjs +103 -12
  71. package/dist/lib/node-esm/index.mjs.map +3 -3
  72. package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-W6P27SCF.mjs} +166 -16
  73. package/dist/lib/node-esm/intent-resolver-W6P27SCF.mjs.map +7 -0
  74. package/dist/lib/node-esm/meta.json +1 -1
  75. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-N27KETKT.mjs} +6 -6
  76. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs.map → react-root-N27KETKT.mjs.map} +2 -2
  77. package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-TNPAUQCM.mjs} +48 -16
  78. package/dist/lib/node-esm/react-surface-TNPAUQCM.mjs.map +7 -0
  79. package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-TPWZPDCR.mjs} +2 -2
  80. package/dist/lib/node-esm/schema-defs-TPWZPDCR.mjs.map +7 -0
  81. package/dist/lib/node-esm/{schema-tools-KWW5PTML.mjs → schema-tools-PJE2FKWH.mjs} +11 -11
  82. package/dist/lib/node-esm/schema-tools-PJE2FKWH.mjs.map +7 -0
  83. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-WKUWY3P6.mjs} +2 -2
  84. package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-PQLLIO5W.mjs} +14 -12
  85. package/dist/lib/node-esm/spaces-ready-PQLLIO5W.mjs.map +7 -0
  86. package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-4M5A6OSB.mjs} +2 -2
  87. package/dist/lib/node-esm/state-4M5A6OSB.mjs.map +7 -0
  88. package/dist/lib/node-esm/types/index.mjs +1 -1
  89. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/capabilities.d.ts +9 -3
  92. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  101. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  102. package/dist/types/src/components/CollectionMain.d.ts +1 -0
  103. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  104. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -2
  105. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  106. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +1 -1
  108. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  109. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  110. package/dist/types/src/components/MembersContainer.stories.d.ts +1 -1
  111. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  112. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  113. package/dist/types/src/components/ObjectDetailsPanel.d.ts +9 -0
  114. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -0
  115. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  116. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  117. package/dist/types/src/components/PopoverRenameObject.d.ts +1 -1
  118. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  119. package/dist/types/src/components/RecordMain.d.ts +7 -0
  120. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  121. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  122. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  124. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  126. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  127. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  129. package/dist/types/src/components/ViewEditor.d.ts +8 -0
  130. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  131. package/dist/types/src/components/index.d.ts +11 -1
  132. package/dist/types/src/components/index.d.ts.map +1 -1
  133. package/dist/types/src/events.d.ts +1 -0
  134. package/dist/types/src/events.d.ts.map +1 -1
  135. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  136. package/dist/types/src/translations.d.ts +65 -4
  137. package/dist/types/src/translations.d.ts.map +1 -1
  138. package/dist/types/src/types/types.d.ts +82 -2
  139. package/dist/types/src/types/types.d.ts.map +1 -1
  140. package/dist/types/src/util.d.ts +31 -5
  141. package/dist/types/src/util.d.ts.map +1 -1
  142. package/dist/types/tsconfig.tsbuildinfo +1 -1
  143. package/package.json +50 -50
  144. package/src/SpacePlugin.ts +88 -5
  145. package/src/capabilities/app-graph-builder.ts +210 -12
  146. package/src/capabilities/capabilities.ts +8 -3
  147. package/src/capabilities/identity-created.ts +1 -1
  148. package/src/capabilities/intent-resolver.ts +120 -10
  149. package/src/capabilities/react-root.tsx +2 -1
  150. package/src/capabilities/react-surface.tsx +66 -15
  151. package/src/capabilities/schema-defs.ts +3 -2
  152. package/src/capabilities/schema-tool.test.ts +1 -1
  153. package/src/capabilities/schema-tools.ts +11 -11
  154. package/src/capabilities/spaces-ready.ts +10 -7
  155. package/src/capabilities/state.ts +3 -2
  156. package/src/components/AwaitingObject.tsx +5 -7
  157. package/src/components/CollectionMain.tsx +2 -0
  158. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +2 -1
  159. package/src/components/CreateDialog/CreateObjectDialog.tsx +32 -27
  160. package/src/components/CreateDialog/CreateObjectPanel.tsx +3 -3
  161. package/src/components/CreateDialog/CreateSpaceDialog.tsx +1 -1
  162. package/src/components/JoinDialog.tsx +1 -1
  163. package/src/components/MembersContainer.stories.tsx +4 -3
  164. package/src/components/MembersContainer.tsx +7 -5
  165. package/src/components/MenuFooter.tsx +2 -3
  166. package/src/components/ObjectDetailsPanel.tsx +77 -0
  167. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +2 -1
  168. package/src/components/PersistenceStatus.tsx +5 -6
  169. package/src/components/PopoverRenameObject.tsx +7 -13
  170. package/src/components/PopoverRenameSpace.tsx +1 -1
  171. package/src/components/RecordMain.tsx +43 -0
  172. package/src/components/SchemaContainer.tsx +2 -2
  173. package/src/components/SpacePluginSettings.tsx +2 -2
  174. package/src/components/SpacePresence.stories.tsx +2 -1
  175. package/src/components/SpacePresence.tsx +7 -7
  176. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +2 -1
  177. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +6 -6
  178. package/src/components/SyncStatus/SyncStatus.stories.tsx +2 -1
  179. package/src/components/SyncStatus/SyncStatus.tsx +4 -3
  180. package/src/components/SyncStatus/status.ts +4 -4
  181. package/src/components/ViewEditor.tsx +64 -0
  182. package/src/components/index.ts +7 -1
  183. package/src/events.ts +2 -1
  184. package/src/hooks/useActiveSpace.ts +1 -1
  185. package/src/hooks/useInputSurfaceLookup.tsx +1 -1
  186. package/src/translations.ts +66 -4
  187. package/src/types/types.ts +56 -3
  188. package/src/util.tsx +126 -25
  189. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  190. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  191. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  192. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  193. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  196. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  197. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  198. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  199. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  200. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  201. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  202. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  203. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  204. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  205. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  206. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  207. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  208. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  209. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  210. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  211. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  212. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  213. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  214. /package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs.map → app-graph-serializer-YPHYVZAP.mjs.map} +0 -0
  215. /package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-FLLBP5KI.mjs.map} +0 -0
  216. /package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs.map → app-graph-serializer-PKVLWV6V.mjs.map} +0 -0
  217. /package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-WKUWY3P6.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-space",
3
- "version": "0.8.4-main.f9ba587",
3
+ "version": "0.8.4-main.fd6878d",
4
4
  "description": "DXOS Surface plugin for DXOS ECHO Spaces",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,11 +10,13 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
+ "source": "./src/index.ts",
13
14
  "types": "./dist/types/src/index.d.ts",
14
15
  "browser": "./dist/lib/browser/index.mjs",
15
16
  "node": "./dist/lib/node-esm/index.mjs"
16
17
  },
17
18
  "./types": {
19
+ "source": "./src/types/index.ts",
18
20
  "types": "./dist/types/src/types/index.d.ts",
19
21
  "browser": "./dist/lib/browser/types/index.mjs",
20
22
  "node": "./dist/lib/node-esm/types/index.mjs"
@@ -33,78 +35,76 @@
33
35
  "src"
34
36
  ],
35
37
  "dependencies": {
36
- "@automerge/automerge": "3.0.0",
38
+ "@automerge/automerge": "3.1.1",
37
39
  "@preact-signals/safe-react": "^0.9.0",
38
40
  "@preact/signals-core": "^1.9.0",
39
- "effect": "3.16.13",
41
+ "effect": "3.17.7",
40
42
  "jszip": "^3.10.1",
41
43
  "localforage": "^1.10.0",
42
44
  "react-drag-drop-files": "^2.3.8",
43
45
  "react-is": "~18.2.0",
44
46
  "react-qr-rounded": "^1.0.0",
45
- "@dxos/ai": "0.8.4-main.f9ba587",
46
- "@dxos/app-framework": "0.8.4-main.f9ba587",
47
- "@dxos/async": "0.8.4-main.f9ba587",
48
- "@dxos/artifact": "0.8.4-main.f9ba587",
49
- "@dxos/context": "0.8.4-main.f9ba587",
50
- "@dxos/client": "0.8.4-main.f9ba587",
51
- "@dxos/display-name": "0.8.4-main.f9ba587",
52
- "@dxos/echo": "0.8.4-main.f9ba587",
53
- "@dxos/echo-schema": "0.8.4-main.f9ba587",
54
- "@dxos/echo-signals": "0.8.4-main.f9ba587",
55
- "@dxos/effect": "0.8.4-main.f9ba587",
56
- "@dxos/invariant": "0.8.4-main.f9ba587",
57
- "@dxos/keys": "0.8.4-main.f9ba587",
58
- "@dxos/live-object": "0.8.4-main.f9ba587",
59
- "@dxos/local-storage": "0.8.4-main.f9ba587",
60
- "@dxos/log": "0.8.4-main.f9ba587",
61
- "@dxos/migrations": "0.8.4-main.f9ba587",
62
- "@dxos/plugin-attention": "0.8.4-main.f9ba587",
63
- "@dxos/plugin-client": "0.8.4-main.f9ba587",
64
- "@dxos/plugin-deck": "0.8.4-main.f9ba587",
65
- "@dxos/plugin-graph": "0.8.4-main.f9ba587",
66
- "@dxos/plugin-observability": "0.8.4-main.f9ba587",
67
- "@dxos/plugin-status-bar": "0.8.4-main.f9ba587",
68
- "@dxos/protocols": "0.8.4-main.f9ba587",
69
- "@dxos/react-client": "0.8.4-main.f9ba587",
70
- "@dxos/react-ui-attention": "0.8.4-main.f9ba587",
71
- "@dxos/react-ui-editor": "0.8.4-main.f9ba587",
72
- "@dxos/react-ui-form": "0.8.4-main.f9ba587",
73
- "@dxos/react-ui-list": "0.8.4-main.f9ba587",
74
- "@dxos/react-ui-pickers": "0.8.4-main.f9ba587",
75
- "@dxos/react-ui-stack": "0.8.4-main.f9ba587",
76
- "@dxos/react-ui-searchlist": "0.8.4-main.f9ba587",
77
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.f9ba587",
78
- "@dxos/react-ui-theme": "0.8.4-main.f9ba587",
79
- "@dxos/shell": "0.8.4-main.f9ba587",
80
- "@dxos/schema": "0.8.4-main.f9ba587",
81
- "@dxos/react-ui-tabs": "0.8.4-main.f9ba587",
82
- "@dxos/util": "0.8.4-main.f9ba587"
47
+ "@dxos/ai": "0.8.4-main.fd6878d",
48
+ "@dxos/app-framework": "0.8.4-main.fd6878d",
49
+ "@dxos/async": "0.8.4-main.fd6878d",
50
+ "@dxos/client": "0.8.4-main.fd6878d",
51
+ "@dxos/blueprints": "0.8.4-main.fd6878d",
52
+ "@dxos/context": "0.8.4-main.fd6878d",
53
+ "@dxos/display-name": "0.8.4-main.fd6878d",
54
+ "@dxos/echo": "0.8.4-main.fd6878d",
55
+ "@dxos/echo-signals": "0.8.4-main.fd6878d",
56
+ "@dxos/echo-schema": "0.8.4-main.fd6878d",
57
+ "@dxos/effect": "0.8.4-main.fd6878d",
58
+ "@dxos/invariant": "0.8.4-main.fd6878d",
59
+ "@dxos/keys": "0.8.4-main.fd6878d",
60
+ "@dxos/live-object": "0.8.4-main.fd6878d",
61
+ "@dxos/local-storage": "0.8.4-main.fd6878d",
62
+ "@dxos/log": "0.8.4-main.fd6878d",
63
+ "@dxos/migrations": "0.8.4-main.fd6878d",
64
+ "@dxos/plugin-attention": "0.8.4-main.fd6878d",
65
+ "@dxos/plugin-client": "0.8.4-main.fd6878d",
66
+ "@dxos/plugin-deck": "0.8.4-main.fd6878d",
67
+ "@dxos/plugin-observability": "0.8.4-main.fd6878d",
68
+ "@dxos/plugin-graph": "0.8.4-main.fd6878d",
69
+ "@dxos/plugin-status-bar": "0.8.4-main.fd6878d",
70
+ "@dxos/react-client": "0.8.4-main.fd6878d",
71
+ "@dxos/protocols": "0.8.4-main.fd6878d",
72
+ "@dxos/react-ui-editor": "0.8.4-main.fd6878d",
73
+ "@dxos/react-ui-form": "0.8.4-main.fd6878d",
74
+ "@dxos/react-ui-list": "0.8.4-main.fd6878d",
75
+ "@dxos/react-ui-attention": "0.8.4-main.fd6878d",
76
+ "@dxos/react-ui-pickers": "0.8.4-main.fd6878d",
77
+ "@dxos/react-ui-searchlist": "0.8.4-main.fd6878d",
78
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.fd6878d",
79
+ "@dxos/react-ui-tabs": "0.8.4-main.fd6878d",
80
+ "@dxos/react-ui-theme": "0.8.4-main.fd6878d",
81
+ "@dxos/react-ui-stack": "0.8.4-main.fd6878d",
82
+ "@dxos/schema": "0.8.4-main.fd6878d",
83
+ "@dxos/util": "0.8.4-main.fd6878d",
84
+ "@dxos/shell": "0.8.4-main.fd6878d"
83
85
  },
84
86
  "devDependencies": {
85
87
  "@babel/core": "^7.18.13",
86
88
  "@effect-rx/rx-react": "0.38.0",
87
- "@effect/platform": "0.88.0",
88
- "@phosphor-icons/react": "^2.1.5",
89
+ "@effect/platform": "0.90.2",
89
90
  "@types/react": "~18.2.0",
90
91
  "@types/react-dom": "~18.2.0",
91
92
  "react": "~18.2.0",
92
93
  "react-dom": "~18.2.0",
93
94
  "vite": "5.4.7",
94
- "@dxos/random": "0.8.4-main.f9ba587",
95
- "@dxos/react-ui": "0.8.4-main.f9ba587",
96
- "@dxos/react-ui-theme": "0.8.4-main.f9ba587",
97
- "@dxos/storybook-utils": "0.8.4-main.f9ba587"
95
+ "@dxos/random": "0.8.4-main.fd6878d",
96
+ "@dxos/react-ui": "0.8.4-main.fd6878d",
97
+ "@dxos/react-ui-theme": "0.8.4-main.fd6878d",
98
+ "@dxos/storybook-utils": "0.8.4-main.fd6878d"
98
99
  },
99
100
  "peerDependencies": {
100
101
  "@effect-rx/rx-react": "^0.34.1",
101
102
  "@effect/platform": "^0.80.12",
102
- "@phosphor-icons/react": "^2.1.5",
103
103
  "effect": "^3.13.3",
104
104
  "react": "~18.2.0",
105
105
  "react-dom": "~18.2.0",
106
- "@dxos/react-ui": "0.8.4-main.f9ba587",
107
- "@dxos/react-ui-theme": "0.8.4-main.f9ba587"
106
+ "@dxos/react-ui": "0.8.4-main.fd6878d",
107
+ "@dxos/react-ui-theme": "0.8.4-main.fd6878d"
108
108
  },
109
109
  "publishConfig": {
110
110
  "access": "public"
@@ -16,8 +16,8 @@ import {
16
16
  } from '@dxos/app-framework';
17
17
  import { Ref, Type } from '@dxos/echo';
18
18
  import { AttentionEvents } from '@dxos/plugin-attention';
19
- import { ClientEvents } from '@dxos/plugin-client';
20
- import { DataType } from '@dxos/schema';
19
+ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
20
+ import { DataType, ViewTypeV1, ViewTypeV1ToV2, ViewTypeV2, createDefaultSchema } from '@dxos/schema';
21
21
  import { translations as shellTranslations } from '@dxos/shell/react';
22
22
 
23
23
  import {
@@ -31,13 +31,13 @@ import {
31
31
  SchemaTools,
32
32
  SpaceCapabilities,
33
33
  SpaceSettings,
34
- SpacesReady,
35
34
  SpaceState,
35
+ SpacesReady,
36
36
  } from './capabilities';
37
37
  import { SpaceEvents } from './events';
38
38
  import { meta } from './meta';
39
39
  import { translations } from './translations';
40
- import { CollectionAction, defineObjectForm } from './types';
40
+ import { CollectionAction, SpaceAction, defineObjectForm } from './types';
41
41
 
42
42
  export type SpacePluginOptions = {
43
43
  /**
@@ -109,6 +109,42 @@ export const SpacePlugin = ({
109
109
  icon: 'ph--funnel-simple--regular',
110
110
  },
111
111
  }),
112
+ contributes(Capabilities.Metadata, {
113
+ id: Type.getTypename(DataType.StoredSchema),
114
+ metadata: {
115
+ icon: 'ph--database--regular',
116
+ },
117
+ }),
118
+ contributes(Capabilities.Metadata, {
119
+ id: Type.getTypename(DataType.Event),
120
+ metadata: {
121
+ icon: 'ph--calendar-dot--regular',
122
+ },
123
+ }),
124
+ contributes(Capabilities.Metadata, {
125
+ id: Type.getTypename(DataType.Organization),
126
+ metadata: {
127
+ icon: 'ph--building-office--regular',
128
+ },
129
+ }),
130
+ contributes(Capabilities.Metadata, {
131
+ id: Type.getTypename(DataType.Person),
132
+ metadata: {
133
+ icon: 'ph--user--regular',
134
+ },
135
+ }),
136
+ contributes(Capabilities.Metadata, {
137
+ id: Type.getTypename(DataType.Project),
138
+ metadata: {
139
+ icon: 'ph--check-square-offset--regular',
140
+ },
141
+ }),
142
+ contributes(Capabilities.Metadata, {
143
+ id: Type.getTypename(DataType.Task),
144
+ metadata: {
145
+ icon: 'ph--check-circle--regular',
146
+ },
147
+ }),
112
148
  ],
113
149
  }),
114
150
  defineModule({
@@ -131,14 +167,61 @@ export const SpacePlugin = ({
131
167
  getIntent: (props) => createIntent(CollectionAction.CreateQueryCollection, props),
132
168
  }),
133
169
  ),
170
+ contributes(
171
+ SpaceCapabilities.ObjectForm,
172
+ defineObjectForm({
173
+ objectSchema: DataType.StoredSchema,
174
+ formSchema: SpaceAction.StoredSchemaForm,
175
+ getIntent: (props, options) =>
176
+ props.typename
177
+ ? createIntent(SpaceAction.UseStaticSchema, { space: options.space, typename: props.typename })
178
+ : createIntent(SpaceAction.AddSchema, {
179
+ space: options.space,
180
+ name: props.name,
181
+ schema: createDefaultSchema(),
182
+ }),
183
+ }),
184
+ ),
134
185
  ],
135
186
  }),
136
187
  defineModule({
137
- id: `${meta.id}/module/schema`,
188
+ id: `${meta.id}/module/schema-defs`,
138
189
  activatesOn: ClientEvents.ClientReady,
139
190
  activatesBefore: [ClientEvents.SetupSchema],
140
191
  activate: SchemaDefs,
141
192
  }),
193
+ defineModule({
194
+ id: `${meta.id}/module/schema`,
195
+ activatesOn: ClientEvents.SetupSchema,
196
+ activate: () =>
197
+ contributes(ClientCapabilities.Schema, [
198
+ DataType.View,
199
+ ViewTypeV1,
200
+ ViewTypeV2,
201
+ DataType.Event,
202
+ DataType.Organization,
203
+ DataType.Person,
204
+ DataType.Project,
205
+ DataType.Task,
206
+ ]),
207
+ }),
208
+ defineModule({
209
+ id: `${meta.id}/module/migration`,
210
+ activatesOn: ClientEvents.SetupMigration,
211
+ activate: () => contributes(ClientCapabilities.Migration, [ViewTypeV1ToV2]),
212
+ }),
213
+ defineModule({
214
+ id: `${meta.id}/module/whitelist-schema`,
215
+ activatesOn: ClientEvents.SetupSchema,
216
+ activate: () =>
217
+ contributes(ClientCapabilities.SchemaWhiteList, [
218
+ DataType.Event,
219
+ DataType.Organization,
220
+ DataType.Person,
221
+ DataType.Project,
222
+ DataType.Task,
223
+ ]),
224
+ }),
142
225
  defineModule({
143
226
  id: `${meta.id}/module/react-root`,
144
227
  activatesOn: Events.Startup,
@@ -3,32 +3,35 @@
3
3
  //
4
4
 
5
5
  import { Rx } from '@effect-rx/rx-react';
6
- import { Array, Option, pipe } from 'effect';
6
+ import { Array, Option, Schema, pipe } from 'effect';
7
7
 
8
- import { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';
9
- import { getSpace, SpaceState, type Space, isSpace, type QueryResult } from '@dxos/client/echo';
8
+ import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
9
+ import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
10
10
  import { Filter, Obj, Query, Type } from '@dxos/echo';
11
11
  import { log } from '@dxos/log';
12
12
  import { ClientCapabilities } from '@dxos/plugin-client';
13
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
14
- import { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';
13
+ import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
14
+ import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
15
15
  import { DataType } from '@dxos/schema';
16
16
  import { isNonNullable } from '@dxos/util';
17
17
 
18
- import { SpaceCapabilities } from './capabilities';
19
18
  import { getActiveSpace } from '../hooks';
20
19
  import { SPACE_PLUGIN } from '../meta';
21
20
  import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
22
21
  import {
22
+ SHARED,
23
+ SPACES,
23
24
  constructObjectActions,
24
25
  constructSpaceActions,
25
26
  constructSpaceNode,
26
27
  createObjectNode,
28
+ createStaticSchemaActions,
29
+ createStaticSchemaNode,
27
30
  rxFromQuery,
28
- SHARED,
29
- SPACES,
30
31
  } from '../util';
31
32
 
33
+ import { SpaceCapabilities } from './capabilities';
34
+
32
35
  export default (context: PluginContext) => {
33
36
  // TODO(wittjosiah): Make reactive.
34
37
  const resolve = (typename: string) =>
@@ -478,15 +481,183 @@ export default (context: PluginContext) => {
478
481
  },
479
482
  }),
480
483
 
484
+ // Static schema records.
485
+ createExtension({
486
+ id: `${SPACE_PLUGIN}/static-schemas`,
487
+ connector: (node) => {
488
+ const client = context.getCapability(ClientCapabilities.Client);
489
+ return Rx.make((get) =>
490
+ pipe(
491
+ get(node),
492
+ Option.flatMap((node) =>
493
+ Obj.instanceOf(DataType.QueryCollection, node.data) &&
494
+ node.data.query.typename === DataType.StoredSchema.typename
495
+ ? Option.some(node.data)
496
+ : Option.none(),
497
+ ),
498
+ Option.flatMap((collection) => {
499
+ const space = getSpace(collection);
500
+ return space?.properties.staticRecords ? Option.some(space) : Option.none();
501
+ }),
502
+ Option.map((space) => {
503
+ return get(rxFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
504
+ .map((typename) =>
505
+ client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
506
+ )
507
+ .filter(isNonNullable)
508
+ .map((schema) => createStaticSchemaNode({ schema, space }));
509
+ }),
510
+ Option.getOrElse(() => []),
511
+ ),
512
+ );
513
+ },
514
+ }),
515
+
516
+ // Create static schema actions.
517
+ createExtension({
518
+ id: `${SPACE_PLUGIN}/static-schema-actions`,
519
+ actions: (node) => {
520
+ let query: QueryResult<DataType.View> | undefined;
521
+ return Rx.make((get) =>
522
+ pipe(
523
+ get(node),
524
+ Option.flatMap((node) => {
525
+ const space = isSpace(node.properties.space) ? node.properties.space : undefined;
526
+ return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();
527
+ }),
528
+ Option.map(({ space, schema }) => {
529
+ if (!query) {
530
+ // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
531
+ query = space.db.query(Filter.type(DataType.View));
532
+ }
533
+
534
+ const views = get(rxFromQuery(query));
535
+ const filteredViews = get(
536
+ rxFromSignal(() =>
537
+ // TODO(wittjosiah): Remove cast.
538
+ views.filter((view) => view.query.typename === Type.getTypename(schema as Type.Obj.Any)),
539
+ ),
540
+ );
541
+ const deletable = filteredViews.length === 0;
542
+
543
+ // TODO(wittjosiah): Remove cast.
544
+ return createStaticSchemaActions({ schema: schema as Type.Obj.Any, space, deletable });
545
+ }),
546
+ Option.getOrElse(() => []),
547
+ ),
548
+ );
549
+ },
550
+ }),
551
+
552
+ // Create nodes for schema views.
553
+ createExtension({
554
+ id: `${SPACE_PLUGIN}/schema-views`,
555
+ connector: (node) => {
556
+ let query: QueryResult<DataType.View> | undefined;
557
+ return Rx.make((get) =>
558
+ pipe(
559
+ get(node),
560
+ Option.flatMap((node) => {
561
+ const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
562
+ return space && (Obj.instanceOf(DataType.StoredSchema, node.data) || Schema.isSchema(node.data))
563
+ ? Option.some({ space, schema: node.data })
564
+ : Option.none();
565
+ }),
566
+ Option.map(({ space, schema }) => {
567
+ if (!query) {
568
+ // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
569
+ query = space.db.query(Filter.type(DataType.View));
570
+ }
571
+
572
+ // TODO(wittjosiah): Remove cast.
573
+ const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
574
+ return get(rxFromQuery(query))
575
+ .filter((view) => view.query.typename === typename)
576
+ .map((view) =>
577
+ get(
578
+ rxFromSignal(() =>
579
+ createObjectNode({
580
+ object: view,
581
+ space,
582
+ resolve,
583
+ droppable: false,
584
+ }),
585
+ ),
586
+ ),
587
+ )
588
+ .filter(isNonNullable);
589
+ }),
590
+ Option.getOrElse(() => []),
591
+ ),
592
+ );
593
+ },
594
+ }),
595
+
596
+ // Create record nodes.
597
+ createExtension({
598
+ id: `${SPACE_PLUGIN}/records`,
599
+ resolver: (id) => {
600
+ let query: QueryResult<Type.Expando> | undefined;
601
+ return Rx.make((get) => {
602
+ const client = context.getCapability(ClientCapabilities.Client);
603
+ const { spaceId, objectId } = parseId(id);
604
+ if (!spaceId || !objectId) {
605
+ return null;
606
+ }
607
+
608
+ const space = client.spaces.get(spaceId);
609
+ if (!space) {
610
+ return null;
611
+ }
612
+
613
+ if (!query) {
614
+ query = space.db.query(Filter.ids(objectId));
615
+ }
616
+
617
+ const object = get(rxFromQuery(query)).at(0);
618
+ if (!object) {
619
+ return null;
620
+ }
621
+
622
+ return createObjectNode({ object, space, resolve, disposition: 'hidden' });
623
+ });
624
+ },
625
+ }),
626
+
481
627
  // Create collection actions and action groups.
482
628
  createExtension({
483
629
  id: `${SPACE_PLUGIN}/object-actions`,
484
- actions: (node) =>
485
- Rx.make((get) =>
630
+ actions: (node) => {
631
+ let query: QueryResult<DataType.View> | undefined;
632
+ return Rx.make((get) =>
486
633
  pipe(
487
634
  get(node),
488
- Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),
489
- Option.flatMap((object) => {
635
+ Option.flatMap((node) => {
636
+ const space = getSpace(node.data);
637
+ return space && Obj.isObject(node.data) ? Option.some({ space, object: node.data }) : Option.none();
638
+ }),
639
+ Option.flatMap(({ space, object }) => {
640
+ const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
641
+ if (!query && isSchema) {
642
+ // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
643
+ query = space.db.query(Filter.type(DataType.View));
644
+ }
645
+
646
+ let deletable =
647
+ !isSchema &&
648
+ // Don't allow the Records smart collection to be deleted.
649
+ !(
650
+ Obj.instanceOf(DataType.QueryCollection, object) &&
651
+ object.query.typename === DataType.StoredSchema.typename
652
+ );
653
+ if (isSchema && query) {
654
+ const views = get(rxFromQuery(query));
655
+ const filteredViews = get(
656
+ rxFromSignal(() => views.filter((view) => view.query.typename === object.typename)),
657
+ );
658
+ deletable = filteredViews.length === 0;
659
+ }
660
+
490
661
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
491
662
  const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
492
663
  const [state] = get(context.capabilities(SpaceCapabilities.State));
@@ -500,6 +671,7 @@ export default (context: PluginContext) => {
500
671
  graph: appGraph.graph,
501
672
  dispatch: dispatcher.dispatchPromise,
502
673
  objectForms,
674
+ deletable,
503
675
  navigable: get(rxFromSignal(() => state.navigableCollections)),
504
676
  });
505
677
  }
@@ -507,6 +679,32 @@ export default (context: PluginContext) => {
507
679
  Option.map((params) => constructObjectActions(params)),
508
680
  Option.getOrElse(() => []),
509
681
  ),
682
+ );
683
+ },
684
+ }),
685
+
686
+ // View selected objects.
687
+ createExtension({
688
+ id: `${SPACE_PLUGIN}/selected-objects`,
689
+ connector: (node) =>
690
+ Rx.make((get) =>
691
+ pipe(
692
+ get(node),
693
+ Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),
694
+ Option.map((node) => [
695
+ {
696
+ id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
697
+ type: PLANK_COMPANION_TYPE,
698
+ data: 'selected-objects',
699
+ properties: {
700
+ label: ['companion selected objects label', { ns: SPACE_PLUGIN }],
701
+ icon: 'ph--tree-view--regular',
702
+ disposition: 'hidden',
703
+ },
704
+ },
705
+ ]),
706
+ Option.getOrElse(() => []),
707
+ ),
510
708
  ),
511
709
  }),
512
710
 
@@ -2,10 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { defineCapability, type Label } from '@dxos/app-framework';
5
+ import { type Schema } from 'effect';
6
+
7
+ import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
6
8
  import { type Space } from '@dxos/react-client/echo';
7
9
  import { type DataType } from '@dxos/schema';
8
- import { type Position, type DeepReadonly, type MaybePromise } from '@dxos/util';
10
+ import { type DeepReadonly, type Position } from '@dxos/util';
9
11
 
10
12
  import { SPACE_PLUGIN } from '../meta';
11
13
  import { type ObjectForm, type PluginState } from '../types';
@@ -17,8 +19,11 @@ export namespace SpaceCapabilities {
17
19
  export type SettingsSection = { id: string; label: Label; position?: Position };
18
20
  export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);
19
21
 
20
- export type OnSpaceCreated = (params: { space: Space; rootCollection: DataType.Collection }) => MaybePromise<void>;
22
+ export type OnSpaceCreated = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
21
23
  export const OnSpaceCreated = defineCapability<OnSpaceCreated>(`${SPACE_PLUGIN}/capability/on-space-created`);
22
24
 
25
+ export type OnSchemaAdded = (params: { space: Space; schema: Schema.Schema.AnyNoContext }) => AnyIntentChain;
26
+ export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${SPACE_PLUGIN}/capability/on-schema-added`);
27
+
23
28
  export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);
24
29
  }
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginContext, Capabilities } from '@dxos/app-framework';
5
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
6
6
  import { Obj, Ref } from '@dxos/echo';
7
7
  import { Migrations } from '@dxos/migrations';
8
8
  import { ClientCapabilities } from '@dxos/plugin-client';