@dxos/plugin-client 0.8.4-main.3a94e84 → 0.8.4-main.3eb6e50203

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 (400) hide show
  1. package/dist/lib/browser/app-graph-builder-DTETNB5U.mjs +119 -0
  2. package/dist/lib/browser/app-graph-builder-DTETNB5U.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-4BZGRIFS.mjs +293 -0
  4. package/dist/lib/browser/chunk-4BZGRIFS.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-G7C3S2BE.mjs +15 -0
  6. package/dist/lib/browser/chunk-G7C3S2BE.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-MY6BJCB6.mjs +18 -0
  8. package/dist/lib/browser/chunk-MY6BJCB6.mjs.map +7 -0
  9. package/dist/lib/browser/cli/index.mjs +1049 -0
  10. package/dist/lib/browser/cli/index.mjs.map +7 -0
  11. package/dist/lib/browser/client-XOQQ5POJ.mjs +86 -0
  12. package/dist/lib/browser/client-XOQQ5POJ.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +77 -82
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/migrations-YNQ7L5GT.mjs +24 -0
  17. package/dist/lib/browser/migrations-YNQ7L5GT.mjs.map +7 -0
  18. package/dist/lib/browser/operation-resolver-N4YCJ4KS.mjs +299 -0
  19. package/dist/lib/browser/operation-resolver-N4YCJ4KS.mjs.map +7 -0
  20. package/dist/lib/browser/react-context-FDXHIBZL.mjs +24 -0
  21. package/dist/lib/browser/react-context-FDXHIBZL.mjs.map +7 -0
  22. package/dist/lib/browser/react-surface-ZP3FLVRS.mjs +676 -0
  23. package/dist/lib/browser/react-surface-ZP3FLVRS.mjs.map +7 -0
  24. package/dist/lib/browser/schema-defs-AYXOYD2M.mjs +27 -0
  25. package/dist/lib/browser/schema-defs-AYXOYD2M.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +9 -4
  27. package/dist/lib/node-esm/app-graph-builder-PFKVFRXI.mjs +120 -0
  28. package/dist/lib/node-esm/app-graph-builder-PFKVFRXI.mjs.map +7 -0
  29. package/dist/lib/node-esm/chunk-JAF64TFQ.mjs +295 -0
  30. package/dist/lib/node-esm/chunk-JAF64TFQ.mjs.map +7 -0
  31. package/dist/lib/node-esm/chunk-MUOMX53G.mjs +20 -0
  32. package/dist/lib/node-esm/chunk-MUOMX53G.mjs.map +7 -0
  33. package/dist/lib/node-esm/chunk-PRAFFO54.mjs +16 -0
  34. package/dist/lib/node-esm/chunk-PRAFFO54.mjs.map +7 -0
  35. package/dist/lib/node-esm/cli/index.mjs +1050 -0
  36. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  37. package/dist/lib/node-esm/client-3YIMWKR7.mjs +87 -0
  38. package/dist/lib/node-esm/client-3YIMWKR7.mjs.map +7 -0
  39. package/dist/lib/node-esm/index.mjs +77 -82
  40. package/dist/lib/node-esm/index.mjs.map +4 -4
  41. package/dist/lib/node-esm/meta.json +1 -1
  42. package/dist/lib/node-esm/migrations-ZH5GNG4U.mjs +25 -0
  43. package/dist/lib/node-esm/migrations-ZH5GNG4U.mjs.map +7 -0
  44. package/dist/lib/node-esm/operation-resolver-CHGWI5P2.mjs +300 -0
  45. package/dist/lib/node-esm/operation-resolver-CHGWI5P2.mjs.map +7 -0
  46. package/dist/lib/node-esm/react-context-7Z2TVUTV.mjs +25 -0
  47. package/dist/lib/node-esm/react-context-7Z2TVUTV.mjs.map +7 -0
  48. package/dist/lib/node-esm/react-surface-BHJMHIMH.mjs +677 -0
  49. package/dist/lib/node-esm/react-surface-BHJMHIMH.mjs.map +7 -0
  50. package/dist/lib/node-esm/schema-defs-TV2SCKSH.mjs +28 -0
  51. package/dist/lib/node-esm/schema-defs-TV2SCKSH.mjs.map +7 -0
  52. package/dist/lib/node-esm/types/index.mjs +9 -4
  53. package/dist/types/src/ClientPlugin.d.ts +2 -1
  54. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  55. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  56. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  57. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  58. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  59. package/dist/types/src/capabilities/client/client.d.ts +8 -0
  60. package/dist/types/src/capabilities/client/client.d.ts.map +1 -0
  61. package/dist/types/src/capabilities/client/index.d.ts +18 -0
  62. package/dist/types/src/capabilities/client/index.d.ts.map +1 -0
  63. package/dist/types/src/capabilities/index.d.ts +7 -19
  64. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/migrations/index.d.ts +3 -0
  66. package/dist/types/src/capabilities/migrations/index.d.ts.map +1 -0
  67. package/dist/types/src/capabilities/migrations/migrations.d.ts +5 -0
  68. package/dist/types/src/capabilities/migrations/migrations.d.ts.map +1 -0
  69. package/dist/types/src/capabilities/operation-resolver/index.d.ts +5 -0
  70. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  71. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +8 -0
  72. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  73. package/dist/types/src/capabilities/react-context/index.d.ts +7 -0
  74. package/dist/types/src/capabilities/react-context/index.d.ts.map +1 -0
  75. package/dist/types/src/capabilities/react-context/react-context.d.ts +10 -0
  76. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/react-surface/index.d.ts +5 -0
  78. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +9 -0
  80. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/schema-defs/index.d.ts +3 -0
  82. package/dist/types/src/capabilities/schema-defs/index.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts +5 -0
  84. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +1 -0
  85. package/dist/types/src/cli/commands/config/index.d.ts +5 -0
  86. package/dist/types/src/cli/commands/config/index.d.ts.map +1 -0
  87. package/dist/types/src/cli/commands/config/view.d.ts +5 -0
  88. package/dist/types/src/cli/commands/config/view.d.ts.map +1 -0
  89. package/dist/types/src/cli/commands/device/index.d.ts +7 -0
  90. package/dist/types/src/cli/commands/device/index.d.ts.map +1 -0
  91. package/dist/types/src/cli/commands/device/info/index.d.ts +2 -0
  92. package/dist/types/src/cli/commands/device/info/index.d.ts.map +1 -0
  93. package/dist/types/src/cli/commands/device/info/info.d.ts +7 -0
  94. package/dist/types/src/cli/commands/device/info/info.d.ts.map +1 -0
  95. package/dist/types/src/cli/commands/device/info/info.test.d.ts +2 -0
  96. package/dist/types/src/cli/commands/device/info/info.test.d.ts.map +1 -0
  97. package/dist/types/src/cli/commands/device/list/index.d.ts +2 -0
  98. package/dist/types/src/cli/commands/device/list/index.d.ts.map +1 -0
  99. package/dist/types/src/cli/commands/device/list/list.d.ts +7 -0
  100. package/dist/types/src/cli/commands/device/list/list.d.ts.map +1 -0
  101. package/dist/types/src/cli/commands/device/list/list.test.d.ts +2 -0
  102. package/dist/types/src/cli/commands/device/list/list.test.d.ts.map +1 -0
  103. package/dist/types/src/cli/commands/device/update/index.d.ts +2 -0
  104. package/dist/types/src/cli/commands/device/update/index.d.ts.map +1 -0
  105. package/dist/types/src/cli/commands/device/update/update.d.ts +11 -0
  106. package/dist/types/src/cli/commands/device/update/update.d.ts.map +1 -0
  107. package/dist/types/src/cli/commands/device/util.d.ts +16 -0
  108. package/dist/types/src/cli/commands/device/util.d.ts.map +1 -0
  109. package/dist/types/src/cli/commands/edge/index.d.ts +5 -0
  110. package/dist/types/src/cli/commands/edge/index.d.ts.map +1 -0
  111. package/dist/types/src/cli/commands/edge/status.d.ts +7 -0
  112. package/dist/types/src/cli/commands/edge/status.d.ts.map +1 -0
  113. package/dist/types/src/cli/commands/halo/create/create.d.ts +15 -0
  114. package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -0
  115. package/dist/types/src/cli/commands/halo/create/create.test.d.ts +2 -0
  116. package/dist/types/src/cli/commands/halo/create/create.test.d.ts.map +1 -0
  117. package/dist/types/src/cli/commands/halo/create/index.d.ts +2 -0
  118. package/dist/types/src/cli/commands/halo/create/index.d.ts.map +1 -0
  119. package/dist/types/src/cli/commands/halo/credential/add/add.d.ts +13 -0
  120. package/dist/types/src/cli/commands/halo/credential/add/add.d.ts.map +1 -0
  121. package/dist/types/src/cli/commands/halo/credential/add/index.d.ts +2 -0
  122. package/dist/types/src/cli/commands/halo/credential/add/index.d.ts.map +1 -0
  123. package/dist/types/src/cli/commands/halo/credential/index.d.ts +12 -0
  124. package/dist/types/src/cli/commands/halo/credential/index.d.ts.map +1 -0
  125. package/dist/types/src/cli/commands/halo/credential/list/index.d.ts +2 -0
  126. package/dist/types/src/cli/commands/halo/credential/list/index.d.ts.map +1 -0
  127. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts +19 -0
  128. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts.map +1 -0
  129. package/dist/types/src/cli/commands/halo/credential/list/list.test.d.ts +2 -0
  130. package/dist/types/src/cli/commands/halo/credential/list/list.test.d.ts.map +1 -0
  131. package/dist/types/src/cli/commands/halo/identity/identity.d.ts +7 -0
  132. package/dist/types/src/cli/commands/halo/identity/identity.d.ts.map +1 -0
  133. package/dist/types/src/cli/commands/halo/identity/identity.test.d.ts +2 -0
  134. package/dist/types/src/cli/commands/halo/identity/identity.test.d.ts.map +1 -0
  135. package/dist/types/src/cli/commands/halo/identity/index.d.ts +2 -0
  136. package/dist/types/src/cli/commands/halo/identity/index.d.ts.map +1 -0
  137. package/dist/types/src/cli/commands/halo/index.d.ts +3 -0
  138. package/dist/types/src/cli/commands/halo/index.d.ts.map +1 -0
  139. package/dist/types/src/cli/commands/halo/join/index.d.ts +2 -0
  140. package/dist/types/src/cli/commands/halo/join/index.d.ts.map +1 -0
  141. package/dist/types/src/cli/commands/halo/join/join.d.ts +8 -0
  142. package/dist/types/src/cli/commands/halo/join/join.d.ts.map +1 -0
  143. package/dist/types/src/cli/commands/halo/join/join.test.d.ts +2 -0
  144. package/dist/types/src/cli/commands/halo/join/join.test.d.ts.map +1 -0
  145. package/dist/types/src/cli/commands/halo/keys/index.d.ts +2 -0
  146. package/dist/types/src/cli/commands/halo/keys/index.d.ts.map +1 -0
  147. package/dist/types/src/cli/commands/halo/keys/keys.d.ts +7 -0
  148. package/dist/types/src/cli/commands/halo/keys/keys.d.ts.map +1 -0
  149. package/dist/types/src/cli/commands/halo/keys/keys.test.d.ts +2 -0
  150. package/dist/types/src/cli/commands/halo/keys/keys.test.d.ts.map +1 -0
  151. package/dist/types/src/cli/commands/halo/recover/index.d.ts +2 -0
  152. package/dist/types/src/cli/commands/halo/recover/index.d.ts.map +1 -0
  153. package/dist/types/src/cli/commands/halo/recover/recover.d.ts +7 -0
  154. package/dist/types/src/cli/commands/halo/recover/recover.d.ts.map +1 -0
  155. package/dist/types/src/cli/commands/halo/recover/recover.test.d.ts +2 -0
  156. package/dist/types/src/cli/commands/halo/recover/recover.test.d.ts.map +1 -0
  157. package/dist/types/src/cli/commands/halo/seed/index.d.ts +2 -0
  158. package/dist/types/src/cli/commands/halo/seed/index.d.ts.map +1 -0
  159. package/dist/types/src/cli/commands/halo/seed/seed.d.ts +7 -0
  160. package/dist/types/src/cli/commands/halo/seed/seed.d.ts.map +1 -0
  161. package/dist/types/src/cli/commands/halo/share/index.d.ts +2 -0
  162. package/dist/types/src/cli/commands/halo/share/index.d.ts.map +1 -0
  163. package/dist/types/src/cli/commands/halo/share/share.d.ts +15 -0
  164. package/dist/types/src/cli/commands/halo/share/share.d.ts.map +1 -0
  165. package/dist/types/src/cli/commands/halo/update/index.d.ts +2 -0
  166. package/dist/types/src/cli/commands/halo/update/index.d.ts.map +1 -0
  167. package/dist/types/src/cli/commands/halo/update/update.d.ts +11 -0
  168. package/dist/types/src/cli/commands/halo/update/update.d.ts.map +1 -0
  169. package/dist/types/src/cli/commands/halo/update/update.test.d.ts +2 -0
  170. package/dist/types/src/cli/commands/halo/update/update.test.d.ts.map +1 -0
  171. package/dist/types/src/cli/commands/halo/util.d.ts +13 -0
  172. package/dist/types/src/cli/commands/halo/util.d.ts.map +1 -0
  173. package/dist/types/src/cli/commands/index.d.ts +6 -0
  174. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  175. package/dist/types/src/cli/commands/profile/create.d.ts +9 -0
  176. package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -0
  177. package/dist/types/src/cli/commands/profile/delete.d.ts +8 -0
  178. package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -0
  179. package/dist/types/src/cli/commands/profile/import.d.ts +17 -0
  180. package/dist/types/src/cli/commands/profile/import.d.ts.map +1 -0
  181. package/dist/types/src/cli/commands/profile/index.d.ts +19 -0
  182. package/dist/types/src/cli/commands/profile/index.d.ts.map +1 -0
  183. package/dist/types/src/cli/commands/profile/inspect.d.ts +13 -0
  184. package/dist/types/src/cli/commands/profile/inspect.d.ts.map +1 -0
  185. package/dist/types/src/cli/commands/profile/list.d.ts +6 -0
  186. package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -0
  187. package/dist/types/src/cli/commands/profile/reset.d.ts +8 -0
  188. package/dist/types/src/cli/commands/profile/reset.d.ts.map +1 -0
  189. package/dist/types/src/cli/commands/profile/util.d.ts +24 -0
  190. package/dist/types/src/cli/commands/profile/util.d.ts.map +1 -0
  191. package/dist/types/src/cli/index.d.ts +2 -0
  192. package/dist/types/src/cli/index.d.ts.map +1 -0
  193. package/dist/types/src/cli/plugin.d.ts +4 -0
  194. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  195. package/dist/types/src/cli/testing/test-console.d.ts +37 -0
  196. package/dist/types/src/cli/testing/test-console.d.ts.map +1 -0
  197. package/dist/types/src/components/DevicesContainer.d.ts.map +1 -1
  198. package/dist/types/src/components/DevicesContainer.stories.d.ts +178 -5
  199. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +1 -1
  200. package/dist/types/src/components/JoinDialog.d.ts +0 -1
  201. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  202. package/dist/types/src/components/ProfileContainer.d.ts.map +1 -1
  203. package/dist/types/src/components/ProfileContainer.stories.d.ts +11 -5
  204. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +1 -1
  205. package/dist/types/src/components/RecoveryCodeDialog.d.ts +0 -1
  206. package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +1 -1
  207. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts +13 -5
  208. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +1 -1
  209. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts +1 -1
  210. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +1 -1
  211. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts +11 -5
  212. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +1 -1
  213. package/dist/types/src/components/ResetDialog.d.ts +5 -3
  214. package/dist/types/src/components/ResetDialog.d.ts.map +1 -1
  215. package/dist/types/src/components/ResetDialog.stories.d.ts +13 -4
  216. package/dist/types/src/components/ResetDialog.stories.d.ts.map +1 -1
  217. package/dist/types/src/constants.d.ts +4 -0
  218. package/dist/types/src/constants.d.ts.map +1 -0
  219. package/dist/types/src/index.d.ts +3 -3
  220. package/dist/types/src/index.d.ts.map +1 -1
  221. package/dist/types/src/meta.d.ts +2 -3
  222. package/dist/types/src/meta.d.ts.map +1 -1
  223. package/dist/types/src/translations.d.ts +2 -48
  224. package/dist/types/src/translations.d.ts.map +1 -1
  225. package/dist/types/src/types/capabilities.d.ts +10 -0
  226. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  227. package/dist/types/src/types/events.d.ts +9 -0
  228. package/dist/types/src/types/events.d.ts.map +1 -0
  229. package/dist/types/src/types/index.d.ts +2 -0
  230. package/dist/types/src/types/index.d.ts.map +1 -1
  231. package/dist/types/src/types/schema.d.ts +168 -8
  232. package/dist/types/src/types/schema.d.ts.map +1 -1
  233. package/dist/types/tsconfig.tsbuildinfo +1 -1
  234. package/package.json +56 -39
  235. package/src/ClientPlugin.ts +41 -60
  236. package/src/capabilities/app-graph-builder/app-graph-builder.ts +96 -0
  237. package/src/capabilities/app-graph-builder/index.ts +7 -0
  238. package/src/capabilities/client/client.ts +75 -0
  239. package/src/capabilities/client/index.ts +7 -0
  240. package/src/capabilities/index.ts +7 -11
  241. package/src/capabilities/migrations/index.ts +7 -0
  242. package/src/capabilities/migrations/migrations.ts +30 -0
  243. package/src/capabilities/operation-resolver/index.ts +7 -0
  244. package/src/capabilities/operation-resolver/operation-resolver.ts +249 -0
  245. package/src/capabilities/react-context/index.ts +7 -0
  246. package/src/capabilities/react-context/react-context.tsx +25 -0
  247. package/src/capabilities/react-surface/index.ts +7 -0
  248. package/src/capabilities/react-surface/react-surface.tsx +75 -0
  249. package/src/capabilities/schema-defs/index.ts +7 -0
  250. package/src/capabilities/schema-defs/schema-defs.ts +36 -0
  251. package/src/cli/commands/config/index.ts +12 -0
  252. package/src/cli/commands/config/view.ts +26 -0
  253. package/src/cli/commands/device/index.ts +14 -0
  254. package/src/cli/commands/device/info/index.ts +5 -0
  255. package/src/cli/commands/device/info/info.test.ts +29 -0
  256. package/src/cli/commands/device/info/info.ts +50 -0
  257. package/src/cli/commands/device/list/index.ts +5 -0
  258. package/src/cli/commands/device/list/list.test.ts +31 -0
  259. package/src/cli/commands/device/list/list.ts +30 -0
  260. package/src/cli/commands/device/update/index.ts +5 -0
  261. package/src/cli/commands/device/update/update.ts +70 -0
  262. package/src/cli/commands/device/util.ts +55 -0
  263. package/src/cli/commands/edge/index.ts +12 -0
  264. package/src/cli/commands/edge/status.ts +45 -0
  265. package/src/cli/commands/halo/create/create.test.ts +52 -0
  266. package/src/cli/commands/halo/create/create.ts +75 -0
  267. package/src/cli/commands/halo/create/index.ts +5 -0
  268. package/src/cli/commands/halo/credential/add/add.ts +97 -0
  269. package/src/cli/commands/halo/credential/add/index.ts +5 -0
  270. package/src/cli/commands/halo/credential/index.ts +13 -0
  271. package/src/cli/commands/halo/credential/list/index.ts +5 -0
  272. package/src/cli/commands/halo/credential/list/list.test.ts +28 -0
  273. package/src/cli/commands/halo/credential/list/list.ts +118 -0
  274. package/src/cli/commands/halo/identity/identity.test.ts +40 -0
  275. package/src/cli/commands/halo/identity/identity.ts +46 -0
  276. package/src/cli/commands/halo/identity/index.ts +5 -0
  277. package/src/cli/commands/halo/index.ts +21 -0
  278. package/src/cli/commands/halo/join/index.ts +5 -0
  279. package/src/cli/commands/halo/join/join.test.ts +10 -0
  280. package/src/cli/commands/halo/join/join.ts +87 -0
  281. package/src/cli/commands/halo/keys/index.ts +5 -0
  282. package/src/cli/commands/halo/keys/keys.test.ts +29 -0
  283. package/src/cli/commands/halo/keys/keys.ts +42 -0
  284. package/src/cli/commands/halo/recover/index.ts +5 -0
  285. package/src/cli/commands/halo/recover/recover.test.ts +10 -0
  286. package/src/cli/commands/halo/recover/recover.ts +44 -0
  287. package/src/cli/commands/halo/seed/index.ts +5 -0
  288. package/src/cli/commands/halo/seed/seed.ts +38 -0
  289. package/src/cli/commands/halo/share/index.ts +5 -0
  290. package/src/cli/commands/halo/share/share.ts +97 -0
  291. package/src/cli/commands/halo/update/index.ts +5 -0
  292. package/src/cli/commands/halo/update/update.test.ts +29 -0
  293. package/src/cli/commands/halo/update/update.ts +69 -0
  294. package/src/cli/commands/halo/util.ts +18 -0
  295. package/src/cli/commands/index.ts +9 -0
  296. package/src/cli/commands/profile/create.ts +87 -0
  297. package/src/cli/commands/profile/delete.ts +33 -0
  298. package/src/cli/commands/profile/import.ts +101 -0
  299. package/src/cli/commands/profile/index.ts +17 -0
  300. package/src/cli/commands/profile/inspect.ts +64 -0
  301. package/src/cli/commands/profile/list.ts +54 -0
  302. package/src/cli/commands/profile/reset.ts +45 -0
  303. package/src/cli/commands/profile/util.ts +48 -0
  304. package/src/cli/index.ts +5 -0
  305. package/src/cli/plugin.ts +34 -0
  306. package/src/cli/testing/test-console.ts +88 -0
  307. package/src/components/DevicesContainer.stories.tsx +16 -15
  308. package/src/components/DevicesContainer.tsx +67 -89
  309. package/src/components/JoinDialog.tsx +15 -17
  310. package/src/components/ProfileContainer.stories.tsx +8 -9
  311. package/src/components/ProfileContainer.tsx +66 -63
  312. package/src/components/RecoveryCodeDialog.stories.tsx +9 -10
  313. package/src/components/RecoveryCodeDialog.tsx +5 -7
  314. package/src/components/RecoveryCredentialsContainer.stories.tsx +15 -15
  315. package/src/components/RecoveryCredentialsContainer.tsx +49 -54
  316. package/src/components/ResetDialog.stories.tsx +37 -18
  317. package/src/components/ResetDialog.tsx +26 -22
  318. package/src/constants.ts +9 -0
  319. package/src/index.ts +3 -3
  320. package/src/meta.ts +8 -5
  321. package/src/translations.ts +6 -3
  322. package/src/types/capabilities.ts +16 -0
  323. package/src/types/events.ts +15 -0
  324. package/src/types/index.ts +2 -0
  325. package/src/types/schema.ts +121 -8
  326. package/dist/lib/browser/app-graph-builder-JNIES5L4.mjs +0 -123
  327. package/dist/lib/browser/app-graph-builder-JNIES5L4.mjs.map +0 -7
  328. package/dist/lib/browser/chunk-3F2Q2RKC.mjs +0 -18
  329. package/dist/lib/browser/chunk-3F2Q2RKC.mjs.map +0 -7
  330. package/dist/lib/browser/chunk-CAF2COXW.mjs +0 -19
  331. package/dist/lib/browser/chunk-CAF2COXW.mjs.map +0 -7
  332. package/dist/lib/browser/chunk-GS3LDHYD.mjs +0 -12
  333. package/dist/lib/browser/chunk-GS3LDHYD.mjs.map +0 -7
  334. package/dist/lib/browser/chunk-RMHBOY3Y.mjs +0 -110
  335. package/dist/lib/browser/chunk-RMHBOY3Y.mjs.map +0 -7
  336. package/dist/lib/browser/chunk-SV3MHIKI.mjs +0 -695
  337. package/dist/lib/browser/chunk-SV3MHIKI.mjs.map +0 -7
  338. package/dist/lib/browser/client-SKVKXPLY.mjs +0 -37
  339. package/dist/lib/browser/client-SKVKXPLY.mjs.map +0 -7
  340. package/dist/lib/browser/intent-resolver-LNPLD5CA.mjs +0 -305
  341. package/dist/lib/browser/intent-resolver-LNPLD5CA.mjs.map +0 -7
  342. package/dist/lib/browser/migrations-D76RCG72.mjs +0 -23
  343. package/dist/lib/browser/migrations-D76RCG72.mjs.map +0 -7
  344. package/dist/lib/browser/react-context-YWVPZUMU.mjs +0 -24
  345. package/dist/lib/browser/react-context-YWVPZUMU.mjs.map +0 -7
  346. package/dist/lib/browser/react-surface-QFZTDNLS.mjs +0 -66
  347. package/dist/lib/browser/react-surface-QFZTDNLS.mjs.map +0 -7
  348. package/dist/lib/browser/schema-defs-HKW6VNZB.mjs +0 -25
  349. package/dist/lib/browser/schema-defs-HKW6VNZB.mjs.map +0 -7
  350. package/dist/lib/node-esm/app-graph-builder-SWFB4FID.mjs +0 -124
  351. package/dist/lib/node-esm/app-graph-builder-SWFB4FID.mjs.map +0 -7
  352. package/dist/lib/node-esm/chunk-5V3RCXZV.mjs +0 -111
  353. package/dist/lib/node-esm/chunk-5V3RCXZV.mjs.map +0 -7
  354. package/dist/lib/node-esm/chunk-FBYODKEL.mjs +0 -696
  355. package/dist/lib/node-esm/chunk-FBYODKEL.mjs.map +0 -7
  356. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs +0 -19
  357. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs.map +0 -7
  358. package/dist/lib/node-esm/chunk-SZLX4BVJ.mjs +0 -14
  359. package/dist/lib/node-esm/chunk-SZLX4BVJ.mjs.map +0 -7
  360. package/dist/lib/node-esm/chunk-UMO3ETDV.mjs +0 -20
  361. package/dist/lib/node-esm/chunk-UMO3ETDV.mjs.map +0 -7
  362. package/dist/lib/node-esm/client-SLL6GDC2.mjs +0 -38
  363. package/dist/lib/node-esm/client-SLL6GDC2.mjs.map +0 -7
  364. package/dist/lib/node-esm/intent-resolver-L7C6YRWV.mjs +0 -306
  365. package/dist/lib/node-esm/intent-resolver-L7C6YRWV.mjs.map +0 -7
  366. package/dist/lib/node-esm/migrations-YISDI7LF.mjs +0 -24
  367. package/dist/lib/node-esm/migrations-YISDI7LF.mjs.map +0 -7
  368. package/dist/lib/node-esm/react-context-EEHS4S3L.mjs +0 -25
  369. package/dist/lib/node-esm/react-context-EEHS4S3L.mjs.map +0 -7
  370. package/dist/lib/node-esm/react-surface-2K6W37R4.mjs +0 -67
  371. package/dist/lib/node-esm/react-surface-2K6W37R4.mjs.map +0 -7
  372. package/dist/lib/node-esm/schema-defs-5ZNI63RW.mjs +0 -26
  373. package/dist/lib/node-esm/schema-defs-5ZNI63RW.mjs.map +0 -7
  374. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  375. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  376. package/dist/types/src/capabilities/capabilities.d.ts +0 -9
  377. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  378. package/dist/types/src/capabilities/client.d.ts +0 -9
  379. package/dist/types/src/capabilities/client.d.ts.map +0 -1
  380. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -8
  381. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  382. package/dist/types/src/capabilities/migrations.d.ts +0 -4
  383. package/dist/types/src/capabilities/migrations.d.ts.map +0 -1
  384. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  385. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  386. package/dist/types/src/capabilities/react-surface.d.ts +0 -8
  387. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  388. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  389. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  390. package/dist/types/src/events.d.ts +0 -8
  391. package/dist/types/src/events.d.ts.map +0 -1
  392. package/src/capabilities/app-graph-builder.ts +0 -113
  393. package/src/capabilities/capabilities.ts +0 -18
  394. package/src/capabilities/client.ts +0 -41
  395. package/src/capabilities/intent-resolver.ts +0 -250
  396. package/src/capabilities/migrations.ts +0 -25
  397. package/src/capabilities/react-context.tsx +0 -20
  398. package/src/capabilities/react-surface.tsx +0 -67
  399. package/src/capabilities/schema-defs.ts +0 -29
  400. package/src/events.ts +0 -15
