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

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 (360) hide show
  1. package/dist/lib/browser/chunk-ELAYKIQU.mjs +12 -0
  2. package/dist/lib/browser/chunk-ELAYKIQU.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  4. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-M43LJQ5U.mjs +175 -0
  6. package/dist/lib/browser/chunk-M43LJQ5U.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-WNJRYPGG.mjs +131 -0
  8. package/dist/lib/browser/chunk-WNJRYPGG.mjs.map +7 -0
  9. package/dist/lib/browser/cli/index.mjs +92 -80
  10. package/dist/lib/browser/cli/index.mjs.map +3 -3
  11. package/dist/lib/browser/create-agent-WXBNGUBQ.mjs +34 -0
  12. package/dist/lib/browser/create-agent-WXBNGUBQ.mjs.map +7 -0
  13. package/dist/lib/browser/create-identity-LIE4RCXJ.mjs +30 -0
  14. package/dist/lib/browser/create-identity-LIE4RCXJ.mjs.map +7 -0
  15. package/dist/lib/browser/create-passkey-PYZ47DJT.mjs +105 -0
  16. package/dist/lib/browser/create-passkey-PYZ47DJT.mjs.map +7 -0
  17. package/dist/lib/browser/create-recovery-code-NSRU3QDJ.mjs +44 -0
  18. package/dist/lib/browser/create-recovery-code-NSRU3QDJ.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +90 -93
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/join-identity-B6DC2VW7.mjs +27 -0
  22. package/dist/lib/browser/join-identity-B6DC2VW7.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/operations/index.mjs +13 -0
  25. package/dist/lib/browser/operations/index.mjs.map +7 -0
  26. package/dist/lib/browser/recover-identity-Z3H4GJ3L.mjs +26 -0
  27. package/dist/lib/browser/recover-identity-Z3H4GJ3L.mjs.map +7 -0
  28. package/dist/lib/browser/redeem-passkey-ODK47PIR.mjs +82 -0
  29. package/dist/lib/browser/redeem-passkey-ODK47PIR.mjs.map +7 -0
  30. package/dist/lib/browser/redeem-token-OYXEFDM3.mjs +37 -0
  31. package/dist/lib/browser/redeem-token-OYXEFDM3.mjs.map +7 -0
  32. package/dist/lib/browser/reset-storage-JAU4CS2U.mjs +26 -0
  33. package/dist/lib/browser/reset-storage-JAU4CS2U.mjs.map +7 -0
  34. package/dist/lib/browser/share-identity-H2JNYYCP.mjs +31 -0
  35. package/dist/lib/browser/share-identity-H2JNYYCP.mjs.map +7 -0
  36. package/dist/lib/browser/testing/index.mjs +22 -0
  37. package/dist/lib/browser/testing/index.mjs.map +7 -0
  38. package/dist/lib/browser/types/index.mjs +4 -5
  39. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  40. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-IT5LAIV3.mjs +133 -0
  42. package/dist/lib/node-esm/chunk-IT5LAIV3.mjs.map +7 -0
  43. package/dist/lib/node-esm/chunk-J5RWSQT6.mjs +14 -0
  44. package/dist/lib/node-esm/chunk-J5RWSQT6.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-SJ6FDER5.mjs +176 -0
  46. package/dist/lib/node-esm/chunk-SJ6FDER5.mjs.map +7 -0
  47. package/dist/lib/node-esm/cli/index.mjs +92 -80
  48. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  49. package/dist/lib/node-esm/create-agent-I7VGTH7O.mjs +35 -0
  50. package/dist/lib/node-esm/create-agent-I7VGTH7O.mjs.map +7 -0
  51. package/dist/lib/node-esm/create-identity-NWY3YT5C.mjs +31 -0
  52. package/dist/lib/node-esm/create-identity-NWY3YT5C.mjs.map +7 -0
  53. package/dist/lib/node-esm/create-passkey-2LQEEIAN.mjs +106 -0
  54. package/dist/lib/node-esm/create-passkey-2LQEEIAN.mjs.map +7 -0
  55. package/dist/lib/node-esm/create-recovery-code-2MVK5CVE.mjs +45 -0
  56. package/dist/lib/node-esm/create-recovery-code-2MVK5CVE.mjs.map +7 -0
  57. package/dist/lib/node-esm/index.mjs +90 -93
  58. package/dist/lib/node-esm/index.mjs.map +4 -4
  59. package/dist/lib/node-esm/join-identity-6NT75FSO.mjs +28 -0
  60. package/dist/lib/node-esm/join-identity-6NT75FSO.mjs.map +7 -0
  61. package/dist/lib/node-esm/meta.json +1 -1
  62. package/dist/lib/node-esm/operations/index.mjs +14 -0
  63. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  64. package/dist/lib/node-esm/recover-identity-3UKCQ2M4.mjs +27 -0
  65. package/dist/lib/node-esm/recover-identity-3UKCQ2M4.mjs.map +7 -0
  66. package/dist/lib/node-esm/redeem-passkey-TDNEMVJJ.mjs +83 -0
  67. package/dist/lib/node-esm/redeem-passkey-TDNEMVJJ.mjs.map +7 -0
  68. package/dist/lib/node-esm/redeem-token-ZBYMFFKM.mjs +38 -0
  69. package/dist/lib/node-esm/redeem-token-ZBYMFFKM.mjs.map +7 -0
  70. package/dist/lib/node-esm/reset-storage-NY3ALG72.mjs +27 -0
  71. package/dist/lib/node-esm/reset-storage-NY3ALG72.mjs.map +7 -0
  72. package/dist/lib/node-esm/share-identity-FDIZWTDG.mjs +32 -0
  73. package/dist/lib/node-esm/share-identity-FDIZWTDG.mjs.map +7 -0
  74. package/dist/lib/node-esm/testing/index.mjs +23 -0
  75. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  76. package/dist/lib/node-esm/types/index.mjs +4 -5
  77. package/dist/types/src/ClientPlugin.d.ts +1 -1
  78. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  80. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/client.d.ts +8 -0
  82. package/dist/types/src/capabilities/client.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/index.d.ts +32 -7
  84. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/migrations.d.ts +5 -0
  86. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/navigation-handler/index.d.ts +4 -0
  88. package/dist/types/src/capabilities/navigation-handler/index.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +15 -0
  90. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/{client/index.d.ts → node.d.ts} +7 -3
  92. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  94. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/{react-context/react-context.d.ts → react-context.d.ts} +1 -1
  96. package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/react-surface.d.ts +9 -0
  98. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/schema-defs.d.ts +5 -0
  100. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -0
  101. package/dist/types/src/cli/commands/config/view.d.ts.map +1 -1
  102. package/dist/types/src/cli/commands/device/info/info.d.ts +2 -2
  103. package/dist/types/src/cli/commands/device/info/info.d.ts.map +1 -1
  104. package/dist/types/src/cli/commands/device/list/list.d.ts +2 -2
  105. package/dist/types/src/cli/commands/device/list/list.d.ts.map +1 -1
  106. package/dist/types/src/cli/commands/device/update/update.d.ts.map +1 -1
  107. package/dist/types/src/cli/commands/edge/status.d.ts.map +1 -1
  108. package/dist/types/src/cli/commands/halo/create/create.d.ts +2 -2
  109. package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -1
  110. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts +1 -1
  111. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts.map +1 -1
  112. package/dist/types/src/cli/commands/halo/identity/identity.d.ts +2 -2
  113. package/dist/types/src/cli/commands/halo/identity/identity.d.ts.map +1 -1
  114. package/dist/types/src/cli/commands/halo/keys/keys.d.ts +2 -2
  115. package/dist/types/src/cli/commands/halo/keys/keys.d.ts.map +1 -1
  116. package/dist/types/src/cli/commands/halo/seed/seed.d.ts.map +1 -1
  117. package/dist/types/src/cli/commands/halo/update/update.d.ts.map +1 -1
  118. package/dist/types/src/cli/commands/profile/create.d.ts +2 -1
  119. package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -1
  120. package/dist/types/src/cli/commands/profile/delete.d.ts +1 -1
  121. package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -1
  122. package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -1
  123. package/dist/types/src/cli/plugin.d.ts +1 -1
  124. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  125. package/dist/types/src/components/index.d.ts +0 -6
  126. package/dist/types/src/components/index.d.ts.map +1 -1
  127. package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -0
  128. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts +184 -0
  129. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts.map +1 -0
  130. package/dist/types/src/containers/DevicesContainer/index.d.ts +3 -0
  131. package/dist/types/src/containers/DevicesContainer/index.d.ts.map +1 -0
  132. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -0
  133. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +15 -0
  134. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -0
  135. package/dist/types/src/containers/JoinDialog/index.d.ts +3 -0
  136. package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -0
  137. package/dist/types/src/containers/ProfileContainer/ProfileContainer.d.ts.map +1 -0
  138. package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts.map +1 -0
  139. package/dist/types/src/containers/ProfileContainer/index.d.ts +3 -0
  140. package/dist/types/src/containers/ProfileContainer/index.d.ts.map +1 -0
  141. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.d.ts.map +1 -0
  142. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts.map +1 -0
  143. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts +4 -0
  144. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts.map +1 -0
  145. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -0
  146. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts.map +1 -0
  147. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts +3 -0
  148. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts.map +1 -0
  149. package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.d.ts +1 -1
  150. package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts.map +1 -0
  151. package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.stories.d.ts +1 -1
  152. package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts.map +1 -0
  153. package/dist/types/src/containers/ResetDialog/index.d.ts +4 -0
  154. package/dist/types/src/containers/ResetDialog/index.d.ts.map +1 -0
  155. package/dist/types/src/containers/index.d.ts +10 -0
  156. package/dist/types/src/containers/index.d.ts.map +1 -0
  157. package/dist/types/src/index.d.ts +2 -4
  158. package/dist/types/src/index.d.ts.map +1 -1
  159. package/dist/types/src/operations/create-agent.d.ts +5 -0
  160. package/dist/types/src/operations/create-agent.d.ts.map +1 -0
  161. package/dist/types/src/operations/create-identity.d.ts +5 -0
  162. package/dist/types/src/operations/create-identity.d.ts.map +1 -0
  163. package/dist/types/src/operations/create-passkey.d.ts +5 -0
  164. package/dist/types/src/operations/create-passkey.d.ts.map +1 -0
  165. package/dist/types/src/operations/create-recovery-code.d.ts +5 -0
  166. package/dist/types/src/operations/create-recovery-code.d.ts.map +1 -0
  167. package/dist/types/src/operations/definitions.d.ts +36 -0
  168. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  169. package/dist/types/src/operations/index.d.ts +4 -0
  170. package/dist/types/src/operations/index.d.ts.map +1 -0
  171. package/dist/types/src/operations/join-identity.d.ts +5 -0
  172. package/dist/types/src/operations/join-identity.d.ts.map +1 -0
  173. package/dist/types/src/operations/recover-identity.d.ts +5 -0
  174. package/dist/types/src/operations/recover-identity.d.ts.map +1 -0
  175. package/dist/types/src/operations/redeem-passkey.d.ts +5 -0
  176. package/dist/types/src/operations/redeem-passkey.d.ts.map +1 -0
  177. package/dist/types/src/operations/redeem-token.d.ts +5 -0
  178. package/dist/types/src/operations/redeem-token.d.ts.map +1 -0
  179. package/dist/types/src/operations/reset-storage.d.ts +5 -0
  180. package/dist/types/src/operations/reset-storage.d.ts.map +1 -0
  181. package/dist/types/src/operations/share-identity.d.ts +5 -0
  182. package/dist/types/src/operations/share-identity.d.ts.map +1 -0
  183. package/dist/types/src/testing/index.d.ts +2 -0
  184. package/dist/types/src/testing/index.d.ts.map +1 -0
  185. package/dist/types/src/testing/initializeIdentity.d.ts +13 -0
  186. package/dist/types/src/testing/initializeIdentity.d.ts.map +1 -0
  187. package/dist/types/src/translations.d.ts.map +1 -1
  188. package/dist/types/src/types/capabilities.d.ts +1 -1
  189. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  190. package/dist/types/src/types/schema.d.ts +26 -175
  191. package/dist/types/src/types/schema.d.ts.map +1 -1
  192. package/dist/types/tsconfig.tsbuildinfo +1 -1
  193. package/package.json +72 -36
  194. package/src/ClientPlugin.ts +38 -25
  195. package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +21 -19
  196. package/src/capabilities/{client/client.ts → client.ts} +16 -12
  197. package/src/capabilities/index.ts +15 -7
  198. package/src/capabilities/{migrations/migrations.ts → migrations.ts} +4 -4
  199. package/src/capabilities/navigation-handler/index.ts +9 -0
  200. package/src/capabilities/navigation-handler/navigation-handler.ts +64 -0
  201. package/src/capabilities/node.ts +13 -0
  202. package/src/capabilities/operation-handler.ts +16 -0
  203. package/src/capabilities/{react-context/react-context.tsx → react-context.tsx} +7 -7
  204. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +13 -13
  205. package/src/capabilities/{schema-defs/schema-defs.ts → schema-defs.ts} +8 -7
  206. package/src/cli/commands/config/view.ts +4 -1
  207. package/src/cli/commands/device/info/info.test.ts +0 -1
  208. package/src/cli/commands/device/info/info.ts +0 -2
  209. package/src/cli/commands/device/list/list.test.ts +0 -1
  210. package/src/cli/commands/device/list/list.ts +0 -2
  211. package/src/cli/commands/device/update/update.ts +0 -2
  212. package/src/cli/commands/edge/status.ts +3 -2
  213. package/src/cli/commands/halo/create/create.ts +13 -6
  214. package/src/cli/commands/halo/credential/list/list.test.ts +0 -1
  215. package/src/cli/commands/halo/credential/list/list.ts +4 -7
  216. package/src/cli/commands/halo/identity/identity.ts +0 -1
  217. package/src/cli/commands/halo/keys/keys.ts +0 -2
  218. package/src/cli/commands/halo/seed/seed.ts +0 -2
  219. package/src/cli/commands/halo/update/update.test.ts +0 -1
  220. package/src/cli/commands/halo/update/update.ts +0 -2
  221. package/src/cli/commands/profile/create.ts +9 -6
  222. package/src/cli/commands/profile/delete.ts +5 -2
  223. package/src/cli/commands/profile/list.ts +12 -11
  224. package/src/cli/plugin.ts +12 -13
  225. package/src/components/index.ts +0 -7
  226. package/src/constants.ts +4 -4
  227. package/src/{components → containers/DevicesContainer}/DevicesContainer.stories.tsx +10 -7
  228. package/src/{components → containers/DevicesContainer}/DevicesContainer.tsx +76 -83
  229. package/src/containers/DevicesContainer/index.ts +7 -0
  230. package/src/containers/JoinDialog/JoinDialog.stories.tsx +43 -0
  231. package/src/{components → containers/JoinDialog}/JoinDialog.tsx +20 -15
  232. package/src/containers/JoinDialog/index.ts +7 -0
  233. package/src/{components → containers/ProfileContainer}/ProfileContainer.stories.tsx +4 -4
  234. package/src/{components → containers/ProfileContainer}/ProfileContainer.tsx +21 -29
  235. package/src/containers/ProfileContainer/index.ts +7 -0
  236. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.tsx +4 -4
  237. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.tsx +29 -26
  238. package/src/containers/RecoveryCodeDialog/index.ts +8 -0
  239. package/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.stories.tsx +10 -7
  240. package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.tsx +66 -0
  241. package/src/containers/RecoveryCredentialsContainer/index.ts +7 -0
  242. package/src/{components → containers/ResetDialog}/ResetDialog.stories.tsx +27 -14
  243. package/src/{components → containers/ResetDialog}/ResetDialog.tsx +11 -11
  244. package/src/containers/ResetDialog/index.ts +8 -0
  245. package/src/containers/index.ts +15 -0
  246. package/src/index.ts +2 -5
  247. package/src/meta.ts +1 -1
  248. package/src/operations/create-agent.ts +27 -0
  249. package/src/operations/create-identity.ts +30 -0
  250. package/src/operations/create-passkey.ts +89 -0
  251. package/src/operations/create-recovery-code.ts +35 -0
  252. package/src/operations/definitions.ts +107 -0
  253. package/src/operations/index.ts +20 -0
  254. package/src/operations/join-identity.ts +29 -0
  255. package/src/operations/recover-identity.ts +29 -0
  256. package/src/operations/redeem-passkey.ts +86 -0
  257. package/src/operations/redeem-token.ts +32 -0
  258. package/src/operations/reset-storage.ts +28 -0
  259. package/src/operations/share-identity.ts +27 -0
  260. package/src/testing/index.ts +5 -0
  261. package/src/testing/initializeIdentity.ts +24 -0
  262. package/src/translations.ts +53 -42
  263. package/src/types/capabilities.ts +4 -4
  264. package/src/types/events.ts +6 -6
  265. package/src/types/schema.ts +18 -123
  266. package/dist/lib/browser/app-graph-builder-3FGBMLTF.mjs +0 -118
  267. package/dist/lib/browser/app-graph-builder-3FGBMLTF.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-4BZGRIFS.mjs +0 -293
  269. package/dist/lib/browser/chunk-4BZGRIFS.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-F7H2Y3Z2.mjs +0 -18
  271. package/dist/lib/browser/chunk-F7H2Y3Z2.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-G7C3S2BE.mjs +0 -15
  273. package/dist/lib/browser/chunk-G7C3S2BE.mjs.map +0 -7
  274. package/dist/lib/browser/client-IX5LMWV4.mjs +0 -86
  275. package/dist/lib/browser/client-IX5LMWV4.mjs.map +0 -7
  276. package/dist/lib/browser/migrations-3EBTAW3N.mjs +0 -24
  277. package/dist/lib/browser/migrations-3EBTAW3N.mjs.map +0 -7
  278. package/dist/lib/browser/operation-resolver-2NT3ISVP.mjs +0 -298
  279. package/dist/lib/browser/operation-resolver-2NT3ISVP.mjs.map +0 -7
  280. package/dist/lib/browser/react-context-4UABG3GP.mjs +0 -24
  281. package/dist/lib/browser/react-context-4UABG3GP.mjs.map +0 -7
  282. package/dist/lib/browser/react-surface-RSQ74XCT.mjs +0 -675
  283. package/dist/lib/browser/react-surface-RSQ74XCT.mjs.map +0 -7
  284. package/dist/lib/browser/schema-defs-O7VLP745.mjs +0 -26
  285. package/dist/lib/browser/schema-defs-O7VLP745.mjs.map +0 -7
  286. package/dist/lib/node-esm/app-graph-builder-2PIYVUNC.mjs +0 -119
  287. package/dist/lib/node-esm/app-graph-builder-2PIYVUNC.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-BCELGXRI.mjs +0 -20
  289. package/dist/lib/node-esm/chunk-BCELGXRI.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-JAF64TFQ.mjs +0 -295
  291. package/dist/lib/node-esm/chunk-JAF64TFQ.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-PRAFFO54.mjs +0 -16
  293. package/dist/lib/node-esm/chunk-PRAFFO54.mjs.map +0 -7
  294. package/dist/lib/node-esm/client-FFPK5UFP.mjs +0 -87
  295. package/dist/lib/node-esm/client-FFPK5UFP.mjs.map +0 -7
  296. package/dist/lib/node-esm/migrations-WSZSFGDK.mjs +0 -25
  297. package/dist/lib/node-esm/migrations-WSZSFGDK.mjs.map +0 -7
  298. package/dist/lib/node-esm/operation-resolver-VW5R2BE4.mjs +0 -299
  299. package/dist/lib/node-esm/operation-resolver-VW5R2BE4.mjs.map +0 -7
  300. package/dist/lib/node-esm/react-context-UVXMGPW4.mjs +0 -25
  301. package/dist/lib/node-esm/react-context-UVXMGPW4.mjs.map +0 -7
  302. package/dist/lib/node-esm/react-surface-KBHANGGC.mjs +0 -676
  303. package/dist/lib/node-esm/react-surface-KBHANGGC.mjs.map +0 -7
  304. package/dist/lib/node-esm/schema-defs-QLRGBIKY.mjs +0 -27
  305. package/dist/lib/node-esm/schema-defs-QLRGBIKY.mjs.map +0 -7
  306. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
  307. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  308. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  309. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  310. package/dist/types/src/capabilities/client/client.d.ts +0 -8
  311. package/dist/types/src/capabilities/client/client.d.ts.map +0 -1
  312. package/dist/types/src/capabilities/client/index.d.ts.map +0 -1
  313. package/dist/types/src/capabilities/migrations/index.d.ts +0 -3
  314. package/dist/types/src/capabilities/migrations/index.d.ts.map +0 -1
  315. package/dist/types/src/capabilities/migrations/migrations.d.ts +0 -5
  316. package/dist/types/src/capabilities/migrations/migrations.d.ts.map +0 -1
  317. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -5
  318. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -8
  320. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  321. package/dist/types/src/capabilities/react-context/index.d.ts +0 -7
  322. package/dist/types/src/capabilities/react-context/index.d.ts.map +0 -1
  323. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +0 -1
  324. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -5
  325. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  326. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -9
  327. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  328. package/dist/types/src/capabilities/schema-defs/index.d.ts +0 -3
  329. package/dist/types/src/capabilities/schema-defs/index.d.ts.map +0 -1
  330. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts +0 -5
  331. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +0 -1
  332. package/dist/types/src/components/DevicesContainer.d.ts.map +0 -1
  333. package/dist/types/src/components/DevicesContainer.stories.d.ts +0 -181
  334. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +0 -1
  335. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  336. package/dist/types/src/components/ProfileContainer.d.ts.map +0 -1
  337. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +0 -1
  338. package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +0 -1
  339. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +0 -1
  340. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +0 -1
  341. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +0 -1
  342. package/dist/types/src/components/ResetDialog.d.ts.map +0 -1
  343. package/dist/types/src/components/ResetDialog.stories.d.ts.map +0 -1
  344. package/src/capabilities/app-graph-builder/index.ts +0 -7
  345. package/src/capabilities/client/index.ts +0 -7
  346. package/src/capabilities/migrations/index.ts +0 -7
  347. package/src/capabilities/operation-resolver/index.ts +0 -7
  348. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -248
  349. package/src/capabilities/react-context/index.ts +0 -7
  350. package/src/capabilities/react-surface/index.ts +0 -7
  351. package/src/capabilities/schema-defs/index.ts +0 -7
  352. package/src/components/RecoveryCredentialsContainer.tsx +0 -68
  353. /package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.d.ts +0 -0
  354. /package/dist/types/src/{components → containers/JoinDialog}/JoinDialog.d.ts +0 -0
  355. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.d.ts +0 -0
  356. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.stories.d.ts +0 -0
  357. /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.d.ts +0 -0
  358. /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.d.ts +0 -0
  359. /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.d.ts +0 -0
  360. /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.bcb3aa67d6",
