@dxos/protocols 0.8.1-main.ae460ac → 0.8.1-staging.31c3ee1

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 (94) hide show
  1. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts +110 -1
  2. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  3. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js +44 -19
  4. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  5. package/dist/cjs/src/buf/proto/gen/dxos/edge/calls_pb.d.ts +35 -16
  6. package/dist/cjs/src/buf/proto/gen/dxos/edge/calls_pb.d.ts.map +1 -1
  7. package/dist/cjs/src/buf/proto/gen/dxos/edge/calls_pb.js +12 -6
  8. package/dist/cjs/src/buf/proto/gen/dxos/edge/calls_pb.js.map +1 -1
  9. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.d.ts +14 -0
  10. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.d.ts.map +1 -1
  11. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.js +11 -6
  12. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.js.map +1 -1
  13. package/dist/cjs/src/edge-error.d.ts +26 -0
  14. package/dist/cjs/src/edge-error.d.ts.map +1 -0
  15. package/dist/cjs/src/edge-error.js +63 -0
  16. package/dist/cjs/src/edge-error.js.map +1 -0
  17. package/dist/cjs/src/edge.d.ts +34 -25
  18. package/dist/cjs/src/edge.d.ts.map +1 -1
  19. package/dist/cjs/src/edge.js +13 -57
  20. package/dist/cjs/src/edge.js.map +1 -1
  21. package/dist/cjs/src/index.d.ts +2 -0
  22. package/dist/cjs/src/index.d.ts.map +1 -1
  23. package/dist/cjs/src/index.js +2 -0
  24. package/dist/cjs/src/index.js.map +1 -1
  25. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts +46 -0
  26. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  27. package/dist/cjs/src/proto/gen/dxos/client/services.js.map +1 -1
  28. package/dist/cjs/src/proto/gen/dxos/edge/calls.d.ts +16 -11
  29. package/dist/cjs/src/proto/gen/dxos/edge/calls.d.ts.map +1 -1
  30. package/dist/cjs/src/proto/gen/dxos/edge/signal.d.ts +7 -0
  31. package/dist/cjs/src/proto/gen/dxos/edge/signal.d.ts.map +1 -1
  32. package/dist/cjs/src/proto/gen/index.d.ts +8 -1
  33. package/dist/cjs/src/proto/gen/index.d.ts.map +1 -1
  34. package/dist/cjs/src/proto/gen/index.js +1 -1
  35. package/dist/cjs/src/proto/gen/index.js.map +1 -1
  36. package/dist/cjs/src/space-archive.d.ts +55 -0
  37. package/dist/cjs/src/space-archive.d.ts.map +1 -0
  38. package/dist/cjs/src/space-archive.js +29 -0
  39. package/dist/cjs/src/space-archive.js.map +1 -0
  40. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  41. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts +110 -1
  42. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  43. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js +42 -17
  44. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  45. package/dist/esm/src/buf/proto/gen/dxos/edge/calls_pb.d.ts +35 -16
  46. package/dist/esm/src/buf/proto/gen/dxos/edge/calls_pb.d.ts.map +1 -1
  47. package/dist/esm/src/buf/proto/gen/dxos/edge/calls_pb.js +11 -5
  48. package/dist/esm/src/buf/proto/gen/dxos/edge/calls_pb.js.map +1 -1
  49. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.d.ts +14 -0
  50. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.d.ts.map +1 -1
  51. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.js +10 -5
  52. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.js.map +1 -1
  53. package/dist/esm/src/edge-error.d.ts +26 -0
  54. package/dist/esm/src/edge-error.d.ts.map +1 -0
  55. package/dist/esm/src/edge-error.js +62 -0
  56. package/dist/esm/src/edge-error.js.map +1 -0
  57. package/dist/esm/src/edge.d.ts +34 -25
  58. package/dist/esm/src/edge.d.ts.map +1 -1
  59. package/dist/esm/src/edge.js +12 -58
  60. package/dist/esm/src/edge.js.map +1 -1
  61. package/dist/esm/src/index.d.ts +2 -0
  62. package/dist/esm/src/index.d.ts.map +1 -1
  63. package/dist/esm/src/index.js +2 -0
  64. package/dist/esm/src/index.js.map +1 -1
  65. package/dist/esm/src/proto/gen/dxos/client/services.d.ts +46 -0
  66. package/dist/esm/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  67. package/dist/esm/src/proto/gen/dxos/client/services.js.map +1 -1
  68. package/dist/esm/src/proto/gen/dxos/edge/calls.d.ts +16 -11
  69. package/dist/esm/src/proto/gen/dxos/edge/calls.d.ts.map +1 -1
  70. package/dist/esm/src/proto/gen/dxos/edge/signal.d.ts +7 -0
  71. package/dist/esm/src/proto/gen/dxos/edge/signal.d.ts.map +1 -1
  72. package/dist/esm/src/proto/gen/index.d.ts +8 -1
  73. package/dist/esm/src/proto/gen/index.d.ts.map +1 -1
  74. package/dist/esm/src/proto/gen/index.js +1 -1
  75. package/dist/esm/src/proto/gen/index.js.map +1 -1
  76. package/dist/esm/src/space-archive.d.ts +55 -0
  77. package/dist/esm/src/space-archive.d.ts.map +1 -0
  78. package/dist/esm/src/space-archive.js +26 -0
  79. package/dist/esm/src/space-archive.js.map +1 -0
  80. package/package.json +9 -9
  81. package/src/buf/proto/gen/dxos/client/services_pb.ts +143 -18
  82. package/src/buf/proto/gen/dxos/edge/calls_pb.ts +40 -19
  83. package/src/buf/proto/gen/dxos/edge/signal_pb.ts +22 -5
  84. package/src/edge-error.ts +79 -0
  85. package/src/edge.ts +30 -71
  86. package/src/index.ts +2 -0
  87. package/src/proto/dxos/client/services.proto +30 -0
  88. package/src/proto/dxos/edge/calls.proto +16 -9
  89. package/src/proto/dxos/edge/signal.proto +4 -0
  90. package/src/proto/gen/dxos/client/services.ts +46 -0
  91. package/src/proto/gen/dxos/edge/calls.ts +15 -11
  92. package/src/proto/gen/dxos/edge/signal.ts +7 -0
  93. package/src/proto/gen/index.ts +9 -2
  94. package/src/space-archive.ts +66 -0
