@dxos/plugin-client 0.8.4-main.dedc0f3 → 0.8.4-main.ead640a

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 (130) hide show
  1. package/dist/lib/browser/{app-graph-builder-ENKIVZWH.mjs → app-graph-builder-LUY3BJGC.mjs} +22 -21
  2. package/dist/lib/browser/app-graph-builder-LUY3BJGC.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-FOCQEA72.mjs → chunk-C7B7NM2G.mjs} +25 -25
  4. package/dist/lib/browser/chunk-C7B7NM2G.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-PFY3EQPI.mjs +18 -0
  6. package/dist/lib/browser/chunk-PFY3EQPI.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-QB3D2P4J.mjs +10 -0
  8. package/dist/lib/browser/chunk-QB3D2P4J.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-HLWIF3AW.mjs → chunk-TRA2GP4M.mjs} +3 -3
  10. package/dist/lib/browser/chunk-TRA2GP4M.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-VTC4GIND.mjs +19 -0
  12. package/dist/lib/browser/chunk-VTC4GIND.mjs.map +7 -0
  13. package/dist/lib/browser/{client-F73MIXMT.mjs → client-5PWEJ3U6.mjs} +6 -6
  14. package/dist/lib/browser/{client-F73MIXMT.mjs.map → client-5PWEJ3U6.mjs.map} +1 -1
  15. package/dist/lib/browser/index.mjs +23 -19
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/{intent-resolver-LNPFUWU5.mjs → intent-resolver-L5NVP2G3.mjs} +10 -10
  18. package/dist/lib/browser/intent-resolver-L5NVP2G3.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{migrations-YJSO7JXY.mjs → migrations-MWQCO5KY.mjs} +5 -5
  21. package/dist/lib/browser/{migrations-YJSO7JXY.mjs.map → migrations-MWQCO5KY.mjs.map} +1 -1
  22. package/dist/lib/browser/{react-context-QBXCHNH2.mjs → react-context-S4SRYUVY.mjs} +7 -7
  23. package/dist/lib/browser/react-context-S4SRYUVY.mjs.map +7 -0
  24. package/dist/lib/browser/{react-surface-3AH7INFU.mjs → react-surface-6PV7RVQN.mjs} +6 -6
  25. package/dist/lib/browser/{react-surface-3AH7INFU.mjs.map → react-surface-6PV7RVQN.mjs.map} +1 -1
  26. package/dist/lib/browser/{schema-defs-AMSX6T3B.mjs → schema-defs-E3USCMH3.mjs} +5 -5
  27. package/dist/lib/browser/{schema-defs-AMSX6T3B.mjs.map → schema-defs-E3USCMH3.mjs.map} +1 -1
  28. package/dist/lib/browser/types/index.mjs +2 -2
  29. package/dist/lib/node-esm/{app-graph-builder-D4XJCLPN.mjs → app-graph-builder-S3BVB3IU.mjs} +22 -21
  30. package/dist/lib/node-esm/app-graph-builder-S3BVB3IU.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-JG6AFSFU.mjs → chunk-4MPOOMDQ.mjs} +3 -3
  32. package/dist/lib/node-esm/chunk-4MPOOMDQ.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-MUWDSQ65.mjs → chunk-H73VVAMA.mjs} +25 -25
  34. package/dist/lib/node-esm/chunk-H73VVAMA.mjs.map +7 -0
  35. package/dist/lib/node-esm/chunk-K5IFPSCL.mjs +20 -0
  36. package/dist/lib/node-esm/chunk-K5IFPSCL.mjs.map +7 -0
  37. package/dist/lib/node-esm/{chunk-SZLX4BVJ.mjs → chunk-QE4LPI2A.mjs} +2 -4
  38. package/dist/lib/node-esm/chunk-QE4LPI2A.mjs.map +7 -0
  39. package/dist/lib/node-esm/chunk-UYDFBGYA.mjs +19 -0
  40. package/dist/lib/node-esm/chunk-UYDFBGYA.mjs.map +7 -0
  41. package/dist/lib/node-esm/{client-A7CNP37P.mjs → client-ODN7EBTY.mjs} +6 -6
  42. package/dist/lib/node-esm/{client-A7CNP37P.mjs.map → client-ODN7EBTY.mjs.map} +1 -1
  43. package/dist/lib/node-esm/index.mjs +23 -19
  44. package/dist/lib/node-esm/index.mjs.map +4 -4
  45. package/dist/lib/node-esm/{intent-resolver-C4INMPH7.mjs → intent-resolver-3JZIPI6F.mjs} +10 -10
  46. package/dist/lib/node-esm/intent-resolver-3JZIPI6F.mjs.map +7 -0
  47. package/dist/lib/node-esm/meta.json +1 -1
  48. package/dist/lib/node-esm/{migrations-UOEK7HB7.mjs → migrations-ARXHGBH5.mjs} +5 -5
  49. package/dist/lib/node-esm/{migrations-UOEK7HB7.mjs.map → migrations-ARXHGBH5.mjs.map} +1 -1
  50. package/dist/lib/node-esm/{react-context-JIH7YBFI.mjs → react-context-4SZYNSIS.mjs} +7 -7
  51. package/dist/lib/node-esm/react-context-4SZYNSIS.mjs.map +7 -0
  52. package/dist/lib/node-esm/{react-surface-4TMUCPEW.mjs → react-surface-BOST4EH2.mjs} +6 -6
  53. package/dist/lib/node-esm/{react-surface-4TMUCPEW.mjs.map → react-surface-BOST4EH2.mjs.map} +1 -1
  54. package/dist/lib/node-esm/{schema-defs-4UTKKRTF.mjs → schema-defs-ATH5YBDR.mjs} +5 -5
  55. package/dist/lib/node-esm/{schema-defs-4UTKKRTF.mjs.map → schema-defs-ATH5YBDR.mjs.map} +1 -1
  56. package/dist/lib/node-esm/types/index.mjs +2 -2
  57. package/dist/types/src/ClientPlugin.d.ts +1 -1
  58. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/index.d.ts +2 -2
  62. package/dist/types/src/components/DevicesContainer.d.ts.map +1 -1
  63. package/dist/types/src/components/DevicesContainer.stories.d.ts +1 -3
  64. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  66. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  67. package/dist/types/src/components/ProfileContainer.stories.d.ts +0 -1
  68. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/RecoveryCodeDialog.d.ts +1 -1
  70. package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +1 -1
  71. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts +0 -1
  72. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +1 -1
  73. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts +1 -1
  74. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +1 -1
  75. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts +1 -3
  76. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/ResetDialog.d.ts +1 -1
  78. package/dist/types/src/components/ResetDialog.d.ts.map +1 -1
  79. package/dist/types/src/components/ResetDialog.stories.d.ts +0 -1
  80. package/dist/types/src/components/ResetDialog.stories.d.ts.map +1 -1
  81. package/dist/types/src/events.d.ts.map +1 -1
  82. package/dist/types/src/index.d.ts +3 -2
  83. package/dist/types/src/index.d.ts.map +1 -1
  84. package/dist/types/src/meta.d.ts +0 -1
  85. package/dist/types/src/meta.d.ts.map +1 -1
  86. package/dist/types/src/types/schema.d.ts +1 -1
  87. package/dist/types/src/types/schema.d.ts.map +1 -1
  88. package/dist/types/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +34 -35
  90. package/src/ClientPlugin.ts +55 -57
  91. package/src/capabilities/app-graph-builder.ts +16 -15
  92. package/src/capabilities/capabilities.ts +5 -5
  93. package/src/capabilities/intent-resolver.ts +2 -2
  94. package/src/capabilities/react-context.tsx +2 -2
  95. package/src/components/DevicesContainer.stories.tsx +2 -5
  96. package/src/components/DevicesContainer.tsx +11 -14
  97. package/src/components/JoinDialog.tsx +3 -3
  98. package/src/components/ProfileContainer.stories.tsx +2 -4
  99. package/src/components/ProfileContainer.tsx +3 -3
  100. package/src/components/RecoveryCodeDialog.stories.tsx +2 -4
  101. package/src/components/RecoveryCodeDialog.tsx +3 -3
  102. package/src/components/RecoveryCredentialsContainer.stories.tsx +2 -5
  103. package/src/components/RecoveryCredentialsContainer.tsx +3 -3
  104. package/src/components/ResetDialog.stories.tsx +4 -6
  105. package/src/components/ResetDialog.tsx +3 -3
  106. package/src/events.ts +6 -6
  107. package/src/index.ts +4 -3
  108. package/src/meta.ts +1 -3
  109. package/src/types/schema.ts +1 -1
  110. package/dist/lib/browser/app-graph-builder-ENKIVZWH.mjs.map +0 -7
  111. package/dist/lib/browser/chunk-3F2Q2RKC.mjs +0 -18
  112. package/dist/lib/browser/chunk-3F2Q2RKC.mjs.map +0 -7
  113. package/dist/lib/browser/chunk-CAF2COXW.mjs +0 -19
  114. package/dist/lib/browser/chunk-CAF2COXW.mjs.map +0 -7
  115. package/dist/lib/browser/chunk-FOCQEA72.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-GS3LDHYD.mjs +0 -12
  117. package/dist/lib/browser/chunk-GS3LDHYD.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-HLWIF3AW.mjs.map +0 -7
  119. package/dist/lib/browser/intent-resolver-LNPFUWU5.mjs.map +0 -7
  120. package/dist/lib/browser/react-context-QBXCHNH2.mjs.map +0 -7
  121. package/dist/lib/node-esm/app-graph-builder-D4XJCLPN.mjs.map +0 -7
  122. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs +0 -19
  123. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs.map +0 -7
  124. package/dist/lib/node-esm/chunk-JG6AFSFU.mjs.map +0 -7
  125. package/dist/lib/node-esm/chunk-MUWDSQ65.mjs.map +0 -7
  126. package/dist/lib/node-esm/chunk-SZLX4BVJ.mjs.map +0 -7
  127. package/dist/lib/node-esm/chunk-UMO3ETDV.mjs +0 -20
  128. package/dist/lib/node-esm/chunk-UMO3ETDV.mjs.map +0 -7
  129. package/dist/lib/node-esm/intent-resolver-C4INMPH7.mjs.map +0 -7
  130. package/dist/lib/node-esm/react-context-JIH7YBFI.mjs.map +0 -7
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  ClientCapabilities
3
- } from "./chunk-3F2Q2RKC.mjs";
3
+ } from "./chunk-PFY3EQPI.mjs";
4
4
  import {
5
5
  Account,
6
6
  ClientAction
7
- } from "./chunk-HLWIF3AW.mjs";
7
+ } from "./chunk-TRA2GP4M.mjs";
8
8
  import {
9
- CLIENT_PLUGIN
10
- } from "./chunk-GS3LDHYD.mjs";
9
+ meta
10
+ } from "./chunk-QB3D2P4J.mjs";
11
11
 
