@dxos/plugin-client 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8

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 (222) hide show
  1. package/dist/lib/browser/DevicesContainer-3N7ANEJ7.mjs +268 -0
  2. package/dist/lib/browser/DevicesContainer-3N7ANEJ7.mjs.map +7 -0
  3. package/dist/lib/browser/JoinDialog-VTTK7NHO.mjs +59 -0
  4. package/dist/lib/browser/JoinDialog-VTTK7NHO.mjs.map +7 -0
  5. package/dist/lib/browser/ProfileContainer-XV7OXJC2.mjs +171 -0
  6. package/dist/lib/browser/ProfileContainer-XV7OXJC2.mjs.map +7 -0
  7. package/dist/lib/browser/RecoveryCodeDialog-WO34OZEJ.mjs +60 -0
  8. package/dist/lib/browser/RecoveryCodeDialog-WO34OZEJ.mjs.map +7 -0
  9. package/dist/lib/browser/RecoveryCredentialsContainer-G22FSTIX.mjs +57 -0
  10. package/dist/lib/browser/RecoveryCredentialsContainer-G22FSTIX.mjs.map +7 -0
  11. package/dist/lib/browser/ResetDialog-W24FOWBQ.mjs +52 -0
  12. package/dist/lib/browser/ResetDialog-W24FOWBQ.mjs.map +7 -0
  13. package/dist/lib/browser/{app-graph-builder-3FGBMLTF.mjs → app-graph-builder-GGJKFY3X.mjs} +9 -6
  14. package/dist/lib/browser/app-graph-builder-GGJKFY3X.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-F7H2Y3Z2.mjs → chunk-ESDYRACB.mjs} +4 -4
  16. package/dist/lib/browser/{chunk-4BZGRIFS.mjs → chunk-FVEKZBM7.mjs} +34 -44
  17. package/dist/lib/browser/chunk-FVEKZBM7.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-HSFDKP5D.mjs +15 -0
  19. package/dist/lib/browser/{chunk-G7C3S2BE.mjs.map → chunk-HSFDKP5D.mjs.map} +1 -1
  20. package/dist/lib/browser/chunk-JHSBBOCI.mjs +15 -0
  21. package/dist/lib/browser/chunk-JHSBBOCI.mjs.map +7 -0
  22. package/dist/lib/browser/cli/index.mjs +60 -49
  23. package/dist/lib/browser/cli/index.mjs.map +3 -3
  24. package/dist/lib/browser/{client-IX5LMWV4.mjs → client-MM3BHCWG.mjs} +19 -13
  25. package/dist/lib/browser/client-MM3BHCWG.mjs.map +7 -0
  26. package/dist/lib/browser/index.mjs +26 -23
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/{migrations-3EBTAW3N.mjs → migrations-GKUA2ARL.mjs} +6 -5
  30. package/dist/lib/browser/migrations-GKUA2ARL.mjs.map +7 -0
  31. package/dist/lib/browser/{operation-resolver-2NT3ISVP.mjs → operation-resolver-VSWA74RS.mjs} +24 -23
  32. package/dist/lib/browser/operation-resolver-VSWA74RS.mjs.map +7 -0
  33. package/dist/lib/browser/{react-context-4UABG3GP.mjs → react-context-GZ3T5UON.mjs} +8 -6
  34. package/dist/lib/browser/react-context-GZ3T5UON.mjs.map +7 -0
  35. package/dist/lib/browser/react-surface-5VZP34X3.mjs +77 -0
  36. package/dist/lib/browser/react-surface-5VZP34X3.mjs.map +7 -0
  37. package/dist/lib/browser/{schema-defs-O7VLP745.mjs → schema-defs-KAG6HQMI.mjs} +8 -6
  38. package/dist/lib/browser/schema-defs-KAG6HQMI.mjs.map +7 -0
  39. package/dist/lib/browser/types/index.mjs +2 -1
  40. package/dist/lib/node-esm/DevicesContainer-V7HEUPO7.mjs +269 -0
  41. package/dist/lib/node-esm/DevicesContainer-V7HEUPO7.mjs.map +7 -0
  42. package/dist/lib/node-esm/JoinDialog-XVKW4SLT.mjs +60 -0
  43. package/dist/lib/node-esm/JoinDialog-XVKW4SLT.mjs.map +7 -0
  44. package/dist/lib/node-esm/ProfileContainer-B5LJ6TMU.mjs +172 -0
  45. package/dist/lib/node-esm/ProfileContainer-B5LJ6TMU.mjs.map +7 -0
  46. package/dist/lib/node-esm/RecoveryCodeDialog-YIRGXM7N.mjs +61 -0
  47. package/dist/lib/node-esm/RecoveryCodeDialog-YIRGXM7N.mjs.map +7 -0
  48. package/dist/lib/node-esm/RecoveryCredentialsContainer-MVJEFNXX.mjs +58 -0
  49. package/dist/lib/node-esm/RecoveryCredentialsContainer-MVJEFNXX.mjs.map +7 -0
  50. package/dist/lib/node-esm/ResetDialog-GGBWSQZO.mjs +54 -0
  51. package/dist/lib/node-esm/ResetDialog-GGBWSQZO.mjs.map +7 -0
  52. package/dist/lib/node-esm/{app-graph-builder-2PIYVUNC.mjs → app-graph-builder-PTNZ46NN.mjs} +9 -6
  53. package/dist/lib/node-esm/app-graph-builder-PTNZ46NN.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-BOTJSPCT.mjs +17 -0
  55. package/dist/lib/node-esm/chunk-BOTJSPCT.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-JAF64TFQ.mjs → chunk-DT2ZNOGU.mjs} +33 -44
  57. package/dist/lib/node-esm/chunk-DT2ZNOGU.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-BCELGXRI.mjs → chunk-OIJ5QGFQ.mjs} +4 -4
  59. package/dist/lib/node-esm/chunk-VLNCZYIC.mjs +16 -0
  60. package/dist/lib/node-esm/{chunk-PRAFFO54.mjs.map → chunk-VLNCZYIC.mjs.map} +1 -1
  61. package/dist/lib/node-esm/cli/index.mjs +60 -49
  62. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  63. package/dist/lib/node-esm/{client-FFPK5UFP.mjs → client-24L47Y2G.mjs} +19 -13
  64. package/dist/lib/node-esm/client-24L47Y2G.mjs.map +7 -0
  65. package/dist/lib/node-esm/index.mjs +26 -23
  66. package/dist/lib/node-esm/index.mjs.map +3 -3
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/node-esm/{migrations-WSZSFGDK.mjs → migrations-4NEKCBGU.mjs} +6 -5
  69. package/dist/lib/node-esm/migrations-4NEKCBGU.mjs.map +7 -0
  70. package/dist/lib/node-esm/{operation-resolver-VW5R2BE4.mjs → operation-resolver-4GWB3YZG.mjs} +24 -23
  71. package/dist/lib/node-esm/operation-resolver-4GWB3YZG.mjs.map +7 -0
  72. package/dist/lib/node-esm/{react-context-UVXMGPW4.mjs → react-context-T2ORT5CC.mjs} +8 -6
  73. package/dist/lib/node-esm/react-context-T2ORT5CC.mjs.map +7 -0
  74. package/dist/lib/node-esm/react-surface-B65OUZYI.mjs +78 -0
  75. package/dist/lib/node-esm/react-surface-B65OUZYI.mjs.map +7 -0
  76. package/dist/lib/node-esm/{schema-defs-QLRGBIKY.mjs → schema-defs-GXQ47JZN.mjs} +8 -6
  77. package/dist/lib/node-esm/schema-defs-GXQ47JZN.mjs.map +7 -0
  78. package/dist/lib/node-esm/types/index.mjs +2 -1
  79. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  81. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/client/client.d.ts +2 -2
  83. package/dist/types/src/capabilities/client/client.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/client/index.d.ts +2 -1
  85. package/dist/types/src/capabilities/client/index.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/migrations/migrations.d.ts +1 -1
  87. package/dist/types/src/capabilities/migrations/migrations.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  89. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  91. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/react-context/react-context.d.ts +1 -1
  93. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  95. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  97. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts +1 -1
  99. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +1 -1
  100. package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -1
  101. package/dist/types/src/cli/commands/profile/create.d.ts +2 -1
  102. package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -1
  103. package/dist/types/src/cli/commands/profile/delete.d.ts +1 -1
  104. package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -1
  105. package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -1
  106. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  107. package/dist/types/src/components/index.d.ts +0 -6
  108. package/dist/types/src/components/index.d.ts.map +1 -1
  109. package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -0
  110. package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.stories.d.ts +9 -7
  111. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts.map +1 -0
  112. package/dist/types/src/containers/DevicesContainer/index.d.ts +3 -0
  113. package/dist/types/src/containers/DevicesContainer/index.d.ts.map +1 -0
  114. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -0
  115. package/dist/types/src/containers/JoinDialog/index.d.ts +3 -0
  116. package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -0
  117. package/dist/types/src/containers/ProfileContainer/ProfileContainer.d.ts.map +1 -0
  118. package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts.map +1 -0
  119. package/dist/types/src/containers/ProfileContainer/index.d.ts +3 -0
  120. package/dist/types/src/containers/ProfileContainer/index.d.ts.map +1 -0
  121. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.d.ts.map +1 -0
  122. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts.map +1 -0
  123. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts +4 -0
  124. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts.map +1 -0
  125. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -0
  126. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts.map +1 -0
  127. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts +3 -0
  128. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts.map +1 -0
  129. package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.d.ts +1 -1
  130. package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts.map +1 -0
  131. package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.stories.d.ts +1 -1
  132. package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts.map +1 -0
  133. package/dist/types/src/containers/ResetDialog/index.d.ts +4 -0
  134. package/dist/types/src/containers/ResetDialog/index.d.ts.map +1 -0
  135. package/dist/types/src/containers/index.d.ts +10 -0
  136. package/dist/types/src/containers/index.d.ts.map +1 -0
  137. package/dist/types/src/types/capabilities.d.ts +1 -1
  138. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  139. package/dist/types/src/types/schema.d.ts +36 -32
  140. package/dist/types/src/types/schema.d.ts.map +1 -1
  141. package/dist/types/tsconfig.tsbuildinfo +1 -1
  142. package/package.json +36 -35
  143. package/src/ClientPlugin.ts +27 -19
  144. package/src/capabilities/app-graph-builder/app-graph-builder.ts +4 -3
  145. package/src/capabilities/client/client.ts +10 -7
  146. package/src/capabilities/migrations/migrations.ts +3 -3
  147. package/src/capabilities/operation-resolver/operation-resolver.ts +13 -12
  148. package/src/capabilities/react-context/react-context.tsx +3 -3
  149. package/src/capabilities/react-surface/react-surface.tsx +12 -12
  150. package/src/capabilities/schema-defs/schema-defs.ts +7 -6
  151. package/src/cli/commands/edge/status.ts +2 -2
  152. package/src/cli/commands/halo/create/create.ts +2 -2
  153. package/src/cli/commands/profile/create.ts +9 -6
  154. package/src/cli/commands/profile/delete.ts +5 -2
  155. package/src/cli/commands/profile/list.ts +13 -11
  156. package/src/cli/plugin.ts +7 -6
  157. package/src/components/index.ts +0 -7
  158. package/src/constants.ts +3 -3
  159. package/src/{components → containers/DevicesContainer}/DevicesContainer.stories.tsx +8 -6
  160. package/src/{components → containers/DevicesContainer}/DevicesContainer.tsx +49 -57
  161. package/src/containers/DevicesContainer/index.ts +7 -0
  162. package/src/{components → containers/JoinDialog}/JoinDialog.tsx +8 -6
  163. package/src/containers/JoinDialog/index.ts +7 -0
  164. package/src/{components → containers/ProfileContainer}/ProfileContainer.stories.tsx +4 -4
  165. package/src/{components → containers/ProfileContainer}/ProfileContainer.tsx +20 -28
  166. package/src/containers/ProfileContainer/index.ts +7 -0
  167. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.tsx +4 -4
  168. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.tsx +28 -25
  169. package/src/containers/RecoveryCodeDialog/index.ts +8 -0
  170. package/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.stories.tsx +8 -6
  171. package/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.tsx +19 -19
  172. package/src/containers/RecoveryCredentialsContainer/index.ts +7 -0
  173. package/src/{components → containers/ResetDialog}/ResetDialog.stories.tsx +27 -14
  174. package/src/{components → containers/ResetDialog}/ResetDialog.tsx +10 -10
  175. package/src/containers/ResetDialog/index.ts +8 -0
  176. package/src/containers/index.ts +15 -0
  177. package/src/meta.ts +1 -1
  178. package/src/translations.ts +1 -1
  179. package/src/types/capabilities.ts +3 -3
  180. package/src/types/events.ts +5 -5
  181. package/src/types/schema.ts +28 -23
  182. package/dist/lib/browser/app-graph-builder-3FGBMLTF.mjs.map +0 -7
  183. package/dist/lib/browser/chunk-4BZGRIFS.mjs.map +0 -7
  184. package/dist/lib/browser/chunk-G7C3S2BE.mjs +0 -15
  185. package/dist/lib/browser/client-IX5LMWV4.mjs.map +0 -7
  186. package/dist/lib/browser/migrations-3EBTAW3N.mjs.map +0 -7
  187. package/dist/lib/browser/operation-resolver-2NT3ISVP.mjs.map +0 -7
  188. package/dist/lib/browser/react-context-4UABG3GP.mjs.map +0 -7
  189. package/dist/lib/browser/react-surface-RSQ74XCT.mjs +0 -675
  190. package/dist/lib/browser/react-surface-RSQ74XCT.mjs.map +0 -7
  191. package/dist/lib/browser/schema-defs-O7VLP745.mjs.map +0 -7
  192. package/dist/lib/node-esm/app-graph-builder-2PIYVUNC.mjs.map +0 -7
  193. package/dist/lib/node-esm/chunk-JAF64TFQ.mjs.map +0 -7
  194. package/dist/lib/node-esm/chunk-PRAFFO54.mjs +0 -16
  195. package/dist/lib/node-esm/client-FFPK5UFP.mjs.map +0 -7
  196. package/dist/lib/node-esm/migrations-WSZSFGDK.mjs.map +0 -7
  197. package/dist/lib/node-esm/operation-resolver-VW5R2BE4.mjs.map +0 -7
  198. package/dist/lib/node-esm/react-context-UVXMGPW4.mjs.map +0 -7
  199. package/dist/lib/node-esm/react-surface-KBHANGGC.mjs +0 -676
  200. package/dist/lib/node-esm/react-surface-KBHANGGC.mjs.map +0 -7
  201. package/dist/lib/node-esm/schema-defs-QLRGBIKY.mjs.map +0 -7
  202. package/dist/types/src/components/DevicesContainer.d.ts.map +0 -1
  203. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +0 -1
  204. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  205. package/dist/types/src/components/ProfileContainer.d.ts.map +0 -1
  206. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +0 -1
  207. package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +0 -1
  208. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +0 -1
  209. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +0 -1
  210. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +0 -1
  211. package/dist/types/src/components/ResetDialog.d.ts.map +0 -1
  212. package/dist/types/src/components/ResetDialog.stories.d.ts.map +0 -1
  213. /package/dist/lib/browser/{chunk-F7H2Y3Z2.mjs.map → chunk-ESDYRACB.mjs.map} +0 -0
  214. /package/dist/lib/node-esm/{chunk-BCELGXRI.mjs.map → chunk-OIJ5QGFQ.mjs.map} +0 -0
  215. /package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.d.ts +0 -0
  216. /package/dist/types/src/{components → containers/JoinDialog}/JoinDialog.d.ts +0 -0
  217. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.d.ts +0 -0
  218. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.stories.d.ts +0 -0
  219. /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.d.ts +0 -0
  220. /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.d.ts +0 -0
  221. /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.d.ts +0 -0
  222. /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.stories.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-client",