4
4
  "description": "DXOS Surface plugin for DXOS Client",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -12,6 +12,20 @@
12
12
  "author": "DXOS.org",
13
13
  "sideEffects": true,
14
14
  "type": "module",
15
+ "imports": {
16
+ "#capabilities": {
17
+ "source": "./src/capabilities/index.ts",
18
+ "types": "./src/capabilities/index.ts",
19
+ "browser": "./src/capabilities/index.ts",
20
+ "node": "./src/capabilities/node.ts"
21
+ },
22
+ "#components": "./src/components/index.ts",
23
+ "#containers": "./src/containers/index.ts",
24
+ "#meta": "./src/meta.ts",
25
+ "#operations": "./src/operations/index.ts",
26
+ "#testing": "./src/testing/index.ts",
27
+ "#types": "./src/types/index.ts"
28
+ },
15
29
  "exports": {
16
30
  ".": {
17
31
  "source": "./src/index.ts",
@@ -24,18 +38,36 @@
24
38
  "types": "./dist/types/src/cli/index.d.ts",
25
39
  "node": "./dist/lib/node-esm/cli/index.mjs"
26
40
  },
41
+ "./operations": {
42
+ "source": "./src/operations/index.ts",
43
+ "types": "./dist/types/src/operations/index.d.ts",
44
+ "browser": "./dist/lib/browser/operations/index.mjs",
45
+ "node": "./dist/lib/node-esm/operations/index.mjs"
46
+ },
27
47
  "./types": {
28
48
  "source": "./src/types/index.ts",
29
49
  "types": "./dist/types/src/types/index.d.ts",
30
50
  "browser": "./dist/lib/browser/types/index.mjs",
31
51
  "node": "./dist/lib/node-esm/types/index.mjs"
52
+ },
53
+ "./testing": {
54
+ "source": "./src/testing/index.ts",
55
+ "types": "./dist/types/src/testing/index.d.ts",
56
+ "browser": "./dist/lib/browser/testing/index.mjs",
57
+ "node": "./dist/lib/node-esm/testing/index.mjs"
32
58
  }
33
59
  },