12
12
  // src/capabilities/app-graph-builder.ts
13
13
  import { Rx } from "@effect-rx/rx-react";
14
- import { Option, pipe } from "effect";
14
+ import * as Function from "effect/Function";
15
+ import * as Option from "effect/Option";
15
16
  import { createIntent } from "@dxos/app-framework";
16
17
  import { Capabilities, contributes } from "@dxos/app-framework";
17
18
  import { ROOT_ID, createExtension, rxFromObservable } from "@dxos/plugin-graph";
18
19
  import { ConnectionState } from "@dxos/react-client/mesh";
19
- var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, createExtension({
20
- id: CLIENT_PLUGIN,
21
- actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => {
20
+ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphBuilder, createExtension({
21
+ id: meta.id,
22
+ actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => {
22
23
  return [
23
24
  {
24
- id: `${CLIENT_PLUGIN}/open-user-account`,
25
+ id: `${meta.id}/open-user-account`,
25
26
  data: async () => {
26
27
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
27
28
  await dispatch(createIntent(ClientAction.ShareIdentity));
@@ -30,7 +31,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
30
31
  label: [
31
32
  "open user account label",
32
33
  {
33
- ns: CLIENT_PLUGIN
34
+ ns: meta.id
34
35
  }
35
36
  ],
36
37
  icon: "ph--user--regular",
@@ -45,19 +46,19 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
45
46
  }
46
47
  ];
47
48
  }), Option.getOrElse(() => []))),
48
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => {
49
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => {
49
50
  const client = context.getCapability(ClientCapabilities.Client);
50
51
  const identity = get(rxFromObservable(client.halo.identity));
51
52
  const status = get(rxFromObservable(client.mesh.networkStatus));
52
53
  return [
53
54
  {
54
55
  id: Account.id,
55
- type: CLIENT_PLUGIN,
56
+ type: meta.id,
56
57
  properties: {
57
58
  label: [
58
59
  "account label",
59
60
  {
60
- ns: CLIENT_PLUGIN
61
+ ns: meta.id
61
62
  }
62
63
  ],
63
64
  icon: "ph--user--regular",
@@ -72,12 +73,12 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
72
73
  {
73
74
  id: Account.Profile,
74
75
  data: Account.Profile,
75
- type: CLIENT_PLUGIN,
76
+ type: meta.id,
76
77
  properties: {
77
78
  label: [
78
79
  "profile label",
79
80
  {
80
- ns: CLIENT_PLUGIN
81
+ ns: meta.id
81
82
  }
82
83
  ],
83
84
  icon: "ph--user--regular"
@@ -86,12 +87,12 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
86
87
  {
87
88
  id: Account.Devices,
88
89
  data: Account.Devices,
89
- type: CLIENT_PLUGIN,
90
+ type: meta.id,
90
91
  properties: {
91
92
  label: [
92
93
  "devices label",
93
94
  {
94
- ns: CLIENT_PLUGIN
95
+ ns: meta.id
95
96
  }
96
97
  ],
97
98
  icon: "ph--devices--regular",
@@ -101,12 +102,12 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
101
102
  {
102
103
  id: Account.Security,
103
104
  data: Account.Security,
104
- type: CLIENT_PLUGIN,
105
+ type: meta.id,
105
106
  properties: {
106
107
  label: [
107
108
  "security label",
108
109
  {
109
- ns: CLIENT_PLUGIN
110
+ ns: meta.id
110
111
  }
111
112
  ],
112
113
  icon: "ph--key--regular"
@@ -116,8 +117,8 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
116
117
  }
117
118
  ];
118
119
  }), Option.getOrElse(() => [])))
119
- }));
120
+ })));
120
121
  export {
121
122
  app_graph_builder_default as default
122
123
  };
123
- //# sourceMappingURL=app-graph-builder-ENKIVZWH.mjs.map
124
+ //# sourceMappingURL=app-graph-builder-LUY3BJGC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport { createIntent } from '@dxos/app-framework';\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { ROOT_ID, createExtension, rxFromObservable } from '@dxos/plugin-graph';\nimport { ConnectionState } from '@dxos/react-client/mesh';\n\nimport { meta } from '../meta';\nimport { Account, ClientAction } from '../types';\n\nimport { ClientCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(\n Capabilities.AppGraphBuilder,\n createExtension({\n id: meta.id,\n actions: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => {\n return [\n {\n id: `${meta.id}/open-user-account`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(ClientAction.ShareIdentity));\n },\n properties: {\n label: ['open user account label', { ns: meta.id }],\n icon: 'ph--user--regular',\n disposition: 'menu',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n connector: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => {\n const client = context.getCapability(ClientCapabilities.Client);\n const identity = get(rxFromObservable(client.halo.identity));\n const status = get(rxFromObservable(client.mesh.networkStatus));\n\n return [\n {\n id: Account.id,\n type: meta.id,\n properties: {\n label: ['account label', { ns: meta.id }],\n icon: 'ph--user--regular',\n disposition: 'user-account',\n // NOTE: This currently needs to be the identity key because the fallback is generated from hex.\n userId: identity?.identityKey.toHex(),\n hue: identity?.profile?.data?.hue,\n emoji: identity?.profile?.data?.emoji,\n status: status.swarm === ConnectionState.OFFLINE ? 'error' : 'active',\n },\n nodes: [\n {\n id: Account.Profile,\n data: Account.Profile,\n type: meta.id,\n properties: {\n label: ['profile label', { ns: meta.id }],\n icon: 'ph--user--regular',\n },\n },\n {\n id: Account.Devices,\n data: Account.Devices,\n type: meta.id,\n properties: {\n label: ['devices label', { ns: meta.id }],\n icon: 'ph--devices--regular',\n testId: 'clientPlugin.devices',\n },\n },\n {\n id: Account.Security,\n data: Account.Security,\n type: meta.id,\n properties: {\n label: ['security label', { ns: meta.id }],\n icon: 'ph--key--regular',\n },\n },\n ],\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n );\n"],
5
+ "mappings": ";;;;;;;;;;;;AAIA,SAASA,UAAU;AACnB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SAASC,oBAAoB;AAC7B,SAASC,cAAkCC,mBAAmB;AAC9D,SAASC,SAASC,iBAAiBC,wBAAwB;AAC3D,SAASC,uBAAuB;AAOhC,IAAA,6BAAe,CAACC,YACdC,YACEC,aAAaC,iBACbC,gBAAgB;EACdC,IAAIC,KAAKD;EACTE,SAAS,CAACC,SACRC,GAAGC,KAAK,CAACC,QACEC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKH,OAAOS,UAAiBC,YAAKP,KAAAA,IAAeQ,YAAI,CAAA,GACxEC,WAAI,MAAA;AACT,WAAO;MACL;QACEZ,IAAI,GAAGC,KAAKD,EAAE;QACda,MAAM,YAAA;AACJ,gBAAM,EAAEC,iBAAiBC,SAAQ,IAAKpB,QAAQqB,cAAcnB,aAAaoB,gBAAgB;AACzF,gBAAMF,SAASG,aAAaC,aAAaC,aAAa,CAAA;QACxD;QACAC,YAAY;UACVC,OAAO;YAAC;YAA2B;cAAEC,IAAItB,KAAKD;YAAG;;UACjDwB,MAAM;UACNC,aAAa;UACbC,YAAY;YACVC,OAAO;;YAEPC,SAAS;YACTC,OAAO;UACT;QACF;MACF;;EAEJ,CAAA,GACOC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAG/BC,WAAW,CAAC5B,SACVC,GAAGC,KAAK,CAACC,QACEC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKH,OAAOS,UAAiBC,YAAKP,KAAAA,IAAeQ,YAAI,CAAA,GACxEC,WAAI,MAAA;AACT,UAAMoB,SAASrC,QAAQqB,cAAciB,mBAAmBC,MAAM;AAC9D,UAAMC,WAAW7B,IAAI8B,iBAAiBJ,OAAOK,KAAKF,QAAQ,CAAA;AAC1D,UAAMG,SAAShC,IAAI8B,iBAAiBJ,OAAOO,KAAKC,aAAa,CAAA;AAE7D,WAAO;MACL;QACExC,IAAIyC,QAAQzC;QACZ0C,MAAMzC,KAAKD;QACXqB,YAAY;UACVC,OAAO;YAAC;YAAiB;cAAEC,IAAItB,KAAKD;YAAG;;UACvCwB,MAAM;UACNC,aAAa;;UAEbkB,QAAQR,UAAUS,YAAYC,MAAAA;UAC9BC,KAAKX,UAAUY,SAASlC,MAAMiC;UAC9BE,OAAOb,UAAUY,SAASlC,MAAMmC;UAChCV,QAAQA,OAAOW,UAAUC,gBAAgBC,UAAU,UAAU;QAC/D;QACAC,OAAO;UACL;YACEpD,IAAIyC,QAAQY;YACZxC,MAAM4B,QAAQY;YACdX,MAAMzC,KAAKD;YACXqB,YAAY;cACVC,OAAO;gBAAC;gBAAiB;kBAAEC,IAAItB,KAAKD;gBAAG;;cACvCwB,MAAM;YACR;UACF;UACA;YACExB,IAAIyC,QAAQa;YACZzC,MAAM4B,QAAQa;YACdZ,MAAMzC,KAAKD;YACXqB,YAAY;cACVC,OAAO;gBAAC;gBAAiB;kBAAEC,IAAItB,KAAKD;gBAAG;;cACvCwB,MAAM;cACN+B,QAAQ;YACV;UACF;UACA;YACEvD,IAAIyC,QAAQe;YACZ3C,MAAM4B,QAAQe;YACdd,MAAMzC,KAAKD;YACXqB,YAAY;cACVC,OAAO;gBAAC;gBAAkB;kBAAEC,IAAItB,KAAKD;gBAAG;;cACxCwB,MAAM;YACR;UACF;;MAEJ;;EAEJ,CAAA,GACOM,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;AAGjC,CAAA,CAAA;",
6
+ "names": ["Rx", "Function", "Option", "createIntent", "Capabilities", "contributes", "ROOT_ID", "createExtension", "rxFromObservable", "ConnectionState", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "actions", "node", "Rx", "make", "get", "pipe", "flatMap", "ROOT_ID", "some", "none", "map", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "createIntent", "ClientAction", "ShareIdentity", "properties", "label", "ns", "icon", "disposition", "keyBinding", "macos", "windows", "linux", "getOrElse", "connector", "client", "ClientCapabilities", "Client", "identity", "rxFromObservable", "halo", "status", "mesh", "networkStatus", "Account", "type", "userId", "identityKey", "toHex", "hue", "profile", "emoji", "swarm", "ConnectionState", "OFFLINE", "nodes", "Profile", "Devices", "testId", "Security"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ClientAction
3
- } from "./chunk-HLWIF3AW.mjs";
3
+ } from "./chunk-TRA2GP4M.mjs";
4
4
  import {
5
- CLIENT_PLUGIN
6
- } from "./chunk-GS3LDHYD.mjs";
5
+ meta
6
+ } from "./chunk-QB3D2P4J.mjs";
7
7
 