3
- "version": "0.8.4-main.bc674ce",
3
+ "version": "0.8.4-main.c351d160a8",
4
4
  "description": "DXOS Surface plugin for DXOS Client",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -44,54 +44,55 @@
44
44
  "src"
45
45
  ],
46
46
  "dependencies": {
47
- "@effect/cli": "0.72.1",
48
- "@effect/platform": "0.93.6",
49
- "effect": "3.19.11",
47
+ "@effect/cli": "0.73.2",
48
+ "@effect/platform": "0.94.4",
49
+ "effect": "3.19.16",
50
50
  "react-qr-rounded": "^1.0.0",
51
51
  "yaml": "^2.7.0",
52
- "@dxos/app-framework": "0.8.4-main.bc674ce",
53
- "@dxos/async": "0.8.4-main.bc674ce",
54
- "@dxos/cli-util": "0.8.4-main.bc674ce",
55
- "@dxos/client": "0.8.4-main.bc674ce",
56
- "@dxos/client-protocol": "0.8.4-main.bc674ce",
57
- "@dxos/client-services": "0.8.4-main.bc674ce",
58
- "@dxos/config": "0.8.4-main.bc674ce",
59
- "@dxos/effect": "0.8.4-main.bc674ce",
60
- "@dxos/echo": "0.8.4-main.bc674ce",
61
- "@dxos/invariant": "0.8.4-main.bc674ce",
62
- "@dxos/log": "0.8.4-main.bc674ce",
63
- "@dxos/operation": "0.8.4-main.bc674ce",
64
- "@dxos/plugin-graph": "0.8.4-main.bc674ce",
65
- "@dxos/plugin-observability": "0.8.4-main.bc674ce",
66
- "@dxos/protocols": "0.8.4-main.bc674ce",
67
- "@dxos/react-client": "0.8.4-main.bc674ce",
68
- "@dxos/react-ui-form": "0.8.4-main.bc674ce",
69
- "@dxos/react-ui-pickers": "0.8.4-main.bc674ce",
70
- "@dxos/react-ui-stack": "0.8.4-main.bc674ce",
71
- "@dxos/shell": "0.8.4-main.bc674ce",
72
- "@dxos/util": "0.8.4-main.bc674ce"
52
+ "@dxos/app-framework": "0.8.4-main.c351d160a8",
53
+ "@dxos/cli-util": "0.8.4-main.c351d160a8",
54
+ "@dxos/app-toolkit": "0.8.4-main.c351d160a8",
55
+ "@dxos/async": "0.8.4-main.c351d160a8",
56
+ "@dxos/client-protocol": "0.8.4-main.c351d160a8",
57
+ "@dxos/client": "0.8.4-main.c351d160a8",
58
+ "@dxos/config": "0.8.4-main.c351d160a8",
59
+ "@dxos/client-services": "0.8.4-main.c351d160a8",
60
+ "@dxos/echo": "0.8.4-main.c351d160a8",
61
+ "@dxos/effect": "0.8.4-main.c351d160a8",
62
+ "@dxos/log": "0.8.4-main.c351d160a8",
63
+ "@dxos/invariant": "0.8.4-main.c351d160a8",
64
+ "@dxos/operation": "0.8.4-main.c351d160a8",
65
+ "@dxos/plugin-graph": "0.8.4-main.c351d160a8",
66
+ "@dxos/plugin-observability": "0.8.4-main.c351d160a8",
67
+ "@dxos/react-ui-form": "0.8.4-main.c351d160a8",
68
+ "@dxos/react-ui-pickers": "0.8.4-main.c351d160a8",
69
+ "@dxos/protocols": "0.8.4-main.c351d160a8",
70
+ "@dxos/react-client": "0.8.4-main.c351d160a8",
71
+ "@dxos/shell": "0.8.4-main.c351d160a8",
72
+ "@dxos/util": "0.8.4-main.c351d160a8",
73
+ "@dxos/react-ui-stack": "0.8.4-main.c351d160a8"
73
74
  },
