@dxos/plugin-client 0.9.0 → 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,16 +1,16 @@
1
1
  import {
2
2
  CreatePasskey
3
- } from "./chunk-D6HPCLTS.mjs";
3
+ } from "./chunk-7DEIKHB7.mjs";
4
4
  import {
5
5
  ClientCapabilities
6
- } from "./chunk-TUK3ELUU.mjs";
6
+ } from "./chunk-DA3LZQSD.mjs";
7
7
  import "./chunk-J5LGTIGS.mjs";
8
8
 
9
9
  // src/operations/create-passkey.ts
10
10
  import * as Effect from "effect/Effect";
11
11
  import * as Match from "effect/Match";
12
12
  import { Capability } from "@dxos/app-framework";
13
- import { supportsNativePasskeys, createNativePasskey, extractPublicKeyFromAttestation } from "@dxos/app-toolkit";
13
+ import { NativePasskey } from "@dxos/app-toolkit";
14
14
  import { PublicKey } from "@dxos/client";
15
15
  import { Operation } from "@dxos/compute";
16
16
  import { invariant } from "@dxos/invariant";
@@ -20,12 +20,12 @@ var handler = CreatePasskey.pipe(Operation.withHandler(Effect.fnUntraced(functio
20
20
  const identity = client.halo.identity.get();
21
21
  invariant(identity, "Identity not available", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 16, S: this, A: ["identity", "'Identity not available'"] });
22
22
  const lookupKey = PublicKey.random();
23
- const { recoveryKey, algorithm } = yield* Match.value(supportsNativePasskeys()).pipe(Match.when(true, () => Effect.gen(function* () {
24
- const result = yield* Effect.promise(() => createNativePasskey({
23
+ const { recoveryKey, algorithm } = yield* Match.value(NativePasskey.supportsNativePasskeys()).pipe(Match.when(true, () => Effect.gen(function* () {
24
+ const result = yield* Effect.promise(() => NativePasskey.createNativePasskey({
25
25
  username: identity.did,
26
26
  userId: lookupKey.asUint8Array()
27
27
  }));
28
- const { publicKey, algorithm: alg } = extractPublicKeyFromAttestation(result.attestation_object);
28
+ const { publicKey, algorithm: alg } = NativePasskey.extractPublicKeyFromAttestation(result.attestation_object);
29
29
  return {
30
30
  recoveryKey: PublicKey.from(publicKey),
31
31
  algorithm: alg === -7 ? "ES256" : "ED25519"
@@ -78,4 +78,4 @@ var create_passkey_default = handler;
78
78
  export {
79
79
  create_passkey_default as default
80
80
  };
81
- //# sourceMappingURL=create-passkey-FOXEMXGF.mjs.map
81
+ //# sourceMappingURL=create-passkey-JAD3ACY7.mjs.map
@@ -0,0 +1,7 @@
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 { NativePasskey } 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(NativePasskey.supportsNativePasskeys()).pipe(\n Match.when(true, () =>\n Effect.gen(function* () {\n const result = yield* Effect.promise(() =>\n NativePasskey.createNativePasskey({\n username: identity.did,\n userId: lookupKey.asUint8Array(),\n }),\n );\n const { publicKey, algorithm: alg } = NativePasskey.extractPublicKeyFromAttestation(\n result.attestation_object,\n );\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,qBAAqB;AAC9B,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,YAAcC,GAAAA,cAAAA,GAAAA,IAAAA,GAAsB,MAAIC,GAAAA,CAAI,YACtF,0BACG,EAAA,CAAA;oBACHC,UAAS,OAAOC;uBAElBC,UAAUb,IAASc,OAAG,YAAA,cAAA,uBAAA,CAAA,EAAA,KAAA,WAAA,MAAA,MAAA,WAAA,aAAA;mBACtBC,OAAkBC,eAAAA,MAAY,cAAA,oBAAA;MAChC,UAAA,SAAA;MAEMC,QAAAA,UAAWC,aAAmBV;IAGtC,CAAA,CAAA;UACEF,EAAAA,WAAaF,WAAUe,IAAKF,IAAAA,cAAAA,gCAAAA,OAAAA,kBAAAA;WAC5BC;MACF,aAAA,UAAA,KAAA,SAAA;MAGJX,WAAa,QACXK,KAAU,UAAC;IACT;oBAEIK,MAAW,WAAA,aAAA;uBACTG,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;WACpFb;MACF,aAAA,UAAA,KAAA,IAAA,WAAA,WAAA,SAAA,aAAA,CAAA,CAAA;MACF,WAAA,WAAA,SAAA,sBAAA,MAAA,KAAA,UAAA;IAIJhB;EACA,CAAA,CAAA,CAAOU;YAEHoB,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;UACAY;MACAf;MACF;MACF;IAEJ;EAIJ,CAAA,CAAA;;;",
6
+ "names": ["Effect", "Match", "Capability", "NativePasskey", "PublicKey", "Operation", "invariant", "CreatePasskey", "identity", "halo", "invariant", "lookupKey", "PublicKey", "random", "recoveryKey", "Match", "NativePasskey", "supportsNativePasskeys", "pipe", "result", "Effect", "username", "did", "userId", "asUint8Array", "publicKey", "algorithm", "from", "challenge", "Uint8Array", "location", "name", "user", "displayName", "profile", "pubKeyCredParams", "authenticatorSelection", "credential", "response", "getPublicKey", "data"]
7
+ }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  RECOVERY_CODE_DIALOG
3
- } from "./chunk-WWCVZG3K.mjs";
3
+ } from "./chunk-GSKMAS3S.mjs";
4
4
  import {
5
5
  CreateRecoveryCode
6
- } from "./chunk-D6HPCLTS.mjs";
6
+ } from "./chunk-7DEIKHB7.mjs";
7
7
  import {
8
8
  ClientCapabilities
9
- } from "./chunk-TUK3ELUU.mjs";
9
+ } from "./chunk-DA3LZQSD.mjs";
10
10
  import "./chunk-J5LGTIGS.mjs";
11
11
 
12
12
  // src/operations/create-recovery-code.ts
@@ -33,4 +33,4 @@ var create_recovery_code_default = handler;
33
33
  export {
34
34
  create_recovery_code_default as default
35
35
  };
36
- //# sourceMappingURL=create-recovery-code-ZWDKLPH4.mjs.map
36
+ //# sourceMappingURL=create-recovery-code-JZYXR4BY.mjs.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-JOCCVODY.mjs";
4
- import "./chunk-NTVDGDQ3.mjs";
3
+ } from "./chunk-6G4KZLBG.mjs";
4
+ import "./chunk-54MDDWCV.mjs";
5
5
  import {
6
6
  definitions_exports
7
- } from "./chunk-D6HPCLTS.mjs";
7
+ } from "./chunk-7DEIKHB7.mjs";
8
8
  import {
9
9
  Account,
10
10
  ClientAction,
11
11
  ClientCapabilities,
12
12
  ClientEvents
13
- } from "./chunk-TUK3ELUU.mjs";
13
+ } from "./chunk-DA3LZQSD.mjs";
14
14
  import "./chunk-J5LGTIGS.mjs";
15
15
  export {
16
16
  Account,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  JOIN_DIALOG
3
- } from "./chunk-WWCVZG3K.mjs";
3
+ } from "./chunk-GSKMAS3S.mjs";
4
4
  import {
5
5
  JoinIdentity
6
- } from "./chunk-D6HPCLTS.mjs";
6
+ } from "./chunk-7DEIKHB7.mjs";
7
7
  import "./chunk-J5LGTIGS.mjs";
8
8
 
9
9
  // src/operations/join-identity.ts
@@ -24,4 +24,4 @@ var join_identity_default = handler;
24
24
  export {
25
25
  join_identity_default as default
26
26
  };
27
- //# sourceMappingURL=join-identity-QEQFAE2S.mjs.map
27
+ //# sourceMappingURL=join-identity-PJCHDNLH.mjs.map
@@ -39,7 +39,7 @@ var DatabaseLayerSpec = LayerSpec.make({
39
39
  const space = client.spaces.get(context.space);
40
40
  invariant(space, `space not found on client: ${context.space}`, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 61, S: this, A: ["space", "`space not found on client: ${context.space}`"] });
41
41
  yield* Effect.promise(() => space.waitUntilReady());
42
- return Layer.mergeAll(Database.layer(space.db), createFeedServiceLayer(space.queues));
42
+ return Layer.mergeAll(Database.layer(space.db), createFeedServiceLayer(space.db));
43
43
  })));
44
44
  var CredentialsLayerSpec = LayerSpec.make({
45
45
  affinity: "space",
@@ -58,4 +58,4 @@ var layer_specs_default = Capability.makeModule(() => Effect.succeed([
58
58
  export {
59
59
  layer_specs_default as default
60
60
  };
61
- //# sourceMappingURL=layer-specs-CQLXQBQJ.mjs.map
61
+ //# sourceMappingURL=layer-specs-VQCJLV33.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/layer-specs.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { ClientService } from '@dxos/client';\nimport { Credential, LayerSpec } from '@dxos/compute';\nimport { Database, Feed } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { credentialsLayerFromDatabase } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\n\nimport { ClientCapabilities } from '#types';\n\n//\n// Capability Module\n//\n// Contributes the core client/space service layer specs:\n// - {@link ClientService} (application affinity).\n// - {@link Database.Service}, {@link Feed.FeedService},\n// {@link Credential.CredentialsService} (space affinity).\n//\n// Specs are declared at module level and resolve the underlying\n// {@link ClientCapabilities.Client} through the Effect layer graph (via\n// {@link Capability.Service}) rather than capturing it from an outer scope.\n//\n\n/**\n * Provides the Effect-level {@link ClientService} backed by the\n * {@link ClientCapabilities.Client} capability contributed by the plugin\n * runtime.\n */\nconst ClientLayerSpec = LayerSpec.make(\n {\n affinity: 'application',\n requires: [Capability.Service],\n provides: [ClientService],\n },\n () =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n return ClientService.fromClient(client);\n }).pipe(Effect.orDie),\n ),\n);\n\n/**\n * Space-scoped database/feed services resolved from the `Client`'s space\n * registry. One spec for both so the `client.spaces.get` / `waitUntilReady`\n * round-trip only happens once per space slice. Fails hard if the context is\n * missing a `space` id or the client cannot resolve it — both indicate a\n * configuration bug in the layer graph.\n */\nconst DatabaseLayerSpec = LayerSpec.make(\n {\n affinity: 'space',\n requires: [ClientService],\n provides: [Database.Service, Feed.FeedService],\n },\n (context) =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n invariant(context.space, 'space context required for Database layer');\n const client = yield* ClientService;\n const space = client.spaces.get(context.space);\n invariant(space, `space not found on client: ${context.space}`);\n yield* Effect.promise(() => space.waitUntilReady());\n return Layer.mergeAll(Database.layer(space.db), createFeedServiceLayer(space.queues));\n }),\n ),\n);\n\nconst CredentialsLayerSpec = LayerSpec.make(\n {\n affinity: 'space',\n requires: [Database.Service],\n provides: [Credential.CredentialsService],\n },\n () => credentialsLayerFromDatabase(),\n);\n\nexport default Capability.makeModule(() =>\n Effect.succeed([\n Capability.contributes(Capabilities.LayerSpec, ClientLayerSpec),\n Capability.contributes(Capabilities.LayerSpec, DatabaseLayerSpec),\n Capability.contributes(Capabilities.LayerSpec, CredentialsLayerSpec),\n ]),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,qBAAqB;AAC9B,SAASC,YAAYC,iBAAiB;AACtC,SAASC,UAAUC,YAAY;AAC/B,SAASC,8BAA8B;AACvC,SAASC,oCAAoC;AAC7C,SAASC,iBAAiB;AAE1B,SAASC,0BAA0B;AAEnC,IAAE,eAAA;AAqBEC,IAAAA,kBAAU,UAAA,KAAA;YAACV;YAAmB;IAC9BW,WAAU;;YAAe;IAGzBb;;SAGI,mBAAqBc,WAAAA,aAAWC;AAC/BC,QAAKjB,SAAOkB,OAAK,WAAA,IAAA,mBAAA,MAAA;AAI1B,SAAA,cAAA,WAAA,MAAA;;AAUIL,IAAAA,oBAAU,UAAA,KAAA;YAACT;YAAc;IACzBU;;YAAkCK;IAAY,SAAA;IAE/CC,KAAAA;;gBAIWJ,mBAAgBZ,WAAAA,aAAAA;AACtB,YAAMiB,QAAQL,OAAOM,6CAAwB,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,iBAAA,6CAAA,EAAA,CAAA;AAC7CX,QAAAA,SAAUU,OAAQ;AAClB,QAAA,QAAcE,OAAO,OAAOF,IAAMG,QAAAA,KAAAA;AAClC,YAAOvB,OAAMwB,8BAAgC,QAAGhB,KAAAA,IAAAA,EAAAA,YAAuBY,YAAY,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,SAAA,+CAAA,EAAA,CAAA;AACrF,SAAA,eAAA,MAAA,MAAA,eAAA,CAAA;AAIAK,SAAAA,eAAuBpB,SAAUqB,MACrC,MAAA,EAAA,GAAA,uBAAA,MAAA,MAAA,CAAA;AACEC,CAAAA,CAAAA,CAAAA;IACAf,uBAAU,UAAA,KAAA;YAACN;YAAiB;IAC5BO,SAAU;;YAA+B;IAErCJ,WAAAA;EAGR;sCAE2BR,CAAAA;0BACvBC,WAAW0B,WAAY3B,MAAaI,eAAWwB;EAC/C3B,WAAW0B,YAAY3B,aAAaI,WAAWoB,eAAAA;EAEjD,WAAA,YAAA,aAAA,WAAA,iBAAA;;;",
4
+ "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { ClientService } from '@dxos/client';\nimport { Credential, LayerSpec } from '@dxos/compute';\nimport { Database, Feed } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { credentialsLayerFromDatabase } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\n\nimport { ClientCapabilities } from '#types';\n\n//\n// Capability Module\n//\n// Contributes the core client/space service layer specs:\n// - {@link ClientService} (application affinity).\n// - {@link Database.Service}, {@link Feed.FeedService},\n// {@link Credential.CredentialsService} (space affinity).\n//\n// Specs are declared at module level and resolve the underlying\n// {@link ClientCapabilities.Client} through the Effect layer graph (via\n// {@link Capability.Service}) rather than capturing it from an outer scope.\n//\n\n/**\n * Provides the Effect-level {@link ClientService} backed by the\n * {@link ClientCapabilities.Client} capability contributed by the plugin\n * runtime.\n */\nconst ClientLayerSpec = LayerSpec.make(\n {\n affinity: 'application',\n requires: [Capability.Service],\n provides: [ClientService],\n },\n () =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n return ClientService.fromClient(client);\n }).pipe(Effect.orDie),\n ),\n);\n\n/**\n * Space-scoped database/feed services resolved from the `Client`'s space\n * registry. One spec for both so the `client.spaces.get` / `waitUntilReady`\n * round-trip only happens once per space slice. Fails hard if the context is\n * missing a `space` id or the client cannot resolve it — both indicate a\n * configuration bug in the layer graph.\n */\nconst DatabaseLayerSpec = LayerSpec.make(\n {\n affinity: 'space',\n requires: [ClientService],\n provides: [Database.Service, Feed.FeedService],\n },\n (context) =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n invariant(context.space, 'space context required for Database layer');\n const client = yield* ClientService;\n const space = client.spaces.get(context.space);\n invariant(space, `space not found on client: ${context.space}`);\n yield* Effect.promise(() => space.waitUntilReady());\n return Layer.mergeAll(Database.layer(space.db), createFeedServiceLayer(space.db));\n }),\n ),\n);\n\nconst CredentialsLayerSpec = LayerSpec.make(\n {\n affinity: 'space',\n requires: [Database.Service],\n provides: [Credential.CredentialsService],\n },\n () => credentialsLayerFromDatabase(),\n);\n\nexport default Capability.makeModule(() =>\n Effect.succeed([\n Capability.contributes(Capabilities.LayerSpec, ClientLayerSpec),\n Capability.contributes(Capabilities.LayerSpec, DatabaseLayerSpec),\n Capability.contributes(Capabilities.LayerSpec, CredentialsLayerSpec),\n ]),\n);\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,YAAYC,WAAW;AAEvB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,qBAAqB;AAC9B,SAASC,YAAYC,iBAAiB;AACtC,SAASC,UAAUC,YAAY;AAC/B,SAASC,8BAA8B;AACvC,SAASC,oCAAoC;AAC7C,SAASC,iBAAiB;AAE1B,SAASC,0BAA0B;AAEnC,IAAE,eAAA;AAqBEC,IAAAA,kBAAU,UAAA,KAAA;YAACV;YAAmB;IAC9BW,WAAU;;YAAe;IAGzBb;;SAGI,mBAAqBc,WAAAA,aAAWC;AAC/BC,QAAKjB,SAAOkB,OAAK,WAAA,IAAA,mBAAA,MAAA;AAI1B,SAAA,cAAA,WAAA,MAAA;;AAUIL,IAAAA,oBAAU,UAAA,KAAA;YAACT;YAAc;IACzBU;;YAAkCK;IAAY,SAAA;IAE/CC,KAAAA;;gBAIWJ,mBAAgBZ,WAAAA,aAAAA;AACtB,YAAMiB,QAAQL,OAAOM,6CAAwB,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,iBAAA,6CAAA,EAAA,CAAA;AAC7CX,QAAAA,SAAUU,OAAQ;AAClB,QAAA,QAAcE,OAAO,OAAOF,IAAMG,QAAAA,KAAAA;AAClC,YAAOvB,OAAMwB,8BAAgC,QAAGhB,KAAAA,IAAAA,EAAAA,YAAuBY,YAAQ,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,SAAA,+CAAA,EAAA,CAAA;AACjF,SAAA,eAAA,MAAA,MAAA,eAAA,CAAA;AAIAK,SAAAA,eAAuBpB,SAAUqB,MACrC,MAAA,EAAA,GAAA,uBAAA,MAAA,EAAA,CAAA;AACEC,CAAAA,CAAAA,CAAAA;IACAf,uBAAU,UAAA,KAAA;YAACN;YAAiB;IAC5BO,SAAU;;YAA+B;IAErCJ,WAAAA;EAGR;sCAE2BR,CAAAA;0BACvBC,WAAW0B,WAAY3B,MAAaI,eAAWwB;EAC/C3B,WAAW0B,YAAY3B,aAAaI,WAAWoB,eAAAA;EAEjD,WAAA,YAAA,aAAA,WAAA,iBAAA;;;",
6
6
  "names": ["Effect", "Layer", "Capabilities", "Capability", "ClientService", "Credential", "LayerSpec", "Database", "Feed", "createFeedServiceLayer", "credentialsLayerFromDatabase", "invariant", "ClientCapabilities", "requires", "provides", "fromClient", "client", "pipe", "orDie", "FeedService", "context", "space", "spaces", "promise", "waitUntilReady", "mergeAll", "CredentialsLayerSpec", "make", "affinity", "contributes", "DatabaseLayerSpec"]
7
7
  }