8
8
  // src/components/DevicesContainer.tsx
9
9
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
@@ -42,14 +42,14 @@ var DevicesContainer = ({ createInvitationUrl }) => {
42
42
  ]);
43
43
  return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(ControlPage, null, /* @__PURE__ */ React.createElement(ControlSection, {
44
44
  title: t("devices verbose label", {
45
- ns: CLIENT_PLUGIN
45
+ ns: meta.id
46
46
  }),
47
47
  description: t("devices description", {
48
- ns: CLIENT_PLUGIN
48
+ ns: meta.id
49
49
  })
50
50
  }, /* @__PURE__ */ React.createElement(ControlFrame, null, /* @__PURE__ */ React.createElement(ControlFrameItem, {
51
51
  title: t("devices label", {
52
- ns: CLIENT_PLUGIN
52
+ ns: meta.id
53
53
  })
54
54
  }, /* @__PURE__ */ React.createElement(List, null, devices.map((device) => {
55
55
  return /* @__PURE__ */ React.createElement(DeviceListItem, {
@@ -63,15 +63,15 @@ var DevicesContainer = ({ createInvitationUrl }) => {
63
63
  createInvitationUrl
64
64
  })))), /* @__PURE__ */ React.createElement(ControlSection, {
65
65
  title: t("danger zone title", {
66
- ns: CLIENT_PLUGIN
66
+ ns: meta.id
67
67
  }),
68
68
  description: t("danger zone description", {
69
- ns: CLIENT_PLUGIN
69
+ ns: meta.id
70
70
  })
71
71
  }, /* @__PURE__ */ React.createElement(ControlGroup, null, /* @__PURE__ */ React.createElement(ControlItem, {
72
72
  title: t("reset device label"),
73
73
  description: t("reset device description", {
74
- ns: CLIENT_PLUGIN
74
+ ns: meta.id
75
75
  })
76
76
  }, /* @__PURE__ */ React.createElement(Button, {
77
77
  variant: "destructive",
@@ -80,7 +80,7 @@ var DevicesContainer = ({ createInvitationUrl }) => {
80
80
  }, t("reset device label"))), /* @__PURE__ */ React.createElement(ControlItem, {
81
81
  title: t("recover identity label"),
82
82
  description: t("recover identity description", {
83
- ns: CLIENT_PLUGIN
83
+ ns: meta.id
84
84
  })
85
85
  }, /* @__PURE__ */ React.createElement(Button, {
86
86
  variant: "destructive",
@@ -89,7 +89,7 @@ var DevicesContainer = ({ createInvitationUrl }) => {
89
89
  }, t("recover identity label"))), /* @__PURE__ */ React.createElement(ControlItem, {
90
90
  title: t("join new identity label"),
91
91
  description: t("join new identity description", {
92
- ns: CLIENT_PLUGIN
92
+ ns: meta.id
93
93
  })
94
94
  }, /* @__PURE__ */ React.createElement(Button, {
95
95
  variant: "destructive",
@@ -116,7 +116,7 @@ var DeviceInvitation = (props) => {
116
116
  authCode: invitation3.authCode
117
117
  }), void 0, {
118
118
  F: __dxlog_file,
119
- L: 128,
119
+ L: 125,
120
120
  S: void 0,
121
121
  C: (f, a) => f(...a)
122
122
  });
@@ -176,7 +176,7 @@ var InvitationSection = ({ state = -1, authCode, invitationId = "never", url = "
176
176
  } }) => {
177
177
  var _effect = _useSignals();
178
178
  try {
179
- const { t } = useTranslation(CLIENT_PLUGIN);
179
+ const { t } = useTranslation(meta.id);
180
180
  const activeView = state < 0 ? "init" : state >= Invitation.State.CANCELLED ? "complete" : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode ? "auth-code" : "qr-code";
181
181
  return activeView === "init" ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", {
182
182
  className: "text-description mbe-2"
@@ -221,7 +221,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
221
221
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", {
222
222
  className: "text-description"
223
223
  }, t("qr code description", {
224
- ns: CLIENT_PLUGIN
224
+ ns: meta.id
225
225
  })), /* @__PURE__ */ React.createElement("div", {
226
226
  role: "group",
227
227
  className: "grid grid-cols-[1fr_min-content] mlb-2 gap-2"
@@ -302,12 +302,12 @@ import { LayoutAction, createIntent as createIntent2, useIntentDispatcher as use
302
302
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
303
303
  import { Dialog, useTranslation as useTranslation2 } from "@dxos/react-ui";
304
304
  import { JoinPanel } from "@dxos/shell/react";
305
- var JOIN_DIALOG = `${CLIENT_PLUGIN}/JoinDialog`;
305
+ var JOIN_DIALOG = `${meta.id}/JoinDialog`;
306
306
  var JoinDialog = (props) => {
307
307
  var _effect = _useSignals2();
308
308
  try {
309
309
  const { dispatchPromise: dispatch } = useIntentDispatcher2();
310
- const { t } = useTranslation2(CLIENT_PLUGIN);
310
+ const { t } = useTranslation2(meta.id);
311
311
  const handleCancelResetStorage = useCallback2(() => dispatch(createIntent2(ClientAction.ShareIdentity)), [
312
312
  dispatch
313
313
  ]);
@@ -351,7 +351,7 @@ var JoinDialog = (props) => {
351
351
 
352
352
  // src/components/ProfileContainer.tsx
353
353
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
354
- import { Schema } from "effect";
354
+ import * as Schema from "effect/Schema";
355
355
  import React3, { useCallback as useCallback3, useMemo, useState as useState2 } from "react";
356
356
  import { debounce } from "@dxos/async";
357
357
  import { useClient as useClient2 } from "@dxos/react-client";
@@ -367,7 +367,7 @@ var getEmojiValue = (identity) => identity?.profile?.data?.emoji || getDefaultEm
367
367
  var ProfileContainer = () => {
368
368
  var _effect = _useSignals3();
369
369
  try {
370
- const { t } = useTranslation3(CLIENT_PLUGIN);
370
+ const { t } = useTranslation3(meta.id);
371
371
  const client = useClient2();
372
372
  const identity = useIdentity();
373
373
  const [displayName, setDisplayNameDirectly] = useState2(identity?.profile?.displayName ?? "");
@@ -505,11 +505,11 @@ var ProfileSchema = Schema.Struct({
505
505
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
506
506
  import React4, { useCallback as useCallback4, useState as useState3 } from "react";
507
507
  import { AlertDialog, Button as Button2, Clipboard as Clipboard3, Input as Input2, useTranslation as useTranslation4 } from "@dxos/react-ui";
508
- var RECOVERY_CODE_DIALOG = `${CLIENT_PLUGIN}/RecoveryCodeDialog`;
508
+ var RECOVERY_CODE_DIALOG = `${meta.id}/RecoveryCodeDialog`;
509
509
  var RecoveryCodeDialog = ({ code }) => {
510
510
  var _effect = _useSignals4();
511
511
  try {
512
- const { t } = useTranslation4(CLIENT_PLUGIN);
512
+ const { t } = useTranslation4(meta.id);
513
513
  const [confirmation, setConfirmation] = useState3(false);
514
514
  const handleConfirmation = useCallback4((checked) => setConfirmation(checked), []);
515
515
  return /* @__PURE__ */ React4.createElement(AlertDialog.Content, {
@@ -570,11 +570,11 @@ import { createIntent as createIntent3, useIntentDispatcher as useIntentDispatch
570
570
  import { useCredentials } from "@dxos/react-client/halo";
571
571
  import { Icon as Icon2, IconButton as IconButton2, List as List2, ListItem, Message, useTranslation as useTranslation5 } from "@dxos/react-ui";
572
572
  import { ControlGroup as ControlGroup2, ControlItem as ControlItem3, ControlPage as ControlPage3, ControlSection as ControlSection3 } from "@dxos/react-ui-form";
573
- var MANAGE_CREDENTIALS_DIALOG = `${CLIENT_PLUGIN}/ManageCredentialsDialog`;
573
+ var MANAGE_CREDENTIALS_DIALOG = `${meta.id}/ManageCredentialsDialog`;
574
574
  var RecoveryCredentialsContainer = () => {
575
575
  var _effect = _useSignals5();
576
576
  try {
577
- const { t } = useTranslation5(CLIENT_PLUGIN);
577
+ const { t } = useTranslation5(meta.id);
578
578
  const { dispatchPromise: dispatch } = useIntentDispatcher3();
579
579
  const credentials = useCredentials();
580
580
  const recoveryCredentials = credentials.filter((credential) => credential.subject.assertion["@type"] === "dxos.halo.credentials.IdentityRecovery");
@@ -626,11 +626,11 @@ import { LayoutAction as LayoutAction2, createIntent as createIntent4, useIntent
626
626
  import { useClient as useClient3 } from "@dxos/react-client";
627
627
  import { Dialog as Dialog2, useTranslation as useTranslation6 } from "@dxos/react-ui";
628
628
  import { ConfirmReset } from "@dxos/shell/react";
629
- var RESET_DIALOG = `${CLIENT_PLUGIN}/ResetDialog`;
629
+ var RESET_DIALOG = `${meta.id}/ResetDialog`;
630
630
  var ResetDialog = ({ mode, onReset }) => {
631
631
  var _effect = _useSignals6();
632
632
  try {
633
- const { t } = useTranslation6(CLIENT_PLUGIN);
633
+ const { t } = useTranslation6(meta.id);
634
634
  const { dispatchPromise: dispatch } = useIntentDispatcher4();
635
635
  const client = useClient3();
636
636
  const handleReset = useCallback5(async () => {
@@ -683,4 +683,4 @@ export {
683
683
  RESET_DIALOG,
684
684
  ResetDialog
685
685
  };
686
- //# sourceMappingURL=chunk-FOCQEA72.mjs.map
686
+ //# sourceMappingURL=chunk-C7B7NM2G.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DevicesContainer.tsx", "../../../src/components/JoinDialog.tsx", "../../../src/components/ProfileContainer.tsx", "../../../src/components/RecoveryCodeDialog.tsx", "../../../src/components/RecoveryCredentialsContainer.tsx", "../../../src/components/ResetDialog.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { QR } from 'react-qr-rounded';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { useClient, useMulticastObservable } from '@dxos/react-client';\nimport { type Device, useDevices } from '@dxos/react-client/halo';\nimport { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from '@dxos/react-ui';\nimport {\n ControlFrame,\n ControlFrameItem,\n ControlGroup,\n ControlItem,\n ControlPage,\n ControlSection,\n} from '@dxos/react-ui-form';\nimport { AuthCode, Centered, DeviceListItem, Emoji, Viewport } from '@dxos/shell/react';\nimport { hexToEmoji } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport { ClientAction } from '../types';\n\nexport type DevicesContainerProps = {\n createInvitationUrl?: (invitationCode: string) => string;\n};\n\nexport const DevicesContainer = ({ createInvitationUrl }: DevicesContainerProps) => {\n const { t } = useTranslation('os');\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const devices = useDevices();\n const { swarm: connectionState } = useNetworkStatus();\n\n const handleResetStorage = useCallback(() => dispatch(createIntent(ClientAction.ResetStorage)), [dispatch]);\n\n const handleRecover = useCallback(\n () => dispatch(createIntent(ClientAction.ResetStorage, { mode: 'recover' })),\n [dispatch],\n );\n\n const handleJoinNewIdentity = useCallback(\n () => dispatch(createIntent(ClientAction.ResetStorage, { mode: 'join new identity' })),\n [dispatch],\n );\n\n return (\n <Clipboard.Provider>\n <ControlPage>\n <ControlSection\n title={t('devices verbose label', { ns: meta.id })}\n description={t('devices description', { ns: meta.id })}\n >\n <ControlFrame>\n <ControlFrameItem title={t('devices label', { ns: meta.id })}>\n <List>\n {devices.map((device: Device) => {\n return (\n <DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />\n );\n })}\n </List>\n </ControlFrameItem>\n {createInvitationUrl && (\n <ControlFrameItem title='Add device'>\n <DeviceInvitation createInvitationUrl={createInvitationUrl} />\n </ControlFrameItem>\n )}\n </ControlFrame>\n </ControlSection>\n <ControlSection\n title={t('danger zone title', { ns: meta.id })}\n description={t('danger zone description', { ns: meta.id })}\n >\n <ControlGroup>\n <ControlItem title={t('reset device label')} description={t('reset device description', { ns: meta.id })}>\n <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>\n {t('reset device label')}\n </Button>\n </ControlItem>\n <ControlItem\n title={t('recover identity label')}\n description={t('recover identity description', { ns: meta.id })}\n >\n <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>\n {t('recover identity label')}\n </Button>\n </ControlItem>\n <ControlItem\n title={t('join new identity label')}\n description={t('join new identity description', { ns: meta.id })}\n >\n <Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>\n {t('join new identity label')}\n </Button>\n </ControlItem>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n </Clipboard.Provider>\n );\n};\n\ntype DeviceInvitationProps = {\n invitation?: CancellableInvitationObservable;\n createInvitationUrl: (invitationCode: string) => string;\n onInvitationDone: () => void;\n onInvitationCreate: () => void;\n};\n\nconst DeviceInvitation = (props: Pick<DeviceInvitationProps, 'createInvitationUrl'>) => {\n const client = useClient();\n const [invitation, setInvitation] = useState<CancellableInvitationObservable>();\n\n const onInvitationCreate = useCallback(() => {\n const invitation = client.halo.share();\n if (client.config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {\n const subscription = invitation.subscribe((invitation: Invitation) => {\n const invitationCode = InvitationEncoder.encode(invitation);\n if (invitation.state === Invitation.State.CONNECTING) {\n log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));\n subscription.unsubscribe();\n }\n });\n }\n setInvitation(invitation);\n }, [client]);\n\n const onInvitationDone = useCallback(() => {\n setInvitation(undefined);\n }, []);\n\n if (invitation) {\n return <DeviceInvitationImpl {...props} {...{ invitation, onInvitationCreate, onInvitationDone }} />;\n } else {\n return <InvitationSection {...props} {...{ onInvitationCreate, onInvitationDone }} />;\n }\n};\n\nconst DeviceInvitationImpl = ({\n invitation: invitationObservable,\n createInvitationUrl,\n onInvitationDone,\n onInvitationCreate,\n}: DeviceInvitationProps) => {\n const invitation = useMulticastObservable(invitationObservable!);\n const url = createInvitationUrl(InvitationEncoder.encode(invitation));\n\n useEffect(() => {\n if (invitation.state >= Invitation.State.SUCCESS) {\n onInvitationDone();\n }\n }, [invitation.state]);\n\n return <InvitationSection {...invitation} {...{ url, onInvitationDone, onInvitationCreate }} />;\n};\n\ntype InvitationComponentProps = Partial<\n Pick<Invitation, 'authCode' | 'invitationId'> &\n Pick<DeviceInvitationProps, 'onInvitationDone' | 'onInvitationCreate'> & {\n state: number;\n url: string;\n }\n>;\n\nconst InvitationSection = ({\n state = -1,\n authCode,\n invitationId = 'never',\n url = 'never',\n onInvitationDone = () => {},\n onInvitationCreate = () => {},\n}: InvitationComponentProps) => {\n const { t } = useTranslation(meta.id);\n const activeView =\n state < 0\n ? 'init'\n : state >= Invitation.State.CANCELLED\n ? 'complete'\n : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode\n ? 'auth-code'\n : 'qr-code';\n return activeView === 'init' ? (\n <>\n <p className='text-description mbe-2'>{t('add device description')}</p>\n <IconButton\n icon='ph--plus--regular'\n label={t('create device invitation label')}\n disabled={state >= 0}\n classNames='is-full'\n data-testid='devicesContainer.createInvitation'\n onClick={onInvitationCreate}\n />\n </>\n ) : (\n <Viewport.Root activeView={activeView}>\n <Viewport.Views>\n <Viewport.View id='init'>\n {/* This view intentionally left blank while conditionally rendering the viewport. */}\n </Viewport.View>\n <Viewport.View id='complete'>\n <InvitationComplete statusValue={state} />\n </Viewport.View>\n <Viewport.View id='auth-code'>\n <InvitationAuthCode id={invitationId} code={authCode ?? 'never'} onCancel={onInvitationDone} />\n </Viewport.View>\n <Viewport.View id='qr-code'>\n <InvitationQR id={invitationId} url={url} onCancel={onInvitationDone} />\n </Viewport.View>\n </Viewport.Views>\n </Viewport.Root>\n );\n};\n\nconst InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel: () => void }) => {\n const { t } = useTranslation('os');\n const qrLabel = useId('devices-container__qr-code');\n const emoji = hexToEmoji(id);\n return (\n <>\n <p className='text-description'>{t('qr code description', { ns: meta.id })}</p>\n <div role='group' className='grid grid-cols-[1fr_min-content] mlb-2 gap-2'>\n <div role='none' className='is-full aspect-square relative text-description'>\n <QR\n rounding={100}\n backgroundColor='transparent'\n color='currentColor'\n aria-labelledby={qrLabel}\n errorCorrectionLevel='Q'\n cutout={true}\n >\n {url ?? 'never'}\n </QR>\n <Centered>\n <Emoji text={emoji} />\n </Centered>\n </div>\n <span id={qrLabel} className='sr-only'>\n {t('qr label')}\n </span>\n </div>\n {/* TODO(burdon): Factor out button bar */}\n <div className='flex justify-center'>\n <div className='flex gap-2'>\n <Clipboard.Button value={url ?? 'never'} />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </div>\n </div>\n </>\n );\n};\n\nconst InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string; onCancel: () => void }) => {\n const { t } = useTranslation('os');\n const emoji = hexToEmoji(id);\n\n return (\n <>\n <p className='text-description'>{t('auth other device emoji message')}</p>\n {emoji && <Emoji text={emoji} className='mli-auto mlb-2 text-center' />}\n <p className='text-description'>{t('auth code message')}</p>\n <AuthCode code={code} large classNames='mli-auto mlb-2 text-center grow' />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </>\n );\n};\n\nconst InvitationComplete = ({ statusValue }: { statusValue: number }) => {\n return statusValue > 0 ? (\n <Icon icon='ph--check--regular' size={6} classNames='m-1.5' />\n ) : (\n <Icon icon='ph--x--regular' size={6} classNames='m-1.5' />\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { type InvitationResult } from '@dxos/react-client/invitations';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';\n\nimport { meta } from '../meta';\nimport { ClientAction } from '../types';\n\nexport const JOIN_DIALOG = `${meta.id}/JoinDialog`;\n\nexport const JoinDialog = (props: JoinPanelProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { t } = useTranslation(meta.id);\n\n const handleCancelResetStorage = useCallback(() => dispatch(createIntent(ClientAction.ShareIdentity)), [dispatch]);\n\n const handleDone = useCallback(\n async (result: InvitationResult | null) => {\n if (result?.identityKey) {\n await Promise.all([\n dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } })),\n dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: props.initialDisposition === 'recover-identity' ? 'identity.recover' : 'identity.join',\n }),\n ),\n ]);\n }\n },\n [dispatch],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Title classNames='sr-only'>{t('join space label', { ns: 'os' })}</Dialog.Title>\n <JoinPanel\n mode='halo-only'\n {...props}\n exitActionParent={<Dialog.Close asChild />}\n doneActionParent={<Dialog.Close asChild />}\n onCancelResetStorage={handleCancelResetStorage}\n onDone={handleDone}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { useClient } from '@dxos/react-client';\nimport { type Identity, useIdentity } from '@dxos/react-client/halo';\nimport { ButtonGroup, Clipboard, Input, useTranslation } from '@dxos/react-ui';\nimport {\n ControlItem,\n ControlItemInput,\n ControlPage,\n ControlSection,\n Form,\n type InputComponent,\n} from '@dxos/react-ui-form';\nimport { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';\nimport { hexToEmoji, hexToHue } from '@dxos/util';\n\nimport { meta } from '../meta';\n\n// TODO(thure): Factor out?\nconst getDefaultHueValue = (identity: Identity | null) => hexToHue(identity?.identityKey.toHex() ?? '0');\nconst getDefaultEmojiValue = (identity: Identity | null) => hexToEmoji(identity?.identityKey.toHex() ?? '0');\nconst getHueValue = (identity: Identity | null) => identity?.profile?.data?.hue || getDefaultHueValue(identity);\nconst getEmojiValue = (identity: Identity | null) => identity?.profile?.data?.emoji || getDefaultEmojiValue(identity);\n\nexport const ProfileContainer = () => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const identity = useIdentity();\n const [displayName, setDisplayNameDirectly] = useState(identity?.profile?.displayName ?? '');\n const [emoji, setEmojiDirectly] = useState<string>(getEmojiValue(identity));\n const [hue, setHueDirectly] = useState<string>(getHueValue(identity));\n\n const updateProfile = useMemo(\n () =>\n debounce(\n (profile: Partial<Profile>) =>\n client.halo.updateProfile({\n displayName: profile.displayName,\n data: {\n emoji: profile.emoji,\n hue: profile.hue,\n },\n }),\n 2_000,\n ),\n [],\n );\n\n const handleSave = useCallback(\n (profile: Profile) => {\n setDisplayNameDirectly(profile.displayName);\n setEmojiDirectly(profile.emoji);\n setHueDirectly(profile.hue);\n void updateProfile(profile);\n },\n [identity],\n );\n\n const values = useMemo(\n () => ({\n displayName,\n emoji,\n hue,\n did: identity?.did,\n }),\n [identity, displayName, emoji, hue],\n );\n\n // TODO(wittjosiah): Integrate descriptions with the form schema.\n const customElements: Partial<Record<string, InputComponent>> = useMemo(\n () => ({\n displayName: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),\n [onValueChange, type],\n );\n return (\n <ControlItemInput title={label} description={t('display name description')}>\n <Input.TextInput\n value={getValue()}\n onChange={handleChange}\n placeholder={t('display name input placeholder')}\n classNames='min-is-64'\n />\n </ControlItemInput>\n );\n },\n emoji: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextEmoji: string) => onValueChange(type, nextEmoji), [onValueChange, type]);\n const handleEmojiReset = useCallback(\n () => onValueChange(type, getDefaultEmojiValue(identity)),\n [onValueChange, type],\n );\n return (\n <ControlItem title={label} description={t('icon description')}>\n <EmojiPickerBlock\n triggerVariant='default'\n emoji={getValue()}\n onChangeEmoji={handleChange}\n onClickClear={handleEmojiReset}\n classNames='justify-self-end'\n />\n </ControlItem>\n );\n },\n hue: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);\n const handleHueReset = useCallback(\n () => onValueChange(type, getDefaultHueValue(identity)),\n [onValueChange, type],\n );\n return (\n <ControlItem title={label} description={t('hue description')}>\n <HuePicker\n value={getValue()}\n onChange={handleChange}\n onReset={handleHueReset}\n classNames='[--hue-preview-size:1.5rem] justify-self-end'\n />\n </ControlItem>\n );\n },\n // TODO(wittjosiah): We need text input annotations for disabled and copyable.\n did: ({ label, getValue }) => {\n return (\n <ControlItemInput title={label} description={t('did description')}>\n <ButtonGroup>\n <Input.TextInput value={getValue()} disabled classNames='min-is-64' />\n <Clipboard.IconButton value={getValue() ?? ''} />\n </ButtonGroup>\n </ControlItemInput>\n );\n },\n }),\n [t],\n );\n\n return (\n <ControlPage>\n <Clipboard.Provider>\n <ControlSection title={t('profile label')} description={t('profile description')}>\n <Form\n schema={ProfileSchema}\n values={values}\n autoSave\n onSave={handleSave}\n Custom={customElements}\n classNames='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'\n outerSpacing={false}\n />\n </ControlSection>\n </Clipboard.Provider>\n </ControlPage>\n );\n};\n\n// TODO(wittjosiah): Integrate annotations with translations.\nconst ProfileSchema = Schema.Struct({\n displayName: Schema.String.annotations({ title: 'Display name' }),\n emoji: Schema.String.annotations({ title: 'Avatar' }),\n hue: Schema.String.annotations({ title: 'Color' }),\n did: Schema.String.annotations({ title: 'DID' }),\n});\ntype Profile = Schema.Schema.Type<typeof ProfileSchema>;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { AlertDialog, Button, Clipboard, Input, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '../meta';\n\nexport const RECOVERY_CODE_DIALOG = `${meta.id}/RecoveryCodeDialog`;\n\nexport type RecoveryCodeDialogProps = {\n code: string;\n};\n\nexport const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {\n const { t } = useTranslation(meta.id);\n const [confirmation, setConfirmation] = useState(false);\n\n const handleConfirmation = useCallback((checked: boolean) => setConfirmation(checked), []);\n\n return (\n <AlertDialog.Content classNames='bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>\n <AlertDialog.Title>{t('recovery code dialog title')}</AlertDialog.Title>\n <p className='py-4'>{t('recovery code dialog description')}</p>\n <Clipboard.Provider>\n <Code code={code} />\n </Clipboard.Provider>\n <div className='flex flex-col py-4 gap-2'>\n <p>{t('recovery code dialog warning 1')}</p>\n <p>{t('recovery code dialog warning 2')}</p>\n </div>\n <div className='flex items-center gap-2 pbe-4'>\n <Input.Root>\n <Input.Checkbox\n data-testid='recoveryCode.confirm'\n checked={confirmation}\n onCheckedChange={handleConfirmation}\n />\n <Input.Label>{t('recovery code confirmation label')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex justify-end'>\n <AlertDialog.Action asChild>\n <Button data-testid='recoveryCode.continue' variant='primary' disabled={!confirmation}>\n {t('continue label')}\n </Button>\n </AlertDialog.Action>\n </div>\n </AlertDialog.Content>\n );\n};\n\nconst Code = ({ code }: { code: string }) => {\n const words = code.split(' ');\n return (\n <div className='relative p-2 border border-separator rounded group'>\n <Clipboard.IconButton value={code} classNames='absolute top-2 right-2 invisible group-hover:visible' />\n <div className='grid grid-cols-4'>\n {words.map((word, i) => (\n <div key={i} className='flex items-center p-2 gap-2'>\n <div className='w-4 text-xs text-center text-subdued'>{i + 1}</div>\n <div className='text-sm'>{word}</div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { useCredentials } from '@dxos/react-client/halo';\nimport { Icon, IconButton, List, ListItem, Message, useTranslation } from '@dxos/react-ui';\nimport { ControlGroup, ControlItem, ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport { ClientAction } from '../types';\n\nexport const MANAGE_CREDENTIALS_DIALOG = `${meta.id}/ManageCredentialsDialog`;\n\nexport const RecoveryCredentialsContainer = () => {\n const { t } = useTranslation(meta.id);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const credentials = useCredentials();\n const recoveryCredentials = credentials.filter(\n (credential) => credential.subject.assertion['@type'] === 'dxos.halo.credentials.IdentityRecovery',\n );\n\n return (\n <ControlPage>\n <ControlSection title={t('recovery setup dialog title')} description={t('recovery setup dialog description')}>\n <ControlGroup>\n <ControlItem title={t('create passkey label')} description={t('create passkey description')}>\n <IconButton\n label={t('create passkey label')}\n icon='ph--key--duotone'\n variant='primary'\n size={5}\n onClick={() => dispatch(createIntent(ClientAction.CreatePasskey))}\n />\n </ControlItem>\n <ControlItem title={t('create recovery code label')} description={t('create recovery code description')}>\n <IconButton\n label={t('create recovery code label')}\n icon='ph--receipt--duotone'\n variant='default'\n size={5}\n onClick={() => dispatch(createIntent(ClientAction.CreateRecoveryCode))}\n />\n </ControlItem>\n </ControlGroup>\n </ControlSection>\n <ControlSection title={t('credentials list label')}>\n {recoveryCredentials.length < 1 ? (\n <Message.Root valence='error' classNames='container-max-width'>\n <Message.Title icon='ph--shield-warning--duotone'>{t('no credentials title')}</Message.Title>\n <Message.Content>{t('no credentials message')}</Message.Content>\n </Message.Root>\n ) : (\n <List classNames='container-max-width pli-2'>\n {recoveryCredentials.map((credential) => (\n <ListItem.Root key={credential.id?.toHex()}>\n <ListItem.Endcap>\n <Icon icon='ph--key--regular' size={5} />\n </ListItem.Endcap>\n <ListItem.Heading>{credential.issuanceDate.toLocaleString()}</ListItem.Heading>\n </ListItem.Root>\n ))}\n </List>\n )}\n </ControlSection>\n </ControlPage>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { useClient } from '@dxos/react-client';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { ConfirmReset, type ConfirmResetProps } from '@dxos/shell/react';\n\nimport { meta } from '../meta';\nimport { type ClientPluginOptions } from '../types';\n\nexport const RESET_DIALOG = `${meta.id}/ResetDialog`;\n\nexport type ResetDialogProps = Pick<ConfirmResetProps, 'mode'> & Pick<ClientPluginOptions, 'onReset'>;\n\nexport const ResetDialog = ({ mode, onReset }: ResetDialogProps) => {\n const { t } = useTranslation(meta.id);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n\n const handleReset = useCallback(async () => {\n await client.reset();\n const target =\n mode === 'join new identity' ? 'deviceInvitation' : mode === 'recover' ? 'recoverIdentity' : undefined;\n await onReset?.({ target });\n }, [dispatch, client, mode, onReset]);\n\n const handleCancel = useCallback(() => {\n void dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n options: { state: false },\n }),\n );\n }, [dispatch]);\n\n // TODO(wittjosiah): Add the sr-only translations.\n // TODO(wittjosiah): Add missing descriptions to other dialogs.\n return (\n <Dialog.Content classNames='bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>\n <Dialog.Title classNames='sr-only'>{t('reset dialog title')}</Dialog.Title>\n <Dialog.Description classNames='sr-only'>{t('reset dialog description')}</Dialog.Description>\n <ConfirmReset active mode={mode} onConfirm={handleReset} onCancel={handleCancel} />\n </Dialog.Content>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useEffect", "useState", "QR", "createIntent", "useIntentDispatcher", "log", "useClient", "useMulticastObservable", "useDevices", "Invitation", "InvitationEncoder", "useNetworkStatus", "Button", "Clipboard", "Icon", "IconButton", "List", "useId", "useTranslation", "ControlFrame", "ControlFrameItem", "ControlGroup", "ControlItem", "ControlPage", "ControlSection", "AuthCode", "Centered", "DeviceListItem", "Emoji", "Viewport", "hexToEmoji", "DevicesContainer", "createInvitationUrl", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "devices", "useDevices", "swarm", "connectionState", "useNetworkStatus", "handleResetStorage", "useCallback", "createIntent", "ClientAction", "ResetStorage", "handleRecover", "mode", "handleJoinNewIdentity", "Clipboard", "Provider", "ControlPage", "ControlSection", "title", "ns", "meta", "id", "description", "ControlFrame", "ControlFrameItem", "List", "map", "device", "DeviceListItem", "key", "deviceKey", "toHex", "DeviceInvitation", "ControlGroup", "ControlItem", "Button", "variant", "onClick", "data-testid", "props", "client", "useClient", "invitation", "setInvitation", "useState", "onInvitationCreate", "halo", "share", "config", "values", "runtime", "app", "env", "DX_ENVIRONMENT", "subscription", "subscribe", "invitationCode", "InvitationEncoder", "encode", "state", "Invitation", "State", "CONNECTING", "log", "info", "JSON", "stringify", "authCode", "unsubscribe", "onInvitationDone", "undefined", "DeviceInvitationImpl", "InvitationSection", "invitationObservable", "useMulticastObservable", "url", "useEffect", "SUCCESS", "invitationId", "activeView", "CANCELLED", "READY_FOR_AUTHENTICATION", "p", "className", "IconButton", "icon", "label", "disabled", "classNames", "Viewport", "Root", "Views", "View", "InvitationComplete", "statusValue", "InvitationAuthCode", "code", "onCancel", "InvitationQR", "qrLabel", "useId", "emoji", "hexToEmoji", "div", "role", "QR", "rounding", "backgroundColor", "color", "aria-labelledby", "errorCorrectionLevel", "cutout", "Centered", "Emoji", "text", "span", "value", "AuthCode", "large", "Icon", "size", "React", "useCallback", "LayoutAction", "createIntent", "useIntentDispatcher", "ObservabilityAction", "Dialog", "useTranslation", "JoinPanel", "JOIN_DIALOG", "meta", "id", "JoinDialog", "props", "dispatchPromise", "dispatch", "useIntentDispatcher", "t", "useTranslation", "handleCancelResetStorage", "useCallback", "createIntent", "ClientAction", "ShareIdentity", "handleDone", "result", "identityKey", "Promise", "all", "LayoutAction", "UpdateDialog", "part", "options", "state", "ObservabilityAction", "SendEvent", "name", "initialDisposition", "React", "Dialog", "Content", "Title", "classNames", "ns", "JoinPanel", "mode", "exitActionParent", "Close", "asChild", "doneActionParent", "onCancelResetStorage", "onDone", "Schema", "React", "useCallback", "useMemo", "useState", "debounce", "useClient", "useIdentity", "ButtonGroup", "Clipboard", "Input", "useTranslation", "ControlItem", "ControlItemInput", "ControlPage", "ControlSection", "Form", "EmojiPickerBlock", "HuePicker", "hexToEmoji", "hexToHue", "getDefaultHueValue", "identity", "hexToHue", "identityKey", "toHex", "getDefaultEmojiValue", "hexToEmoji", "getHueValue", "profile", "data", "hue", "getEmojiValue", "emoji", "ProfileContainer", "t", "useTranslation", "meta", "id", "client", "useClient", "useIdentity", "displayName", "setDisplayNameDirectly", "useState", "setEmojiDirectly", "setHueDirectly", "updateProfile", "useMemo", "debounce", "halo", "handleSave", "useCallback", "values", "did", "customElements", "type", "label", "getValue", "onValueChange", "handleChange", "target", "value", "React", "ControlItemInput", "title", "description", "Input", "TextInput", "onChange", "placeholder", "classNames", "nextEmoji", "handleEmojiReset", "ControlItem", "EmojiPickerBlock", "triggerVariant", "onChangeEmoji", "onClickClear", "nextHue", "handleHueReset", "HuePicker", "onReset", "ButtonGroup", "disabled", "Clipboard", "IconButton", "ControlPage", "Provider", "ControlSection", "Form", "schema", "ProfileSchema", "autoSave", "onSave", "Custom", "outerSpacing", "Struct", "String", "annotations", "React", "useCallback", "useState", "AlertDialog", "Button", "Clipboard", "Input", "useTranslation", "RECOVERY_CODE_DIALOG", "meta", "id", "RecoveryCodeDialog", "code", "t", "useTranslation", "confirmation", "setConfirmation", "useState", "handleConfirmation", "useCallback", "checked", "React", "AlertDialog", "Content", "classNames", "Title", "p", "className", "Clipboard", "Provider", "Code", "div", "Input", "Root", "Checkbox", "data-testid", "onCheckedChange", "Label", "Action", "asChild", "Button", "variant", "disabled", "words", "split", "IconButton", "value", "map", "word", "i", "key", "React", "createIntent", "useIntentDispatcher", "useCredentials", "Icon", "IconButton", "List", "ListItem", "Message", "useTranslation", "ControlGroup", "ControlItem", "ControlPage", "ControlSection", "MANAGE_CREDENTIALS_DIALOG", "meta", "id", "RecoveryCredentialsContainer", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "credentials", "useCredentials", "recoveryCredentials", "filter", "credential", "subject", "assertion", "React", "ControlPage", "ControlSection", "title", "description", "ControlGroup", "ControlItem", "IconButton", "label", "icon", "variant", "size", "onClick", "createIntent", "ClientAction", "CreatePasskey", "CreateRecoveryCode", "length", "Message", "Root", "valence", "classNames", "Title", "Content", "List", "map", "ListItem", "key", "toHex", "Endcap", "Icon", "Heading", "issuanceDate", "toLocaleString", "React", "useCallback", "LayoutAction", "createIntent", "useIntentDispatcher", "useClient", "Dialog", "useTranslation", "ConfirmReset", "RESET_DIALOG", "meta", "id", "ResetDialog", "mode", "onReset", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "handleReset", "useCallback", "reset", "target", "undefined", "handleCancel", "createIntent", "LayoutAction", "UpdateDialog", "part", "options", "state", "React", "Dialog", "Content", "classNames", "Title", "Description", "ConfirmReset", "active", "onConfirm", "onCancel"]
7
+ }
@@ -0,0 +1,18 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-QB3D2P4J.mjs";
4
+
5
+ // src/capabilities/capabilities.ts
6
+ import { defineCapability } from "@dxos/app-framework";
7
+ (function(ClientCapabilities2) {
8
+ ClientCapabilities2.Client = defineCapability(`${meta.id}/capability/client`);
9
+ ClientCapabilities2.Schema = defineCapability(`${meta.id}/capability/schema`);
10
+ ClientCapabilities2.SchemaWhiteList = defineCapability(`${meta.id}/capability/schema-whitelist`);
11
+ ClientCapabilities2.Migration = defineCapability(`${meta.id}/capability/migration`);
12
+ })(ClientCapabilities || (ClientCapabilities = {}));
13
+ var ClientCapabilities;
14
+
15
+ export {
16
+ ClientCapabilities
17
+ };
18
+ //# sourceMappingURL=chunk-PFY3EQPI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/capabilities.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type Client } from '@dxos/client';\nimport { type ObjectMigration } from '@dxos/client/echo';\nimport { type Type } from '@dxos/echo';\n\nimport { meta } from '../meta';\n\nexport namespace ClientCapabilities {\n export const Client = defineCapability<Client>(`${meta.id}/capability/client`);\n export const Schema = defineCapability<Type.Obj.Any[]>(`${meta.id}/capability/schema`);\n // TODO(wittjosiah): More descriptive name.\n export const SchemaWhiteList = defineCapability<Type.Obj.Any[]>(`${meta.id}/capability/schema-whitelist`);\n export const Migration = defineCapability<ObjectMigration[]>(`${meta.id}/capability/migration`);\n}\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,wBAAwB;UAOhBC,qBAAAA;sBACFC,SAASC,iBAAyB,GAAGC,KAAKC,EAAE,oBAAoB;sBAChEC,SAASH,iBAAiC,GAAGC,KAAKC,EAAE,oBAAoB;sBAExEE,kBAAkBJ,iBAAiC,GAAGC,KAAKC,EAAE,8BAA8B;sBAC3FG,YAAYL,iBAAoC,GAAGC,KAAKC,EAAE,uBAAuB;AAChG,GANiBJ,uBAAAA,qBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["defineCapability", "ClientCapabilities", "Client", "defineCapability", "meta", "id", "Schema", "SchemaWhiteList", "Migration"]
7
+ }
@@ -0,0 +1,10 @@
1
+ // src/meta.ts
2
+ var meta = {
3
+ id: "dxos.org/plugin/client",
4
+ name: "Client"
5
+ };
6
+
7
+ export {
8
+ meta
9
+ };
10
+ //# sourceMappingURL=chunk-QB3D2P4J.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/client',\n name: 'Client',\n};\n"],
5
+ "mappings": ";AAMO,IAAMA,OAAmB;EAC9BC,IAAI;EACJC,MAAM;AACR;",
6
+ "names": ["meta", "id", "name"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-GS3LDHYD.mjs";
3
+ } from "./chunk-QB3D2P4J.mjs";
4
4
 
5
5
  // src/types/schema.ts
6
- import { Schema } from "effect";
6
+ import * as Schema from "effect/Schema";
7
7
  import { PublicKey } from "@dxos/react-client";
8
8
  var IdentitySchema = Schema.Struct({
9
9
  identityKey: Schema.instanceOf(PublicKey),
@@ -107,4 +107,4 @@ export {
107
107
  ClientAction,
108
108
  Account
109
109
  };
110
- //# sourceMappingURL=chunk-HLWIF3AW.mjs.map
110
+ //# sourceMappingURL=chunk-TRA2GP4M.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/schema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { type PluginContext } from '@dxos/app-framework';\nimport { type Client, type ClientOptions, PublicKey } from '@dxos/react-client';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { meta } from '../meta';\n\n// TODO(wittjosiah): Factor out. Generate?\nconst IdentitySchema = Schema.Struct({\n identityKey: Schema.instanceOf(PublicKey),\n spaceKey: Schema.optional(Schema.instanceOf(PublicKey)),\n profile: Schema.optional(\n Schema.Struct({\n displayName: Schema.optional(Schema.String),\n avatarCid: Schema.optional(Schema.String),\n data: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n }),\n ),\n});\n\nexport namespace ClientAction {\n const ProfileSchema = Schema.Struct({\n displayName: Schema.optional(Schema.String),\n avatarCid: Schema.optional(Schema.String),\n data: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n });\n\n export class CreateIdentity extends Schema.TaggedClass<CreateIdentity>()(`${meta.id}/action/create-identity`, {\n input: ProfileSchema,\n output: IdentitySchema,\n }) {}\n\n export class JoinIdentity extends Schema.TaggedClass<JoinIdentity>()(`${meta.id}/action/join-identity`, {\n input: Schema.Struct({\n invitationCode: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n }) {}\n\n export class ShareIdentity extends Schema.TaggedClass<ShareIdentity>()(`${meta.id}/action/share-identity`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class RecoverIdentity extends Schema.TaggedClass<RecoverIdentity>()(`${meta.id}/action/recover-identity`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class ResetStorage extends Schema.TaggedClass<ResetStorage>()(`${meta.id}/action/reset-storage`, {\n input: Schema.Struct({\n mode: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n }) {}\n\n export class CreateAgent extends Schema.TaggedClass<CreateAgent>()(`${meta.id}/action/create-agent`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class CreateRecoveryCode extends Schema.TaggedClass<CreateRecoveryCode>()(\n `${meta.id}/action/create-recovery-code`,\n {\n input: Schema.Void,\n output: Schema.Void,\n },\n ) {}\n\n export class CreatePasskey extends Schema.TaggedClass<CreatePasskey>()(`${meta.id}/action/create-passkey`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class RedeemPasskey extends Schema.TaggedClass<RedeemPasskey>()(`${meta.id}/action/redeem-passkey`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class RedeemToken extends Schema.TaggedClass<RedeemToken>()(`${meta.id}/action/redeem-token`, {\n input: Schema.Struct({\n token: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Base URL for the invitation link.\n */\n invitationUrl?: string;\n\n /**\n * Query parameter for the invitation code.\n */\n invitationParam?: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (params: { context: PluginContext; client: Client }) => MaybePromise<void>;\n\n /**\n * Called when spaces are ready.\n */\n onSpacesReady?: (params: { context: PluginContext; client: Client }) => MaybePromise<void>;\n\n /**\n * Called when the client is reset.\n */\n onReset?: (params: { target?: string }) => MaybePromise<void>;\n};\n\nexport namespace Account {\n // TODO(wittjosiah): Cannot use slashes in ids until we have a router which decouples ids from url paths.\n const _id = 'dxos.org.plugin.client.account';\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n export const id = `!${_id}`;\n\n export const Profile = `${_id}.profile`;\n export const Devices = `${_id}.devices`;\n export const Security = `${_id}.security`;\n}\n"],
5
+ "mappings": ";;;;;AAIA,YAAYA,YAAY;AAGxB,SAA0CC,iBAAiB;AAM3D,IAAMC,iBAAwBC,cAAO;EACnCC,aAAoBC,kBAAWC,SAAAA;EAC/BC,UAAiBC,gBAAgBH,kBAAWC,SAAAA,CAAAA;EAC5CG,SAAgBD,gBACPL,cAAO;IACZO,aAAoBF,gBAAgBG,aAAM;IAC1CC,WAAkBJ,gBAAgBG,aAAM;IACxCE,MAAaL,gBAAgBM,cAAO;MAAEC,KAAYJ;MAAQK,OAAcC;IAAI,CAAA,CAAA;EAC9E,CAAA,CAAA;AAEJ,CAAA;UAEiBC,eAAAA;AACf,QAAMC,gBAAuBhB,cAAO;IAClCO,aAAoBF,gBAAgBG,aAAM;IAC1CC,WAAkBJ,gBAAgBG,aAAM;IACxCE,MAAaL,gBAAgBM,cAAO;MAAEC,KAAYJ;MAAQK,OAAcC;IAAI,CAAA,CAAA;EAC9E,CAAA;EAEO,MAAMG,uBAA8BC,mBAAW,EAAmB,GAAGC,KAAKC,EAAE,2BAA2B;IAC5GC,OAAOL;IACPM,QAAQvB;EACV,CAAA,EAAA;EAAI;gBAHSkB,iBAAAA;EAKN,MAAMM,qBAA4BL,mBAAW,EAAiB,GAAGC,KAAKC,EAAE,yBAAyB;IACtGC,OAAcrB,cAAO;MACnBwB,gBAAuBnB,gBAAgBG,aAAM;IAC/C,CAAA;IACAc,QAAeG;EACjB,CAAA,EAAA;EAAI;gBALSF,eAAAA;EAON,MAAMG,sBAA6BR,mBAAW,EAAkB,GAAGC,KAAKC,EAAE,0BAA0B;IACzGC,OAAcI;IACdH,QAAeG;EACjB,CAAA,EAAA;EAAI;gBAHSC,gBAAAA;EAKN,MAAMC,wBAA+BT,mBAAW,EAAoB,GAAGC,KAAKC,EAAE,4BAA4B;IAC/GC,OAAcI;IACdH,QAAeG;EACjB,CAAA,EAAA;EAAI;gBAHSE,kBAAAA;EAKN,MAAMC,qBAA4BV,mBAAW,EAAiB,GAAGC,KAAKC,EAAE,yBAAyB;IACtGC,OAAcrB,cAAO;MACnB6B,MAAaxB,gBAAgBG,aAAM;IACrC,CAAA;IACAc,QAAeG;EACjB,CAAA,EAAA;EAAI;gBALSG,eAAAA;EAON,MAAME,oBAA2BZ,mBAAW,EAAgB,GAAGC,KAAKC,EAAE,wBAAwB;IACnGC,OAAcI;IACdH,QAAeG;EACjB,CAAA,EAAA;EAAI;gBAHSK,cAAAA;EAKN,MAAMC,2BAAkCb,mBAAW,EACxD,GAAGC,KAAKC,EAAE,gCACV;IACEC,OAAcI;IACdH,QAAeG;EACjB,CAAA,EAAA;EACC;gBANUM,qBAAAA;EAQN,MAAMC,sBAA6Bd,mBAAW,EAAkB,GAAGC,KAAKC,EAAE,0BAA0B;IACzGC,OAAcI;IACdH,QAAeG;EACjB,CAAA,EAAA;EAAI;gBAHSO,gBAAAA;EAKN,MAAMC,sBAA6Bf,mBAAW,EAAkB,GAAGC,KAAKC,EAAE,0BAA0B;IACzGC,OAAcI;IACdH,QAAeG;EACjB,CAAA,EAAA;EAAI;gBAHSQ,gBAAAA;EAKN,MAAMC,oBAA2BhB,mBAAW,EAAgB,GAAGC,KAAKC,EAAE,wBAAwB;IACnGC,OAAcrB,cAAO;MACnBmC,OAAc3B;IAChB,CAAA;IACAc,QAAeG;EACjB,CAAA,EAAA;EAAI;gBALSS,cAAAA;AAMf,GAjEiBnB,iBAAAA,eAAAA,CAAAA,EAAAA;UA8FAqB,UAAAA;AAEf,QAAMC,MAAM;WAGCjB,KAAK,IAAIiB,GAAAA;WAETC,UAAU,GAAGD,GAAAA;WACbE,UAAU,GAAGF,GAAAA;WACbG,WAAW,GAAGH,GAAAA;AAC7B,GAViBD,YAAAA,UAAAA,CAAAA,EAAAA;;;",
6
+ "names": ["Schema", "PublicKey", "IdentitySchema", "Struct", "identityKey", "instanceOf", "PublicKey", "spaceKey", "optional", "profile", "displayName", "String", "avatarCid", "data", "Record", "key", "value", "Any", "ClientAction", "ProfileSchema", "CreateIdentity", "TaggedClass", "meta", "id", "input", "output", "JoinIdentity", "invitationCode", "Void", "ShareIdentity", "RecoverIdentity", "ResetStorage", "mode", "CreateAgent", "CreateRecoveryCode", "CreatePasskey", "RedeemPasskey", "RedeemToken", "token", "Account", "_id", "Profile", "Devices", "Security"]
7
+ }
@@ -0,0 +1,19 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-QB3D2P4J.mjs";
4
+
5
+ // src/events.ts
6
+ import { defineEvent } from "@dxos/app-framework";
7
+ (function(ClientEvents2) {
8
+ ClientEvents2.ClientReady = defineEvent(`${meta.id}/event/client-ready`);
9
+ ClientEvents2.SetupSchema = defineEvent(`${meta.id}/event/setup-schema`);
10
+ ClientEvents2.SetupMigration = defineEvent(`${meta.id}/event/setup-migration`);
11
+ ClientEvents2.IdentityCreated = defineEvent(`${meta.id}/event/identity-created`);
12
+ ClientEvents2.SpacesReady = defineEvent(`${meta.id}/event/spaces-ready`);
13
+ })(ClientEvents || (ClientEvents = {}));
14
+ var ClientEvents;
15
+
16
+ export {
17
+ ClientEvents
18
+ };
19
+ //# sourceMappingURL=chunk-VTC4GIND.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/events.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport namespace ClientEvents {\n export const ClientReady = defineEvent(`${meta.id}/event/client-ready`);\n export const SetupSchema = defineEvent(`${meta.id}/event/setup-schema`);\n export const SetupMigration = defineEvent(`${meta.id}/event/setup-migration`);\n export const IdentityCreated = defineEvent(`${meta.id}/event/identity-created`);\n export const SpacesReady = defineEvent(`${meta.id}/event/spaces-ready`);\n}\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,mBAAmB;UAIXC,eAAAA;gBACFC,cAAcC,YAAY,GAAGC,KAAKC,EAAE,qBAAqB;gBACzDC,cAAcH,YAAY,GAAGC,KAAKC,EAAE,qBAAqB;gBACzDE,iBAAiBJ,YAAY,GAAGC,KAAKC,EAAE,wBAAwB;gBAC/DG,kBAAkBL,YAAY,GAAGC,KAAKC,EAAE,yBAAyB;gBACjEI,cAAcN,YAAY,GAAGC,KAAKC,EAAE,qBAAqB;AACxE,GANiBJ,iBAAAA,eAAAA,CAAAA,EAAAA;;",
6
+ "names": ["defineEvent", "ClientEvents", "ClientReady", "defineEvent", "meta", "id", "SetupSchema", "SetupMigration", "IdentityCreated", "SpacesReady"]
7
+ }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  ClientEvents
3
- } from "./chunk-CAF2COXW.mjs";
3
+ } from "./chunk-VTC4GIND.mjs";
4
4
  import {
5
5
  ClientCapabilities
6
- } from "./chunk-3F2Q2RKC.mjs";
7
- import "./chunk-GS3LDHYD.mjs";
6
+ } from "./chunk-PFY3EQPI.mjs";
7
+ import "./chunk-QB3D2P4J.mjs";
8
8
 
9
9
  // src/capabilities/client.ts
10
10
  import { contributes } from "@dxos/app-framework";
11
11
  import { Client } from "@dxos/react-client";
12
- var client_default = async ({ context, onClientInitialized, onSpacesReady, ...options }) => {
12
+ var client_default = (async ({ context, onClientInitialized, onSpacesReady, ...options }) => {
13
13
  const client = new Client(options);
14
14
  await client.initialize();
15
15
  await onClientInitialized?.({
@@ -36,8 +36,8 @@ var client_default = async ({ context, onClientInitialized, onSpacesReady, ...op
36
36
  subscription.unsubscribe();
37
37
  await client.destroy();
38
38
  });
39
- };
39
+ });
40
40
  export {
41
41
  client_default as default
42
42
  };
43
- //# sourceMappingURL=client-F73MIXMT.mjs.map
43
+ //# sourceMappingURL=client-5PWEJ3U6.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/client.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PluginContext, contributes } from '@dxos/app-framework';\nimport { Client } from '@dxos/react-client';\n\nimport { ClientEvents } from '../events';\nimport { type ClientPluginOptions } from '../types';\n\nimport { ClientCapabilities } from './capabilities';\n\ntype ClientCapabilityOptions = Omit<ClientPluginOptions, 'appKey' | 'invitationUrl' | 'invitationParam' | 'onReset'> & {\n context: PluginContext;\n};\n\nexport default async ({ context, onClientInitialized, onSpacesReady, ...options }: ClientCapabilityOptions) => {\n const client = new Client(options);\n await client.initialize();\n await onClientInitialized?.({ context, client });\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n\n // TODO(burdon): The callback isn't called?\n const subscription = client.spaces.isReady.subscribe(async (ready) => {\n if (ready) {\n await context.activatePromise(ClientEvents.SpacesReady);\n await onSpacesReady?.({ context, client });\n }\n });\n\n return contributes(ClientCapabilities.Client, client, async () => {\n subscription.unsubscribe();\n await client.destroy();\n });\n};\n"],
5
- "mappings": ";;;;;;;;;AAIA,SAA6BA,mBAAmB;AAChD,SAASC,cAAc;AAWvB,IAAA,iBAAe,OAAO,EAAEC,SAASC,qBAAqBC,eAAe,GAAGC,QAAAA,MAAkC;AACxG,QAAMC,SAAS,IAAIC,OAAOF,OAAAA;AAC1B,QAAMC,OAAOE,WAAU;AACvB,QAAML,sBAAsB;IAAED;IAASI;EAAO,CAAA;AAG9CA,SAAOG,SAASC,GAAG,MAAA;AACjBJ,WAAOK,KAAKC,SAASC,UAAU,OAAOD,aAAAA;AACpC,UAAIA,UAAU;AACZE,eAAOC,SAASC,OAAOF,OAAOC,SAASE;MACzC;IACF,CAAA;EACF,CAAA;AAGA,QAAMC,eAAeZ,OAAOa,OAAOC,QAAQP,UAAU,OAAOQ,UAAAA;AAC1D,QAAIA,OAAO;AACT,YAAMnB,QAAQoB,gBAAgBC,aAAaC,WAAW;AACtD,YAAMpB,gBAAgB;QAAEF;QAASI;MAAO,CAAA;IAC1C;EACF,CAAA;AAEA,SAAOmB,YAAYC,mBAAmBnB,QAAQD,QAAQ,YAAA;AACpDY,iBAAaS,YAAW;AACxB,UAAMrB,OAAOsB,QAAO;EACtB,CAAA;AACF;",
5
+ "mappings": ";;;;;;;;;AAIA,SAA6BA,mBAAmB;AAChD,SAASC,cAAc;AAWvB,IAAA,kBAAe,OAAO,EAAEC,SAASC,qBAAqBC,eAAe,GAAGC,QAAAA,MAAkC;AACxG,QAAMC,SAAS,IAAIC,OAAOF,OAAAA;AAC1B,QAAMC,OAAOE,WAAU;AACvB,QAAML,sBAAsB;IAAED;IAASI;EAAO,CAAA;AAG9CA,SAAOG,SAASC,GAAG,MAAA;AACjBJ,WAAOK,KAAKC,SAASC,UAAU,OAAOD,aAAAA;AACpC,UAAIA,UAAU;AACZE,eAAOC,SAASC,OAAOF,OAAOC,SAASE;MACzC;IACF,CAAA;EACF,CAAA;AAGA,QAAMC,eAAeZ,OAAOa,OAAOC,QAAQP,UAAU,OAAOQ,UAAAA;AAC1D,QAAIA,OAAO;AACT,YAAMnB,QAAQoB,gBAAgBC,aAAaC,WAAW;AACtD,YAAMpB,gBAAgB;QAAEF;QAASI;MAAO,CAAA;IAC1C;EACF,CAAA;AAEA,SAAOmB,YAAYC,mBAAmBnB,QAAQD,QAAQ,YAAA;AACpDY,iBAAaS,YAAW;AACxB,UAAMrB,OAAOsB,QAAO;EACtB,CAAA;AACF;",
6
6
  "names": ["contributes", "Client", "context", "onClientInitialized", "onSpacesReady", "options", "client", "Client", "initialize", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "subscription", "spaces", "isReady", "ready", "activatePromise", "ClientEvents", "SpacesReady", "contributes", "ClientCapabilities", "unsubscribe", "destroy"]
7
7
  }