@@ -2,43 +2,43 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
6
7
 
7
- import { type StoryObj, type Meta } from '@storybook/react-vite';
8
-
9
- import { IntentPlugin } from '@dxos/app-framework';
8
+ import { OperationPlugin } from '@dxos/app-framework';
10
9
  import { withPluginManager } from '@dxos/app-framework/testing';
11
- import { withTheme, withLayout } from '@dxos/storybook-utils';
10
+ import { withTheme } from '@dxos/react-ui/testing';
12
11
 
13
- import { RecoveryCredentialsContainer } from './RecoveryCredentialsContainer';
14
12
  import { ClientPlugin } from '../ClientPlugin';
15
13
  import { translations } from '../translations';
16
14
 
17
- const meta: Meta = {
15
+ import { RecoveryCredentialsContainer } from './RecoveryCredentialsContainer';
16
+
17
+ const meta = {
18
18
  title: 'plugins/plugin-client/RecoveryCredentialsContainer',
19
19
  component: RecoveryCredentialsContainer,
20
20
  decorators: [
21
+ withTheme(),
21
22
  withPluginManager({
22
23
  plugins: [
23
24
  ClientPlugin({
24
- onClientInitialized: async (_, client) => {
25
- await client.halo.createIdentity();
26
- },
25
+ onClientInitialized: ({ client }) =>
26
+ Effect.gen(function* () {
27
+ yield* Effect.promise(() => client.halo.createIdentity());
28
+ }),
27
29
  }),
28
- IntentPlugin(),
30
+ OperationPlugin(),
29
31
  ],
30
32
  }),
31
- withTheme,
32
- withLayout(),
33
33
  ],
34
34
  parameters: {
35
35
  layout: 'fullscreen',
36
36
  translations,
37
37
  },
38
- };
38
+ } satisfies Meta<typeof RecoveryCredentialsContainer>;
39
39
 