@@ -20,7 +20,7 @@ import type { Message as Message$1 } from "@bufbuild/protobuf";
20
20
  * Describes the file dxos/edge/signal.proto.
21
21
  */
22
22
  export const file_dxos_edge_signal: GenFile = /*@__PURE__*/
23
- fileDesc("ChZkeG9zL2VkZ2Uvc2lnbmFsLnByb3RvEhBkeG9zLmVkZ2Uuc2lnbmFsIlsKC0pvaW5SZXF1ZXN0EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRInCgRwZWVyGAIgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyIlwKDExlYXZlUmVxdWVzdBIjCgV0b3BpYxgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSJwoEcGVlchgCIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlciKJAQoHTWVzc2FnZRIpCgZhdXRob3IYASABKAsyGS5keG9zLmVkZ2UubWVzc2VuZ2VyLlBlZXISLAoJcmVjaXBpZW50GAIgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyEiUKB3BheWxvYWQYAyABKAsyFC5nb29nbGUucHJvdG9idWYuQW55Is8DCgpTd2FybUV2ZW50EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRJECg5wZWVyX2F2YWlsYWJsZRgCIAEoCzIqLmR4b3MuZWRnZS5zaWduYWwuU3dhcm1FdmVudC5QZWVyQXZhaWxhYmxlSAASOgoJcGVlcl9sZWZ0GAMgASgLMiUuZHhvcy5lZGdlLnNpZ25hbC5Td2FybUV2ZW50LlBlZXJMZWZ0SAAa2wEKDVBlZXJBdmFpbGFibGUSJwoEcGVlchgBIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlchIpCgVzaW5jZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoFdW50aWwYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESIgoVYW5ub3VuY2VfYmFja190b19ob3N0GAQgASgMSAGIAQFCCAoGX3VudGlsQhgKFl9hbm5vdW5jZV9iYWNrX3RvX2hvc3QaMwoIUGVlckxlZnQSJwoEcGVlchgBIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlckIHCgVldmVudGIGcHJvdG8z", [file_google_protobuf_any, file_google_protobuf_timestamp, file_dxos_keys, file_dxos_edge_messenger]);
23
+ fileDesc("ChZkeG9zL2VkZ2Uvc2lnbmFsLnByb3RvEhBkeG9zLmVkZ2Uuc2lnbmFsIlsKC0pvaW5SZXF1ZXN0EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRInCgRwZWVyGAIgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyIlwKDExlYXZlUmVxdWVzdBIjCgV0b3BpYxgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSJwoEcGVlchgCIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlciIzCgxRdWVyeVJlcXVlc3QSIwoFdG9waWMYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5IokBCgdNZXNzYWdlEikKBmF1dGhvchgBIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlchIsCglyZWNpcGllbnQYAiABKAsyGS5keG9zLmVkZ2UubWVzc2VuZ2VyLlBlZXISJQoHcGF5bG9hZBgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkizwMKClN3YXJtRXZlbnQSIwoFdG9waWMYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EkQKDnBlZXJfYXZhaWxhYmxlGAIgASgLMiouZHhvcy5lZGdlLnNpZ25hbC5Td2FybUV2ZW50LlBlZXJBdmFpbGFibGVIABI6CglwZWVyX2xlZnQYAyABKAsyJS5keG9zLmVkZ2Uuc2lnbmFsLlN3YXJtRXZlbnQuUGVlckxlZnRIABrbAQoNUGVlckF2YWlsYWJsZRInCgRwZWVyGAEgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgV1bnRpbBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIiChVhbm5vdW5jZV9iYWNrX3RvX2hvc3QYBCABKAxIAYgBAUIICgZfdW50aWxCGAoWX2Fubm91bmNlX2JhY2tfdG9faG9zdBozCghQZWVyTGVmdBInCgRwZWVyGAEgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyQgcKBWV2ZW50YgZwcm90bzM", [file_google_protobuf_any, file_google_protobuf_timestamp, file_dxos_keys, file_dxos_edge_messenger]);
24
24
 