34
60
  "types": "dist/types/src/index.d.ts",
35
61
  "typesVersions": {
36
62
  "*": {
63
+ "operations": [
64
+ "dist/types/src/operations/index.d.ts"
65
+ ],
37
66
  "types": [
38
67
  "dist/types/src/types/index.d.ts"
68
+ ],
69
+ "testing": [
70
+ "dist/types/src/testing/index.d.ts"
39
71
  ]
40
72
  }
41
73
  },
@@ -44,54 +76,58 @@
44
76
  "src"
45
77
  ],
46
78
  "dependencies": {
47
- "@effect/cli": "0.72.1",
48
- "@effect/platform": "0.93.6",
49
- "effect": "3.19.11",
79
+ "@effect/cli": "0.73.2",
80
+ "@effect/platform": "0.94.4",
81
+ "@tauri-apps/api": "^2.8.0",
82
+ "effect": "3.20.0",
50
83
  "react-qr-rounded": "^1.0.0",
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"
84
+ "yaml": "^2.8.2",
85
+ "@dxos/app-framework": "0.8.4-main.bcb3aa67d6",
86
+ "@dxos/app-toolkit": "0.8.4-main.bcb3aa67d6",
87
+ "@dxos/async": "0.8.4-main.bcb3aa67d6",
88
+ "@dxos/cli-util": "0.8.4-main.bcb3aa67d6",
89
+ "@dxos/client-protocol": "0.8.4-main.bcb3aa67d6",
90
+ "@dxos/client": "0.8.4-main.bcb3aa67d6",
91
+ "@dxos/client-services": "0.8.4-main.bcb3aa67d6",
92
+ "@dxos/context": "0.8.4-main.bcb3aa67d6",
93
+ "@dxos/config": "0.8.4-main.bcb3aa67d6",
94
+ "@dxos/echo": "0.8.4-main.bcb3aa67d6",
95
+ "@dxos/effect": "0.8.4-main.bcb3aa67d6",
96
+ "@dxos/log": "0.8.4-main.bcb3aa67d6",
97
+ "@dxos/invariant": "0.8.4-main.bcb3aa67d6",
98
+ "@dxos/operation": "0.8.4-main.bcb3aa67d6",
99
+ "@dxos/plugin-graph": "0.8.4-main.bcb3aa67d6",
100
+ "@dxos/protocols": "0.8.4-main.bcb3aa67d6",
101
+ "@dxos/react-client": "0.8.4-main.bcb3aa67d6",
102
+ "@dxos/plugin-observability": "0.8.4-main.bcb3aa67d6",
103
+ "@dxos/react-ui-form": "0.8.4-main.bcb3aa67d6",
104
+ "@dxos/react-ui-stack": "0.8.4-main.bcb3aa67d6",
105
+ "@dxos/react-ui-pickers": "0.8.4-main.bcb3aa67d6",
106
+ "@dxos/shell": "0.8.4-main.bcb3aa67d6",
107
+ "@dxos/util": "0.8.4-main.bcb3aa67d6"
73
108
  },