74
75
  "devDependencies": {
75
- "@effect-atom/atom-react": "^0.4.6",
76
+ "@effect-atom/atom-react": "^0.5.0",
76
77
  "@effect/printer": "0.47.0",
77
78
  "@effect/printer-ansi": "0.47.0",
78
79
  "@types/react": "~19.2.7",
79
80
  "@types/react-dom": "~19.2.3",
80
81
  "react": "~19.2.3",
81
82
  "react-dom": "~19.2.3",
82
- "vite": "7.1.9",
83
- "@dxos/react-ui": "0.8.4-main.bc674ce",
84
- "@dxos/storybook-utils": "0.8.4-main.bc674ce",
85
- "@dxos/ui-theme": "0.8.4-main.bc674ce"
83
+ "vite": "^7.1.11",
84
+ "@dxos/react-ui": "0.8.4-main.c351d160a8",
85
+ "@dxos/storybook-utils": "0.8.4-main.c351d160a8",
86
+ "@dxos/ui-theme": "0.8.4-main.c351d160a8"
86
87
  },
87
88
  "peerDependencies": {
88
- "@effect-atom/atom-react": "^0.4.6",
89
- "@effect/platform": "0.93.6",
90
- "effect": "3.19.11",
89
+ "@effect-atom/atom-react": "^0.5.0",
90
+ "@effect/platform": "0.94.4",
91
+ "effect": "3.19.16",
91
92
  "react": "~19.2.3",
92
93
  "react-dom": "~19.2.3",
93
- "@dxos/ui-theme": "0.8.4-main.bc674ce",
94
- "@dxos/react-ui": "0.8.4-main.bc674ce"
94
+ "@dxos/react-ui": "0.8.4-main.c351d160a8",
95
+ "@dxos/ui-theme": "0.8.4-main.c351d160a8"
95
96
  },
