@dxos/plugin-client 0.8.4-main.c85a9c8dae → 0.8.4-main.d05673bc65

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 (99) hide show
  1. package/dist/lib/browser/{DevicesContainer-46MEG3F5.mjs → DevicesContainer-3N7ANEJ7.mjs} +3 -3
  2. package/dist/lib/browser/{JoinDialog-2RCYK4O5.mjs → JoinDialog-VTTK7NHO.mjs} +3 -3
  3. package/dist/lib/browser/{ProfileContainer-XYRCOQ5I.mjs → ProfileContainer-XV7OXJC2.mjs} +2 -2
  4. package/dist/lib/browser/{RecoveryCodeDialog-EX2CLFND.mjs → RecoveryCodeDialog-WO34OZEJ.mjs} +2 -2
  5. package/dist/lib/browser/{RecoveryCredentialsContainer-RWTEIHOB.mjs → RecoveryCredentialsContainer-G22FSTIX.mjs} +4 -4
  6. package/dist/lib/browser/{RecoveryCredentialsContainer-RWTEIHOB.mjs.map → RecoveryCredentialsContainer-G22FSTIX.mjs.map} +1 -1
  7. package/dist/lib/browser/{app-graph-builder-QJWFLYZE.mjs → app-graph-builder-GGJKFY3X.mjs} +4 -4
  8. package/dist/lib/browser/{app-graph-builder-QJWFLYZE.mjs.map → app-graph-builder-GGJKFY3X.mjs.map} +1 -1
  9. package/dist/lib/browser/{chunk-DPAXDXMK.mjs → chunk-FVEKZBM7.mjs} +31 -31
  10. package/dist/lib/browser/{chunk-DPAXDXMK.mjs.map → chunk-FVEKZBM7.mjs.map} +1 -1
  11. package/dist/lib/browser/{chunk-4XYOOXAH.mjs → chunk-GSVYEYVS.mjs} +4 -4
  12. package/dist/lib/browser/chunk-HSFDKP5D.mjs +15 -0
  13. package/dist/lib/browser/{chunk-VYX3ROUX.mjs.map → chunk-HSFDKP5D.mjs.map} +1 -1
  14. package/dist/lib/browser/{chunk-N2GMSVDQ.mjs → chunk-JHSBBOCI.mjs} +2 -2
  15. package/dist/lib/browser/{chunk-N2GMSVDQ.mjs.map → chunk-JHSBBOCI.mjs.map} +1 -1
  16. package/dist/lib/browser/cli/index.mjs +35 -27
  17. package/dist/lib/browser/cli/index.mjs.map +3 -3
  18. package/dist/lib/browser/{client-Z25GQ5YC.mjs → client-BXCP3EUE.mjs} +3 -3
  19. package/dist/lib/browser/index.mjs +7 -7
  20. package/dist/lib/browser/meta.json +1 -1
  21. package/dist/lib/browser/{migrations-HLHRMOW6.mjs → migrations-GKUA2ARL.mjs} +3 -3
  22. package/dist/lib/browser/{operation-resolver-6QW3BKA5.mjs → operation-resolver-VSWA74RS.mjs} +14 -14
  23. package/dist/lib/browser/operation-resolver-VSWA74RS.mjs.map +7 -0
  24. package/dist/lib/browser/{react-context-E7TAJMDK.mjs → react-context-GZ3T5UON.mjs} +3 -3
  25. package/dist/lib/browser/{react-surface-L5A2LBFE.mjs → react-surface-5VZP34X3.mjs} +9 -9
  26. package/dist/lib/browser/{schema-defs-5WDZWVEI.mjs → schema-defs-KAG6HQMI.mjs} +3 -3
  27. package/dist/lib/browser/types/index.mjs +2 -2
  28. package/dist/lib/node-esm/{DevicesContainer-WQ3DQA45.mjs → DevicesContainer-V7HEUPO7.mjs} +3 -3
  29. package/dist/lib/node-esm/{JoinDialog-KLTNJY5F.mjs → JoinDialog-XVKW4SLT.mjs} +3 -3
  30. package/dist/lib/node-esm/{ProfileContainer-XI425QK5.mjs → ProfileContainer-B5LJ6TMU.mjs} +2 -2
  31. package/dist/lib/node-esm/{RecoveryCodeDialog-AISRNJUM.mjs → RecoveryCodeDialog-YIRGXM7N.mjs} +2 -2
  32. package/dist/lib/node-esm/{RecoveryCredentialsContainer-3TKQRPQK.mjs → RecoveryCredentialsContainer-MVJEFNXX.mjs} +4 -4
  33. package/dist/lib/node-esm/{RecoveryCredentialsContainer-3TKQRPQK.mjs.map → RecoveryCredentialsContainer-MVJEFNXX.mjs.map} +1 -1
  34. package/dist/lib/node-esm/{app-graph-builder-6JD6BZAI.mjs → app-graph-builder-PTNZ46NN.mjs} +4 -4
  35. package/dist/lib/node-esm/{app-graph-builder-6JD6BZAI.mjs.map → app-graph-builder-PTNZ46NN.mjs.map} +1 -1
  36. package/dist/lib/node-esm/{chunk-RGULICLJ.mjs → chunk-BOTJSPCT.mjs} +2 -2
  37. package/dist/lib/node-esm/{chunk-RGULICLJ.mjs.map → chunk-BOTJSPCT.mjs.map} +1 -1
  38. package/dist/lib/node-esm/{chunk-VEUNEDN5.mjs → chunk-DT2ZNOGU.mjs} +31 -31
  39. package/dist/lib/node-esm/{chunk-VEUNEDN5.mjs.map → chunk-DT2ZNOGU.mjs.map} +1 -1
  40. package/dist/lib/node-esm/{chunk-H2CCMM4Z.mjs → chunk-OFJUOKY7.mjs} +4 -4
  41. package/dist/lib/node-esm/chunk-VLNCZYIC.mjs +16 -0
  42. package/dist/lib/node-esm/{chunk-HKSNTZF5.mjs.map → chunk-VLNCZYIC.mjs.map} +1 -1
  43. package/dist/lib/node-esm/cli/index.mjs +35 -27
  44. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  45. package/dist/lib/node-esm/{client-5AIPYSBT.mjs → client-EGZHGRRC.mjs} +3 -3
  46. package/dist/lib/node-esm/index.mjs +7 -7
  47. package/dist/lib/node-esm/meta.json +1 -1
  48. package/dist/lib/node-esm/{migrations-O5KG2GGN.mjs → migrations-4NEKCBGU.mjs} +3 -3
  49. package/dist/lib/node-esm/{operation-resolver-GSH7AOTZ.mjs → operation-resolver-4GWB3YZG.mjs} +14 -14
  50. package/dist/lib/node-esm/operation-resolver-4GWB3YZG.mjs.map +7 -0
  51. package/dist/lib/node-esm/{react-context-OMJSBS23.mjs → react-context-T2ORT5CC.mjs} +3 -3
  52. package/dist/lib/node-esm/{react-surface-N3BSPMMX.mjs → react-surface-B65OUZYI.mjs} +9 -9
  53. package/dist/lib/node-esm/{schema-defs-ENOYSDP3.mjs → schema-defs-GXQ47JZN.mjs} +3 -3
  54. package/dist/lib/node-esm/types/index.mjs +2 -2
  55. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  56. package/dist/types/src/cli/commands/profile/create.d.ts +2 -1
  57. package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -1
  58. package/dist/types/src/cli/commands/profile/delete.d.ts +1 -1
  59. package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -1
  60. package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -1
  61. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts +1 -1
  62. package/dist/types/src/types/schema.d.ts +30 -30
  63. package/dist/types/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +28 -28
  65. package/src/capabilities/app-graph-builder/app-graph-builder.ts +1 -1
  66. package/src/capabilities/operation-resolver/operation-resolver.ts +5 -3
  67. package/src/cli/commands/profile/create.ts +9 -6
  68. package/src/cli/commands/profile/delete.ts +5 -2
  69. package/src/cli/commands/profile/list.ts +13 -11
  70. package/src/constants.ts +3 -3
  71. package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.tsx +1 -1
  72. package/src/meta.ts +1 -1
  73. package/src/types/capabilities.ts +3 -3
  74. package/src/types/events.ts +5 -5
  75. package/src/types/schema.ts +21 -21
  76. package/dist/lib/browser/chunk-VYX3ROUX.mjs +0 -15
  77. package/dist/lib/browser/operation-resolver-6QW3BKA5.mjs.map +0 -7
  78. package/dist/lib/node-esm/chunk-HKSNTZF5.mjs +0 -16
  79. package/dist/lib/node-esm/operation-resolver-GSH7AOTZ.mjs.map +0 -7
  80. /package/dist/lib/browser/{DevicesContainer-46MEG3F5.mjs.map → DevicesContainer-3N7ANEJ7.mjs.map} +0 -0
  81. /package/dist/lib/browser/{JoinDialog-2RCYK4O5.mjs.map → JoinDialog-VTTK7NHO.mjs.map} +0 -0
  82. /package/dist/lib/browser/{ProfileContainer-XYRCOQ5I.mjs.map → ProfileContainer-XV7OXJC2.mjs.map} +0 -0
  83. /package/dist/lib/browser/{RecoveryCodeDialog-EX2CLFND.mjs.map → RecoveryCodeDialog-WO34OZEJ.mjs.map} +0 -0
  84. /package/dist/lib/browser/{chunk-4XYOOXAH.mjs.map → chunk-GSVYEYVS.mjs.map} +0 -0
  85. /package/dist/lib/browser/{client-Z25GQ5YC.mjs.map → client-BXCP3EUE.mjs.map} +0 -0
  86. /package/dist/lib/browser/{migrations-HLHRMOW6.mjs.map → migrations-GKUA2ARL.mjs.map} +0 -0
  87. /package/dist/lib/browser/{react-context-E7TAJMDK.mjs.map → react-context-GZ3T5UON.mjs.map} +0 -0
  88. /package/dist/lib/browser/{react-surface-L5A2LBFE.mjs.map → react-surface-5VZP34X3.mjs.map} +0 -0
  89. /package/dist/lib/browser/{schema-defs-5WDZWVEI.mjs.map → schema-defs-KAG6HQMI.mjs.map} +0 -0
  90. /package/dist/lib/node-esm/{DevicesContainer-WQ3DQA45.mjs.map → DevicesContainer-V7HEUPO7.mjs.map} +0 -0
  91. /package/dist/lib/node-esm/{JoinDialog-KLTNJY5F.mjs.map → JoinDialog-XVKW4SLT.mjs.map} +0 -0
  92. /package/dist/lib/node-esm/{ProfileContainer-XI425QK5.mjs.map → ProfileContainer-B5LJ6TMU.mjs.map} +0 -0
  93. /package/dist/lib/node-esm/{RecoveryCodeDialog-AISRNJUM.mjs.map → RecoveryCodeDialog-YIRGXM7N.mjs.map} +0 -0
  94. /package/dist/lib/node-esm/{chunk-H2CCMM4Z.mjs.map → chunk-OFJUOKY7.mjs.map} +0 -0
  95. /package/dist/lib/node-esm/{client-5AIPYSBT.mjs.map → client-EGZHGRRC.mjs.map} +0 -0
  96. /package/dist/lib/node-esm/{migrations-O5KG2GGN.mjs.map → migrations-4NEKCBGU.mjs.map} +0 -0
  97. /package/dist/lib/node-esm/{react-context-OMJSBS23.mjs.map → react-context-T2ORT5CC.mjs.map} +0 -0
  98. /package/dist/lib/node-esm/{react-surface-N3BSPMMX.mjs.map → react-surface-B65OUZYI.mjs.map} +0 -0
  99. /package/dist/lib/node-esm/{schema-defs-ENOYSDP3.mjs.map → schema-defs-GXQ47JZN.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-client",
3
- "version": "0.8.4-main.c85a9c8dae",
3
+ "version": "0.8.4-main.d05673bc65",
4
4
  "description": "DXOS Surface plugin for DXOS Client",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -49,28 +49,28 @@
49
49
  "effect": "3.19.16",
50
50
  "react-qr-rounded": "^1.0.0",
51
51
  "yaml": "^2.7.0",
52
- "@dxos/app-framework": "0.8.4-main.c85a9c8dae",
53
- "@dxos/app-toolkit": "0.8.4-main.c85a9c8dae",
54
- "@dxos/client-protocol": "0.8.4-main.c85a9c8dae",
55
- "@dxos/async": "0.8.4-main.c85a9c8dae",
56
- "@dxos/client": "0.8.4-main.c85a9c8dae",
57
- "@dxos/config": "0.8.4-main.c85a9c8dae",
58
- "@dxos/effect": "0.8.4-main.c85a9c8dae",
59
- "@dxos/echo": "0.8.4-main.c85a9c8dae",
60
- "@dxos/client-services": "0.8.4-main.c85a9c8dae",
61
- "@dxos/log": "0.8.4-main.c85a9c8dae",
62
- "@dxos/operation": "0.8.4-main.c85a9c8dae",
63
- "@dxos/invariant": "0.8.4-main.c85a9c8dae",
64
- "@dxos/plugin-observability": "0.8.4-main.c85a9c8dae",
65
- "@dxos/plugin-graph": "0.8.4-main.c85a9c8dae",
66
- "@dxos/protocols": "0.8.4-main.c85a9c8dae",
67
- "@dxos/react-client": "0.8.4-main.c85a9c8dae",
68
- "@dxos/react-ui-form": "0.8.4-main.c85a9c8dae",
69
- "@dxos/cli-util": "0.8.4-main.c85a9c8dae",
70
- "@dxos/react-ui-pickers": "0.8.4-main.c85a9c8dae",
71
- "@dxos/react-ui-stack": "0.8.4-main.c85a9c8dae",
72
- "@dxos/shell": "0.8.4-main.c85a9c8dae",
73
- "@dxos/util": "0.8.4-main.c85a9c8dae"
52
+ "@dxos/app-framework": "0.8.4-main.d05673bc65",
53
+ "@dxos/app-toolkit": "0.8.4-main.d05673bc65",
54
+ "@dxos/async": "0.8.4-main.d05673bc65",
55
+ "@dxos/client": "0.8.4-main.d05673bc65",
56
+ "@dxos/cli-util": "0.8.4-main.d05673bc65",
57
+ "@dxos/client-protocol": "0.8.4-main.d05673bc65",
58
+ "@dxos/client-services": "0.8.4-main.d05673bc65",
59
+ "@dxos/config": "0.8.4-main.d05673bc65",
60
+ "@dxos/effect": "0.8.4-main.d05673bc65",
61
+ "@dxos/echo": "0.8.4-main.d05673bc65",
62
+ "@dxos/log": "0.8.4-main.d05673bc65",
63
+ "@dxos/operation": "0.8.4-main.d05673bc65",
64
+ "@dxos/invariant": "0.8.4-main.d05673bc65",
65
+ "@dxos/plugin-graph": "0.8.4-main.d05673bc65",
66
+ "@dxos/protocols": "0.8.4-main.d05673bc65",
67
+ "@dxos/plugin-observability": "0.8.4-main.d05673bc65",
68
+ "@dxos/react-client": "0.8.4-main.d05673bc65",
69
+ "@dxos/react-ui-form": "0.8.4-main.d05673bc65",
70
+ "@dxos/util": "0.8.4-main.d05673bc65",
71
+ "@dxos/react-ui-pickers": "0.8.4-main.d05673bc65",
72
+ "@dxos/react-ui-stack": "0.8.4-main.d05673bc65",
73
+ "@dxos/shell": "0.8.4-main.d05673bc65"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@effect-atom/atom-react": "^0.5.0",
@@ -81,9 +81,9 @@
81
81
  "react": "~19.2.3",
82
82
  "react-dom": "~19.2.3",
83
83
  "vite": "^7.1.11",
84
- "@dxos/storybook-utils": "0.8.4-main.c85a9c8dae",
85
- "@dxos/react-ui": "0.8.4-main.c85a9c8dae",
86
- "@dxos/ui-theme": "0.8.4-main.c85a9c8dae"
84
+ "@dxos/react-ui": "0.8.4-main.d05673bc65",
85
+ "@dxos/ui-theme": "0.8.4-main.d05673bc65",
86
+ "@dxos/storybook-utils": "0.8.4-main.d05673bc65"
87
87
  },