74
109
  "devDependencies": {
75
- "@effect-atom/atom-react": "^0.4.6",
110
+ "@effect-atom/atom-react": "^0.5.0",
76
111
  "@effect/printer": "0.47.0",
77
112
  "@effect/printer-ansi": "0.47.0",
78
113
  "@types/react": "~19.2.7",
79
114
  "@types/react-dom": "~19.2.3",
80
115
  "react": "~19.2.3",
81
116
  "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"
117
+ "vite": "^7.1.11",
118
+ "@dxos/plugin-testing": "0.8.4-main.bcb3aa67d6",
119
+ "@dxos/react-ui": "0.8.4-main.bcb3aa67d6",
120
+ "@dxos/storybook-utils": "0.8.4-main.bcb3aa67d6",
121
+ "@dxos/ui-theme": "0.8.4-main.bcb3aa67d6"
86
122
  },
87
123
  "peerDependencies": {
88
- "@effect-atom/atom-react": "^0.4.6",
89
- "@effect/platform": "0.93.6",
90
- "effect": "3.19.11",
124
+ "@effect-atom/atom-react": "^0.5.0",
125
+ "@effect/platform": "0.94.4",
126
+ "effect": "3.20.0",
91
127
  "react": "~19.2.3",
92
128
  "react-dom": "~19.2.3",
93
- "@dxos/ui-theme": "0.8.4-main.bc674ce",
94
- "@dxos/react-ui": "0.8.4-main.bc674ce"
129
+ "@dxos/react-ui": "0.8.4-main.bcb3aa67d6",
130
+ "@dxos/ui-theme": "0.8.4-main.bcb3aa67d6"
95
131
  },