40
40
  export default meta;
41
41
 
42
- type Story = StoryObj<typeof RecoveryCredentialsContainer>;
42
+ type Story = StoryObj<typeof meta>;
43
43
 
44
44
  export const Default: Story = {};
@@ -4,70 +4,65 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
8
  import { useCredentials } from '@dxos/react-client/halo';
9
- import { Icon, IconButton, List, ListItem, useTranslation, Message } from '@dxos/react-ui';
10
- import { ControlGroup, ControlItem, ControlPage, ControlSection } from '@dxos/react-ui-form';
11
- import { StackItem } from '@dxos/react-ui-stack';
9
+ import { Icon, IconButton, List, ListItem, Message, useTranslation } from '@dxos/react-ui';
10
+ import { Settings } from '@dxos/react-ui-form';
12
11
 
13
- import { CLIENT_PLUGIN } from '../meta';
14
- import { ClientAction } from '../types';
12
+ import { meta } from '../meta';
13
+ import { ClientOperation } from '../types';
15
14
 
16
- export const MANAGE_CREDENTIALS_DIALOG = `${CLIENT_PLUGIN}/ManageCredentialsDialog`;
15
+ export const MANAGE_CREDENTIALS_DIALOG = `${meta.id}/ManageCredentialsDialog`;
17
16
 