25
25
  /**
26
26
  * @generated from message dxos.edge.signal.JoinRequest
@@ -66,6 +66,23 @@ export type LeaveRequest = Message$1<"dxos.edge.signal.LeaveRequest"> & {
66
66
  export const LeaveRequestSchema: GenMessage<LeaveRequest> = /*@__PURE__*/
67
67
  messageDesc(file_dxos_edge_signal, 1);
68
68
 
69
+ /**
70
+ * @generated from message dxos.edge.signal.QueryRequest
71
+ */
72
+ export type QueryRequest = Message$1<"dxos.edge.signal.QueryRequest"> & {
73
+ /**
74
+ * @generated from field: dxos.keys.PublicKey topic = 1;
75
+ */
76
+ topic?: PublicKey;
77
+ };
78
+
79
+ /**
80
+ * Describes the message dxos.edge.signal.QueryRequest.
81
+ * Use `create(QueryRequestSchema)` to create a new message.
82
+ */
83
+ export const QueryRequestSchema: GenMessage<QueryRequest> = /*@__PURE__*/
84
+ messageDesc(file_dxos_edge_signal, 2);
85
+
69
86
  /**
70
87
  * @generated from message dxos.edge.signal.Message
71
88
  */
@@ -91,7 +108,7 @@ export type Message = Message$1<"dxos.edge.signal.Message"> & {
91
108
  * Use `create(MessageSchema)` to create a new message.
92
109
  */
93
110
  export const MessageSchema: GenMessage<Message> = /*@__PURE__*/
94
- messageDesc(file_dxos_edge_signal, 2);
111
+ messageDesc(file_dxos_edge_signal, 3);
95
112
 
96
113
  /**
97
114
  * / Goes on Pub/Sub swarm topic and as a Join stream in RPC.
@@ -131,7 +148,7 @@ export type SwarmEvent = Message$1<"dxos.edge.signal.SwarmEvent"> & {
131
148
  * Use `create(SwarmEventSchema)` to create a new message.
132
149
  */
133
150
  export const SwarmEventSchema: GenMessage<SwarmEvent> = /*@__PURE__*/
134
- messageDesc(file_dxos_edge_signal, 3);
151
+ messageDesc(file_dxos_edge_signal, 4);
135
152
 
136
153
  /**
137
154
  * Announce peer available on swarm.
@@ -170,7 +187,7 @@ export type SwarmEvent_PeerAvailable = Message$1<"dxos.edge.signal.SwarmEvent.Pe
170
187
  * Use `create(SwarmEvent_PeerAvailableSchema)` to create a new message.
171
188
  */
172
189
  export const SwarmEvent_PeerAvailableSchema: GenMessage<SwarmEvent_PeerAvailable> = /*@__PURE__*/
173
- messageDesc(file_dxos_edge_signal, 3, 0);
190
+ messageDesc(file_dxos_edge_signal, 4, 0);
174
191
 
175
192
  /**
176
193
  * @generated from message dxos.edge.signal.SwarmEvent.PeerLeft
@@ -187,5 +204,5 @@ export type SwarmEvent_PeerLeft = Message$1<"dxos.edge.signal.SwarmEvent.PeerLef
187
204
  * Use `create(SwarmEvent_PeerLeftSchema)` to create a new message.
188
205
  */
189
206
  export const SwarmEvent_PeerLeftSchema: GenMessage<SwarmEvent_PeerLeft> = /*@__PURE__*/
190
- messageDesc(file_dxos_edge_signal, 3, 1);
207
+ messageDesc(file_dxos_edge_signal, 4, 1);
191
208
 
@@ -0,0 +1,79 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type EdgeErrorData, type EdgeHttpFailure } from './edge';
6
+
7
+ export class EdgeCallFailedError extends Error {
8
+ public static fromProcessingFailureCause(cause: Error) {
9
+ return new EdgeCallFailedError({
10
+ reason: 'Error processing request.',
11
+ isRetryable: true,
12
+ cause,
13
+ });
14
+ }
15
+
16
+ public static fromHttpFailure(response: Response) {
17
+ return new EdgeCallFailedError({
18
+ reason: `HTTP code ${response.status}: ${response.statusText}.`,
19
+ isRetryable: isRetryableCode(response.status),
20
+ retryAfterMs: getRetryAfterMillis(response),
21
+ });
22
+ }
23
+
24
+ public static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure) {
25
+ return new EdgeCallFailedError({
26
+ reason: body.reason,
27
+ errorData: body.errorData,
28
+ isRetryable: body.errorData == null && response.headers.has('Retry-After'),
29
+ retryAfterMs: getRetryAfterMillis(response),
30
+ });
31
+ }
32
+
33
+ readonly reason: string;
34
+ readonly errorData?: EdgeErrorData;
35
+ readonly isRetryable?: boolean;
36
+ readonly retryAfterMs?: number;
37
+
38
+ constructor(args: {
39
+ reason: string;
40
+ isRetryable?: boolean;
41
+ errorData?: EdgeErrorData;
42
+ retryAfterMs?: number;
43
+ cause?: Error;
44
+ }) {
45
+ super(args.reason, { cause: args.cause });
46
+ this.reason = args.reason;
47
+ this.errorData = args.errorData;
48
+ this.retryAfterMs = args.retryAfterMs;
49
+ this.isRetryable = Boolean(args.isRetryable);
50
+ }
51
+ }
52
+
53
+ export class EdgeAuthChallengeError extends EdgeCallFailedError {
54
+ constructor(
55
+ public readonly challenge: string,
56
+ errorData: EdgeErrorData,
57
+ ) {
58
+ super({ reason: 'Auth challenge.', errorData, isRetryable: false });
59
+ }
60
+ }
61
+
62
+ const getRetryAfterMillis = (response: Response) => {
63
+ const retryAfter = Number(response.headers.get('Retry-After'));
64
+ return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
65
+ };
66
+
67
+ export const createRetryableHttpFailure = (args: { reason: any; retryAfterSeconds: number }) => {
68
+ return new Response(JSON.stringify({ success: false, reason: args.reason }), {
69
+ headers: { 'Retry-After': String(args.retryAfterSeconds) },
70
+ });
71
+ };
72
+
73
+ const isRetryableCode = (status: number) => {
74
+ if (status === 501) {
75
+ // Not Implemented
76
+ return false;
77
+ }
78
+ return !(status >= 400 && status < 500);
79
+ };
package/src/edge.ts CHANGED
@@ -2,7 +2,9 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { type SpaceId } from '@dxos/keys';
5
+ import { Schema as S } from 'effect';
6
+
7
+ import { SpaceId } from '@dxos/keys';
6
8
 