96
132
  "publishConfig": {
97
133
  "access": "public"
@@ -2,34 +2,44 @@
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';
7
+
8
+ import { meta } from '#meta';
9
+ import { translations } from './translations';
10
+ import { ClientEvents } from '#types';
11
+ import { type ClientPluginOptions } from '#types';
6
12
 
7
13
  import {
8
14
  AppGraphBuilder,
9
15
  Client,
10
16
  Migrations,
11
- OperationResolver,
17
+ NavigationHandler,
18
+ OperationHandler,
12
19
  ReactContext,
13
20
  ReactSurface,
14
21
  SchemaDefs,
15
- } from './capabilities';
16
- import { meta } from './meta';
17
- import { translations } from './translations';
18
- import { ClientEvents } from './types';
19
- import { type ClientPluginOptions } from './types';
22
+ } from '#capabilities';
20
23
 
21
24
  export const ClientPlugin = Plugin.define<ClientPluginOptions>(meta).pipe(
25
+ AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),
26
+ AppPlugin.addNavigationHandlerModule(({ invitationProp }) => ({
27
+ activate: () => NavigationHandler({ invitationProp }),
28
+ })),
29
+ AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),
30
+ AppPlugin.addReactContextModule({ activate: ReactContext }),
31
+ AppPlugin.addTranslationsModule({ translations }),
22
32
  Plugin.addModule((options) => {
23
33
  return {
24
34
  id: Capability.getModuleTag(Client),
25
- activatesOn: ActivationEvent.oneOf(Common.ActivationEvent.Startup, Common.ActivationEvent.SetupAppGraph),
35
+ activatesOn: ActivationEvent.oneOf(ActivationEvents.Startup, AppActivationEvents.SetupAppGraph),
26
36
  activatesAfter: [ClientEvents.ClientReady],
27
37
  activate: () => Client(options),
28
38
  };
29
39
  }),