18
17
  export const RecoveryCredentialsContainer = () => {
19
- const { t } = useTranslation(CLIENT_PLUGIN);
20
- const { dispatchPromise: dispatch } = useIntentDispatcher();
18
+ const { t } = useTranslation(meta.id);
19
+ const { invokePromise } = useOperationInvoker();
21
20
  const credentials = useCredentials();
22
21
  const recoveryCredentials = credentials.filter(
23
22
  (credential) => credential.subject.assertion['@type'] === 'dxos.halo.credentials.IdentityRecovery',
24
23
  );
25
24
 
26
25
  return (
27
- <StackItem.Content classNames='block overflow-y-auto'>
28
- <ControlPage>
29
- <ControlSection title={t('recovery setup dialog title')} description={t('recovery setup dialog description')}>
30
- <ControlGroup>
31
- <ControlItem title={t('create passkey label')} description={t('create passkey description')}>
32
- <IconButton
33
- label={t('create passkey label')}
34
- icon='ph--key--duotone'
35
- variant='primary'
36
- size={5}
37
- onClick={() => dispatch(createIntent(ClientAction.CreatePasskey))}
38
- />
39
- </ControlItem>
40
- <ControlItem title={t('create recovery code label')} description={t('create recovery code description')}>
41
- <IconButton
42
- label={t('create recovery code label')}
43
- icon='ph--receipt--duotone'
44
- variant='default'
45
- size={5}
46
- onClick={() => dispatch(createIntent(ClientAction.CreateRecoveryCode))}
47
- />
48
- </ControlItem>
49
- </ControlGroup>
50
- </ControlSection>
51
- <ControlSection title={t('credentials list label')}>
52
- {recoveryCredentials.length < 1 ? (
53
- <Message.Root valence='error' classNames='container-max-width'>
54
- <Message.Title icon='ph--shield-warning--duotone'>{t('no credentials title')}</Message.Title>
55
- <Message.Content>{t('no credentials message')}</Message.Content>
56
- </Message.Root>
57
- ) : (
58
- <List classNames='container-max-width pli-2'>
59
- {recoveryCredentials.map((credential) => (
60
- <ListItem.Root key={credential.id?.toHex()}>
61
- <ListItem.Endcap>
62
- <Icon icon='ph--key--regular' size={5} />
63
- </ListItem.Endcap>
64
- <ListItem.Heading>{credential.issuanceDate.toLocaleString()}</ListItem.Heading>
65
- </ListItem.Root>
66
- ))}
67
- </List>
68
- )}
69
- </ControlSection>
70
- </ControlPage>
71
- </StackItem.Content>
26
+ <Settings.Root>
27
+ <Settings.Section title={t('recovery setup dialog title')} description={t('recovery setup dialog description')}>
28
+ <Settings.Group>
29
+ <Settings.Item title={t('create passkey label')} description={t('create passkey description')}>
30
+ <IconButton
31
+ label={t('create passkey label')}
32
+ icon='ph--key--duotone'
33
+ variant='primary'
34
+ onClick={() => invokePromise(ClientOperation.CreatePasskey)}
35
+ />
36
+ </Settings.Item>
37
+ <Settings.Item title={t('create recovery code label')} description={t('create recovery code description')}>
38
+ <IconButton
39
+ label={t('create recovery code label')}
40
+ icon='ph--receipt--duotone'
41
+ variant='default'
42
+ onClick={() => invokePromise(ClientOperation.CreateRecoveryCode)}
43
+ />
44
+ </Settings.Item>
45
+ </Settings.Group>
46
+ </Settings.Section>
47
+ <Settings.Section title={t('credentials list label')}>
48
+ {recoveryCredentials.length < 1 ? (
49
+ <Message.Root valence='error' classNames='container-max-width'>
50
+ <Message.Title icon='ph--shield-warning--duotone'>{t('no credentials title')}</Message.Title>
51
+ <Message.Content>{t('no credentials message')}</Message.Content>
52
+ </Message.Root>
53
+ ) : (
54
+ <List classNames='container-max-width pli-2'>
55
+ {recoveryCredentials.map((credential) => (
56
+ <ListItem.Root key={credential.id?.toHex()}>
57
+ <ListItem.Endcap>
58
+ <Icon icon='ph--key--regular' />
59
+ </ListItem.Endcap>
60
+ <ListItem.Heading>{credential.issuanceDate.toLocaleString()}</ListItem.Heading>
61
+ </ListItem.Root>
62
+ ))}
63
+ </List>
64
+ )}
65
+ </Settings.Section>
66
+ </Settings.Root>
72
67
  );
73
68
  };