7
9
  // TODO(burdon): Rename EdgerRouterEndpoint?
8
10
  export enum EdgeService {
@@ -83,6 +85,7 @@ export type RecoverIdentityRequest = {
83
85
  controlFeedKey: string;
84
86
  lookupKey?: string;
85
87
  signature?: RecoverIdentitySignature;
88
+ token?: string;
86
89
  };
87
90
 
88
91
  export type RecoverIdentityResponseBody = {
@@ -132,87 +135,43 @@ export type UploadFunctionResponseBody = {
132
135
  };
133
136
  };
134
137
 
138
+ export type CreateSpaceRequest = {
139
+ agentKey: string;
140
+ };
141
+
142
+ export type CreateSpaceResponseBody = {
143
+ spaceKey: string;
144
+ spaceId: string;
145
+ automergeRoot: string;
146
+ };
147
+
135
148
  export enum EdgeAgentStatus {
136
149
  ACTIVE = 'active',
137
150
  INACTIVE = 'inactive',
138
151
  NOT_FOUND = 'not_found',
139
152
  }
140
153
 
141
- export class EdgeCallFailedError extends Error {
142
- public static fromProcessingFailureCause(cause: Error) {
143
- return new EdgeCallFailedError({
144
- reason: 'Error processing request.',
145
- isRetryable: true,
146
- cause,
147
- });
148
- }
149
-
150
- public static fromHttpFailure(response: Response) {
151
- return new EdgeCallFailedError({
152
- reason: `HTTP code ${response.status}: ${response.statusText}.`,
153
- isRetryable: isRetryableCode(response.status),
154
- retryAfterMs: getRetryAfterMillis(response),
155
- });
156
- }
157
-
158
- public static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure) {
159
- return new EdgeCallFailedError({
160
- reason: body.reason,
161
- errorData: body.errorData,
162
- isRetryable: body.errorData == null && response.headers.has('Retry-After'),
163
- retryAfterMs: getRetryAfterMillis(response),
164
- });
165
- }
166
-
167
- readonly reason: string;
168
- readonly errorData?: EdgeErrorData;
169
- readonly isRetryable?: boolean;
170
- readonly retryAfterMs?: number;
171
-
172
- constructor(args: {
173
- reason: string;
174
- isRetryable?: boolean;
175
- errorData?: EdgeErrorData;
176
- retryAfterMs?: number;
177
- cause?: Error;
178
- }) {
179
- super(args.reason, { cause: args.cause });
180
- this.reason = args.reason;
181
- this.errorData = args.errorData;
182
- this.retryAfterMs = args.retryAfterMs;
183
- this.isRetryable = Boolean(args.isRetryable);
184
- }
185
- }
186
-
187
- export class EdgeAuthChallengeError extends EdgeCallFailedError {
188
- constructor(
189
- public readonly challenge: string,
190
- errorData: EdgeErrorData,
191
- ) {
192
- super({ reason: 'Auth challenge.', errorData, isRetryable: false });
193
- }
194
- }
195
-
196
154
  export type EdgeAuthChallenge = {
197
155
  type: 'auth_challenge';
198
156
  challenge: string;
199
157
  };