30
40
  Plugin.addModule({
31
41
  activatesOn: ClientEvents.ClientReady,
32
- activatesBefore: [Common.ActivationEvent.SetupSchema],
42
+ activatesBefore: [AppActivationEvents.SetupSchema],
33
43
  activate: SchemaDefs,
34
44
  }),
35
45
  Plugin.addModule({
@@ -37,22 +47,25 @@ export const ClientPlugin = Plugin.define<ClientPluginOptions>(meta).pipe(
37
47
  activatesBefore: [ClientEvents.SetupMigration],
38
48
  activate: Migrations,
39
49
  }),
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
- };
50
+ Plugin.addModule(
51
+ ({
52
+ shareableLinkOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost',
53
+ invitationPath = '/',
54
+ invitationProp = 'deviceInvitationCode',
55
+ onReset,
56
+ }) => {
57
+ const createInvitationUrl = (invitationCode: string) => {
58
+ const baseUrl = new URL(invitationPath || '/', shareableLinkOrigin);
59
+ baseUrl.searchParams.set(invitationProp, invitationCode);
60
+ return baseUrl.toString();
61
+ };
47
62
 
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 }),
63
+ return {
64
+ id: Capability.getModuleTag(ReactSurface),
65
+ activatesOn: ActivationEvents.SetupReactSurface,
66
+ activate: () => ReactSurface({ createInvitationUrl, onReset }),
67
+ };
68
+ },
69
+ ),
57
70
  Plugin.make,