@@ -2,52 +2,71 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
- import { type StoryObj, type Meta } from '@storybook/react-vite';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
8
7
  import React from 'react';
9
8
 
10
- import { IntentPlugin } from '@dxos/app-framework';
9
+ import { OperationPlugin, RuntimePlugin } from '@dxos/app-framework';
11
10
  import { withPluginManager } from '@dxos/app-framework/testing';
11
+ import { usePluginManager } from '@dxos/app-framework/ui';
12
12
  import { Dialog } from '@dxos/react-ui';
13
- import { withTheme, withLayout } from '@dxos/storybook-utils';
13
+ import { withTheme } from '@dxos/react-ui/testing';
14
14
 
15
- import { ResetDialog, type ResetDialogProps } from './ResetDialog';
15
+ import { ClientPlugin } from '../ClientPlugin';
16
16
  import { translations } from '../translations';
17
17
 
18
- const Render = (props: ResetDialogProps) => {
18
+ import { ResetDialog, type ResetDialogProps } from './ResetDialog';
19
+
20
+ const DefaultStory = (props: Omit<ResetDialogProps, 'capabilityManager'>) => {
21
+ const manager = usePluginManager();
22
+
19
23
  return (
20
24
  <Dialog.Root open>
21
25
  <Dialog.Overlay>
22
- <ResetDialog onReset={() => console.log('reset')} {...props} />
26
+ <ResetDialog
27
+ capabilityManager={manager.capabilities}
28
+ onReset={() => Effect.sync(() => console.log('reset'))}
29
+ {...props}
30
+ />
23
31
  </Dialog.Overlay>
24
32
  </Dialog.Root>
25
33
  );
26
34
  };
27
35
 
28
- const meta: Meta<ResetDialogProps> = {
36
+ const meta = {
29
37
  title: 'plugins/plugin-client/ResetDialog',
30
38
  component: ResetDialog,
31
- render: Render,
39
+ render: DefaultStory,
32
40
  decorators: [
41
+ withTheme(),
33
42
  withPluginManager({
34
- plugins: [IntentPlugin()],
43
+ plugins: [RuntimePlugin(), OperationPlugin(), ClientPlugin({})],
35
44
  }),
36
- withTheme,
37
- withLayout(),
38
45
  ],
39
46
  parameters: {
40
47
  layout: 'fullscreen',
41
48
  translations,
42
49
  },
43
- };
50
+ } satisfies Meta<typeof ResetDialog>;
44
51
 
45
52
  export default meta;
46
53
 
47
- type Story = StoryObj<ResetDialogProps>;
54
+ type Story = StoryObj<typeof meta>;
48
55
 
49
- export const Default: Story = { args: { mode: 'reset storage' } };
56
+ export const Default: Story = {
57
+ args: {
58
+ mode: 'reset storage' as const,
59
+ } as any,
60
+ };
50
61
 
51
- export const JoinNewIdentity: Story = { args: { mode: 'join new identity' } };
62
+ export const JoinNewIdentity: Story = {
63
+ args: {
64
+ mode: 'join new identity' as const,
65
+ } as any,
66
+ };
52
67
 
53
- export const Recover: Story = { args: { mode: 'recover' } };
68
+ export const Recover: Story = {
69
+ args: {
70
+ mode: 'recover' as const,
71
+ } as any,
72
+ };
@@ -2,48 +2,52 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import * as Effect from 'effect/Effect';
5
6
  import React, { useCallback } from 'react';
6
7
 
7
- import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { Capability, type CapabilityManager } from '@dxos/app-framework';
9
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
10
+ import { LayoutOperation } from '@dxos/app-toolkit';
11
+ import { runAndForwardErrors } from '@dxos/effect';
8
12
  import { useClient } from '@dxos/react-client';
9
13
  import { Dialog, useTranslation } from '@dxos/react-ui';
10
14
  import { ConfirmReset, type ConfirmResetProps } from '@dxos/shell/react';
11
15
 
12
- import { CLIENT_PLUGIN } from '../meta';
16
+ import { meta } from '../meta';
13
17
  import { type ClientPluginOptions } from '../types';
14
18
 
15
- export const RESET_DIALOG = `${CLIENT_PLUGIN}/ResetDialog`;
19
+ export type ResetDialogProps = Pick<ConfirmResetProps, 'mode'> &
20
+ Pick<ClientPluginOptions, 'onReset'> & {
21
+ capabilityManager: CapabilityManager.CapabilityManager;
22
+ };
16
23
 
17
- export type ResetDialogProps = Pick<ConfirmResetProps, 'mode'> & Pick<ClientPluginOptions, 'onReset'>;
18
-
19
- export const ResetDialog = ({ mode, onReset }: ResetDialogProps) => {
20
- const { t } = useTranslation(CLIENT_PLUGIN);
21
- const { dispatchPromise: dispatch } = useIntentDispatcher();
24
+ export const ResetDialog = ({ mode, onReset, capabilityManager }: ResetDialogProps) => {
25
+ const { t } = useTranslation(meta.id);
26
+ const { invokePromise } = useOperationInvoker();
22
27
  const client = useClient();
23
28
 
24
29
  const handleReset = useCallback(async () => {
25
30
  await client.reset();
26
31
  const target =
27
32
  mode === 'join new identity' ? 'deviceInvitation' : mode === 'recover' ? 'recoverIdentity' : undefined;
28
- await onReset?.({ target });
29
- }, [dispatch, client, mode, onReset]);
33
+ if (onReset) {
34
+ await runAndForwardErrors(onReset({ target }).pipe(Effect.provideService(Capability.Service, capabilityManager)));
35
+ }
36
+ }, [client, mode, onReset, capabilityManager]);
30
37
 
31
38
  const handleCancel = useCallback(() => {
32
- void dispatch(
33
- createIntent(LayoutAction.UpdateDialog, {
34
- part: 'dialog',
35
- options: { state: false },
36
- }),
37
- );
38
- }, [dispatch]);
39
+ void invokePromise(LayoutOperation.UpdateDialog, { state: false });
40
+ }, [invokePromise]);
39
41
 