200
158
 
201
- const getRetryAfterMillis = (response: Response) => {
202
- const retryAfter = Number(response.headers.get('Retry-After'));
203
- return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
204
- };
159
+ export enum OAuthProvider {
160
+ GOOGLE = 'google',
161
+ }
205
162
 
206
- export const createRetryableHttpFailure = (args: { reason: any; retryAfterSeconds: number }) => {
207
- return new Response(JSON.stringify({ success: false, reason: args.reason }), {
208
- headers: { 'Retry-After': String(args.retryAfterSeconds) },
209
- });
210
- };
163
+ export const InitiateOAuthFlowRequestSchema = S.Struct({
164
+ provider: S.Enums(OAuthProvider),
165
+ spaceId: S.String.pipe(S.filter(SpaceId.isValid)),
166
+ accessTokenId: S.String,
167
+ scopes: S.mutable(S.Array(S.String)),
168
+ });
169
+ export type InitiateOAuthFlowRequest = S.Schema.Type<typeof InitiateOAuthFlowRequestSchema>;
211
170
 
212
- const isRetryableCode = (status: number) => {
213
- if (status === 501) {
214
- // Not Implemented
215
- return false;
216
- }
217
- return !(status >= 400 && status < 500);
171
+ export type InitiateOAuthFlowResponse = {
172
+ authUrl: string;
218
173
  };
174
+
175
+ export type OAuthFlowResult =
176
+ | { success: true; accessToken: string; accessTokenId: string }
177
+ | { success: false; reason: string };
package/src/index.ts CHANGED
@@ -12,3 +12,5 @@ export * from './profile-archive.js';
12
12
  export * from './automerge.js';
13
13
  export * from './edge.js';
14
14
  export * from './queue.js';
15
+ export * from './space-archive.js';
16
+ export * from './edge-error.js';
@@ -144,6 +144,7 @@ message RecoverIdentityRequest {
144
144
  oneof request {
145
145
  string recovery_code = 1;
146
146
  ExternalSignature external = 2;
147
+ string token = 3;
147
148
  }
148
149
  }
149
150
 
@@ -433,6 +434,28 @@ message JoinBySpaceKeyRequest {
433
434
  dxos.keys.PublicKey space_key = 1;
434
435
  }
435
436
 
437
+ message SpaceArchive {
438
+ string filename = 1;
439
+ bytes contents = 2;
440
+ }
441
+
442
+ message ExportSpaceRequest {
443
+ string space_id = 1;
444
+ }
445
+
446
+ message ExportSpaceResponse {
447
+ SpaceArchive archive = 1;
448
+ }
449
+
450
+ message ImportSpaceRequest {
451
+ SpaceArchive archive = 1;
452
+ }
453
+
454
+ message ImportSpaceResponse {
455
+ /// the ID of the new space.
456
+ string new_space_id = 1;
457
+ }
458
+
436
459
  service SpacesService {
437
460
  rpc CreateSpace(google.protobuf.Empty) returns (Space);
438
461
  rpc UpdateSpace(UpdateSpaceRequest) returns (google.protobuf.Empty);
@@ -454,6 +477,9 @@ service SpacesService {
454
477
  rpc QueryCredentials(QueryCredentialsRequest) returns (stream dxos.halo.credentials.Credential);
455
478
 
456
479
  rpc CreateEpoch(CreateEpochRequest) returns (CreateEpochResponse);
480
+
481
+ rpc ExportSpace(ExportSpaceRequest) returns (ExportSpaceResponse);
482
+ rpc ImportSpace(ImportSpaceRequest) returns (ImportSpaceResponse);
457
483
  }
458
484
 
459
485
  //
@@ -555,6 +581,10 @@ service NetworkService {
555
581
  rpc QueryStatus(google.protobuf.Empty) returns (stream NetworkStatus);
556
582
  rpc JoinSwarm(dxos.edge.signal.JoinRequest) returns (google.protobuf.Empty);
557
583
  rpc LeaveSwarm(dxos.edge.signal.LeaveRequest) returns (google.protobuf.Empty);
584
+ /**
585
+ * Query the swarm state without joining it.
586
+ */
587
+ rpc QuerySwarm(dxos.edge.signal.QueryRequest) returns (dxos.edge.messenger.SwarmResponse);
558
588
  rpc SubscribeSwarmState(SubscribeSwarmStateRequest) returns (stream dxos.edge.messenger.SwarmResponse);
559
589
  rpc SendMessage(dxos.edge.signal.Message) returns (google.protobuf.Empty);
560
590
  rpc SubscribeMessages(dxos.edge.messenger.Peer) returns (stream dxos.edge.signal.Message);
@@ -4,6 +4,8 @@
4
4
 
5
5
  syntax = "proto3";
6
6
 
7
+ import "google/protobuf/any.proto";
8
+
7
9
  import "dxos/keys.proto";
8
10
 
9
11
  package dxos.edge.calls;
@@ -25,22 +27,27 @@ message UserState {
25
27
  bool speaking = 5;
26
28
  bool joined = 6;
27
29
  Tracks tracks = 7;
28
- optional Transcription transcription = 8;
30
+ map<string, Activity> activities = 8;
29
31
  }
30
32
 
31
33
  /**
32
- * Transcription settings.
34
+ * Activity state.
33
35
  * It will be merged across all users in the room based on the Lamport timestamp (last one wins).
34
36
  */
35
- message Transcription {
36
- bool enabled = 1;
37
+ message Activity {
38
+ LamportTimestamp lamport_timestamp = 1;
37
39
 
38
- LamportTimestamp lamport_timestamp = 2;
40
+ google.protobuf.Any payload = 10;
41
+ }
39
42
 
40
- /**
41
- * Transcription queue DXN.
42
- */
43
- string queue_dxn = 3;
43
+ /**
44
+ * Transcription state.
45
+ *
46
+ * Used to encode/decode the Any payload of a call activity for the transcription plugin.
47
+ */
48
+ message TranscriptionPayload {
49
+ bool enabled = 1;
50
+ string queue_dxn = 2;
44
51
  }
45
52
 
46
53
  /**
@@ -22,6 +22,10 @@ message LeaveRequest {
22
22
  dxos.edge.messenger.Peer peer = 2;
23
23
  }
24
24
 
25
+ message QueryRequest {
26
+ dxos.keys.PublicKey topic = 1;
27
+ }
28
+
25
29
  message Message {
26
30
  dxos.edge.messenger.Peer author = 1;
27
31
  dxos.edge.messenger.Peer recipient = 2;
@@ -622,6 +622,7 @@ export interface RequestRecoveryChallengeResponse {
622
622
  export interface RecoverIdentityRequest {
623
623
  recoveryCode?: string;
624
624
  external?: RecoverIdentityRequest.ExternalSignature;
625
+ token?: string;
625
626
  }
626
627
  export namespace RecoverIdentityRequest {
627
628
  /**
@@ -1170,6 +1171,45 @@ export interface JoinSpaceResponse {
1170
1171
  export interface JoinBySpaceKeyRequest {
1171
1172
  spaceKey: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
1172
1173
  }
1174
+ /**
1175
+ * Defined in:
1176
+ * {@link file://./../../../dxos/client/services.proto}
1177
+ */
1178
+ export interface SpaceArchive {
1179
+ filename: string;
1180
+ contents: Uint8Array;
1181
+ }
1182
+ /**
1183
+ * Defined in:
1184
+ * {@link file://./../../../dxos/client/services.proto}
1185
+ */
1186
+ export interface ExportSpaceRequest {
1187
+ spaceId: string;
1188
+ }
1189
+ /**
1190
+ * Defined in:
1191
+ * {@link file://./../../../dxos/client/services.proto}
1192
+ */
1193
+ export interface ExportSpaceResponse {
1194
+ archive: SpaceArchive;
1195
+ }
1196
+ /**
1197
+ * Defined in:
1198
+ * {@link file://./../../../dxos/client/services.proto}
1199
+ */
1200
+ export interface ImportSpaceRequest {
1201
+ archive: SpaceArchive;
1202
+ }
1203
+ /**
1204
+ * Defined in:
1205
+ * {@link file://./../../../dxos/client/services.proto}
1206
+ */
1207
+ export interface ImportSpaceResponse {
1208
+ /**
1209
+ * the ID of the new space.
1210
+ */
1211
+ newSpaceId: string;
1212
+ }
1173
1213
  /**
1174
1214
  * Defined in:
1175
1215
  * {@link file://./../../../dxos/client/services.proto}
@@ -1198,6 +1238,8 @@ export interface SpacesService {
1198
1238
  */
1199
1239
  queryCredentials: (request: QueryCredentialsRequest, options?: RequestOptions) => Stream<dxos_halo_credentials.Credential>;
1200
1240
  createEpoch: (request: CreateEpochRequest, options?: RequestOptions) => Promise<CreateEpochResponse>;
1241
+ exportSpace: (request: ExportSpaceRequest, options?: RequestOptions) => Promise<ExportSpaceResponse>;
1242
+ importSpace: (request: ImportSpaceRequest, options?: RequestOptions) => Promise<ImportSpaceResponse>;
1201
1243
  }
1202
1244
  /**
1203
1245
  * Defined in:
@@ -1336,6 +1378,10 @@ export interface NetworkService {
1336
1378
  queryStatus: (request: void, options?: RequestOptions) => Stream<NetworkStatus>;
1337
1379
  joinSwarm: (request: dxos_edge_signal.JoinRequest, options?: RequestOptions) => Promise<void>;
1338
1380
  leaveSwarm: (request: dxos_edge_signal.LeaveRequest, options?: RequestOptions) => Promise<void>;
1381
+ /**
1382
+ * Query the swarm state without joining it.
1383
+ */
1384
+ querySwarm: (request: dxos_edge_signal.QueryRequest, options?: RequestOptions) => Promise<dxos_edge_messenger.SwarmResponse>;
1339
1385
  subscribeSwarmState: (request: SubscribeSwarmStateRequest, options?: RequestOptions) => Stream<dxos_edge_messenger.SwarmResponse>;
1340
1386
  sendMessage: (request: dxos_edge_signal.Message, options?: RequestOptions) => Promise<void>;
1341
1387
  subscribeMessages: (request: dxos_edge_messenger.Peer, options?: RequestOptions) => Stream<dxos_edge_signal.Message>;
@@ -117,25 +117,29 @@ export interface UserState {
117
117
  speaking: boolean;
118
118
  joined: boolean;
119
119
  tracks: Tracks;
120
- /**
121
- * Options:
122
- * - proto3_optional = true
123
- */
124
- transcription?: Transcription;
120
+ activities?: Partial<Record<string, Activity>>;
125
121
  }
126
122
  /**
127
- * Transcription settings.
123
+ * Activity state.
128
124
  * It will be merged across all users in the room based on the Lamport timestamp (last one wins).
129
125
  *
130
126
  * Defined in:
131
127
  * {@link file://./../../../dxos/edge/calls.proto}
132
128
  */
133
- export interface Transcription {
134
- enabled: boolean;
129
+ export interface Activity {
135
130
  lamportTimestamp: LamportTimestamp;
136
- /**
137
- * Transcription queue DXN.
138
- */
131
+ payload: ReturnType<(typeof substitutions)["google.protobuf.Any"]["decode"]>;
132
+ }
133
+ /**
134
+ * Transcription state.
135
+ *
136
+ * Used to encode/decode the Any payload of a call activity for the transcription plugin.
137
+ *
138
+ * Defined in:
139
+ * {@link file://./../../../dxos/edge/calls.proto}
140
+ */
141
+ export interface TranscriptionPayload {
142
+ enabled: boolean;
139
143
  queueDxn: string;
140
144
  }
141
145
  /**
@@ -81,6 +81,13 @@ export interface LeaveRequest {
81
81
  topic: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
82
82
  peer: dxos_edge_messenger.Peer;
83
83
  }
84
+ /**
85
+ * Defined in:
86
+ * {@link file://./../../../dxos/edge/signal.proto}
87
+ */
88
+ export interface QueryRequest {
89
+ topic: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
90
+ }
84
91
  /**
85
92
  * Defined in:
86
93
  * {@link file://./../../../dxos/edge/signal.proto}