88
88
  "peerDependencies": {
89
89
  "@effect-atom/atom-react": "^0.5.0",
@@ -91,8 +91,8 @@
91
91
  "effect": "3.19.16",
92
92
  "react": "~19.2.3",
93
93
  "react-dom": "~19.2.3",
94
- "@dxos/react-ui": "0.8.4-main.c85a9c8dae",
95
- "@dxos/ui-theme": "0.8.4-main.c85a9c8dae"
94
+ "@dxos/react-ui": "0.8.4-main.d05673bc65",
95
+ "@dxos/ui-theme": "0.8.4-main.d05673bc65"
96
96
  },
97
97
  "publishConfig": {
98
98
  "access": "public"
@@ -21,7 +21,7 @@ export default Capability.makeModule(
21
21
  actions: () =>
22
22
  Effect.succeed([
23
23
  {
24
- id: `${meta.id}/open-user-account`,
24
+ id: `${meta.id}.open-user-account`,
25
25
  data: () => Operation.invoke(ClientOperation.ShareIdentity),
26
26
  properties: {
27
27
  label: ['open user account label', { ns: meta.id }],
@@ -5,7 +5,7 @@
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
7
  import { Capabilities, Capability } from '@dxos/app-framework';
8
- import { LayoutOperation } from '@dxos/app-toolkit';
8
+ import { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';
9
9
  import { PublicKey } from '@dxos/client';
10
10
  import { runAndForwardErrors } from '@dxos/effect';
11
11
  import { invariant } from '@dxos/invariant';
@@ -65,8 +65,10 @@ export default Capability.makeModule(
65
65
  OperationResolver.make({
66
66
  operation: ClientOperation.ShareIdentity,
67
67
  handler: Effect.fnUntraced(function* () {
68
- yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: Account.id });
69
- yield* Operation.invoke(LayoutOperation.Open, { subject: [Account.Profile] });
68
+ yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(Account.id) });
69
+ yield* Operation.invoke(LayoutOperation.Open, {
70
+ subject: [`${getSpacePath(Account.id)}/${Account.Profile}`],
71
+ });
70
72
  yield* Operation.schedule(ObservabilityOperation.SendEvent, { name: 'identity.share' });
71
73
  }),
72
74
  }),
@@ -5,13 +5,14 @@
5
5
  import * as Command from '@effect/cli/Command';
6
6
  import * as Options from '@effect/cli/Options';
7
7
  import * as FileSystem from '@effect/platform/FileSystem';
8
+ import * as Path from '@effect/platform/Path';
8
9
  import * as Console from 'effect/Console';
9
10
  import * as Effect from 'effect/Effect';
10
11
  import * as Option from 'effect/Option';
11
12
  import * as Record from 'effect/Record';
12
13
 
13
14
  import { CommandConfig, print } from '@dxos/cli-util';
14
- import { DX_CONFIG, getProfilePath } from '@dxos/client-protocol';
15
+ import { DX_CONFIG, getProfileConfigPath } from '@dxos/client-protocol';
15
16
  import { trim } from '@dxos/util';
16
17
 
17
18
  import { printProfileCreated } from './util';
@@ -71,17 +72,19 @@ export const create = Command.make(
71
72
  Effect.fnUntraced(function* ({ template, name }) {
72
73
  const { json } = yield* CommandConfig;
73
74
  const fs = yield* FileSystem.FileSystem;
75
+ const path = yield* Path.Path;
74
76
  const profileName = name.pipe(Option.getOrElse(() => template));
75
- const profilePath = `${getProfilePath(DX_CONFIG, profileName)}.yml`;
76
- if (yield* fs.exists(profilePath)) {
77
+ const configPath = getProfileConfigPath(DX_CONFIG, profileName);
78
+ if (yield* fs.exists(configPath)) {
77
79
  throw new Error(`Profile ${profileName} already exists`);
78
80
  }
79
81
 
80
- yield* fs.writeFileString(profilePath, TEMPLATES[template]);
82
+ yield* fs.makeDirectory(path.dirname(configPath), { recursive: true });
83
+ yield* fs.writeFileString(configPath, TEMPLATES[template]);
81
84
  if (json) {
82
- yield* Console.log(JSON.stringify({ name: profileName, path: profilePath }, null, 2));
85
+ yield* Console.log(JSON.stringify({ name: profileName, path: configPath }, null, 2));
83
86
  } else {
84
- yield* Console.log(print(printProfileCreated(profileName, profilePath)));
87
+ yield* Console.log(print(printProfileCreated(profileName, configPath)));
85
88
  }
86
89
  }),
87
90
  );
@@ -10,7 +10,7 @@ import * as Effect from 'effect/Effect';
10
10
  import * as Option from 'effect/Option';
11
11
 
12
12
  import { CommandConfig, print } from '@dxos/cli-util';
13
- import { DX_CONFIG, getProfilePath } from '@dxos/client-protocol';
13
+ import { DX_CONFIG, getProfileConfigPath } from '@dxos/client-protocol';
14
14
 
15
15
  import { printProfileDeleted } from './util';
16
16
 
@@ -23,7 +23,10 @@ export const del = Command.make(
23
23
  const { json } = yield* CommandConfig;
24
24
  const fs = yield* FileSystem.FileSystem;
25
25
  const profileName = name.pipe(Option.getOrElse(() => 'default'));
26
- yield* fs.remove(`${getProfilePath(DX_CONFIG, profileName)}.yml`);
26
+ const configPath = getProfileConfigPath(DX_CONFIG, profileName);
27
+ const pluginsPath = `${DX_CONFIG}/plugins/${profileName}.yml`;
28
+ yield* fs.remove(configPath).pipe(Effect.ignore);
29
+ yield* fs.remove(pluginsPath).pipe(Effect.ignore);
27
30
  if (json) {
28
31
  yield* Console.log(JSON.stringify({ name: profileName, deleted: true }, null, 2));
29
32
  } else {
@@ -7,6 +7,7 @@ import * as FileSystem from '@effect/platform/FileSystem';
7
7
  import * as Path from '@effect/platform/Path';
8
8
  import * as Console from 'effect/Console';
9
9
  import * as Effect from 'effect/Effect';
10
+ import * as Option from 'effect/Option';
10
11
  import * as Yaml from 'yaml';
11
12
 
12
13
  import { CommandConfig, printList } from '@dxos/cli-util';
@@ -23,21 +24,22 @@ export const list = Command.make(
23
24
  const fs = yield* FileSystem.FileSystem;
24
25
  const path = yield* Path.Path;
25
26
  const profileDir = path.join(DX_CONFIG, 'profile');
26
- const files = yield* fs.readDirectory(profileDir);
27
- const profiles = yield* Effect.forEach(
28
- files,
29
- Effect.fnUntraced(function* (filename) {
30
- const ext = path.extname(filename);
31
- const name = filename.slice(0, -ext.length);
32
- const fullPath = path.join(DX_CONFIG, 'profile', filename);
33
- const configContent = yield* fs.readFileString(fullPath);
34
- const configValues = Yaml.parse(configContent);
27
+ const entries = yield* fs.readDirectory(profileDir);
28
+ const profileFiles = entries.filter((entry) => entry.endsWith('.yml'));
29
+ const profiles = yield* Effect.forEach(profileFiles, (filename) =>
30
+ Effect.gen(function* () {
31
+ const name = filename.slice(0, -4);
32
+ const configPath = path.join(profileDir, filename);
33
+ const configContent = yield* fs
34
+ .readFileString(configPath)
35
+ .pipe(Effect.catchTag('SystemError', () => Effect.succeed('{}')));
36
+ const configValues = Yaml.parse(configContent) ?? {};
35
37
  const config = new Config(configValues);
36
38
  return {
37
39
  name,
38
40
  isCurrent: name === currentProfile,
39
- fullPath,
40
- storagePath: getProfilePath(configValues?.runtime?.client?.storage.dataRoot ?? DX_DATA, name),
41
+ fullPath: configPath,
42
+ storagePath: getProfilePath(configValues?.runtime?.client?.storage?.dataRoot ?? DX_DATA, name),
41
43
  edge: config.values.runtime?.services?.edge?.url,
42
44
  };
43
45
  }),
package/src/constants.ts CHANGED
@@ -4,6 +4,6 @@
4
4
 
5
5
  import { meta } from './meta';
6
6
 
7
- export const JOIN_DIALOG = `${meta.id}/JoinDialog`;
8
- export const RECOVERY_CODE_DIALOG = `${meta.id}/RecoveryCodeDialog`;
9
- export const RESET_DIALOG = `${meta.id}/ResetDialog`;
7
+ export const JOIN_DIALOG = `${meta.id}.JoinDialog`;
8
+ export const RECOVERY_CODE_DIALOG = `${meta.id}.RecoveryCodeDialog`;
9
+ export const RESET_DIALOG = `${meta.id}.ResetDialog`;
@@ -12,7 +12,7 @@ import { Settings } from '@dxos/react-ui-form';
12
12
  import { meta } from '../../meta';
13
13
  import { ClientOperation } from '../../types';
14
14
 
15
- export const MANAGE_CREDENTIALS_DIALOG = `${meta.id}/ManageCredentialsDialog`;
15
+ export const MANAGE_CREDENTIALS_DIALOG = `${meta.id}.ManageCredentialsDialog`;
16
16
 
17
17
  export const RecoveryCredentialsContainer = () => {
18
18
  const { t } = useTranslation(meta.id);
package/src/meta.ts CHANGED
@@ -6,7 +6,7 @@ import { type Plugin } from '@dxos/app-framework';
6
6
  import { trim } from '@dxos/util';
7
7
 
8
8
  export const meta: Plugin.Meta = {
9
- id: 'dxos.org/plugin/client',
9
+ id: 'org.dxos.plugin.client',
10
10
  name: 'Client',
11
11
  description: trim`
12
12
  Core client connectivity and peer-to-peer networking infrastructure.
@@ -10,7 +10,7 @@ import { type Type } from '@dxos/echo';
10
10
  import { meta } from '../meta';
11
11
 
12
12
  export namespace ClientCapabilities {
13
- export const Client = Capability.make<Client>(`${meta.id}/capability/client`);
14
- export const Schema = Capability.make<Type.AnyEntity[]>(`${meta.id}/capability/schema`);
15
- export const Migration = Capability.make<ObjectMigration[]>(`${meta.id}/capability/migration`);
13
+ export const Client = Capability.make<Client>(`${meta.id}.capability.client`);
14
+ export const Schema = Capability.make<Type.AnyEntity[]>(`${meta.id}.capability.schema`);
15
+ export const Migration = Capability.make<ObjectMigration[]>(`${meta.id}.capability.migration`);
16
16
  }
@@ -7,9 +7,9 @@ import { ActivationEvent } from '@dxos/app-framework';
7
7
  import { meta } from '../meta';
8
8
 
9
9
  export namespace ClientEvents {
10
- export const ClientReady = ActivationEvent.make(`${meta.id}/event/client-ready`);
11
- export const SetupSchema = ActivationEvent.make(`${meta.id}/event/setup-schema`);
12
- export const SetupMigration = ActivationEvent.make(`${meta.id}/event/setup-migration`);
13
- export const IdentityCreated = ActivationEvent.make(`${meta.id}/event/identity-created`);
14
- export const SpacesReady = ActivationEvent.make(`${meta.id}/event/spaces-ready`);
10
+ export const ClientReady = ActivationEvent.make(`${meta.id}.event.client-ready`);
11
+ export const SetupSchema = ActivationEvent.make(`${meta.id}.event.setup-schema`);
12
+ export const SetupMigration = ActivationEvent.make(`${meta.id}.event.setup-migration`);
13
+ export const IdentityCreated = ActivationEvent.make(`${meta.id}.event.identity-created`);
14
+ export const SpacesReady = ActivationEvent.make(`${meta.id}.event.spaces-ready`);
15
15
  }
@@ -31,59 +31,59 @@ export namespace ClientAction {
31
31
  data: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),
32
32
  });
33
33
 
34
- export class CreateIdentity extends Schema.TaggedClass<CreateIdentity>()(`${meta.id}/action/create-identity`, {
34
+ export class CreateIdentity extends Schema.TaggedClass<CreateIdentity>()(`${meta.id}.action.create-identity`, {
35
35
  input: ProfileSchema,
36
36
  output: IdentitySchema,
37
37
  }) {}
38
38
 
39
- export class JoinIdentity extends Schema.TaggedClass<JoinIdentity>()(`${meta.id}/action/join-identity`, {
39
+ export class JoinIdentity extends Schema.TaggedClass<JoinIdentity>()(`${meta.id}.action.join-identity`, {
40
40
  input: Schema.Struct({
41
41
  invitationCode: Schema.optional(Schema.String),
42
42
  }),
43
43
  output: Schema.Void,
44
44
  }) {}
45
45
 
46
- export class ShareIdentity extends Schema.TaggedClass<ShareIdentity>()(`${meta.id}/action/share-identity`, {
46
+ export class ShareIdentity extends Schema.TaggedClass<ShareIdentity>()(`${meta.id}.action.share-identity`, {
47
47
  input: Schema.Void,
48
48
  output: Schema.Void,
49
49
  }) {}
50
50
 
51
- export class RecoverIdentity extends Schema.TaggedClass<RecoverIdentity>()(`${meta.id}/action/recover-identity`, {
51
+ export class RecoverIdentity extends Schema.TaggedClass<RecoverIdentity>()(`${meta.id}.action.recover-identity`, {
52
52
  input: Schema.Void,
53
53
  output: Schema.Void,
54
54
  }) {}
55
55
 
56
- export class ResetStorage extends Schema.TaggedClass<ResetStorage>()(`${meta.id}/action/reset-storage`, {
56
+ export class ResetStorage extends Schema.TaggedClass<ResetStorage>()(`${meta.id}.action.reset-storage`, {
57
57
  input: Schema.Struct({
58
58
  mode: Schema.optional(Schema.String),
59
59
  }),
60
60
  output: Schema.Void,
61
61
  }) {}
62
62
 
63
- export class CreateAgent extends Schema.TaggedClass<CreateAgent>()(`${meta.id}/action/create-agent`, {
63
+ export class CreateAgent extends Schema.TaggedClass<CreateAgent>()(`${meta.id}.action.create-agent`, {
64
64
  input: Schema.Void,
65
65
  output: Schema.Void,
66
66
  }) {}
67
67
 
68
68
  export class CreateRecoveryCode extends Schema.TaggedClass<CreateRecoveryCode>()(
69
- `${meta.id}/action/create-recovery-code`,
69
+ `${meta.id}.action.create-recovery-code`,
70
70
  {
71
71
  input: Schema.Void,
72
72
  output: Schema.Void,
73
73
  },
74
74
  ) {}
75
75
 
76
- export class CreatePasskey extends Schema.TaggedClass<CreatePasskey>()(`${meta.id}/action/create-passkey`, {
76
+ export class CreatePasskey extends Schema.TaggedClass<CreatePasskey>()(`${meta.id}.action.create-passkey`, {
77
77
  input: Schema.Void,
78
78
  output: Schema.Void,
79
79
  }) {}
80
80
 
81
- export class RedeemPasskey extends Schema.TaggedClass<RedeemPasskey>()(`${meta.id}/action/redeem-passkey`, {
81
+ export class RedeemPasskey extends Schema.TaggedClass<RedeemPasskey>()(`${meta.id}.action.redeem-passkey`, {
82
82
  input: Schema.Void,
83
83
  output: Schema.Void,
84
84
  }) {}
85
85
 
86
- export class RedeemToken extends Schema.TaggedClass<RedeemToken>()(`${meta.id}/action/redeem-token`, {
86
+ export class RedeemToken extends Schema.TaggedClass<RedeemToken>()(`${meta.id}.action.redeem-token`, {
87
87
  input: Schema.Struct({
88
88
  token: Schema.String,
89
89
  }),
@@ -91,7 +91,7 @@ export namespace ClientAction {
91
91
  }) {}
92
92
  }
93
93
 
94
- const CLIENT_OPERATION = `${meta.id}/operation`;
94
+ const CLIENT_OPERATION = `${meta.id}.operation`;
95
95
 
96
96
  /**
97
97
  * Operations for the Client plugin.
@@ -104,7 +104,7 @@ export namespace ClientOperation {
104
104
  });
105
105
 
106
106
  export const CreateIdentity = Operation.make({
107
- meta: { key: `${CLIENT_OPERATION}/create-identity`, name: 'Create Identity' },
107
+ meta: { key: `${CLIENT_OPERATION}.create-identity`, name: 'Create Identity' },
108
108
  services: [Capability.Service],
109
109
  schema: {
110
110
  input: ProfileSchema,
@@ -113,7 +113,7 @@ export namespace ClientOperation {
113
113
  });
114
114
 
115
115
  export const JoinIdentity = Operation.make({
116
- meta: { key: `${CLIENT_OPERATION}/join-identity`, name: 'Join Identity' },
116
+ meta: { key: `${CLIENT_OPERATION}.join-identity`, name: 'Join Identity' },
117
117
  services: [Capability.Service],
118
118
  schema: {
119
119
  input: Schema.Struct({
@@ -124,7 +124,7 @@ export namespace ClientOperation {
124
124
  });
125
125
 
126
126
  export const ShareIdentity = Operation.make({
127
- meta: { key: `${CLIENT_OPERATION}/share-identity`, name: 'Share Identity' },
127
+ meta: { key: `${CLIENT_OPERATION}.share-identity`, name: 'Share Identity' },
128
128
  services: [Capability.Service],
129
129
  schema: {
130
130
  input: Schema.Void,
@@ -133,7 +133,7 @@ export namespace ClientOperation {
133
133
  });
134
134
 
135
135
  export const RecoverIdentity = Operation.make({
136
- meta: { key: `${CLIENT_OPERATION}/recover-identity`, name: 'Recover Identity' },
136
+ meta: { key: `${CLIENT_OPERATION}.recover-identity`, name: 'Recover Identity' },
137
137
  services: [Capability.Service],
138
138
  schema: {
139
139
  input: Schema.Void,
@@ -142,7 +142,7 @@ export namespace ClientOperation {
142
142
  });
143
143
 
144
144
  export const ResetStorage = Operation.make({
145
- meta: { key: `${CLIENT_OPERATION}/reset-storage`, name: 'Reset Storage' },
145
+ meta: { key: `${CLIENT_OPERATION}.reset-storage`, name: 'Reset Storage' },
146
146
  services: [Capability.Service],
147
147
  schema: {
148
148
  input: Schema.Struct({
@@ -153,7 +153,7 @@ export namespace ClientOperation {
153
153
  });
154
154
 
155
155
  export const CreateAgent = Operation.make({
156
- meta: { key: `${CLIENT_OPERATION}/create-agent`, name: 'Create Agent' },
156
+ meta: { key: `${CLIENT_OPERATION}.create-agent`, name: 'Create Agent' },
157
157
  services: [Capability.Service],
158
158
  schema: {
159
159
  input: Schema.Void,
@@ -162,7 +162,7 @@ export namespace ClientOperation {
162
162
  });
163
163
 
164
164
  export const CreateRecoveryCode = Operation.make({
165
- meta: { key: `${CLIENT_OPERATION}/create-recovery-code`, name: 'Create Recovery Code' },
165
+ meta: { key: `${CLIENT_OPERATION}.create-recovery-code`, name: 'Create Recovery Code' },
166
166
  services: [Capability.Service],
167
167
  schema: {
168
168
  input: Schema.Void,
@@ -171,7 +171,7 @@ export namespace ClientOperation {
171
171
  });
172
172
 
173
173
  export const CreatePasskey = Operation.make({
174
- meta: { key: `${CLIENT_OPERATION}/create-passkey`, name: 'Create Passkey' },
174
+ meta: { key: `${CLIENT_OPERATION}.create-passkey`, name: 'Create Passkey' },
175
175
  services: [Capability.Service],
176
176
  schema: {
177
177
  input: Schema.Void,
@@ -180,7 +180,7 @@ export namespace ClientOperation {
180
180
  });
181
181
 
182
182
  export const RedeemPasskey = Operation.make({
183
- meta: { key: `${CLIENT_OPERATION}/redeem-passkey`, name: 'Redeem Passkey' },
183
+ meta: { key: `${CLIENT_OPERATION}.redeem-passkey`, name: 'Redeem Passkey' },
184
184
  services: [Capability.Service],
185
185
  schema: {
186
186
  input: Schema.Void,
@@ -189,7 +189,7 @@ export namespace ClientOperation {
189
189
  });
190
190
 
191
191
  export const RedeemToken = Operation.make({
192
- meta: { key: `${CLIENT_OPERATION}/redeem-token`, name: 'Redeem Token' },
192
+ meta: { key: `${CLIENT_OPERATION}.redeem-token`, name: 'Redeem Token' },
193
193
  services: [Capability.Service],
194
194
  schema: {
195
195
  input: Schema.Struct({
@@ -1,15 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-N2GMSVDQ.mjs";
4
-
5
- // src/constants.ts
6
- var JOIN_DIALOG = `${meta.id}/JoinDialog`;
7
- var RECOVERY_CODE_DIALOG = `${meta.id}/RecoveryCodeDialog`;
8
- var RESET_DIALOG = `${meta.id}/ResetDialog`;
9
-
10
- export {
11
- JOIN_DIALOG,
12
- RECOVERY_CODE_DIALOG,
13
- RESET_DIALOG
14
- };
15
- //# sourceMappingURL=chunk-VYX3ROUX.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/operation-resolver/operation-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { PublicKey } from '@dxos/client';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { OperationResolver } from '@dxos/operation';\nimport { Operation } from '@dxos/operation';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/types';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport { JOIN_DIALOG, RECOVERY_CODE_DIALOG, RESET_DIALOG } from '../../constants';\nimport { ClientEvents } from '../../types';\nimport { Account, ClientCapabilities, ClientOperation } from '../../types';\n\ntype OperationResolverOptions = {\n appName?: string;\n};\n\nconst RECOVER_IDENTITY_RPC_TIMEOUT = 20_000;\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* ({ appName = 'Composer' }: OperationResolverOptions = {}) {\n return Capability.contributes(Capabilities.OperationResolver, [\n //\n // CreateIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.CreateIdentity,\n handler: Effect.fnUntraced(function* (profile) {\n const manager = yield* Capability.get(Capabilities.PluginManager);\n const client = yield* Capability.get(ClientCapabilities.Client);\n const data = yield* Effect.promise(() => client.halo.createIdentity(profile));\n yield* Effect.promise(() => runAndForwardErrors(manager.activate(ClientEvents.IdentityCreated)));\n yield* Operation.schedule(ObservabilityOperation.SendEvent, { name: 'identity.create' });\n return data;\n }),\n }),\n\n //\n // JoinIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.JoinIdentity,\n handler: Effect.fnUntraced(function* (data) {\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: JOIN_DIALOG,\n blockAlign: 'start',\n props: {\n initialInvitationCode: data.invitationCode,\n initialDisposition: 'accept-halo-invitation',\n },\n });\n }),\n }),\n\n //\n // ShareIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.ShareIdentity,\n handler: Effect.fnUntraced(function* () {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: Account.id });\n yield* Operation.invoke(LayoutOperation.Open, { subject: [Account.Profile] });\n yield* Operation.schedule(ObservabilityOperation.SendEvent, { name: 'identity.share' });\n }),\n }),\n\n //\n // RecoverIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.RecoverIdentity,\n handler: Effect.fnUntraced(function* () {\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: JOIN_DIALOG,\n blockAlign: 'start',\n props: {\n initialDisposition: 'recover-identity',\n } satisfies Partial<JoinPanelProps>,\n });\n }),\n }),\n\n //\n // ResetStorage\n //\n OperationResolver.make({\n operation: ClientOperation.ResetStorage,\n handler: Effect.fnUntraced(function* (data) {\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: RESET_DIALOG,\n blockAlign: 'start',\n props: {\n mode: data.mode ?? 'reset storage',\n },\n });\n }),\n }),\n\n //\n // CreateAgent\n //\n OperationResolver.make({\n operation: ClientOperation.CreateAgent,\n handler: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.EdgeAgentService, 'Missing EdgeAgentService');\n yield* Effect.promise(() =>\n client.services.services.EdgeAgentService!.createAgent(undefined, { timeout: 10_000 }),\n );\n }),\n }),\n\n //\n // CreateRecoveryCode\n //\n OperationResolver.make({\n operation: ClientOperation.CreateRecoveryCode,\n handler: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n const { recoveryCode } = yield* Effect.promise(() =>\n client.services.services.IdentityService!.createRecoveryCredential({}),\n );\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: RECOVERY_CODE_DIALOG,\n blockAlign: 'start',\n type: 'alert',\n props: { code: recoveryCode },\n });\n }),\n }),\n\n //\n // CreatePasskey\n //\n OperationResolver.make({\n operation: ClientOperation.CreatePasskey,\n handler: 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 const credential = yield* Effect.promise(() =>\n navigator.credentials.create({\n publicKey: {\n challenge: new Uint8Array(),\n rp: { id: location.hostname, name: appName },\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 }, // Ed25519 (not yet supported across all browsers)\n { type: 'public-key', alg: -7 }, // ES256\n ],\n authenticatorSelection: {\n residentKey: 'required',\n requireResidentKey: true,\n },\n },\n }),\n );\n\n invariant(credential, 'Credential not available');\n const recoveryKey = PublicKey.from(new Uint8Array((credential as any).response.getPublicKey()));\n const algorithm = (credential as any).response.getPublicKeyAlgorithm() === -7 ? 'ES256' : 'ED25519';\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 //\n // RedeemPasskey\n //\n OperationResolver.make({\n operation: ClientOperation.RedeemPasskey,\n handler: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n const { deviceKey, controlFeedKey, challenge } = yield* Effect.promise(() =>\n client.services.services.IdentityService!.requestRecoveryChallenge(),\n );\n const credential = yield* Effect.promise(() =>\n navigator.credentials.get({\n publicKey: {\n challenge: Buffer.from(challenge, 'base64'),\n rpId: location.hostname,\n userVerification: 'required',\n },\n }),\n );\n const lookupKey = PublicKey.from(new Uint8Array((credential as any).response.userHandle));\n yield* Effect.promise(() =>\n client.services.services.IdentityService!.recoverIdentity(\n {\n external: {\n lookupKey,\n deviceKey,\n controlFeedKey,\n signature: Buffer.from((credential as any).response.signature),\n clientDataJson: Buffer.from((credential as any).response.clientDataJSON),\n authenticatorData: Buffer.from((credential as any).response.authenticatorData),\n },\n },\n { timeout: RECOVER_IDENTITY_RPC_TIMEOUT },\n ),\n );\n }),\n }),\n\n //\n // RedeemToken\n //\n OperationResolver.make({\n operation: ClientOperation.RedeemToken,\n handler: Effect.fnUntraced(function* (data) {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n yield* Effect.promise(() =>\n client.services.services.IdentityService!.recoverIdentity(\n { token: data.token },\n { timeout: RECOVER_IDENTITY_RPC_TIMEOUT },\n ),\n );\n }),\n }),\n ]);\n }),\n);\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,2BAA2B;AACpC,SAASC,iBAAiB;AAC1B,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAC1B,SAASC,8BAA8B;;AAWvC,IAAMC,+BAA+B;AAErC,IAAA,6BAAeC,WAAWC,WACjBC,kBAAW,WAAW,EAAEC,UAAU,WAAU,IAA+B,CAAC,GAAC;AAClF,SAAOH,WAAWI,YAAYC,aAAaC,mBAAmB;;;;IAI5DA,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgBC;MAC3BC,SAAgBT,kBAAW,WAAWU,SAAO;AAC3C,cAAMC,UAAU,OAAOb,WAAWc,IAAIT,aAAaU,aAAa;AAChE,cAAMC,SAAS,OAAOhB,WAAWc,IAAIG,mBAAmBC,MAAM;AAC9D,cAAMC,OAAO,OAAcC,eAAQ,MAAMJ,OAAOK,KAAKC,eAAeV,OAAAA,CAAAA;AACpE,eAAcQ,eAAQ,MAAMG,oBAAoBV,QAAQW,SAASC,aAAaC,eAAe,CAAA,CAAA;AAC7F,eAAOC,UAAUC,SAASC,uBAAuBC,WAAW;UAAEC,MAAM;QAAkB,CAAA;AACtF,eAAOZ;MACT,CAAA;IACF,CAAA;;;;IAKAb,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgBuB;MAC3BrB,SAAgBT,kBAAW,WAAWiB,MAAI;AACxC,eAAOQ,UAAUM,OAAOC,gBAAgBC,cAAc;UACpDC,SAASC;UACTC,YAAY;UACZC,OAAO;YACLC,uBAAuBrB,KAAKsB;YAC5BC,oBAAoB;UACtB;QACF,CAAA;MACF,CAAA;IACF,CAAA;;;;IAKApC,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgBkC;MAC3BhC,SAAgBT,kBAAW,aAAA;AACzB,eAAOyB,UAAUM,OAAOC,gBAAgBU,iBAAiB;UAAER,SAASS,QAAQC;QAAG,CAAA;AAC/E,eAAOnB,UAAUM,OAAOC,gBAAgBa,MAAM;UAAEX,SAAS;YAACS,QAAQG;;QAAS,CAAA;AAC3E,eAAOrB,UAAUC,SAASC,uBAAuBC,WAAW;UAAEC,MAAM;QAAiB,CAAA;MACvF,CAAA;IACF,CAAA;;;;IAKAzB,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgBwC;MAC3BtC,SAAgBT,kBAAW,aAAA;AACzB,eAAOyB,UAAUM,OAAOC,gBAAgBC,cAAc;UACpDC,SAASC;UACTC,YAAY;UACZC,OAAO;YACLG,oBAAoB;UACtB;QACF,CAAA;MACF,CAAA;IACF,CAAA;;;;IAKApC,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgByC;MAC3BvC,SAAgBT,kBAAW,WAAWiB,MAAI;AACxC,eAAOQ,UAAUM,OAAOC,gBAAgBC,cAAc;UACpDC,SAASe;UACTb,YAAY;UACZC,OAAO;YACLa,MAAMjC,KAAKiC,QAAQ;UACrB;QACF,CAAA;MACF,CAAA;IACF,CAAA;;;;IAKA9C,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgB4C;MAC3B1C,SAAgBT,kBAAW,aAAA;AACzB,cAAMc,SAAS,OAAOhB,WAAWc,IAAIG,mBAAmBC,MAAM;AAC9DoC,kBAAUtC,OAAOuC,SAASA,SAASC,kBAAkB,4BAAA;;;;;;;;;AACrD,eAAcpC,eAAQ,MACpBJ,OAAOuC,SAASA,SAASC,iBAAkBC,YAAYC,QAAW;UAAEC,SAAS;QAAO,CAAA,CAAA;MAExF,CAAA;IACF,CAAA;;;;IAKArD,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgBmD;MAC3BjD,SAAgBT,kBAAW,aAAA;AACzB,cAAMc,SAAS,OAAOhB,WAAWc,IAAIG,mBAAmBC,MAAM;AAC9DoC,kBAAUtC,OAAOuC,SAASA,SAASM,iBAAiB,iCAAA;;;;;;;;;AACpD,cAAM,EAAEC,aAAY,IAAK,OAAc1C,eAAQ,MAC7CJ,OAAOuC,SAASA,SAASM,gBAAiBE,yBAAyB,CAAC,CAAA,CAAA;AAEtE,eAAOpC,UAAUM,OAAOC,gBAAgBC,cAAc;UACpDC,SAAS4B;UACT1B,YAAY;UACZ2B,MAAM;UACN1B,OAAO;YAAE2B,MAAMJ;UAAa;QAC9B,CAAA;MACF,CAAA;IACF,CAAA;;;;IAKAxD,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgB0D;MAC3BxD,SAAgBT,kBAAW,aAAA;AACzB,cAAMc,SAAS,OAAOhB,WAAWc,IAAIG,mBAAmBC,MAAM;AAC9D,cAAMkD,WAAWpD,OAAOK,KAAK+C,SAAStD,IAAG;AACzCwC,kBAAUc,UAAU,0BAAA;;;;;;;;;AAEpB,cAAMC,YAAYC,UAAUC,OAAM;AAClC,cAAMC,aAAa,OAAcpD,eAAQ,MACvCqD,UAAUC,YAAYC,OAAO;UAC3BC,WAAW;YACTC,WAAW,IAAIC,WAAAA;YACfC,IAAI;cAAEjC,IAAIkC,SAASC;cAAUlD,MAAM5B;YAAQ;YAC3C+E,MAAM;cACJpC,IAAIuB,UAAUc,aAAY;cAC1BpD,MAAMqC,SAASgB;cACfC,aAAajB,SAASxD,SAASyE,eAAe;YAChD;YACAC,kBAAkB;cAChB;gBAAErB,MAAM;gBAAcsB,KAAK;cAAG;cAC9B;gBAAEtB,MAAM;gBAAcsB,KAAK;cAAG;;YAEhCC,wBAAwB;cACtBC,aAAa;cACbC,oBAAoB;YACtB;UACF;QACF,CAAA,CAAA;AAGFpC,kBAAUkB,YAAY,4BAAA;;;;;;;;;AACtB,cAAMmB,cAAcrB,UAAUsB,KAAK,IAAId,WAAYN,WAAmBqB,SAASC,aAAY,CAAA,CAAA;AAC3F,cAAMC,YAAavB,WAAmBqB,SAASG,sBAAqB,MAAO,KAAK,UAAU;AAE1F1C,kBAAUtC,OAAOuC,SAASA,SAASM,iBAAiB,iCAAA;;;;;;;;;AACpD,eAAczC,eAAQ,MACpBJ,OAAOuC,SAASA,SAASM,gBAAiBE,yBAAyB;UACjE5C,MAAM;YACJwE;YACAI;YACA1B;UACF;QACF,CAAA,CAAA;MAEJ,CAAA;IACF,CAAA;;;;IAKA/D,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgBwF;MAC3BtF,SAAgBT,kBAAW,aAAA;AACzB,cAAMc,SAAS,OAAOhB,WAAWc,IAAIG,mBAAmBC,MAAM;AAC9DoC,kBAAUtC,OAAOuC,SAASA,SAASM,iBAAiB,iCAAA;;;;;;;;;AACpD,cAAM,EAAEqC,WAAWC,gBAAgBtB,UAAS,IAAK,OAAczD,eAAQ,MACrEJ,OAAOuC,SAASA,SAASM,gBAAiBuC,yBAAwB,CAAA;AAEpE,cAAM5B,aAAa,OAAcpD,eAAQ,MACvCqD,UAAUC,YAAY5D,IAAI;UACxB8D,WAAW;YACTC,WAAWwB,OAAOT,KAAKf,WAAW,QAAA;YAClCyB,MAAMtB,SAASC;YACfsB,kBAAkB;UACpB;QACF,CAAA,CAAA;AAEF,cAAMlC,YAAYC,UAAUsB,KAAK,IAAId,WAAYN,WAAmBqB,SAASW,UAAU,CAAA;AACvF,eAAcpF,eAAQ,MACpBJ,OAAOuC,SAASA,SAASM,gBAAiB4C,gBACxC;UACEC,UAAU;YACRrC;YACA6B;YACAC;YACAQ,WAAWN,OAAOT,KAAMpB,WAAmBqB,SAASc,SAAS;YAC7DC,gBAAgBP,OAAOT,KAAMpB,WAAmBqB,SAASgB,cAAc;YACvEC,mBAAmBT,OAAOT,KAAMpB,WAAmBqB,SAASiB,iBAAiB;UAC/E;QACF,GACA;UAAEnD,SAAS5D;QAA6B,CAAA,CAAA;MAG9C,CAAA;IACF,CAAA;;;;IAKAO,kBAAkBC,KAAK;MACrBC,WAAWC,gBAAgBsG;MAC3BpG,SAAgBT,kBAAW,WAAWiB,MAAI;AACxC,cAAMH,SAAS,OAAOhB,WAAWc,IAAIG,mBAAmBC,MAAM;AAC9DoC,kBAAUtC,OAAOuC,SAASA,SAASM,iBAAiB,iCAAA;;;;;;;;;AACpD,eAAczC,eAAQ,MACpBJ,OAAOuC,SAASA,SAASM,gBAAiB4C,gBACxC;UAAEO,OAAO7F,KAAK6F;QAAM,GACpB;UAAErD,SAAS5D;QAA6B,CAAA,CAAA;MAG9C,CAAA;IACF,CAAA;GACD;AACH,CAAA,CAAA;",
6
- "names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "PublicKey", "runAndForwardErrors", "invariant", "OperationResolver", "Operation", "ObservabilityOperation", "RECOVER_IDENTITY_RPC_TIMEOUT", "Capability", "makeModule", "fnUntraced", "appName", "contributes", "Capabilities", "OperationResolver", "make", "operation", "ClientOperation", "CreateIdentity", "handler", "profile", "manager", "get", "PluginManager", "client", "ClientCapabilities", "Client", "data", "promise", "halo", "createIdentity", "runAndForwardErrors", "activate", "ClientEvents", "IdentityCreated", "Operation", "schedule", "ObservabilityOperation", "SendEvent", "name", "JoinIdentity", "invoke", "LayoutOperation", "UpdateDialog", "subject", "JOIN_DIALOG", "blockAlign", "props", "initialInvitationCode", "invitationCode", "initialDisposition", "ShareIdentity", "SwitchWorkspace", "Account", "id", "Open", "Profile", "RecoverIdentity", "ResetStorage", "RESET_DIALOG", "mode", "CreateAgent", "invariant", "services", "EdgeAgentService", "createAgent", "undefined", "timeout", "CreateRecoveryCode", "IdentityService", "recoveryCode", "createRecoveryCredential", "RECOVERY_CODE_DIALOG", "type", "code", "CreatePasskey", "identity", "lookupKey", "PublicKey", "random", "credential", "navigator", "credentials", "create", "publicKey", "challenge", "Uint8Array", "rp", "location", "hostname", "user", "asUint8Array", "did", "displayName", "pubKeyCredParams", "alg", "authenticatorSelection", "residentKey", "requireResidentKey", "recoveryKey", "from", "response", "getPublicKey", "algorithm", "getPublicKeyAlgorithm", "RedeemPasskey", "deviceKey", "controlFeedKey", "requestRecoveryChallenge", "Buffer", "rpId", "userVerification", "userHandle", "recoverIdentity", "external", "signature", "clientDataJson", "clientDataJSON", "authenticatorData", "RedeemToken", "token"]
7
- }
@@ -1,16 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- meta
4
- } from "./chunk-RGULICLJ.mjs";
5
-
6
- // src/constants.ts
7
- var JOIN_DIALOG = `${meta.id}/JoinDialog`;
8
- var RECOVERY_CODE_DIALOG = `${meta.id}/RecoveryCodeDialog`;
9
- var RESET_DIALOG = `${meta.id}/ResetDialog`;
10
-
11
- export {
12
- JOIN_DIALOG,
13
- RECOVERY_CODE_DIALOG,
14
- RESET_DIALOG
15
- };
16
- //# sourceMappingURL=chunk-HKSNTZF5.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/operation-resolver/operation-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { PublicKey } from '@dxos/client';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { OperationResolver } from '@dxos/operation';\nimport { Operation } from '@dxos/operation';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/types';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport { JOIN_DIALOG, RECOVERY_CODE_DIALOG, RESET_DIALOG } from '../../constants';\nimport { ClientEvents } from '../../types';\nimport { Account, ClientCapabilities, ClientOperation } from '../../types';\n\ntype OperationResolverOptions = {\n appName?: string;\n};\n\nconst RECOVER_IDENTITY_RPC_TIMEOUT = 20_000;\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* ({ appName = 'Composer' }: OperationResolverOptions = {}) {\n return Capability.contributes(Capabilities.OperationResolver, [\n //\n // CreateIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.CreateIdentity,\n handler: Effect.fnUntraced(function* (profile) {\n const manager = yield* Capability.get(Capabilities.PluginManager);\n const client = yield* Capability.get(ClientCapabilities.Client);\n const data = yield* Effect.promise(() => client.halo.createIdentity(profile));\n yield* Effect.promise(() => runAndForwardErrors(manager.activate(ClientEvents.IdentityCreated)));\n yield* Operation.schedule(ObservabilityOperation.SendEvent, { name: 'identity.create' });\n return data;\n }),\n }),\n\n //\n // JoinIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.JoinIdentity,\n handler: Effect.fnUntraced(function* (data) {\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: JOIN_DIALOG,\n blockAlign: 'start',\n props: {\n initialInvitationCode: data.invitationCode,\n initialDisposition: 'accept-halo-invitation',\n },\n });\n }),\n }),\n\n //\n // ShareIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.ShareIdentity,\n handler: Effect.fnUntraced(function* () {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: Account.id });\n yield* Operation.invoke(LayoutOperation.Open, { subject: [Account.Profile] });\n yield* Operation.schedule(ObservabilityOperation.SendEvent, { name: 'identity.share' });\n }),\n }),\n\n //\n // RecoverIdentity\n //\n OperationResolver.make({\n operation: ClientOperation.RecoverIdentity,\n handler: Effect.fnUntraced(function* () {\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: JOIN_DIALOG,\n blockAlign: 'start',\n props: {\n initialDisposition: 'recover-identity',\n } satisfies Partial<JoinPanelProps>,\n });\n }),\n }),\n\n //\n // ResetStorage\n //\n OperationResolver.make({\n operation: ClientOperation.ResetStorage,\n handler: Effect.fnUntraced(function* (data) {\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: RESET_DIALOG,\n blockAlign: 'start',\n props: {\n mode: data.mode ?? 'reset storage',\n },\n });\n }),\n }),\n\n //\n // CreateAgent\n //\n OperationResolver.make({\n operation: ClientOperation.CreateAgent,\n handler: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.EdgeAgentService, 'Missing EdgeAgentService');\n yield* Effect.promise(() =>\n client.services.services.EdgeAgentService!.createAgent(undefined, { timeout: 10_000 }),\n );\n }),\n }),\n\n //\n // CreateRecoveryCode\n //\n OperationResolver.make({\n operation: ClientOperation.CreateRecoveryCode,\n handler: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n const { recoveryCode } = yield* Effect.promise(() =>\n client.services.services.IdentityService!.createRecoveryCredential({}),\n );\n yield* Operation.invoke(LayoutOperation.UpdateDialog, {\n subject: RECOVERY_CODE_DIALOG,\n blockAlign: 'start',\n type: 'alert',\n props: { code: recoveryCode },\n });\n }),\n }),\n\n //\n // CreatePasskey\n //\n OperationResolver.make({\n operation: ClientOperation.CreatePasskey,\n handler: 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 const credential = yield* Effect.promise(() =>\n navigator.credentials.create({\n publicKey: {\n challenge: new Uint8Array(),\n rp: { id: location.hostname, name: appName },\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 }, // Ed25519 (not yet supported across all browsers)\n { type: 'public-key', alg: -7 }, // ES256\n ],\n authenticatorSelection: {\n residentKey: 'required',\n requireResidentKey: true,\n },\n },\n }),\n );\n\n invariant(credential, 'Credential not available');\n const recoveryKey = PublicKey.from(new Uint8Array((credential as any).response.getPublicKey()));\n const algorithm = (credential as any).response.getPublicKeyAlgorithm() === -7 ? 'ES256' : 'ED25519';\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 //\n // RedeemPasskey\n //\n OperationResolver.make({\n operation: ClientOperation.RedeemPasskey,\n handler: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n const { deviceKey, controlFeedKey, challenge } = yield* Effect.promise(() =>\n client.services.services.IdentityService!.requestRecoveryChallenge(),\n );\n const credential = yield* Effect.promise(() =>\n navigator.credentials.get({\n publicKey: {\n challenge: Buffer.from(challenge, 'base64'),\n rpId: location.hostname,\n userVerification: 'required',\n },\n }),\n );\n const lookupKey = PublicKey.from(new Uint8Array((credential as any).response.userHandle));\n yield* Effect.promise(() =>\n client.services.services.IdentityService!.recoverIdentity(\n {\n external: {\n lookupKey,\n deviceKey,\n controlFeedKey,\n signature: Buffer.from((credential as any).response.signature),\n clientDataJson: Buffer.from((credential as any).response.clientDataJSON),\n authenticatorData: Buffer.from((credential as any).response.authenticatorData),\n },\n },\n { timeout: RECOVER_IDENTITY_RPC_TIMEOUT },\n ),\n );\n }),\n }),\n\n //\n // RedeemToken\n //\n OperationResolver.make({\n operation: ClientOperation.RedeemToken,\n handler: Effect.fnUntraced(function* (data) {\n const client = yield* Capability.get(ClientCapabilities.Client);\n invariant(client.services.services.IdentityService, 'IdentityService not available');\n yield* Effect.promise(() =>\n client.services.services.IdentityService!.recoverIdentity(\n { token: data.token },\n { timeout: RECOVER_IDENTITY_RPC_TIMEOUT },\n ),\n );\n }),\n }),\n ]);\n }),\n);\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "PublicKey", "runAndForwardErrors", "invariant", "OperationResolver", "Operation", "ObservabilityOperation", "RECOVER_IDENTITY_RPC_TIMEOUT", "Capability", "makeModule", "fnUntraced", "appName", "contributes", "Capabilities", "OperationResolver", "make", "operation", "ClientOperation", "CreateIdentity", "handler", "profile", "manager", "get", "PluginManager", "client", "ClientCapabilities", "Client", "data", "promise", "halo", "createIdentity", "runAndForwardErrors", "activate", "ClientEvents", "IdentityCreated", "Operation", "schedule", "ObservabilityOperation", "SendEvent", "name", "JoinIdentity", "invoke", "LayoutOperation", "UpdateDialog", "subject", "JOIN_DIALOG", "blockAlign", "props", "initialInvitationCode", "invitationCode", "initialDisposition", "ShareIdentity", "SwitchWorkspace", "Account", "id", "Open", "Profile", "RecoverIdentity", "ResetStorage", "RESET_DIALOG", "mode", "CreateAgent", "invariant", "services", "EdgeAgentService", "createAgent", "undefined", "timeout", "CreateRecoveryCode", "IdentityService", "recoveryCode", "createRecoveryCredential", "RECOVERY_CODE_DIALOG", "type", "code", "CreatePasskey", "identity", "lookupKey", "PublicKey", "random", "credential", "navigator", "credentials", "create", "publicKey", "challenge", "Uint8Array", "rp", "location", "hostname", "user", "asUint8Array", "did", "displayName", "pubKeyCredParams", "alg", "authenticatorSelection", "residentKey", "requireResidentKey", "recoveryKey", "from", "response", "getPublicKey", "algorithm", "getPublicKeyAlgorithm", "RedeemPasskey", "deviceKey", "controlFeedKey", "requestRecoveryChallenge", "Buffer", "rpId", "userVerification", "userHandle", "recoverIdentity", "external", "signature", "clientDataJson", "clientDataJSON", "authenticatorData", "RedeemToken", "token"]
7
- }