40
42
  // TODO(wittjosiah): Add the sr-only translations.
41
43
  // TODO(wittjosiah): Add missing descriptions to other dialogs.
42
44
  return (
43
- <Dialog.Content classNames='bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>
44
- <Dialog.Title classNames='sr-only'>{t('reset dialog title')}</Dialog.Title>
45
- <Dialog.Description classNames='sr-only'>{t('reset dialog description')}</Dialog.Description>
46
- <ConfirmReset active mode={mode} onConfirm={handleReset} onCancel={handleCancel} />
47
- </Dialog.Content>
45
+ <>
46
+ <Dialog.Content>
47
+ <Dialog.Title classNames='sr-only'>{t('reset dialog title')}</Dialog.Title>
48
+ <Dialog.Description classNames='sr-only'>{t('reset dialog description')}</Dialog.Description>
49
+ <ConfirmReset active mode={mode} onConfirm={handleReset} onCancel={handleCancel} />
50
+ </Dialog.Content>
51
+ </>
48
52
  );
49
53
  };
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { meta } from './meta';
6
+
7
+ export const JOIN_DIALOG = `${meta.id}/JoinDialog`;
8
+ export const RECOVERY_CODE_DIALOG = `${meta.id}/RecoveryCodeDialog`;
9
+ export const RESET_DIALOG = `${meta.id}/ResetDialog`;
package/src/index.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export * from './ClientPlugin';
5
+ export { ClientCapabilities, ClientEvents } from './types';
6
6
  export * from './meta';