96
97
  "publishConfig": {
97
98
  "access": "public"
@@ -2,7 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { ActivationEvent, Capability, Common, Plugin } from '@dxos/app-framework';
5
+ import { ActivationEvent, ActivationEvents, Capability, Plugin } from '@dxos/app-framework';
6
+ import { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';
6
7
 
7
8
  import {
8
9
  AppGraphBuilder,
@@ -19,17 +20,21 @@ import { ClientEvents } from './types';
19
20
  import { type ClientPluginOptions } from './types';
20
21
 
21
22
  export const ClientPlugin = Plugin.define<ClientPluginOptions>(meta).pipe(
23
+ AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),
24
+ AppPlugin.addOperationResolverModule({ activate: OperationResolver }),
25
+ AppPlugin.addReactContextModule({ activate: ReactContext }),
26
+ AppPlugin.addTranslationsModule({ translations }),
22
27
  Plugin.addModule((options) => {
23
28
  return {
24
29
  id: Capability.getModuleTag(Client),
25
- activatesOn: ActivationEvent.oneOf(Common.ActivationEvent.Startup, Common.ActivationEvent.SetupAppGraph),
30
+ activatesOn: ActivationEvent.oneOf(ActivationEvents.Startup, AppActivationEvents.SetupAppGraph),
26
31
  activatesAfter: [ClientEvents.ClientReady],
27
32
  activate: () => Client(options),
28
33
  };
29
34
  }),
30
35
  Plugin.addModule({
31
36
  activatesOn: ClientEvents.ClientReady,
32
- activatesBefore: [Common.ActivationEvent.SetupSchema],
37
+ activatesBefore: [AppActivationEvents.SetupSchema],
33
38
  activate: SchemaDefs,
34
39
  }),
35
40
  Plugin.addModule({
@@ -37,22 +42,25 @@ export const ClientPlugin = Plugin.define<ClientPluginOptions>(meta).pipe(
37
42
  activatesBefore: [ClientEvents.SetupMigration],
38
43
  activate: Migrations,
39
44
  }),
40
- Common.Plugin.addReactContextModule({ activate: ReactContext }),
41
- Plugin.addModule(({ invitationUrl = window.location.origin, invitationProp = 'deviceInvitationCode', onReset }) => {
42
- const createInvitationUrl = (invitationCode: string) => {
43
- const baseUrl = new URL(invitationUrl);
44
- baseUrl.searchParams.set(invitationProp, invitationCode);
45
- return baseUrl.toString();
46
- };
45
+ Plugin.addModule(
46
+ ({
47
+ shareableLinkOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost',
48
+ invitationPath = '/',
49
+ invitationProp = 'deviceInvitationCode',
50
+ onReset,
51
+ }) => {
52
+ const createInvitationUrl = (invitationCode: string) => {
53
+ const baseUrl = new URL(invitationPath || '/', shareableLinkOrigin);
54
+ baseUrl.searchParams.set(invitationProp, invitationCode);
55
+ return baseUrl.toString();
56
+ };
47
57
 
48
- return {
49
- id: Capability.getModuleTag(ReactSurface),
50
- activatesOn: Common.ActivationEvent.SetupReactSurface,
51
- activate: () => ReactSurface({ createInvitationUrl, onReset }),
52
- };
53
- }),
54
- Common.Plugin.addAppGraphModule({ activate: AppGraphBuilder }),
55
- Common.Plugin.addOperationResolverModule({ activate: OperationResolver }),
56
- Common.Plugin.addTranslationsModule({ translations }),
58
+ return {
59
+ id: Capability.getModuleTag(ReactSurface),
60
+ activatesOn: ActivationEvents.SetupReactSurface,
61
+ activate: () => ReactSurface({ createInvitationUrl, onReset }),
62
+ };
63
+ },
64
+ ),
57
65
  Plugin.make,
58
66
  );
@@ -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 { Operation } from '@dxos/operation';
9
10
  import { CreateAtom, GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';
10
11
  import { ConnectionState } from '@dxos/react-client/mesh';
@@ -20,7 +21,7 @@ export default Capability.makeModule(
20
21
  actions: () =>
21
22
  Effect.succeed([
22
23
  {
23
- id: `${meta.id}/open-user-account`,
24
+ id: `${meta.id}.open-user-account`,
24
25
  data: () => Operation.invoke(ClientOperation.ShareIdentity),
25
26
  properties: {
26
27
  label: ['open user account label', { ns: meta.id }],
@@ -90,6 +91,6 @@ export default Capability.makeModule(
90
91
  }),
91
92
  });
92
93
 
93
- return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);
94
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
94
95
  }),
95
96
  );
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
- import { Capability, Common, Plugin } from '@dxos/app-framework';
7
+ import { Capabilities, Capability, Plugin } from '@dxos/app-framework';
8
8
  import { Client, ClientService } from '@dxos/client';
9
9
  import { runAndForwardErrors } from '@dxos/effect';
10
10
  import { log } from '@dxos/log';
@@ -12,19 +12,21 @@ import { log } from '@dxos/log';
12
12
  import { ClientEvents } from '../../types';
13
13
  import { ClientCapabilities, type ClientPluginOptions } from '../../types';
14
14
 
15
- type ClientCapabilityOptions = Omit<ClientPluginOptions, 'appKey' | 'invitationUrl' | 'invitationParam' | 'onReset'>;
15
+ type ClientCapabilityOptions = Omit<
16
+ ClientPluginOptions,
17
+ 'appKey' | 'shareableLinkOrigin' | 'invitationPath' | 'invitationParam' | 'onReset'
18
+ >;
16
19
 
17
20
  export default Capability.makeModule(
18
- Effect.fnUntraced(function* (props?: ClientCapabilityOptions) {
19
- const { onClientInitialized, onSpacesReady, ...options } = props!;
21
+ Effect.fnUntraced(function* ({ onClientInitialized, onSpacesReady, ...options }: ClientCapabilityOptions) {
20
22
  const capabilityManager = yield* Capability.Service;
21
23
  const pluginManager = yield* Plugin.Service;
22
24
 
23
25
  log('creating client');
24
26
  const client = new Client(options);
25
- log('initializing client');
27
+ log('initializing client (calling client.initialize())...');
26
28
  yield* Effect.tryPromise(() => client.initialize());
27
- log('initialized client');
29
+ log('client.initialize() returned successfully');
28
30
  if (onClientInitialized) {
29
31
  yield* onClientInitialized({ client }).pipe(
30
32
  Effect.provideService(Capability.Service, capabilityManager),
@@ -65,11 +67,12 @@ export default Capability.makeModule(
65
67
  // Perhaps move to using layer has source of truth and add a getter capability for the client.
66
68
  Capability.contributes(ClientCapabilities.Client, client, () =>
67
69
  Effect.gen(function* () {
70
+ log.info('client capability: destroying client');
68
71
  subscription.unsubscribe();
69
72
  yield* Effect.tryPromise(() => client.destroy());
70
73
  }),
71
74
  ),
72
- Capability.contributes(Common.Capability.Layer, ClientService.fromClient(client)),
75
+ Capability.contributes(Capabilities.Layer, ClientService.fromClient(client)),
73
76
  ];
74
77
  }),
75
78
  );
@@ -4,13 +4,13 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
- import { Capability, Common } from '@dxos/app-framework';
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
8
 
9
9
  import { ClientCapabilities } from '../../types';
10
10
 
11
11
  export default Capability.makeModule(
12
12
  Effect.fnUntraced(function* () {
13
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
13
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
14
14
  const client = yield* Capability.get(ClientCapabilities.Client);
15
15
  const migrationsAtom = yield* Capability.atom(ClientCapabilities.Migration);
16
16
 
@@ -25,6 +25,6 @@ export default Capability.makeModule(
25
25
  { immediate: true },
26
26
  );
27
27
 
28
- return Capability.contributes(Common.Capability.Null, null, () => Effect.sync(() => cancel()));
28
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => cancel()));
29
29
  }),
30
30
  );
@@ -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 { Capabilities, Capability } from '@dxos/app-framework';
8
+ import { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';
8
9
  import { PublicKey } from '@dxos/client';
9
10
  import { runAndForwardErrors } from '@dxos/effect';
10
11
  import { invariant } from '@dxos/invariant';
@@ -24,17 +25,15 @@ type OperationResolverOptions = {
24
25
  const RECOVER_IDENTITY_RPC_TIMEOUT = 20_000;
25
26
 
26
27
  export default Capability.makeModule(
27
- Effect.fnUntraced(function* (props?: OperationResolverOptions) {
28
- const { appName = 'Composer' } = props ?? {};
29
-
30
- return Capability.contributes(Common.Capability.OperationResolver, [
28
+ Effect.fnUntraced(function* ({ appName = 'Composer' }: OperationResolverOptions = {}) {
29
+ return Capability.contributes(Capabilities.OperationResolver, [
31
30
  //
32
31
  // CreateIdentity
33
32
  //
34
33
  OperationResolver.make({
35
34
  operation: ClientOperation.CreateIdentity,
36
35
  handler: Effect.fnUntraced(function* (profile) {
37
- const manager = yield* Capability.get(Common.Capability.PluginManager);
36
+ const manager = yield* Capability.get(Capabilities.PluginManager);
38
37
  const client = yield* Capability.get(ClientCapabilities.Client);
39
38
  const data = yield* Effect.promise(() => client.halo.createIdentity(profile));
40
39
  yield* Effect.promise(() => runAndForwardErrors(manager.activate(ClientEvents.IdentityCreated)));
@@ -49,7 +48,7 @@ export default Capability.makeModule(
49
48
  OperationResolver.make({
50
49
  operation: ClientOperation.JoinIdentity,
51
50
  handler: Effect.fnUntraced(function* (data) {
52
- yield* Operation.invoke(Common.LayoutOperation.UpdateDialog, {
51
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
53
52
  subject: JOIN_DIALOG,
54
53
  blockAlign: 'start',
55
54
  props: {
@@ -66,8 +65,10 @@ export default Capability.makeModule(
66
65
  OperationResolver.make({
67
66
  operation: ClientOperation.ShareIdentity,
68
67
  handler: Effect.fnUntraced(function* () {
69
- yield* Operation.invoke(Common.LayoutOperation.SwitchWorkspace, { subject: Account.id });
70
- yield* Operation.invoke(Common.LayoutOperation.Open, { subject: [Account.Profile] });
68
+ yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(Account.id) });
69
+ yield* Operation.invoke(LayoutOperation.Open, {
70
+ subject: [`${getSpacePath(Account.id)}/${Account.Profile}`],
71
+ });
71
72
  yield* Operation.schedule(ObservabilityOperation.SendEvent, { name: 'identity.share' });
72
73
  }),
73
74
  }),
@@ -78,7 +79,7 @@ export default Capability.makeModule(
78
79
  OperationResolver.make({
79
80
  operation: ClientOperation.RecoverIdentity,
80
81
  handler: Effect.fnUntraced(function* () {
81
- yield* Operation.invoke(Common.LayoutOperation.UpdateDialog, {
82
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
82
83
  subject: JOIN_DIALOG,
83
84
  blockAlign: 'start',
84
85
  props: {
@@ -94,7 +95,7 @@ export default Capability.makeModule(
94
95
  OperationResolver.make({
95
96
  operation: ClientOperation.ResetStorage,
96
97
  handler: Effect.fnUntraced(function* (data) {
97
- yield* Operation.invoke(Common.LayoutOperation.UpdateDialog, {
98
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
98
99
  subject: RESET_DIALOG,
99
100
  blockAlign: 'start',
100
101
  props: {
@@ -129,7 +130,7 @@ export default Capability.makeModule(
129
130
  const { recoveryCode } = yield* Effect.promise(() =>
130
131
  client.services.services.IdentityService!.createRecoveryCredential({}),
131
132
  );
132
- yield* Operation.invoke(Common.LayoutOperation.UpdateDialog, {
133
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
133
134
  subject: RECOVERY_CODE_DIALOG,
134
135
  blockAlign: 'start',
135
136
  type: 'alert',
@@ -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 { useCapability } from '@dxos/app-framework/react';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import { useCapability } from '@dxos/app-framework/ui';
10
10
  import { ClientProvider } from '@dxos/react-client';
11
11
 
12
12
  import { meta } from '../../meta';
@@ -14,7 +14,7 @@ import { ClientCapabilities } from '../../types';
14
14
 
15
15
  export default Capability.makeModule(() =>
16
16
  Effect.succeed(
17
- Capability.contributes(Common.Capability.ReactContext, {
17
+ Capability.contributes(Capabilities.ReactContext, {
18
18
  id: meta.id,
19
19
  context: ({ children }: { children?: React.ReactNode }) => {
20
20
  const client = useCapability(ClientCapabilities.Client);
@@ -5,9 +5,11 @@
5
5
  import * as Effect from 'effect/Effect';
6
6
  import React from 'react';
7
7
 
8
- import { Capability, Common } from '@dxos/app-framework';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import { Surface } from '@dxos/app-framework/ui';
9
10
  import { type JoinPanelProps } from '@dxos/shell/react';
10
11
 
12
+ import { JOIN_DIALOG, RECOVERY_CODE_DIALOG, RESET_DIALOG } from '../../constants';
11
13
  import {
12
14
  DevicesContainer,
13
15
  JoinDialog,
@@ -17,8 +19,7 @@ import {
17
19
  RecoveryCredentialsContainer,
18
20
  ResetDialog,
19
21
  type ResetDialogProps,
20
- } from '../../components';
21
- import { JOIN_DIALOG, RECOVERY_CODE_DIALOG, RESET_DIALOG } from '../../constants';
22
+ } from '../../containers';
22
23
  import { Account, type ClientPluginOptions } from '../../types';
23
24
 
24
25
  type ReactSurfaceOptions = Pick<ClientPluginOptions, 'onReset'> & {
@@ -26,42 +27,41 @@ type ReactSurfaceOptions = Pick<ClientPluginOptions, 'onReset'> & {
26
27
  };
27
28
 
28
29
  export default Capability.makeModule(
29
- Effect.fnUntraced(function* (props?: ReactSurfaceOptions) {
30
- const { createInvitationUrl, onReset } = props!;
30
+ Effect.fnUntraced(function* ({ createInvitationUrl, onReset }: ReactSurfaceOptions) {
31
31
  const capabilityManager = yield* Capability.Service;
32
32
 
33
- return Capability.contributes(Common.Capability.ReactSurface, [
34
- Common.createSurface({
33
+ return Capability.contributes(Capabilities.ReactSurface, [
34
+ Surface.create({
35
35
  id: Account.Profile,
36
36
  role: 'article',
37
37
  filter: (data): data is any => data.subject === Account.Profile,
38
38
  component: () => <ProfileContainer />,
39
39
  }),
40
- Common.createSurface({
40
+ Surface.create({
41
41
  id: Account.Devices,
42
42
  role: 'article',
43
43
  filter: (data): data is any => data.subject === Account.Devices,
44
44
  component: () => <DevicesContainer createInvitationUrl={createInvitationUrl} />,
45
45
  }),
46
- Common.createSurface({
46
+ Surface.create({
47
47
  id: Account.Security,
48
48
  role: 'article',
49
49
  filter: (data): data is any => data.subject === Account.Security,
50
50
  component: () => <RecoveryCredentialsContainer />,
51
51
  }),
52
- Common.createSurface({
52
+ Surface.create({
53
53
  id: JOIN_DIALOG,
54
54
  role: 'dialog',
55
55
  filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,
56
56
  component: ({ data }: { data: any }) => <JoinDialog {...data.props} />,
57
57
  }),
58
- Common.createSurface({
58
+ Surface.create({
59
59
  id: RECOVERY_CODE_DIALOG,
60
60
  role: 'dialog',
61
61
  filter: (data): data is { props: RecoveryCodeDialogProps } => data.component === RECOVERY_CODE_DIALOG,
62
62
  component: ({ data }: { data: any }) => <RecoveryCodeDialog {...data.props} />,
63
63
  }),
64
- Common.createSurface({
64
+ Surface.create({
65
65
  id: RESET_DIALOG,
66
66
  role: 'dialog',
67
67
  filter: (data): data is { props: ResetDialogProps } => data.component === RESET_DIALOG,
@@ -4,24 +4,25 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
- import { Capability, Common } from '@dxos/app-framework';
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
+ import { AppCapabilities } from '@dxos/app-toolkit';
8
9
  import { type Type } from '@dxos/echo';
9
10
 
10
11
  import { ClientCapabilities } from '../../types';
11
12
 
12
13
  export default Capability.makeModule(
13
14
  Effect.fnUntraced(function* () {
14
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
15
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
15
16
  const client = yield* Capability.get(ClientCapabilities.Client);
16
- const schemasAtom = yield* Capability.atom(Common.Capability.Schema);
17
+ const schemasAtom = yield* Capability.atom(AppCapabilities.Schema);
17
18
 
18
19
  // TODO(wittjosiah): Unregister schemas when they are disabled.
19
- let previous: Type.Entity.Any[] = [];
20
+ let previous: Type.AnyEntity[] = [];
20
21
  const cancel = registry.subscribe(
21
22
  schemasAtom,
22
23
  async (_schemas: any[]) => {
23
24
  // TODO(wittjosiah): This doesn't seem to de-dupe schemas as expected.
24
- const schemas = Array.from(new Set(_schemas.flat())) as Type.Entity.Any[];
25
+ const schemas = Array.from(new Set(_schemas.flat())) as Type.AnyEntity[];
25
26
  // TODO(wittjosiah): Filter out schemas which the client has already registered.
26
27
  const newSchemas = schemas.filter((schema) => !previous.includes(schema));
27
28
  previous = schemas;
@@ -30,6 +31,6 @@ export default Capability.makeModule(
30
31
  { immediate: true },
31
32
  );
32
33
 
33
- return Capability.contributes(Common.Capability.Null, null, () => Effect.sync(() => cancel()));
34
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => cancel()));
34
35
  }),
35
36
  );
@@ -15,8 +15,8 @@ export const getStatus = () =>
15
15
  Effect.gen(function* () {
16
16
  const client = yield* ClientService;
17
17
  const identity = createEdgeIdentity(client);
18
- client.edge.setIdentity(identity);
19
- const status = yield* Effect.tryPromise(() => client.edge.getStatus());
18
+ client.edge.http.setIdentity(identity);
19
+ const status = yield* Effect.tryPromise(() => client.edge.http.getStatus());
20
20
 
21
21
  if (yield* CommandConfig.isJson) {
22
22
  yield* Console.log(JSON.stringify(status, null, 2));
@@ -8,7 +8,7 @@ import * as Console from 'effect/Console';
8
8
  import * as Effect from 'effect/Effect';
9
9
  import * as Option from 'effect/Option';
10
10
 
11
- import { Common, Plugin } from '@dxos/app-framework';
11
+ import { Capabilities, Plugin } from '@dxos/app-framework';
12
12
  import { CommandConfig, flushAndSync, spaceLayer } from '@dxos/cli-util';
13
13
  import { print } from '@dxos/cli-util';
14
14
  import { ClientService } from '@dxos/client';
@@ -30,7 +30,7 @@ export const handler = Effect.fn(function* ({
30
30
  invariant(!client.halo.identity.get(), 'Identity already exists');
31
31
 
32
32
  const manager = yield* Plugin.Service;
33
- const { invoke } = manager.capabilities.get(Common.Capability.OperationInvoker);
33
+ const { invoke } = manager.capabilities.get(Capabilities.OperationInvoker);
34
34
  const identity = yield* invoke(ClientOperation.CreateIdentity, {
35
35
  displayName: Option.getOrUndefined(displayName),
36
36
  });
@@ -5,13 +5,14 @@
5
5
  import * as Command from '@effect/cli/Command';
6
6
  import * as Options from '@effect/cli/Options';
7
7
  import * as FileSystem from '@effect/platform/FileSystem';
8
+ import * as Path from '@effect/platform/Path';
8
9
  import * as Console from 'effect/Console';
9
10
  import * as Effect from 'effect/Effect';
10
11
  import * as Option from 'effect/Option';
11
12
  import * as Record from 'effect/Record';
12
13
 
13
14
  import { CommandConfig, print } from '@dxos/cli-util';
14
- import { DX_CONFIG, getProfilePath } from '@dxos/client-protocol';
15
+ import { DX_CONFIG, getProfileConfigPath } from '@dxos/client-protocol';
15
16
  import { trim } from '@dxos/util';
16
17
 
17
18
  import { printProfileCreated } from './util';
@@ -71,17 +72,19 @@ export const create = Command.make(
71
72
  Effect.fnUntraced(function* ({ template, name }) {
72
73
  const { json } = yield* CommandConfig;
73
74
  const fs = yield* FileSystem.FileSystem;
75
+ const path = yield* Path.Path;
74
76
  const profileName = name.pipe(Option.getOrElse(() => template));
75
- const profilePath = `${getProfilePath(DX_CONFIG, profileName)}.yml`;
76
- if (yield* fs.exists(profilePath)) {
77
+ const configPath = getProfileConfigPath(DX_CONFIG, profileName);
78
+ if (yield* fs.exists(configPath)) {
77
79
  throw new Error(`Profile ${profileName} already exists`);
78
80
  }
79
81
 
80
- yield* fs.writeFileString(profilePath, TEMPLATES[template]);
82
+ yield* fs.makeDirectory(path.dirname(configPath), { recursive: true });
83
+ yield* fs.writeFileString(configPath, TEMPLATES[template]);
81
84
  if (json) {
82
- yield* Console.log(JSON.stringify({ name: profileName, path: profilePath }, null, 2));
85
+ yield* Console.log(JSON.stringify({ name: profileName, path: configPath }, null, 2));
83
86
  } else {
84
- yield* Console.log(print(printProfileCreated(profileName, profilePath)));
87
+ yield* Console.log(print(printProfileCreated(profileName, configPath)));
85
88
  }
86
89
  }),
87
90
  );
@@ -10,7 +10,7 @@ import * as Effect from 'effect/Effect';
10
10
  import * as Option from 'effect/Option';
11
11
 
12
12
  import { CommandConfig, print } from '@dxos/cli-util';
13
- import { DX_CONFIG, getProfilePath } from '@dxos/client-protocol';
13
+ import { DX_CONFIG, getProfileConfigPath } from '@dxos/client-protocol';
14
14
 
15
15
  import { printProfileDeleted } from './util';
16
16
 
@@ -23,7 +23,10 @@ export const del = Command.make(
23
23
  const { json } = yield* CommandConfig;
24
24
  const fs = yield* FileSystem.FileSystem;
25
25
  const profileName = name.pipe(Option.getOrElse(() => 'default'));
26
- yield* fs.remove(`${getProfilePath(DX_CONFIG, profileName)}.yml`);
26
+ const configPath = getProfileConfigPath(DX_CONFIG, profileName);
27
+ const pluginsPath = `${DX_CONFIG}/plugins/${profileName}.yml`;
28
+ yield* fs.remove(configPath).pipe(Effect.ignore);
29
+ yield* fs.remove(pluginsPath).pipe(Effect.ignore);
27
30
  if (json) {
28
31
  yield* Console.log(JSON.stringify({ name: profileName, deleted: true }, null, 2));
29
32
  } else {
@@ -7,6 +7,7 @@ import * as FileSystem from '@effect/platform/FileSystem';
7
7
  import * as Path from '@effect/platform/Path';
8
8
  import * as Console from 'effect/Console';
9
9
  import * as Effect from 'effect/Effect';
10
+ import * as Option from 'effect/Option';
10
11
  import * as Yaml from 'yaml';
11
12
 
12
13
  import { CommandConfig, printList } from '@dxos/cli-util';
@@ -23,21 +24,22 @@ export const list = Command.make(
23
24
  const fs = yield* FileSystem.FileSystem;
24
25
  const path = yield* Path.Path;
25
26
  const profileDir = path.join(DX_CONFIG, 'profile');
26
- const files = yield* fs.readDirectory(profileDir);
27
- const profiles = yield* Effect.forEach(
28
- files,
29
- Effect.fnUntraced(function* (filename) {
30
- const ext = path.extname(filename);
31
- const name = filename.slice(0, -ext.length);
32
- const fullPath = path.join(DX_CONFIG, 'profile', filename);
33
- const configContent = yield* fs.readFileString(fullPath);
34
- const configValues = Yaml.parse(configContent);
27
+ const entries = yield* fs.readDirectory(profileDir);
28
+ const profileFiles = entries.filter((entry) => entry.endsWith('.yml'));
29
+ const profiles = yield* Effect.forEach(profileFiles, (filename) =>
30
+ Effect.gen(function* () {
31
+ const name = filename.slice(0, -4);
32
+ const configPath = path.join(profileDir, filename);
33
+ const configContent = yield* fs
34
+ .readFileString(configPath)
35
+ .pipe(Effect.catchTag('SystemError', () => Effect.succeed('{}')));
36
+ const configValues = Yaml.parse(configContent) ?? {};
35
37
  const config = new Config(configValues);
36
38
  return {
37
39
  name,
38
40
  isCurrent: name === currentProfile,
39
- fullPath,
40
- storagePath: getProfilePath(configValues?.runtime?.client?.storage.dataRoot ?? DX_DATA, name),
41
+ fullPath: configPath,
42
+ storagePath: getProfilePath(configValues?.runtime?.client?.storage?.dataRoot ?? DX_DATA, name),
41
43
  edge: config.values.runtime?.services?.edge?.url,
42
44
  };
43
45
  }),