@dxos/plugin-client 0.8.4-staging.60fe92afc8 → 0.9.1-main.c7dcc2e112

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 (190) hide show
  1. package/dist/lib/neutral/{AccountContainer-FZ3IC6H4.mjs → AccountContainer-LIMGLO2Y.mjs} +3 -3
  2. package/dist/lib/neutral/AccountContainer-LIMGLO2Y.mjs.map +7 -0
  3. package/dist/lib/neutral/ClientPlugin.node.mjs +477 -370
  4. package/dist/lib/neutral/ClientPlugin.node.mjs.map +4 -4
  5. package/dist/lib/neutral/{DevicesContainer-6MWNUC3I.mjs → DevicesContainer-X26OGLFK.mjs} +12 -12
  6. package/dist/lib/neutral/DevicesContainer-X26OGLFK.mjs.map +7 -0
  7. package/dist/lib/neutral/{InvitationsContainer-ME722VKS.mjs → InvitationsContainer-OBBCJ7CJ.mjs} +2 -2
  8. package/dist/lib/neutral/InvitationsContainer-OBBCJ7CJ.mjs.map +7 -0
  9. package/dist/lib/neutral/{JoinDialog-2NXAKPLP.mjs → JoinDialog-4BWV4CYB.mjs} +2 -2
  10. package/dist/lib/neutral/JoinDialog-4BWV4CYB.mjs.map +7 -0
  11. package/dist/lib/neutral/{ProfileContainer-VPX3FPWG.mjs → ProfileContainer-FGS2MVWA.mjs} +2 -2
  12. package/dist/lib/neutral/ProfileContainer-FGS2MVWA.mjs.map +7 -0
  13. package/dist/lib/neutral/{RecoveryCodeDialog-EWHB6U5T.mjs → RecoveryCodeDialog-7EPNKCLB.mjs} +2 -2
  14. package/dist/lib/neutral/RecoveryCodeDialog-7EPNKCLB.mjs.map +7 -0
  15. package/dist/lib/neutral/{RecoveryCredentialsContainer-IPBGDMIA.mjs → RecoveryCredentialsContainer-SL4LYHBE.mjs} +3 -3
  16. package/dist/lib/neutral/RecoveryCredentialsContainer-SL4LYHBE.mjs.map +7 -0
  17. package/dist/lib/neutral/UsageContainer-HBPMLIK7.mjs +226 -0
  18. package/dist/lib/neutral/UsageContainer-HBPMLIK7.mjs.map +7 -0
  19. package/dist/lib/neutral/{app-graph-builder-A74W7C36.mjs → app-graph-builder-FTXJNX37.mjs} +28 -14
  20. package/dist/lib/neutral/app-graph-builder-FTXJNX37.mjs.map +7 -0
  21. package/dist/lib/neutral/capabilities/index.mjs +5 -5
  22. package/dist/lib/neutral/capabilities/node.mjs +3 -3
  23. package/dist/lib/neutral/chunk-54MDDWCV.mjs +8 -0
  24. package/dist/lib/neutral/{chunk-NTVDGDQ3.mjs.map → chunk-54MDDWCV.mjs.map} +2 -2
  25. package/dist/lib/neutral/chunk-6G4KZLBG.mjs +28 -0
  26. package/dist/lib/neutral/chunk-6G4KZLBG.mjs.map +7 -0
  27. package/dist/lib/neutral/{chunk-D6HPCLTS.mjs → chunk-7DEIKHB7.mjs} +16 -2
  28. package/dist/lib/neutral/chunk-7DEIKHB7.mjs.map +7 -0
  29. package/dist/lib/neutral/{chunk-TUK3ELUU.mjs → chunk-DA3LZQSD.mjs} +22 -21
  30. package/dist/lib/neutral/chunk-DA3LZQSD.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-GSKMAS3S.mjs +13 -0
  32. package/dist/lib/neutral/chunk-GSKMAS3S.mjs.map +7 -0
  33. package/dist/lib/neutral/containers/index.mjs +10 -8
  34. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  35. package/dist/lib/neutral/{create-agent-6HLW4D3A.mjs → create-agent-U567RM7Z.mjs} +3 -3
  36. package/dist/lib/neutral/{create-identity-JIWAR5GW.mjs → create-identity-IKN2FJ5B.mjs} +3 -3
  37. package/dist/lib/neutral/{create-passkey-FOXEMXGF.mjs → create-passkey-JAD3ACY7.mjs} +7 -7
  38. package/dist/lib/neutral/create-passkey-JAD3ACY7.mjs.map +7 -0
  39. package/dist/lib/neutral/{create-recovery-code-ZWDKLPH4.mjs → create-recovery-code-JZYXR4BY.mjs} +4 -4
  40. package/dist/lib/neutral/index.mjs +4 -4
  41. package/dist/lib/neutral/{join-identity-QEQFAE2S.mjs → join-identity-PJCHDNLH.mjs} +3 -3
  42. package/dist/lib/neutral/{layer-specs-CQLXQBQJ.mjs → layer-specs-VQCJLV33.mjs} +2 -2
  43. package/dist/lib/neutral/{layer-specs-CQLXQBQJ.mjs.map → layer-specs-VQCJLV33.mjs.map} +2 -2
  44. package/dist/lib/neutral/meta.json +1 -1
  45. package/dist/lib/neutral/meta.mjs +1 -1
  46. package/dist/lib/neutral/{navigation-handler-LU26CDFR.mjs → navigation-handler-MPJAVHWY.mjs} +3 -3
  47. package/dist/lib/neutral/open-usage-24I7RAFL.mjs +27 -0
  48. package/dist/lib/neutral/open-usage-24I7RAFL.mjs.map +7 -0
  49. package/dist/lib/neutral/operations/index.mjs +2 -2
  50. package/dist/lib/neutral/plugin.mjs +3 -3
  51. package/dist/lib/neutral/{react-context-B5LXMHVM.mjs → react-context-V74T6JOJ.mjs} +2 -2
  52. package/dist/lib/neutral/{react-context-B5LXMHVM.mjs.map → react-context-V74T6JOJ.mjs.map} +3 -3
  53. package/dist/lib/neutral/{react-surface-DEKGWTCD.mjs → react-surface-HPXRA65U.mjs} +8 -3
  54. package/dist/lib/neutral/react-surface-HPXRA65U.mjs.map +7 -0
  55. package/dist/lib/neutral/{recover-identity-JNFKLCUD.mjs → recover-identity-B7YM2BR4.mjs} +3 -3
  56. package/dist/lib/neutral/{redeem-passkey-4SBAI4AG.mjs → redeem-passkey-4DR7GPMU.mjs} +10 -10
  57. package/dist/lib/neutral/redeem-passkey-4DR7GPMU.mjs.map +7 -0
  58. package/dist/lib/neutral/{redeem-token-POBD6TMN.mjs → redeem-token-N5MBQG3I.mjs} +3 -3
  59. package/dist/lib/neutral/{reset-storage-LQKUV5RA.mjs → reset-storage-K47HZTGP.mjs} +3 -3
  60. package/dist/lib/neutral/{share-identity-KNQ2XNXV.mjs → share-identity-YJIFDIPJ.mjs} +6 -6
  61. package/dist/lib/neutral/share-identity-YJIFDIPJ.mjs.map +7 -0
  62. package/dist/lib/neutral/testing/index.mjs +2 -2
  63. package/dist/lib/neutral/testing/index.mjs.map +3 -3
  64. package/dist/lib/neutral/translations.mjs +24 -1
  65. package/dist/lib/neutral/translations.mjs.map +3 -3
  66. package/dist/lib/neutral/types/index.mjs +1 -1
  67. package/dist/types/dx.config.d.ts +28 -0
  68. package/dist/types/dx.config.d.ts.map +1 -0
  69. package/dist/types/src/capabilities/index.d.ts +9 -43
  70. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/navigation-handler/index.d.ts +1 -1
  72. package/dist/types/src/capabilities/navigation-handler/index.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/node.d.ts +6 -6
  74. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  76. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  77. package/dist/types/src/commands/account/index.d.ts +3 -0
  78. package/dist/types/src/commands/account/index.d.ts.map +1 -0
  79. package/dist/types/src/commands/account/login/index.d.ts +2 -0
  80. package/dist/types/src/commands/account/login/index.d.ts.map +1 -0
  81. package/dist/types/src/commands/account/login/login.d.ts +12 -0
  82. package/dist/types/src/commands/account/login/login.d.ts.map +1 -0
  83. package/dist/types/src/commands/account/logout/index.d.ts +2 -0
  84. package/dist/types/src/commands/account/logout/index.d.ts.map +1 -0
  85. package/dist/types/src/commands/account/logout/logout.d.ts +9 -0
  86. package/dist/types/src/commands/account/logout/logout.d.ts.map +1 -0
  87. package/dist/types/src/commands/halo/join/join.d.ts +1 -1
  88. package/dist/types/src/commands/halo/join/join.d.ts.map +1 -1
  89. package/dist/types/src/commands/halo/util.d.ts +4 -0
  90. package/dist/types/src/commands/halo/util.d.ts.map +1 -1
  91. package/dist/types/src/commands/index.d.ts +1 -0
  92. package/dist/types/src/commands/index.d.ts.map +1 -1
  93. package/dist/types/src/constants.d.ts.map +1 -1
  94. package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -1
  95. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -1
  96. package/dist/types/src/containers/UsageContainer/UsageContainer.d.ts +7 -0
  97. package/dist/types/src/containers/UsageContainer/UsageContainer.d.ts.map +1 -0
  98. package/dist/types/src/containers/UsageContainer/UsageView.d.ts +19 -0
  99. package/dist/types/src/containers/UsageContainer/UsageView.d.ts.map +1 -0
  100. package/dist/types/src/containers/UsageContainer/UsageView.stories.d.ts +19 -0
  101. package/dist/types/src/containers/UsageContainer/UsageView.stories.d.ts.map +1 -0
  102. package/dist/types/src/containers/UsageContainer/index.d.ts +2 -0
  103. package/dist/types/src/containers/UsageContainer/index.d.ts.map +1 -0
  104. package/dist/types/src/containers/index.d.ts +1 -0
  105. package/dist/types/src/containers/index.d.ts.map +1 -1
  106. package/dist/types/src/meta.d.ts +28 -2
  107. package/dist/types/src/meta.d.ts.map +1 -1
  108. package/dist/types/src/operations/create-passkey.d.ts.map +1 -1
  109. package/dist/types/src/operations/definitions.d.ts +1 -0
  110. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  111. package/dist/types/src/operations/index.d.ts.map +1 -1
  112. package/dist/types/src/operations/open-usage.d.ts +5 -0
  113. package/dist/types/src/operations/open-usage.d.ts.map +1 -0
  114. package/dist/types/src/testing/initializeIdentity.d.ts.map +1 -1
  115. package/dist/types/src/translations.d.ts.map +1 -1
  116. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  117. package/dist/types/src/types/events.d.ts.map +1 -1
  118. package/dist/types/src/types/schema.d.ts +1 -0
  119. package/dist/types/src/types/schema.d.ts.map +1 -1
  120. package/dist/types/tsconfig.tsbuildinfo +1 -1
  121. package/dx.config.ts +19 -0
  122. package/package.json +37 -35
  123. package/src/ClientPlugin.node.ts +2 -2
  124. package/src/ClientPlugin.test.ts +1 -1
  125. package/src/capabilities/app-graph-builder.ts +22 -13
  126. package/src/capabilities/layer-specs.ts +1 -1
  127. package/src/capabilities/react-context.tsx +1 -1
  128. package/src/capabilities/react-surface.tsx +6 -0
  129. package/src/commands/account/index.ts +13 -0
  130. package/src/commands/account/login/index.ts +5 -0
  131. package/src/commands/account/login/login.ts +147 -0
  132. package/src/commands/account/logout/index.ts +5 -0
  133. package/src/commands/account/logout/logout.ts +49 -0
  134. package/src/commands/halo/create/create.ts +2 -2
  135. package/src/commands/halo/index.ts +6 -6
  136. package/src/commands/halo/join/join.ts +2 -13
  137. package/src/commands/halo/util.ts +24 -0
  138. package/src/commands/index.ts +1 -0
  139. package/src/constants.ts +3 -3
  140. package/src/containers/AccountContainer/AccountContainer.tsx +1 -1
  141. package/src/containers/DevicesContainer/DevicesContainer.tsx +14 -11
  142. package/src/containers/InvitationsContainer/InvitationsContainer.tsx +1 -1
  143. package/src/containers/JoinDialog/JoinDialog.tsx +1 -1
  144. package/src/containers/ProfileContainer/ProfileContainer.tsx +1 -1
  145. package/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.tsx +1 -1
  146. package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.tsx +2 -2
  147. package/src/containers/UsageContainer/UsageContainer.tsx +47 -0
  148. package/src/containers/UsageContainer/UsageView.stories.tsx +114 -0
  149. package/src/containers/UsageContainer/UsageView.tsx +238 -0
  150. package/src/containers/UsageContainer/index.ts +5 -0
  151. package/src/containers/index.ts +1 -0
  152. package/src/meta.ts +3 -12
  153. package/src/operations/create-passkey.ts +6 -4
  154. package/src/operations/definitions.ts +12 -1
  155. package/src/operations/index.ts +1 -0
  156. package/src/operations/open-usage.ts +24 -0
  157. package/src/operations/redeem-passkey.ts +7 -7
  158. package/src/operations/share-identity.ts +3 -3
  159. package/src/testing/initializeIdentity.ts +4 -2
  160. package/src/translations.ts +25 -1
  161. package/src/types/capabilities.ts +7 -5
  162. package/src/types/events.ts +5 -5
  163. package/src/types/schema.ts +23 -16
  164. package/dist/lib/neutral/AccountContainer-FZ3IC6H4.mjs.map +0 -7
  165. package/dist/lib/neutral/DevicesContainer-6MWNUC3I.mjs.map +0 -7
  166. package/dist/lib/neutral/InvitationsContainer-ME722VKS.mjs.map +0 -7
  167. package/dist/lib/neutral/JoinDialog-2NXAKPLP.mjs.map +0 -7
  168. package/dist/lib/neutral/ProfileContainer-VPX3FPWG.mjs.map +0 -7
  169. package/dist/lib/neutral/RecoveryCodeDialog-EWHB6U5T.mjs.map +0 -7
  170. package/dist/lib/neutral/RecoveryCredentialsContainer-IPBGDMIA.mjs.map +0 -7
  171. package/dist/lib/neutral/app-graph-builder-A74W7C36.mjs.map +0 -7
  172. package/dist/lib/neutral/chunk-D6HPCLTS.mjs.map +0 -7
  173. package/dist/lib/neutral/chunk-JOCCVODY.mjs +0 -21
  174. package/dist/lib/neutral/chunk-JOCCVODY.mjs.map +0 -7
  175. package/dist/lib/neutral/chunk-NTVDGDQ3.mjs +0 -8
  176. package/dist/lib/neutral/chunk-TUK3ELUU.mjs.map +0 -7
  177. package/dist/lib/neutral/chunk-WWCVZG3K.mjs +0 -13
  178. package/dist/lib/neutral/chunk-WWCVZG3K.mjs.map +0 -7
  179. package/dist/lib/neutral/create-passkey-FOXEMXGF.mjs.map +0 -7
  180. package/dist/lib/neutral/react-surface-DEKGWTCD.mjs.map +0 -7
  181. package/dist/lib/neutral/redeem-passkey-4SBAI4AG.mjs.map +0 -7
  182. package/dist/lib/neutral/share-identity-KNQ2XNXV.mjs.map +0 -7
  183. /package/dist/lib/neutral/{create-agent-6HLW4D3A.mjs.map → create-agent-U567RM7Z.mjs.map} +0 -0
  184. /package/dist/lib/neutral/{create-identity-JIWAR5GW.mjs.map → create-identity-IKN2FJ5B.mjs.map} +0 -0
  185. /package/dist/lib/neutral/{create-recovery-code-ZWDKLPH4.mjs.map → create-recovery-code-JZYXR4BY.mjs.map} +0 -0
  186. /package/dist/lib/neutral/{join-identity-QEQFAE2S.mjs.map → join-identity-PJCHDNLH.mjs.map} +0 -0
  187. /package/dist/lib/neutral/{navigation-handler-LU26CDFR.mjs.map → navigation-handler-MPJAVHWY.mjs.map} +0 -0
  188. /package/dist/lib/neutral/{recover-identity-JNFKLCUD.mjs.map → recover-identity-B7YM2BR4.mjs.map} +0 -0
  189. /package/dist/lib/neutral/{redeem-token-POBD6TMN.mjs.map → redeem-token-N5MBQG3I.mjs.map} +0 -0
  190. /package/dist/lib/neutral/{reset-storage-LQKUV5RA.mjs.map → reset-storage-K47HZTGP.mjs.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/constants.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { DXN } from '@dxos/keys';\n\nimport { meta } from '#meta';\n\nexport const JOIN_DIALOG = DXN.make(`${meta.id}.joinDialog`);\nexport const RECOVERY_CODE_DIALOG = DXN.make(`${meta.id}.recoveryCodeDialog`);\nexport const RESET_DIALOG = DXN.make(`${meta.id}.resetDialog`);\n"],
5
- "mappings": ";AAIA,SAASA,WAAW;AAEpB,SAASC,YAAY;AAEd,IAAMC,cAAcF,IAAIG,KAAK,GAAGF,KAAKG,EAAE,aAAa;AACpD,IAAMC,uBAAuBL,IAAIG,KAAK,GAAGF,KAAKG,EAAE,qBAAqB;AACrE,IAAME,eAAeN,IAAIG,KAAK,GAAGF,KAAKG,EAAE,cAAc;",
6
- "names": ["DXN", "meta", "JOIN_DIALOG", "make", "id", "RECOVERY_CODE_DIALOG", "RESET_DIALOG"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/create-passkey.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\n\nimport { Capability } from '@dxos/app-framework';\nimport { supportsNativePasskeys, createNativePasskey, extractPublicKeyFromAttestation } from '@dxos/app-toolkit';\nimport { PublicKey } from '@dxos/client';\nimport { Operation } from '@dxos/compute';\nimport { invariant } from '@dxos/invariant';\n\nimport { ClientCapabilities } from '../types';\nimport { CreatePasskey } from './definitions';\n\nconst handler: Operation.WithHandler<typeof CreatePasskey> = CreatePasskey.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const identity = client.halo.identity.get();\n invariant(identity, 'Identity not available');\n\n const lookupKey = PublicKey.random();\n\n const { recoveryKey, algorithm } = yield* Match.value(supportsNativePasskeys()).pipe(\n Match.when(true, () =>\n Effect.gen(function* () {\n const result = yield* Effect.promise(() =>\n createNativePasskey({\n username: identity.did,\n userId: lookupKey.asUint8Array(),\n }),\n );\n const { publicKey, algorithm: alg } = extractPublicKeyFromAttestation(result.attestation_object);\n return {\n recoveryKey: PublicKey.from(publicKey),\n algorithm: alg === -7 ? 'ES256' : 'ED25519',\n };\n }),\n ),\n Match.orElse(() =>\n Effect.gen(function* () {\n const credential = yield* Effect.promise(() =>\n navigator.credentials.create({\n publicKey: {\n challenge: new Uint8Array(),\n rp: { id: location.hostname, name: 'Composer' },\n user: {\n id: lookupKey.asUint8Array() as Uint8Array<ArrayBuffer>,\n name: identity.did,\n displayName: identity.profile?.displayName ?? '',\n },\n pubKeyCredParams: [\n { type: 'public-key', alg: -8 },\n { type: 'public-key', alg: -7 },\n ],\n authenticatorSelection: {\n residentKey: 'required',\n requireResidentKey: true,\n },\n },\n }),\n );\n invariant(credential, 'Credential not available');\n return {\n recoveryKey: PublicKey.from(new Uint8Array((credential as any).response.getPublicKey())),\n algorithm: (credential as any).response.getPublicKeyAlgorithm() === -7 ? 'ES256' : 'ED25519',\n };\n }),\n ),\n );\n\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n yield* Effect.promise(() =>\n client.services.services.IdentityService!.createRecoveryCredential({\n data: {\n recoveryKey,\n algorithm,\n lookupKey,\n },\n }),\n );\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,kBAAkB;AAC3B,SAASC,wBAAwBC,qBAAqBC,uCAAuC;AAC7F,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAK1B,IAAA,eAA6DC;IAIvD,UAAMC,cAAkBC,KAAKD,UAAY,YAAA,kBAAA,aAAA;AACzCE,QAAAA,SAAUF,OAAU,WAAA,IAAA,mBAAA,MAAA;AAEpB,QAAMG,WAAAA,OAAYC,KAAUC,SAAM,IAAA;AAElC,YAAQC,UAAW,0BAAuBC,EAAAA,YAAYC,YAAAA,GAAAA,cAA0BC,GAC9EF,IAAAA,GAAAA,MAAU,GAAC,CAAA,YACTG,0BAAW,EAAA,CAAA;oBACHC,UAAS,OAAOD;uBAElBE,UAAUZ,IAASa,OAAG,YAAA,uBAAA,CAAA,EAAA,KAAA,WAAA,MAAA,MAAA,WAAA,aAAA;mBACtBC,OAAkBC,eAAAA,MAAY,oBAAA;MAChC,UAAA,SAAA;MAEMC,QAAAA,UAAWC,aAAmBC;IACtC,CAAA,CAAA;UACEZ,EAAAA,WAAaF,WAAUe,IAAKH,IAAAA,gCAAAA,OAAAA,kBAAAA;WAC5BC;MACF,aAAA,UAAA,KAAA,SAAA;MAGJV,WAAa,QACXG,KAAU,UAAC;IACT;oBAEIM,MAAW,WAAA,aAAA;uBACTI,OAAeC,eAAAA,MAAAA,UAAAA,YAAAA,OAAAA;iBACX;mBAAMC,IAAAA,WAAiB;YAAEC;UAAiB,IAAA,SAAA;UAC9CC,MAAM;;cAEJD;UACAE,IAAAA,UAAazB,aAAS0B;UACxB,MAAA,SAAA;UACAC,aAAAA,SAAkB,SAAA,eAAA;;0BACR;;YAAsB,MAAA;YAC9B,KAAA;;;YAA8B,MAAA;YAC/B,KAAA;UACDC;;gCAEsB;UACtB,aAAA;UACF,oBAAA;QACF;MAEF1B;IACA,CAAA,CAAA;cACEI,YAAaF,4BAA+ByB,EAAAA,YAAmBC,YAASC,GAAAA,cAAY,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,cAAA,4BAAA,EAAA,CAAA;WACpFd;MACF,aAAA,UAAA,KAAA,IAAA,WAAA,WAAA,SAAA,aAAA,CAAA,CAAA;MACF,WAAA,WAAA,SAAA,sBAAA,MAAA,KAAA,UAAA;IAIJf;EACA,CAAA,CAAA,CAAOQ;YAEHsB,OAAM,SAAA,SAAA,iBAAA,iCAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,4CAAA,iCAAA,EAAA,CAAA;SACJ1B,eAAAA,MAAAA,OAAAA,SAAAA,SAAAA,gBAAAA,yBAAAA;UACAW;MACAd;MACF;MACF;IAEJ;EAIJ,CAAA,CAAA;;;",
6
- "names": ["Effect", "Match", "Capability", "supportsNativePasskeys", "createNativePasskey", "extractPublicKeyFromAttestation", "PublicKey", "Operation", "invariant", "CreatePasskey", "identity", "halo", "invariant", "lookupKey", "PublicKey", "random", "recoveryKey", "Match", "supportsNativePasskeys", "pipe", "Effect", "result", "username", "did", "userId", "asUint8Array", "publicKey", "algorithm", "extractPublicKeyFromAttestation", "from", "challenge", "Uint8Array", "location", "name", "user", "displayName", "profile", "pubKeyCredParams", "authenticatorSelection", "credential", "response", "getPublicKey", "data"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React, { type ComponentProps } from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\n\nimport {\n AccountContainer,\n DevicesContainer,\n InvitationsContainer,\n JoinDialog,\n ProfileContainer,\n RecoveryCodeDialog,\n RecoveryCredentialsContainer,\n ResetDialog,\n} from '#containers';\nimport { Account, type ClientPluginOptions } from '#types';\n\nimport { JOIN_DIALOG, RECOVERY_CODE_DIALOG, RESET_DIALOG } from '../constants';\n\ntype ReactSurfaceOptions = Pick<ClientPluginOptions, 'onReset'> & {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* ({ createInvitationUrl, onReset }: ReactSurfaceOptions) {\n const capabilityManager = yield* Capability.Service;\n\n return Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: Account.Profile,\n filter: AppSurface.literal(AppSurface.Article, Account.Profile),\n component: () => <ProfileContainer />,\n }),\n Surface.create({\n id: Account.Devices,\n filter: AppSurface.literal(AppSurface.Article, Account.Devices),\n component: () => <DevicesContainer createInvitationUrl={createInvitationUrl} />,\n }),\n Surface.create({\n id: Account.Security,\n filter: AppSurface.literal(AppSurface.Article, Account.Security),\n component: () => <RecoveryCredentialsContainer />,\n }),\n Surface.create({\n id: Account.Account,\n filter: AppSurface.literal(AppSurface.Article, Account.Account),\n component: () => <AccountContainer />,\n }),\n Surface.create({\n id: Account.Invitations,\n filter: AppSurface.literal(AppSurface.Article, Account.Invitations),\n component: () => <InvitationsContainer />,\n }),\n Surface.create({\n id: JOIN_DIALOG,\n filter: AppSurface.component<ComponentProps<typeof JoinDialog>>(AppSurface.Dialog, JOIN_DIALOG),\n component: ({ data }) => <JoinDialog {...data.props} />,\n }),\n Surface.create({\n id: RECOVERY_CODE_DIALOG,\n filter: AppSurface.component<ComponentProps<typeof RecoveryCodeDialog>>(\n AppSurface.Dialog,\n RECOVERY_CODE_DIALOG,\n ),\n component: ({ data }) => <RecoveryCodeDialog {...data.props} />,\n }),\n Surface.create({\n id: RESET_DIALOG,\n filter: AppSurface.component<Pick<ComponentProps<typeof ResetDialog>, 'mode'>>(AppSurface.Dialog, RESET_DIALOG),\n component: ({ data }) => (\n <ResetDialog {...data.props} onReset={onReset} capabilityManager={capabilityManager} />\n ),\n }),\n ]);\n }),\n);\n"],
5
- "mappings": ";;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAoC;AAE3C,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,kBAAkB;AAE3B,SACEC,kBACAC,kBACAC,sBACAC,YACAC,kBACAC,oBACAC,8BACAC,mBACK;AACP,SAASC,eAAyC;AAQlD,IAAA,wBAAeC,WAAWC,WACjBC,kBAAW,WAAW,EAAEC,qBAAqBC,QAAO,GAAuB;AAChF,QAAMC,oBAAoB,OAAOL,WAAWM;AAE5C,SAAON,WAAWO,YAAYC,aAAaC,cAAc;IACvDC,QAAQC,OAAO;MACbC,IAAIC,QAAQC;MACZC,QAAQC,WAAWC,QAAQD,WAAWE,SAASL,QAAQC,OAAO;MAC9DK,WAAW,MAAM,sBAAA,cAACC,kBAAAA,IAAAA;IACpB,CAAA;IACAV,QAAQC,OAAO;MACbC,IAAIC,QAAQQ;MACZN,QAAQC,WAAWC,QAAQD,WAAWE,SAASL,QAAQQ,OAAO;MAC9DF,WAAW,MAAM,sBAAA,cAACG,kBAAAA;QAAiBnB;;IACrC,CAAA;IACAO,QAAQC,OAAO;MACbC,IAAIC,QAAQU;MACZR,QAAQC,WAAWC,QAAQD,WAAWE,SAASL,QAAQU,QAAQ;MAC/DJ,WAAW,MAAM,sBAAA,cAACK,8BAAAA,IAAAA;IACpB,CAAA;IACAd,QAAQC,OAAO;MACbC,IAAIC,QAAQA;MACZE,QAAQC,WAAWC,QAAQD,WAAWE,SAASL,QAAQA,OAAO;MAC9DM,WAAW,MAAM,sBAAA,cAACM,kBAAAA,IAAAA;IACpB,CAAA;IACAf,QAAQC,OAAO;MACbC,IAAIC,QAAQa;MACZX,QAAQC,WAAWC,QAAQD,WAAWE,SAASL,QAAQa,WAAW;MAClEP,WAAW,MAAM,sBAAA,cAACQ,sBAAAA,IAAAA;IACpB,CAAA;IACAjB,QAAQC,OAAO;MACbC,IAAIgB;MACJb,QAAQC,WAAWG,UAA6CH,WAAWa,QAAQD,WAAAA;MACnFT,WAAW,CAAC,EAAEW,KAAI,MAAO,sBAAA,cAACC,YAAeD,KAAKE,KAAK;IACrD,CAAA;IACAtB,QAAQC,OAAO;MACbC,IAAIqB;MACJlB,QAAQC,WAAWG,UACjBH,WAAWa,QACXI,oBAAAA;MAEFd,WAAW,CAAC,EAAEW,KAAI,MAAO,sBAAA,cAACI,oBAAuBJ,KAAKE,KAAK;IAC7D,CAAA;IACAtB,QAAQC,OAAO;MACbC,IAAIuB;MACJpB,QAAQC,WAAWG,UAA4DH,WAAWa,QAAQM,YAAAA;MAClGhB,WAAW,CAAC,EAAEW,KAAI,MAChB,sBAAA,cAACM,aAAAA;QAAa,GAAGN,KAAKE;QAAO5B;QAAkBC;;IAEnD,CAAA;GACD;AACH,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "AppSurface", "AccountContainer", "DevicesContainer", "InvitationsContainer", "JoinDialog", "ProfileContainer", "RecoveryCodeDialog", "RecoveryCredentialsContainer", "ResetDialog", "Account", "Capability", "makeModule", "fnUntraced", "createInvitationUrl", "onReset", "capabilityManager", "Service", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "Account", "Profile", "filter", "AppSurface", "literal", "Article", "component", "ProfileContainer", "Devices", "DevicesContainer", "Security", "RecoveryCredentialsContainer", "AccountContainer", "Invitations", "InvitationsContainer", "JOIN_DIALOG", "Dialog", "data", "JoinDialog", "props", "RECOVERY_CODE_DIALOG", "RecoveryCodeDialog", "RESET_DIALOG", "ResetDialog"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/redeem-passkey.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\n\nimport { Capability } from '@dxos/app-framework';\nimport { decodeUrlSafeBase64, supportsNativePasskeys, loginNativePasskey } from '@dxos/app-toolkit';\nimport { PublicKey } from '@dxos/client';\nimport { Operation } from '@dxos/compute';\nimport { invariant } from '@dxos/invariant';\n\nimport { ClientCapabilities } from '../types';\nimport { RedeemPasskey } from './definitions';\n\nconst handler: Operation.WithHandler<typeof RedeemPasskey> = RedeemPasskey.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n const { deviceKey, controlFeedKey, challenge } = yield* Effect.promise(() =>\n client.services.services.IdentityService!.requestRecoveryChallenge(),\n );\n\n const { lookupKey, signature, clientDataJson, authenticatorData } = yield* Match.value(\n supportsNativePasskeys(),\n ).pipe(\n Match.when(true, () =>\n Effect.gen(function* () {\n const result = yield* Effect.promise(() =>\n loginNativePasskey({ challenge: Uint8Array.from(Buffer.from(challenge, 'base64')) }),\n );\n invariant(result, 'Native passkey login returned no result');\n return {\n lookupKey: PublicKey.from(decodeUrlSafeBase64(result.user_handle)),\n signature: Buffer.from(decodeUrlSafeBase64(result.signature)),\n clientDataJson: Buffer.from(decodeUrlSafeBase64(result.client_data_json)),\n authenticatorData: Buffer.from(decodeUrlSafeBase64(result.authenticator_data)),\n };\n }),\n ),\n Match.orElse(() =>\n Effect.gen(function* () {\n const credential = yield* Effect.promise(() =>\n navigator.credentials.get({\n publicKey: {\n challenge: Buffer.from(challenge, 'base64'),\n rpId: location.hostname,\n userVerification: 'required',\n },\n }),\n );\n return {\n lookupKey: PublicKey.from(new Uint8Array((credential as any).response.userHandle)),\n signature: Buffer.from((credential as any).response.signature),\n clientDataJson: Buffer.from((credential as any).response.clientDataJSON),\n authenticatorData: Buffer.from((credential as any).response.authenticatorData),\n };\n }),\n ),\n );\n\n yield* Effect.promise(() =>\n client.services.services.IdentityService!.recoverIdentity(\n {\n external: {\n lookupKey,\n deviceKey,\n controlFeedKey,\n signature,\n clientDataJson,\n authenticatorData,\n },\n },\n { timeout: RECOVER_IDENTITY_RPC_TIMEOUT },\n ),\n );\n }),\n ),\n);\n\nexport default handler;\n\nconst RECOVER_IDENTITY_RPC_TIMEOUT = 20_000;\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,kBAAkB;AAC3B,SAASC,qBAAqBC,wBAAwBC,0BAA0B;AAChF,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAK1B,IAAA,eAA6DC;IAIvDC,UAAUC,cAAgBC,KAAAA,UAASC,YAAiB,kBAAA,aAAA;AACpD,QAAM,SAAEC,OAAWC,WAAc,IAAEC,mBAAqBC,MAAAA;AAIxD,YAAQC,OAAS,SAAEC,SAAWC,iBAAgBC,iCAAmCC,EAAAA,YAC/EC,YAAAA,GAAAA,cAEAC,GAAMC,IAAAA,GAAK,MAAA,GAAM,CAAA,4CACJ,iCAAA,EAAA,CAAA;UACT,WAAMC,gBAAgBT,UAAe,IACnCU,OAAAA,eAAmB,MAAA,OAAA,SAAA,SAAA,gBAAA,yBAAA,CAAA;qBAAEX,WAAWY,gBAAgBC,kBAAYb,IAAW,OAAA,YAAA,uBAAA,CAAA,EAAA,KAAA,WAAA,MAAA,MAAA,WAAA,aAAA;UAAW,SAAA,OAAA,eAAA,MAAA,mBAAA;MAEpFN,WAAkB,WAAA,KAAA,OAAA,KAAA,WAAA,QAAA,CAAA;IAClB,CAAA,CAAA;cACEQ,QAAWY,2CAA0CC,EAAAA,YAAW,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,UAAA,2CAAA,EAAA,CAAA;WAChEZ;MACAC,WAAAA,UAAgBS,KAAOG,oBAAKC,OAAoBP,WAAOQ,CAAAA;MACvDb,WAAAA,OAAAA,KAAmBQ,oBAAYI,OAAAA,SAA2BE,CAAAA;MAC5D,gBAAA,OAAA,KAAA,oBAAA,OAAA,gBAAA,CAAA;MAGJX,mBACEP,OAAW,KAAA,oBAAA,OAAA,kBAAA,CAAA;IACT;oBAEImB,MAAW,WAAA,aAAA;uBACTpB,OAAkBgB,eAAKhB,MAAAA,UAAW,YAAA,IAAA;iBAC5BqB;QACNC,WAAAA,OAAkB,KAAA,WAAA,QAAA;QACpB,MAAA,SAAA;QACF,kBAAA;MAEK;IACLpB,CAAAA,CAAAA;WACAC;MACAC,WAAAA,UAAgBS,KAAOG,IAAMO,WAAmBC,WAASC,SAAAA,UAAc,CAAA;MACvEpB,WAAAA,OAAAA,KAAmBQ,WAAaU,SAAmBC,SAASnB;MAC9D,gBAAA,OAAA,KAAA,WAAA,SAAA,cAAA;MACF,mBAAA,OAAA,KAAA,WAAA,SAAA,iBAAA;IAIGJ;;SAICC,eAAAA,MAAAA,OAAAA,SAAAA,SAAAA,gBAAAA,gBAAAA;cACAJ;MACAC;MACAI;MACAC;MACAC;MACF;MAEF;IAAEqB;EAAsC,GAAA;IAG9C,SAAA;EAIJ,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA;;;",
6
- "names": ["Effect", "Match", "Capability", "decodeUrlSafeBase64", "supportsNativePasskeys", "loginNativePasskey", "PublicKey", "Operation", "invariant", "RedeemPasskey", "invariant", "client", "services", "IdentityService", "deviceKey", "controlFeedKey", "challenge", "Effect", "lookupKey", "signature", "clientDataJson", "authenticatorData", "value", "supportsNativePasskeys", "Match", "when", "result", "loginNativePasskey", "Uint8Array", "Buffer", "PublicKey", "user_handle", "from", "decodeUrlSafeBase64", "client_data_json", "authenticator_data", "publicKey", "location", "userVerification", "credential", "response", "clientDataJSON", "timeout"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/share-identity.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { ObservabilityOperation } from '@dxos/plugin-observability';\n\nimport { Account } from '../types';\nimport { ShareIdentity } from './definitions';\n\nconst handler: Operation.WithHandler<typeof ShareIdentity> = ShareIdentity.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* () {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(Account.id) });\n yield* Operation.invoke(LayoutOperation.Open, {\n subject: [`${getSpacePath(Account.id)}/${Account.Profile}`],\n });\n yield* Operation.schedule(ObservabilityOperation.SendEvent, { name: 'identity.share' });\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiBC,oBAAoB;AAC9C,SAASC,iBAAiB;AAC1B,SAASC,8BAA8B;AAKvC,IAAMC,UAAuDC,cAAcC,KACzEC,UAAUC,YACDC,kBAAW,aAAA;AAChB,SAAOF,UAAUG,OAAOC,gBAAgBC,iBAAiB;IAAEC,SAASC,aAAaC,QAAQC,EAAE;EAAE,CAAA;AAC7F,SAAOT,UAAUG,OAAOC,gBAAgBM,MAAM;IAC5CJ,SAAS;MAAC,GAAGC,aAAaC,QAAQC,EAAE,CAAA,IAAKD,QAAQG,OAAO;;EAC1D,CAAA;AACA,SAAOX,UAAUY,SAASC,uBAAuBC,WAAW;IAAEC,MAAM;EAAiB,CAAA;AACvF,CAAA,CAAA,CAAA;AAIJ,IAAA,yBAAelB;",
6
- "names": ["Effect", "LayoutOperation", "getSpacePath", "Operation", "ObservabilityOperation", "handler", "ShareIdentity", "pipe", "Operation", "withHandler", "fnUntraced", "invoke", "LayoutOperation", "SwitchWorkspace", "subject", "getSpacePath", "Account", "id", "Open", "Profile", "schedule", "ObservabilityOperation", "SendEvent", "name"]
7
- }