7
+ export * from './types';
7
8
 
8
- export { ClientCapabilities } from './capabilities';
9
- export { ClientEvents } from './events';
9
+ export * from './ClientPlugin';
package/src/meta.ts CHANGED
@@ -2,11 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type PluginMeta } from '@dxos/app-framework';
5
+ import { type Plugin } from '@dxos/app-framework';
6
+ import { trim } from '@dxos/util';
6
7
 
7
- export const CLIENT_PLUGIN = 'dxos.org/plugin/client';
8
-
9
- export const meta: PluginMeta = {
10
- id: CLIENT_PLUGIN,
8
+ export const meta: Plugin.Meta = {
9
+ id: 'dxos.org/plugin/client',
11
10
  name: 'Client',
11
+ description: trim`
12
+ Core client connectivity and peer-to-peer networking infrastructure.
13
+ Manages identity, authentication, and real-time synchronization across devices.
14
+ `,
12
15
  };
@@ -3,14 +3,15 @@
3
3
  //
4
4
 
5
5
  import { type Resource } from '@dxos/react-ui';
6
+ import { translations as shellTranslations } from '@dxos/shell/react';
6
7
 
7
8
  import { meta } from './meta';
8
9
 
9
- export const translations = [
10
+ const pluginTranslations = [
10
11
  {
11
12
  'en-US': {
12
13
  [meta.id]: {
13
- 'account label': 'User Account',
14
+ 'account label': 'User profile',
14
15
  'profile label': 'Profile',
15
16
  'profile description': 'You can adjust how your user settings here.',
16
17
  'devices label': 'Devices',
@@ -35,7 +36,7 @@ export const translations = [
35
36
  'display name description': 'Your name as it appears in the app.',
36
37
  'display name input placeholder': 'Enter a name',
37
38
  'icon label': 'Avatar',
38
- 'icon description': 'The emoji used to represent you in the app.',
39
+ 'icon description': 'The emoji used to represent the user.',
39
40
  'hue label': 'Color',
40
41
  'hue description':
41
42
  'The color used to represent you in the app, including as your avatar’s background, your cursor as it appears to others, and the messages you send in group threads.',
@@ -68,3 +69,5 @@ export const translations = [
68
69
  },
69
70
  },
70
71
  ] as const satisfies Resource[];
72
+
73
+ export const translations: Resource[] = [...pluginTranslations, ...shellTranslations];
@@ -0,0 +1,16 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+ import { type Client } from '@dxos/client';
7
+ import { type ObjectMigration } from '@dxos/client/echo';
8
+ import { type Type } from '@dxos/echo';
9
+
10
+ import { meta } from '../meta';
11
+
12
+ export namespace ClientCapabilities {
13
+ export const Client = Capability.make<Client>(`${meta.id}/capability/client`);
14
+ export const Schema = Capability.make<Type.Entity.Any[]>(`${meta.id}/capability/schema`);
15
+ export const Migration = Capability.make<ObjectMigration[]>(`${meta.id}/capability/migration`);
16
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { ActivationEvent } from '@dxos/app-framework';
6
+
7
+ import { meta } from '../meta';
8
+
9
+ export namespace ClientEvents {
10
+ export const ClientReady = ActivationEvent.make(`${meta.id}/event/client-ready`);
11
+ export const SetupSchema = ActivationEvent.make(`${meta.id}/event/setup-schema`);
12
+ export const SetupMigration = ActivationEvent.make(`${meta.id}/event/setup-migration`);
13
+ export const IdentityCreated = ActivationEvent.make(`${meta.id}/event/identity-created`);
14
+ export const SpacesReady = ActivationEvent.make(`${meta.id}/event/spaces-ready`);
15
+ }
@@ -2,4 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ export * from './capabilities';
6
+ export * from './events';
5
7
  export * from './schema';
@@ -2,11 +2,12 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import type * as Effect from 'effect/Effect';
6
+ import * as Schema from 'effect/Schema';
6
7
 
7
- import { type PluginContext } from '@dxos/app-framework';
8
- import { type Client, PublicKey, type ClientOptions } from '@dxos/react-client';
9
- import { type MaybePromise } from '@dxos/util';
8
+ import { Capability } from '@dxos/app-framework';
9
+ import { type Client, type ClientOptions, PublicKey } from '@dxos/client';
10
+ import { Operation } from '@dxos/operation';
10
11
 
11
12
  import { meta } from '../meta';
12
13
 
@@ -90,6 +91,115 @@ export namespace ClientAction {
90
91
  }) {}
91
92
  }
92
93
 
94
+ const CLIENT_OPERATION = `${meta.id}/operation`;
95
+
96
+ /**
97
+ * Operations for the Client plugin.
98
+ */
99
+ export namespace ClientOperation {
100
+ const ProfileSchema = Schema.Struct({
101
+ displayName: Schema.optional(Schema.String),
102
+ avatarCid: Schema.optional(Schema.String),
103
+ data: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),
104
+ });
105
+
106
+ export const CreateIdentity = Operation.make({
107
+ meta: { key: `${CLIENT_OPERATION}/create-identity`, name: 'Create Identity' },
108
+ services: [Capability.Service],
109
+ schema: {
110
+ input: ProfileSchema,
111
+ output: IdentitySchema,
112
+ },
113
+ });
114
+
115
+ export const JoinIdentity = Operation.make({
116
+ meta: { key: `${CLIENT_OPERATION}/join-identity`, name: 'Join Identity' },
117
+ services: [Capability.Service],
118
+ schema: {
119
+ input: Schema.Struct({
120
+ invitationCode: Schema.optional(Schema.String),
121
+ }),
122
+ output: Schema.Void,
123
+ },
124
+ });
125
+
126
+ export const ShareIdentity = Operation.make({
127
+ meta: { key: `${CLIENT_OPERATION}/share-identity`, name: 'Share Identity' },
128
+ services: [Capability.Service],
129
+ schema: {
130
+ input: Schema.Void,
131
+ output: Schema.Void,
132
+ },
133
+ });
134
+
135
+ export const RecoverIdentity = Operation.make({
136
+ meta: { key: `${CLIENT_OPERATION}/recover-identity`, name: 'Recover Identity' },
137
+ services: [Capability.Service],
138
+ schema: {
139
+ input: Schema.Void,
140
+ output: Schema.Void,
141
+ },
142
+ });
143
+
144
+ export const ResetStorage = Operation.make({
145
+ meta: { key: `${CLIENT_OPERATION}/reset-storage`, name: 'Reset Storage' },
146
+ services: [Capability.Service],
147
+ schema: {
148
+ input: Schema.Struct({
149
+ mode: Schema.optional(Schema.String),
150
+ }),
151
+ output: Schema.Void,
152
+ },
153
+ });
154
+
155
+ export const CreateAgent = Operation.make({
156
+ meta: { key: `${CLIENT_OPERATION}/create-agent`, name: 'Create Agent' },
157
+ services: [Capability.Service],
158
+ schema: {
159
+ input: Schema.Void,
160
+ output: Schema.Void,
161
+ },
162
+ });
163
+
164
+ export const CreateRecoveryCode = Operation.make({
165
+ meta: { key: `${CLIENT_OPERATION}/create-recovery-code`, name: 'Create Recovery Code' },
166
+ services: [Capability.Service],
167
+ schema: {
168
+ input: Schema.Void,
169
+ output: Schema.Void,
170
+ },
171
+ });
172
+
173
+ export const CreatePasskey = Operation.make({
174
+ meta: { key: `${CLIENT_OPERATION}/create-passkey`, name: 'Create Passkey' },
175
+ services: [Capability.Service],
176
+ schema: {
177
+ input: Schema.Void,
178
+ output: Schema.Void,
179
+ },
180
+ });
181
+
182
+ export const RedeemPasskey = Operation.make({
183
+ meta: { key: `${CLIENT_OPERATION}/redeem-passkey`, name: 'Redeem Passkey' },
184
+ services: [Capability.Service],
185
+ schema: {
186
+ input: Schema.Void,
187
+ output: Schema.Void,
188
+ },
189
+ });
190
+
191
+ export const RedeemToken = Operation.make({
192
+ meta: { key: `${CLIENT_OPERATION}/redeem-token`, name: 'Redeem Token' },
193
+ services: [Capability.Service],
194
+ schema: {
195
+ input: Schema.Struct({
196
+ token: Schema.String,
197
+ }),
198
+ output: Schema.Void,
199
+ },
200
+ });
201
+ }
202
+
93
203
  export type ClientPluginOptions = ClientOptions & {
94
204
  /**
95
205
  * Base URL for the invitation link.
@@ -99,22 +209,25 @@ export type ClientPluginOptions = ClientOptions & {
99
209
  /**
100
210
  * Query parameter for the invitation code.
101
211
  */
102
- invitationParam?: string;
212
+ invitationProp?: string;
103
213
 
104
214
  /**
105
215
  * Run after the client has been initialized.
216
+ * Plugin context is provided so capabilities are accessible.
106
217
  */
107
- onClientInitialized?: (context: PluginContext, client: Client) => MaybePromise<void>;
218
+ onClientInitialized?: (params: { client: Client }) => Effect.Effect<void, Error | never, Capability.Service | never>;
108
219
 
109
220
  /**
110
221
  * Called when spaces are ready.
222
+ * Plugin context is provided so capabilities are accessible.
111
223
  */
112
- onSpacesReady?: (context: PluginContext, client: Client) => MaybePromise<void>;
224
+ onSpacesReady?: (params: { client: Client }) => Effect.Effect<void, Error | never, Capability.Service | never>;
113
225
 
114
226
  /**
115
227
  * Called when the client is reset.
228
+ * Plugin context is provided so capabilities are accessible.
116
229
  */
117
- onReset?: (params: { target?: string }) => MaybePromise<void>;
230
+ onReset?: (params: { target?: string }) => Effect.Effect<void, Error | never, Capability.Service | never>;
118
231
  };
119
232
 
120
233
  export namespace Account {