58
71
  );
@@ -4,13 +4,15 @@
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
- import { CreateAtom, GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';
10
+ import { CreateAtom, GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';
10
11
  import { ConnectionState } from '@dxos/react-client/mesh';
11
12
 
12
- import { meta } from '../../meta';
13
- import { Account, ClientCapabilities, ClientOperation } from '../../types';
13
+ import { meta } from '#meta';
14
+ import { Account, ClientCapabilities } from '#types';
15
+ import { ClientOperation } from '#operations';
14
16
 
15
17
  export default Capability.makeModule(
16
18
  Effect.fnUntraced(function* () {
@@ -20,10 +22,10 @@ export default Capability.makeModule(
20
22
  actions: () =>
21
23
  Effect.succeed([
22
24
  {
23
- id: `${meta.id}/open-user-account`,
25
+ id: `${meta.id}.open-user-account`,
24
26
  data: () => Operation.invoke(ClientOperation.ShareIdentity),
25
27
  properties: {
26
- label: ['open user account label', { ns: meta.id }],
28
+ label: ['open-user-account.label', { ns: meta.id }],
27
29
  icon: 'ph--user--regular',
28
30
  disposition: 'menu',
29
31
  keyBinding: {
@@ -41,11 +43,11 @@ export default Capability.makeModule(
41
43
  const status = get(CreateAtom.fromObservable(client.mesh.networkStatus));
42
44
 
43
45
  return [
44
- {
46
+ Node.make({
45
47
  id: Account.id,
46
48
  type: meta.id,
47
49
  properties: {
48
- label: ['account label', { ns: meta.id }],
50
+ label: ['account.label', { ns: meta.id }],
49
51
  icon: 'ph--user--regular',
50
52
  disposition: 'user-account',
51
53
  testId: 'clientPlugin.account',
@@ -56,40 +58,40 @@ export default Capability.makeModule(
56
58
  status: status.swarm === ConnectionState.OFFLINE ? 'error' : 'active',
57
59
  },
58
60
  nodes: [
59
- {
61
+ Node.make({
60
62
  id: Account.Profile,
61
63
  data: Account.Profile,
62
64
  type: meta.id,
63
65
  properties: {
64
- label: ['profile label', { ns: meta.id }],
66
+ label: ['profile.label', { ns: meta.id }],
65
67
  icon: 'ph--user--regular',
66
68
  },
67
- },
68
- {
69
+ }),
70
+ Node.make({
69
71
  id: Account.Devices,
70
72
  data: Account.Devices,
71
73
  type: meta.id,
72
74
  properties: {
73
- label: ['devices label', { ns: meta.id }],
75
+ label: ['devices.label', { ns: meta.id }],
74
76
  icon: 'ph--devices--regular',
75
77
  testId: 'clientPlugin.devices',
76
78
  },
77
- },
78
- {
79
+ }),
80
+ Node.make({
79
81
  id: Account.Security,
80
82
  data: Account.Security,
81
83
  type: meta.id,
82
84
  properties: {
83
- label: ['security label', { ns: meta.id }],
85
+ label: ['security.label', { ns: meta.id }],
84
86
  icon: 'ph--key--regular',
85
87
  },
86
- },
88
+ }),
87
89
  ],
88
- },
90
+ }),
89
91
  ];
90
92
  }),
91
93
  });
92
94
 
93
- return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);
95
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
94
96
  }),
95
97
  );
@@ -4,27 +4,29 @@
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';
11
11
 
12
- import { ClientEvents } from '../../types';
13
- import { ClientCapabilities, type ClientPluginOptions } from '../../types';
12
+ import { ClientEvents } from '#types';
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),
@@ -42,9 +44,10 @@ export default Capability.makeModule(
42
44
  });
43
45
  });
44
46
 
45
- // TODO(burdon): The callback isn't called?
46
- const subscription = client.spaces.isReady.subscribe(async (ready) => {
47
- if (ready) {
47
+ let spacesReadyFired = false;
48
+ const subscription = client.spaces.subscribe(async () => {
49
+ if (!spacesReadyFired) {
50
+ spacesReadyFired = true;
48
51
  await Effect.gen(function* () {
49
52
  yield* Plugin.activate(ClientEvents.SpacesReady);
50
53
  if (onSpacesReady) {
@@ -65,11 +68,12 @@ export default Capability.makeModule(
65
68
  // Perhaps move to using layer has source of truth and add a getter capability for the client.
66
69
  Capability.contributes(ClientCapabilities.Client, client, () =>
67
70
  Effect.gen(function* () {
71
+ log.info('client capability: destroying client');
68
72
  subscription.unsubscribe();
69
73
  yield* Effect.tryPromise(() => client.destroy());
70
74
  }),
71
75
  ),
72
- Capability.contributes(Common.Capability.Layer, ClientService.fromClient(client)),
76
+ Capability.contributes(Capabilities.Layer, ClientService.fromClient(client)),
73
77
  ];
74
78
  }),
75
79
  );
@@ -2,10 +2,18 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './app-graph-builder';
6
- export * from './client';
7
- export * from './migrations';
8
- export * from './operation-resolver';
9
- export * from './react-context';
10
- export * from './react-surface';
11
- export * from './schema-defs';
5
+ import { Capability } from '@dxos/app-framework';
6
+ import { OperationHandlerSet } from '@dxos/operation';
7
+
8
+ export const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));
9
+ export const Client = Capability.lazy('Client', () => import('./client'));
10
+ export const Migrations = Capability.lazy('Migrations', () => import('./migrations'));
11
+ export { NavigationHandler } from './navigation-handler';
12
+ export type { NavigationHandlerOptions } from './navigation-handler';
13
+ export const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(
14
+ 'OperationHandler',
15
+ () => import('./operation-handler'),
16
+ );
17
+ export const ReactContext = Capability.lazy('ReactContext', () => import('./react-context'));
18
+ export const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));
19
+ export const SchemaDefs = Capability.lazy('SchemaDefs', () => import('./schema-defs'));
@@ -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
- import { ClientCapabilities } from '../../types';
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
  );
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export type { NavigationHandlerOptions } from './navigation-handler';
8
+
9
+ export const NavigationHandler = Capability.lazy('NavigationHandler', () => import('./navigation-handler'));
@@ -0,0 +1,64 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
+ import { AppCapabilities } from '@dxos/app-toolkit';
9
+ import { log } from '@dxos/log';
10
+ import { Operation } from '@dxos/operation';
11
+
12
+ import { ClientOperation } from '../../operations';
13
+
14
+ export type NavigationHandlerOptions = {
15
+ invitationProp?: string;
16
+ tokenProp?: string;
17
+ tokenTypeProp?: string;
18
+ };
19
+
20
+ /**
21
+ * NavigationHandler for auth-related URL params.
22
+ * Handles login tokens and device invitation codes.
23
+ */
24
+ export default Capability.makeModule(
25
+ Effect.fnUntraced(function* ({
26
+ invitationProp = 'deviceInvitationCode',
27
+ tokenProp = 'token',
28
+ tokenTypeProp = 'type',
29
+ }: NavigationHandlerOptions = {}) {
30
+ const capabilities = yield* Capability.Service;
31
+ const operationService = yield* Capability.get(Capabilities.OperationInvoker);
32
+
33
+ const handler: AppCapabilities.NavigationHandler = (url: URL) =>
34
+ Effect.gen(function* () {
35
+ const token = url.searchParams.get(tokenProp);
36
+ const tokenType = url.searchParams.get(tokenTypeProp);
37
+ const invitationCode = url.searchParams.get(invitationProp);
38
+
39
+ if (token && tokenType === 'login') {
40
+ log('login token received via navigation');
41
+ removeQueryParam(tokenProp);
42
+ removeQueryParam(tokenTypeProp);
43
+ yield* Operation.invoke(ClientOperation.RedeemToken, { token });
44
+ } else if (invitationCode) {
45
+ log('device invitation received via navigation');
46
+ removeQueryParam(invitationProp);
47
+ yield* Operation.invoke(ClientOperation.JoinIdentity, { invitationCode });
48
+ }
49
+ }).pipe(
50
+ Effect.provideService(Capability.Service, capabilities),
51
+ Effect.provideService(Operation.Service, operationService),
52
+ Effect.orDie,
53
+ );
54
+
55
+ return Capability.contributes(AppCapabilities.NavigationHandler, handler);
56
+ }),
57
+ );
58
+
59
+ /** Remove a query param from the current browser URL. */
60
+ const removeQueryParam = (key: string) => {
61
+ const current = new URL(window.location.href);
62
+ current.searchParams.delete(key);
63
+ history.replaceState(null, '', current.pathname + current.search);
64
+ };
@@ -0,0 +1,13 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+ import { OperationHandlerSet } from '@dxos/operation';
7
+
8
+ export const Client = Capability.lazy('Client', () => import('./client'));
9
+ export const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(
10
+ 'OperationHandler',
11
+ () => import('./operation-handler'),
12
+ );
13
+ export const SchemaDefs = Capability.lazy('SchemaDefs', () => import('./schema-defs'));
@@ -0,0 +1,16 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
+ import type { OperationHandlerSet } from '@dxos/operation';
9
+
10
+ import { ClientOperationHandlerSet } from '#operations';
11
+
12
+ export default Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(
13
+ Effect.fnUntraced(function* () {
14
+ return Capability.contributes(Capabilities.OperationHandler, ClientOperationHandlerSet);
15
+ }),
16
+ );
@@ -3,20 +3,20 @@
3
3
  //
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
- import React from 'react';
6
+ import React, { ReactNode } 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
- import { meta } from '../../meta';
13
- import { ClientCapabilities } from '../../types';
12
+ import { meta } from '#meta';
13
+ 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
- context: ({ children }: { children?: React.ReactNode }) => {
19
+ context: ({ children }: { children?: ReactNode }) => {
20
20
  const client = useCapability(ClientCapabilities.Client);
21
21
  return <ClientProvider client={client}>{children}</ClientProvider>;
22
22
  },