@dxos/protocols 0.6.12-staging.e11e696 → 0.6.13-main.09887cd

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 (108) hide show
  1. package/dist/cjs/src/automerge.d.ts +111 -0
  2. package/dist/cjs/src/automerge.d.ts.map +1 -0
  3. package/dist/cjs/src/{collection-sync.js → automerge.js} +1 -1
  4. package/dist/cjs/src/automerge.js.map +1 -0
  5. package/dist/cjs/src/buf/proto/gen/dxos/client/invitation_pb.d.ts +6 -0
  6. package/dist/cjs/src/buf/proto/gen/dxos/client/invitation_pb.d.ts.map +1 -1
  7. package/dist/cjs/src/buf/proto/gen/dxos/client/invitation_pb.js +1 -1
  8. package/dist/cjs/src/buf/proto/gen/dxos/client/invitation_pb.js.map +1 -1
  9. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts +9 -1
  10. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  11. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js +1 -1
  12. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  13. package/dist/cjs/src/buf/proto/gen/dxos/echo/metadata_pb.d.ts +22 -1
  14. package/dist/cjs/src/buf/proto/gen/dxos/echo/metadata_pb.d.ts.map +1 -1
  15. package/dist/cjs/src/buf/proto/gen/dxos/echo/metadata_pb.js +20 -2
  16. package/dist/cjs/src/buf/proto/gen/dxos/echo/metadata_pb.js.map +1 -1
  17. package/dist/cjs/src/buf/proto/gen/dxos/halo/invitations_pb.d.ts +6 -0
  18. package/dist/cjs/src/buf/proto/gen/dxos/halo/invitations_pb.d.ts.map +1 -1
  19. package/dist/cjs/src/buf/proto/gen/dxos/halo/invitations_pb.js +1 -1
  20. package/dist/cjs/src/buf/proto/gen/dxos/halo/invitations_pb.js.map +1 -1
  21. package/dist/cjs/src/edge.d.ts +38 -7
  22. package/dist/cjs/src/edge.d.ts.map +1 -1
  23. package/dist/cjs/src/edge.js +51 -8
  24. package/dist/cjs/src/edge.js.map +1 -1
  25. package/dist/cjs/src/index.d.ts +1 -1
  26. package/dist/cjs/src/index.d.ts.map +1 -1
  27. package/dist/cjs/src/index.js +1 -1
  28. package/dist/cjs/src/index.js.map +1 -1
  29. package/dist/cjs/src/invitation.d.ts +2 -2
  30. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts +17 -0
  31. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  32. package/dist/cjs/src/proto/gen/dxos/client/services.js.map +1 -1
  33. package/dist/cjs/src/proto/gen/dxos/echo/metadata.d.ts +13 -0
  34. package/dist/cjs/src/proto/gen/dxos/echo/metadata.d.ts.map +1 -1
  35. package/dist/cjs/src/proto/gen/dxos/echo/metadata.js +10 -0
  36. package/dist/cjs/src/proto/gen/dxos/echo/metadata.js.map +1 -1
  37. package/dist/cjs/src/proto/gen/dxos/halo/invitations.d.ts +4 -0
  38. package/dist/cjs/src/proto/gen/dxos/halo/invitations.d.ts.map +1 -1
  39. package/dist/cjs/src/proto/gen/index.d.ts +1 -0
  40. package/dist/cjs/src/proto/gen/index.d.ts.map +1 -1
  41. package/dist/cjs/src/proto/gen/index.js +1 -1
  42. package/dist/cjs/src/proto/gen/index.js.map +1 -1
  43. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  44. package/dist/esm/src/automerge.d.ts +111 -0
  45. package/dist/esm/src/automerge.d.ts.map +1 -0
  46. package/dist/esm/src/{collection-sync.js → automerge.js} +1 -1
  47. package/dist/esm/src/automerge.js.map +1 -0
  48. package/dist/esm/src/buf/proto/gen/dxos/client/invitation_pb.d.ts +6 -0
  49. package/dist/esm/src/buf/proto/gen/dxos/client/invitation_pb.d.ts.map +1 -1
  50. package/dist/esm/src/buf/proto/gen/dxos/client/invitation_pb.js +1 -1
  51. package/dist/esm/src/buf/proto/gen/dxos/client/invitation_pb.js.map +1 -1
  52. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts +9 -1
  53. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  54. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js +1 -1
  55. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  56. package/dist/esm/src/buf/proto/gen/dxos/echo/metadata_pb.d.ts +22 -1
  57. package/dist/esm/src/buf/proto/gen/dxos/echo/metadata_pb.d.ts.map +1 -1
  58. package/dist/esm/src/buf/proto/gen/dxos/echo/metadata_pb.js +20 -2
  59. package/dist/esm/src/buf/proto/gen/dxos/echo/metadata_pb.js.map +1 -1
  60. package/dist/esm/src/buf/proto/gen/dxos/halo/invitations_pb.d.ts +6 -0
  61. package/dist/esm/src/buf/proto/gen/dxos/halo/invitations_pb.d.ts.map +1 -1
  62. package/dist/esm/src/buf/proto/gen/dxos/halo/invitations_pb.js +1 -1
  63. package/dist/esm/src/buf/proto/gen/dxos/halo/invitations_pb.js.map +1 -1
  64. package/dist/esm/src/edge.d.ts +38 -7
  65. package/dist/esm/src/edge.d.ts.map +1 -1
  66. package/dist/esm/src/edge.js +53 -9
  67. package/dist/esm/src/edge.js.map +1 -1
  68. package/dist/esm/src/index.d.ts +1 -1
  69. package/dist/esm/src/index.d.ts.map +1 -1
  70. package/dist/esm/src/index.js +1 -1
  71. package/dist/esm/src/index.js.map +1 -1
  72. package/dist/esm/src/invitation.d.ts +2 -2
  73. package/dist/esm/src/proto/gen/dxos/client/services.d.ts +17 -0
  74. package/dist/esm/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  75. package/dist/esm/src/proto/gen/dxos/client/services.js.map +1 -1
  76. package/dist/esm/src/proto/gen/dxos/echo/metadata.d.ts +13 -0
  77. package/dist/esm/src/proto/gen/dxos/echo/metadata.d.ts.map +1 -1
  78. package/dist/esm/src/proto/gen/dxos/echo/metadata.js +9 -1
  79. package/dist/esm/src/proto/gen/dxos/echo/metadata.js.map +1 -1
  80. package/dist/esm/src/proto/gen/dxos/halo/invitations.d.ts +4 -0
  81. package/dist/esm/src/proto/gen/dxos/halo/invitations.d.ts.map +1 -1
  82. package/dist/esm/src/proto/gen/index.d.ts +1 -0
  83. package/dist/esm/src/proto/gen/index.d.ts.map +1 -1
  84. package/dist/esm/src/proto/gen/index.js +1 -1
  85. package/dist/esm/src/proto/gen/index.js.map +1 -1
  86. package/package.json +7 -7
  87. package/src/automerge.ts +138 -0
  88. package/src/buf/proto/gen/dxos/client/invitation_pb.ts +8 -1
  89. package/src/buf/proto/gen/dxos/client/services_pb.ts +12 -2
  90. package/src/buf/proto/gen/dxos/echo/metadata_pb.ts +29 -3
  91. package/src/buf/proto/gen/dxos/halo/invitations_pb.ts +8 -1
  92. package/src/edge.ts +84 -7
  93. package/src/index.ts +1 -1
  94. package/src/proto/dxos/client/invitation.proto +3 -0
  95. package/src/proto/dxos/client/services.proto +4 -0
  96. package/src/proto/dxos/echo/metadata.proto +7 -0
  97. package/src/proto/dxos/halo/invitations.proto +2 -0
  98. package/src/proto/gen/dxos/client/services.ts +17 -0
  99. package/src/proto/gen/dxos/echo/metadata.ts +13 -0
  100. package/src/proto/gen/dxos/halo/invitations.ts +4 -0
  101. package/src/proto/gen/index.ts +2 -1
  102. package/dist/cjs/src/collection-sync.d.ts +0 -31
  103. package/dist/cjs/src/collection-sync.d.ts.map +0 -1
  104. package/dist/cjs/src/collection-sync.js.map +0 -1
  105. package/dist/esm/src/collection-sync.d.ts +0 -31
  106. package/dist/esm/src/collection-sync.d.ts.map +0 -1
  107. package/dist/esm/src/collection-sync.js.map +0 -1
  108. package/src/collection-sync.ts +0 -39
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/proto/gen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAiEhE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAokBhD,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,shjHAAshjH,CAAC,CAAC,CAAC;AAC/kjH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAkB,UAAU,EAAE,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/proto/gen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAiEhE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAqkBhD,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,+ikHAA+ikH,CAAC,CAAC,CAAC;AACxmkH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAkB,UAAU,EAAE,aAAa,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/protocols",
3
- "version": "0.6.12-staging.e11e696",
3
+ "version": "0.6.13-main.09887cd",
4
4
  "description": "Protobuf definitions for DXOS protocols.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -71,12 +71,12 @@
71
71
  ],
72
72
  "dependencies": {
73
73
  "@bufbuild/protobuf": "^2.1.0",
74
- "@dxos/codec-protobuf": "0.6.12-staging.e11e696",
75
- "@dxos/invariant": "0.6.12-staging.e11e696",
76
- "@dxos/effect": "0.6.12-staging.e11e696",
77
- "@dxos/timeframe": "0.6.12-staging.e11e696",
78
- "@dxos/keys": "0.6.12-staging.e11e696",
79
- "@dxos/util": "0.6.12-staging.e11e696"
74
+ "@dxos/codec-protobuf": "0.6.13-main.09887cd",
75
+ "@dxos/effect": "0.6.13-main.09887cd",
76
+ "@dxos/invariant": "0.6.13-main.09887cd",
77
+ "@dxos/keys": "0.6.13-main.09887cd",
78
+ "@dxos/timeframe": "0.6.13-main.09887cd",
79
+ "@dxos/util": "0.6.13-main.09887cd"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@bufbuild/buf": "^1.43.0",
@@ -0,0 +1,138 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export type PeerId = string & { __peerId: true };
6
+
7
+ export type JoinProtocolMessage = {
8
+ type: 'join';
9
+ targetId?: PeerId;
10
+ senderId: PeerId;
11
+ supportedProtocolVersions: string;
12
+ metadata?: Record<string, unknown>;
13
+ };
14
+
15
+ export type LeaveProtocolMessage = {
16
+ type: 'leave';
17
+ targetId?: PeerId;
18
+ senderId: PeerId;
19
+ };
20
+
21
+ export type PeerProtocolMessage = {
22
+ type: 'peer';
23
+ senderId: PeerId;
24
+ targetId: PeerId;
25
+ selectedProtocolVersion: string;
26
+ metadata?: Record<string, unknown>;
27
+ };
28
+
29
+ /**
30
+ * Sent by a {@link Repo} to request a document from a peer.
31
+ *
32
+ * @remarks
33
+ * This is identical to a {@link SyncMessage} except that it is sent by a {@link Repo}
34
+ * as the initial sync message when asking the other peer if it has the document.
35
+ */
36
+ export type RequestProtocolMessage = {
37
+ type: 'request';
38
+ senderId: PeerId;
39
+ targetId: PeerId;
40
+ documentId: string;
41
+ data: Uint8Array;
42
+ };
43
+
44
+ /**
45
+ * A sync message for a particular document
46
+ */
47
+ export type SyncProtocolMessage = {
48
+ type: 'sync';
49
+ senderId: PeerId;
50
+ targetId: PeerId;
51
+ documentId: string;
52
+ data: Uint8Array;
53
+ };
54
+
55
+ /**
56
+ * Sent by a {@link Repo} to indicate that it does not have the document and none of its connected
57
+ * peers do either.
58
+ */
59
+ export type UnavailableProtocolMessage = {
60
+ type: 'doc-unavailable';
61
+ senderId: PeerId;
62
+ targetId: PeerId;
63
+ documentId: string;
64
+ };
65
+
66
+ /**
67
+ * An ephemeral message.
68
+ *
69
+ * @remarks
70
+ * Ephemeral messages are not persisted anywhere. The data property can be used by the application
71
+ * as needed. The repo gossips these around.
72
+ *
73
+ * In order to avoid infinite loops of ephemeral messages, every message has (a) a session ID, which
74
+ * is a random number generated by the sender at startup time; and (b) a sequence number. The
75
+ * combination of these two things allows us to discard messages we have already seen.
76
+ * */
77
+ export type EphemeralProtocolMessage = {
78
+ type: 'ephemeral';
79
+ senderId: PeerId;
80
+ targetId: PeerId;
81
+ count: number;
82
+ sessionId: string;
83
+ documentId: string;
84
+ data: Uint8Array;
85
+ };
86
+
87
+ export type ErrorProtocolMessage = {
88
+ type: 'error';
89
+ senderId?: PeerId;
90
+ targetId?: PeerId;
91
+ message: string;
92
+ };
93
+
94
+ export const MESSAGE_TYPE_COLLECTION_QUERY = 'collection-query';
95
+
96
+ export type CollectionQueryMessage = {
97
+ type: typeof MESSAGE_TYPE_COLLECTION_QUERY;
98
+ senderId: PeerId;
99
+ targetId: PeerId;
100
+ collectionId: string;
101
+
102
+ /**
103
+ * Identifier of the current state.
104
+ * Remote peer will skip sending the state if it has the same tag.
105
+ */
106
+ stateTag?: string;
107
+ };
108
+
109
+ export const MESSAGE_TYPE_COLLECTION_STATE = 'collection-state';
110
+
111
+ export type CollectionStateMessage = {
112
+ type: typeof MESSAGE_TYPE_COLLECTION_STATE;
113
+ senderId: PeerId;
114
+ targetId: PeerId;
115
+ collectionId: string;
116
+
117
+ /**
118
+ * State representation is implementation-defined.
119
+ */
120
+ state?: unknown;
121
+
122
+ /**
123
+ * Identifier of the current state.
124
+ */
125
+ stateTag?: string;
126
+ };
127
+
128
+ export type AutomergeProtocolMessage =
129
+ | JoinProtocolMessage
130
+ | PeerProtocolMessage
131
+ | LeaveProtocolMessage
132
+ | RequestProtocolMessage
133
+ | SyncProtocolMessage
134
+ | UnavailableProtocolMessage
135
+ | EphemeralProtocolMessage
136
+ | ErrorProtocolMessage
137
+ | CollectionQueryMessage
138
+ | CollectionStateMessage;
@@ -30,7 +30,7 @@ import type { Message } from "@bufbuild/protobuf";
30
30
  * Describes the file dxos/client/invitation.proto.
31
31
  */
32
32
  export const file_dxos_client_invitation: GenFile = /*@__PURE__*/
33
- fileDesc("ChxkeG9zL2NsaWVudC9pbnZpdGF0aW9uLnByb3RvEhRkeG9zLmNsaWVudC5zZXJ2aWNlcyJ9ChBBZG1pc3Npb25LZXlwYWlyEigKCnB1YmxpY19rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei8KC3ByaXZhdGVfa2V5GAIgASgLMhUuZHhvcy5rZXlzLlByaXZhdGVLZXlIAIgBAUIOCgxfcHJpdmF0ZV9rZXki9gkKCkludml0YXRpb24SFQoNaW52aXRhdGlvbl9pZBgBIAEoCRIzCgR0eXBlGAIgASgOMiUuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbi5UeXBlEjMKBGtpbmQYAyABKA4yJS5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uLktpbmQSQAoLYXV0aF9tZXRob2QYBCABKA4yKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uLkF1dGhNZXRob2QSJwoJc3dhcm1fa2V5GAUgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI1CgVzdGF0ZRgGIAEoDjImLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24uU3RhdGUSFAoHdGltZW91dBgHIAEoBUgAiAEBEi8KDGlkZW50aXR5X2tleRgIIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAYgBARIsCglzcGFjZV9rZXkYCSABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAKIAQESFgoJYXV0aF9jb2RlGAogASgJSAOIAQESEwoGdGFyZ2V0GAsgASgJSASIAQESFwoKcGVyc2lzdGVudBgMIAEoCEgFiAEBEjAKB2NyZWF0ZWQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESFQoIbGlmZXRpbWUYDiABKAVIB4gBARIWCgltdWx0aV91c2UYDyABKAhICIgBARJCCg1ndWVzdF9rZXlwYWlyGBAgASgLMiYuZHhvcy5jbGllbnQuc2VydmljZXMuQWRtaXNzaW9uS2V5cGFpckgJiAEBEjsKGGRlbGVnYXRpb25fY3JlZGVudGlhbF9pZBgRIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlICogBARI6CgRyb2xlGBIgASgOMicuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlNwYWNlTWVtYmVyLlJvbGVIC4gBASI0CgRUeXBlEg8KC0lOVEVSQUNUSVZFEAASDQoJREVMRUdBVEVEEAESDAoITVVMVElVU0UQAiIdCgRLaW5kEgoKBkRFVklDRRAAEgkKBVNQQUNFEAEiPwoKQXV0aE1ldGhvZBIICgROT05FEAASEQoNU0hBUkVEX1NFQ1JFVBABEhQKEEtOT1dOX1BVQkxJQ19LRVkQAiKjAQoFU3RhdGUSCAoESU5JVBAAEg4KCkNPTk5FQ1RJTkcQARINCglDT05ORUNURUQQAhIcChhSRUFEWV9GT1JfQVVUSEVOVElDQVRJT04QAxISCg5BVVRIRU5USUNBVElORxAEEgsKB1NVQ0NFU1MQBRINCglDQU5DRUxMRUQQBhILCgdUSU1FT1VUEAcSCQoFRVJST1IQCBILCgdFWFBJUkVEEAlCCgoIX3RpbWVvdXRCDwoNX2lkZW50aXR5X2tleUIMCgpfc3BhY2Vfa2V5QgwKCl9hdXRoX2NvZGVCCQoHX3RhcmdldEINCgtfcGVyc2lzdGVudEIKCghfY3JlYXRlZEILCglfbGlmZXRpbWVCDAoKX211bHRpX3VzZUIQCg5fZ3Vlc3Rfa2V5cGFpckIbChlfZGVsZWdhdGlvbl9jcmVkZW50aWFsX2lkQgcKBV9yb2xlKsEBCgpTcGFjZVN0YXRlEgsKB0lOVkFMSUQQABISCg5TUEFDRV9JTkFDVElWRRACEhAKDFNQQUNFX0FDVElWRRAGEhAKDFNQQUNFX0NMT1NFRBABEhYKElNQQUNFX0NPTlRST0xfT05MWRAHEhYKElNQQUNFX0lOSVRJQUxJWklORxAEEg8KC1NQQUNFX1JFQURZEAMSDwoLU1BBQ0VfRVJST1IQBRIcChhTUEFDRV9SRVFVSVJFU19NSUdSQVRJT04QCGIGcHJvdG8z", [file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_dxos_config, file_dxos_devtools_swarm, file_dxos_echo_timeframe, file_dxos_error, file_dxos_halo_credentials, file_dxos_keys, file_dxos_mesh_signal, file_dxos_mesh_presence, file_dxos_mesh_teleport_gossip, file_dxos_value]);
33
+ fileDesc("ChxkeG9zL2NsaWVudC9pbnZpdGF0aW9uLnByb3RvEhRkeG9zLmNsaWVudC5zZXJ2aWNlcyJ9ChBBZG1pc3Npb25LZXlwYWlyEigKCnB1YmxpY19rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei8KC3ByaXZhdGVfa2V5GAIgASgLMhUuZHhvcy5rZXlzLlByaXZhdGVLZXlIAIgBAUIOCgxfcHJpdmF0ZV9rZXkimgoKCkludml0YXRpb24SFQoNaW52aXRhdGlvbl9pZBgBIAEoCRIzCgR0eXBlGAIgASgOMiUuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbi5UeXBlEjMKBGtpbmQYAyABKA4yJS5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uLktpbmQSQAoLYXV0aF9tZXRob2QYBCABKA4yKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uLkF1dGhNZXRob2QSJwoJc3dhcm1fa2V5GAUgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI1CgVzdGF0ZRgGIAEoDjImLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24uU3RhdGUSFAoHdGltZW91dBgHIAEoBUgAiAEBEi8KDGlkZW50aXR5X2tleRgIIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAYgBARIsCglzcGFjZV9rZXkYCSABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAKIAQESFgoJYXV0aF9jb2RlGAogASgJSAOIAQESEwoGdGFyZ2V0GAsgASgJSASIAQESFwoKcGVyc2lzdGVudBgMIAEoCEgFiAEBEjAKB2NyZWF0ZWQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESFQoIbGlmZXRpbWUYDiABKAVIB4gBARIWCgltdWx0aV91c2UYDyABKAhICIgBARJCCg1ndWVzdF9rZXlwYWlyGBAgASgLMiYuZHhvcy5jbGllbnQuc2VydmljZXMuQWRtaXNzaW9uS2V5cGFpckgJiAEBEjsKGGRlbGVnYXRpb25fY3JlZGVudGlhbF9pZBgRIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlICogBARI6CgRyb2xlGBIgASgOMicuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlNwYWNlTWVtYmVyLlJvbGVIC4gBARIVCghzcGFjZV9pZBgTIAEoCUgMiAEBIjQKBFR5cGUSDwoLSU5URVJBQ1RJVkUQABINCglERUxFR0FURUQQARIMCghNVUxUSVVTRRACIh0KBEtpbmQSCgoGREVWSUNFEAASCQoFU1BBQ0UQASI/CgpBdXRoTWV0aG9kEggKBE5PTkUQABIRCg1TSEFSRURfU0VDUkVUEAESFAoQS05PV05fUFVCTElDX0tFWRACIqMBCgVTdGF0ZRIICgRJTklUEAASDgoKQ09OTkVDVElORxABEg0KCUNPTk5FQ1RFRBACEhwKGFJFQURZX0ZPUl9BVVRIRU5USUNBVElPThADEhIKDkFVVEhFTlRJQ0FUSU5HEAQSCwoHU1VDQ0VTUxAFEg0KCUNBTkNFTExFRBAGEgsKB1RJTUVPVVQQBxIJCgVFUlJPUhAIEgsKB0VYUElSRUQQCUIKCghfdGltZW91dEIPCg1faWRlbnRpdHlfa2V5QgwKCl9zcGFjZV9rZXlCDAoKX2F1dGhfY29kZUIJCgdfdGFyZ2V0Qg0KC19wZXJzaXN0ZW50QgoKCF9jcmVhdGVkQgsKCV9saWZldGltZUIMCgpfbXVsdGlfdXNlQhAKDl9ndWVzdF9rZXlwYWlyQhsKGV9kZWxlZ2F0aW9uX2NyZWRlbnRpYWxfaWRCBwoFX3JvbGVCCwoJX3NwYWNlX2lkKsEBCgpTcGFjZVN0YXRlEgsKB0lOVkFMSUQQABISCg5TUEFDRV9JTkFDVElWRRACEhAKDFNQQUNFX0FDVElWRRAGEhAKDFNQQUNFX0NMT1NFRBABEhYKElNQQUNFX0NPTlRST0xfT05MWRAHEhYKElNQQUNFX0lOSVRJQUxJWklORxAEEg8KC1NQQUNFX1JFQURZEAMSDwoLU1BBQ0VfRVJST1IQBRIcChhTUEFDRV9SRVFVSVJFU19NSUdSQVRJT04QCGIGcHJvdG8z", [file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_dxos_config, file_dxos_devtools_swarm, file_dxos_echo_timeframe, file_dxos_error, file_dxos_halo_credentials, file_dxos_keys, file_dxos_mesh_signal, file_dxos_mesh_presence, file_dxos_mesh_teleport_gossip, file_dxos_value]);
34
34
 
35
35
  /**
36
36
  * @generated from message dxos.client.services.AdmissionKeypair
@@ -187,6 +187,13 @@ export type Invitation = Message<"dxos.client.services.Invitation"> & {
187
187
  * @generated from field: optional dxos.halo.credentials.SpaceMember.Role role = 18;
188
188
  */
189
189
  role?: SpaceMember_Role;
190
+
191
+ /**
192
+ * / Id of a the space to join (only present if kind is SPACE).
193
+ *
194
+ * @generated from field: optional string space_id = 19;
195
+ */
196
+ spaceId?: string;
190
197
  };
191
198
 
192
199
  /**
@@ -18,7 +18,7 @@ import type { ConfigSchema } from "../config_pb.js";
18
18
  import { file_dxos_config } from "../config_pb.js";
19
19
  import type { SwarmInfo } from "../devtools/swarm_pb.js";
20
20
  import { file_dxos_devtools_swarm } from "../devtools/swarm_pb.js";
21
- import type { SpaceCache } from "../echo/metadata_pb.js";
21
+ import type { EdgeReplicationSetting, SpaceCache } from "../echo/metadata_pb.js";
22
22
  import { file_dxos_echo_metadata } from "../echo/metadata_pb.js";
23
23
  import type { TimeframeVector } from "../echo/timeframe_pb.js";
24
24
  import { file_dxos_echo_timeframe } from "../echo/timeframe_pb.js";
@@ -41,7 +41,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
41
41
  * Describes the file dxos/client/services.proto.
42
42
  */
43
43
  export const file_dxos_client_services: GenFile = /*@__PURE__*/
44
- fileDesc("ChpkeG9zL2NsaWVudC9zZXJ2aWNlcy5wcm90bxIUZHhvcy5jbGllbnQuc2VydmljZXMiSQoTVXBkYXRlU3RhdHVzUmVxdWVzdBIyCgZzdGF0dXMYASABKA4yIi5keG9zLmNsaWVudC5zZXJ2aWNlcy5TeXN0ZW1TdGF0dXMiOAoSUXVlcnlTdGF0dXNSZXF1ZXN0EhUKCGludGVydmFsGAEgASgFSACIAQFCCwoJX2ludGVydmFsIkkKE1F1ZXJ5U3RhdHVzUmVzcG9uc2USMgoGc3RhdHVzGAEgASgOMiIuZHhvcy5jbGllbnQuc2VydmljZXMuU3lzdGVtU3RhdHVzIp8BChVHZXREaWFnbm9zdGljc1JlcXVlc3QSSQoEa2V5cxgBIAEoDjI2LmR4b3MuY2xpZW50LnNlcnZpY2VzLkdldERpYWdub3N0aWNzUmVxdWVzdC5LRVlfT1BUSU9OSACIAQEiMgoKS0VZX09QVElPThIICgROT05FEAASDAoIVFJVTkNBVEUQARIMCghIVU1BTklaRRACQgcKBV9rZXlzInUKFkdldERpYWdub3N0aWNzUmVzcG9uc2USLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgtkaWFnbm9zdGljcxgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi5AIKCFBsYXRmb3JtEjoKBHR5cGUYASABKA4yLC5keG9zLmNsaWVudC5zZXJ2aWNlcy5QbGF0Zm9ybS5QTEFURk9STV9UWVBFEhcKCnVzZXJfYWdlbnQYAiABKAlIAIgBARIVCghwbGF0Zm9ybRgDIAEoCUgBiAEBEhEKBGFyY2gYBCABKAlIAogBARIUCgdydW50aW1lGAUgASgJSAOIAQESEwoGdXB0aW1lGAYgASgNSASIAQESLAoGbWVtb3J5GAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBIjkKDVBMQVRGT1JNX1RZUEUSCwoHQlJPV1NFUhAAEhEKDVNIQVJFRF9XT1JLRVIQARIICgROT0RFEAJCDQoLX3VzZXJfYWdlbnRCCwoJX3BsYXRmb3JtQgcKBV9hcmNoQgoKCF9ydW50aW1lQgkKB191cHRpbWVCCQoHX21lbW9yeSK8AQoISWRlbnRpdHkSKgoMaWRlbnRpdHlfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIsCglzcGFjZV9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SACIAQESPAoHcHJvZmlsZRgDIAEoCzImLmR4b3MuaGFsby5jcmVkZW50aWFscy5Qcm9maWxlRG9jdW1lbnRIAYgBAUIMCgpfc3BhY2Vfa2V5QgoKCF9wcm9maWxlIi4KFlJlY292ZXJJZGVudGl0eVJlcXVlc3QSFAoMcmVjb3Zlcnlfa2V5GAEgASgMIlsKFVF1ZXJ5SWRlbnRpdHlSZXNwb25zZRI1CghpZGVudGl0eRgBIAEoCzIeLmR4b3MuY2xpZW50LnNlcnZpY2VzLklkZW50aXR5SACIAQFCCwoJX2lkZW50aXR5InIKF1NpZ25QcmVzZW50YXRpb25SZXF1ZXN0EjkKDHByZXNlbnRhdGlvbhgBIAEoCzIjLmR4b3MuaGFsby5jcmVkZW50aWFscy5QcmVzZW50YXRpb24SEgoFbm9uY2UYAiABKAxIAIgBAUIICgZfbm9uY2UixQEKFUNyZWF0ZUlkZW50aXR5UmVxdWVzdBI8Cgdwcm9maWxlGAEgASgLMiYuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByb2ZpbGVEb2N1bWVudEgAiAEBEkkKDmRldmljZV9wcm9maWxlGAMgASgLMiwuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkRldmljZVByb2ZpbGVEb2N1bWVudEgBiAEBQgoKCF9wcm9maWxlQhEKD19kZXZpY2VfcHJvZmlsZUoECAIQAyKnAgoGRGV2aWNlEigKCmRldmljZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei4KBGtpbmQYAiABKA4yIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5EZXZpY2VLaW5kEkIKB3Byb2ZpbGUYAyABKAsyLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50SACIAQESPAoIcHJlc2VuY2UYBCABKA4yKi5keG9zLmNsaWVudC5zZXJ2aWNlcy5EZXZpY2UuUHJlc2VuY2VTdGF0ZSI1Cg1QcmVzZW5jZVN0YXRlEgsKB09GRkxJTkUQABIKCgZPTkxJTkUQARILCgdSRU1PVkVEEAJCCgoIX3Byb2ZpbGUiRQoUUXVlcnlEZXZpY2VzUmVzcG9uc2USLQoHZGV2aWNlcxgBIAMoCzIcLmR4b3MuY2xpZW50LnNlcnZpY2VzLkRldmljZSKqAQoHQ29udGFjdBIpCgtpZGVudGl0eUtleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSPAoHcHJvZmlsZRgBIAEoCzImLmR4b3MuaGFsby5jcmVkZW50aWFscy5Qcm9maWxlRG9jdW1lbnRIAIgBARIqCgxjb21tb25TcGFjZXMYAyADKAsyFC5keG9zLmtleXMuUHVibGljS2V5QgoKCF9wcm9maWxlIj4KC0NvbnRhY3RCb29rEi8KCGNvbnRhY3RzGAEgAygLMh0uZHhvcy5jbGllbnQuc2VydmljZXMuQ29udGFjdCKWAgoLU3BhY2VNZW1iZXISMAoIaWRlbnRpdHkYASABKAsyHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5JZGVudGl0eRJBCghwcmVzZW5jZRgCIAEoDjIvLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlTWVtYmVyLlByZXNlbmNlU3RhdGUSMQoKcGVlclN0YXRlcxgDIAMoCzIdLmR4b3MubWVzaC5wcmVzZW5jZS5QZWVyU3RhdGUSNQoEcm9sZRgEIAEoDjInLmR4b3MuaGFsby5jcmVkZW50aWFscy5TcGFjZU1lbWJlci5Sb2xlIigKDVByZXNlbmNlU3RhdGUSCwoHT0ZGTElORRAAEgoKBk9OTElORRABIoYSCgVTcGFjZRIKCgJpZBgFIAEoCRInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei8KBXN0YXRlGAIgASgOMiAuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2VTdGF0ZRJACghwaXBlbGluZRgDIAEoCzIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlLlBpcGVsaW5lU3RhdGVIAIgBARIlCgVlcnJvchgEIAEoCzIRLmR4b3MuZXJyb3IuRXJyb3JIAYgBARIyCgdtZW1iZXJzGAogAygLMiEuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2VNZW1iZXISKgoHY3JlYXRvchgLIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAogBARIyCgVjYWNoZRgUIAEoCzIeLmR4b3MuZWNoby5tZXRhZGF0YS5TcGFjZUNhY2hlSAOIAQESNAoHbWV0cmljcxgVIAEoCzIjLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlLk1ldHJpY3Ma1wMKB01ldHJpY3MSLQoEb3BlbhgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI8ChNwaXBlbGluZV9pbml0X2JlZ2luGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEj8KFmNvbnRyb2xfcGlwZWxpbmVfcmVhZHkYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESOwoSZGF0YV9waXBlbGluZV9vcGVuGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjwKE2RhdGFfcGlwZWxpbmVfcmVhZHkYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESLgoFcmVhZHkYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQFCBwoFX29wZW5CFgoUX3BpcGVsaW5lX2luaXRfYmVnaW5CGQoXX2NvbnRyb2xfcGlwZWxpbmVfcmVhZHlCFQoTX2RhdGFfcGlwZWxpbmVfb3BlbkIWChRfZGF0YV9waXBlbGluZV9yZWFkeUIICgZfcmVhZHka3AoKDVBpcGVsaW5lU3RhdGUSMwoQY29udHJvbF9mZWVkX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAIgBARIwCg1kYXRhX2ZlZWRfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUgBiAEBEisKDWNvbnRyb2xfZmVlZHMYEiADKAsyFC5keG9zLmtleXMuUHVibGljS2V5EigKCmRhdGFfZmVlZHMYEyADKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ej0KDWN1cnJlbnRfZXBvY2gYFCABKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbEgCiAEBEj0KDWFwcGxpZWRfZXBvY2gYFSABKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbEgDiAEBEkwKGWN1cnJlbnRfY29udHJvbF90aW1lZnJhbWUYCiABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgEiAEBEksKGHRhcmdldF9jb250cm9sX3RpbWVmcmFtZRgLIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAWIAQESSgoXdG90YWxfY29udHJvbF90aW1lZnJhbWUYDiABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgGiAEBEkoKF2tub3duX2NvbnRyb2xfdGltZWZyYW1lGA8gASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIB4gBARJHChRzdGFydF9kYXRhX3RpbWVmcmFtZRhkIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAiIAQESSQoWY3VycmVudF9kYXRhX3RpbWVmcmFtZRgMIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAmIAQESSAoVdGFyZ2V0X2RhdGFfdGltZWZyYW1lGA0gASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JICogBARJHChR0b3RhbF9kYXRhX3RpbWVmcmFtZRgQIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAuIAQESRwoUa25vd25fZGF0YV90aW1lZnJhbWUYESABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgMiAEBEhsKDnNwYWNlX3Jvb3RfdXJsGBYgASgJSA2IAQFCEwoRX2NvbnRyb2xfZmVlZF9rZXlCEAoOX2RhdGFfZmVlZF9rZXlCEAoOX2N1cnJlbnRfZXBvY2hCEAoOX2FwcGxpZWRfZXBvY2hCHAoaX2N1cnJlbnRfY29udHJvbF90aW1lZnJhbWVCGwoZX3RhcmdldF9jb250cm9sX3RpbWVmcmFtZUIaChhfdG90YWxfY29udHJvbF90aW1lZnJhbWVCGgoYX2tub3duX2NvbnRyb2xfdGltZWZyYW1lQhcKFV9zdGFydF9kYXRhX3RpbWVmcmFtZUIZChdfY3VycmVudF9kYXRhX3RpbWVmcmFtZUIYChZfdGFyZ2V0X2RhdGFfdGltZWZyYW1lQhcKFV90b3RhbF9kYXRhX3RpbWVmcmFtZUIXChVfa25vd25fZGF0YV90aW1lZnJhbWVCEQoPX3NwYWNlX3Jvb3RfdXJsQgsKCV9waXBlbGluZUIICgZfZXJyb3JCCgoIX2NyZWF0b3JCCAoGX2NhY2hlIn0KElVwZGF0ZVNwYWNlUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjQKBXN0YXRlGAIgASgOMiAuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2VTdGF0ZUgAiAEBQggKBl9zdGF0ZSJCChNRdWVyeVNwYWNlc1Jlc3BvbnNlEisKBnNwYWNlcxgBIAMoCzIbLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlInUKElBvc3RNZXNzYWdlUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Eg8KB2NoYW5uZWwYAiABKAkSJQoHbWVzc2FnZRgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkiVAoYU3Vic2NyaWJlTWVzc2FnZXNSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSDwoHY2hhbm5lbBgCIAEoCSJ6ChdXcml0ZUNyZWRlbnRpYWxzUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjYKC2NyZWRlbnRpYWxzGAIgAygLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWwiZAoXUXVlcnlDcmVkZW50aWFsc1JlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIUCgdub190YWlsGAIgASgISACIAQFCCgoIX25vX3RhaWwi9QIKEkNyZWF0ZUVwb2NoUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EkoKCW1pZ3JhdGlvbhgCIAEoDjIyLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNyZWF0ZUVwb2NoUmVxdWVzdC5NaWdyYXRpb25IAIgBARIfChJhdXRvbWVyZ2Vfcm9vdF91cmwYAyABKAlIAYgBASKjAQoJTWlncmF0aW9uEggKBE5PTkUQABISCg5JTklUX0FVVE9NRVJHRRABEiAKHFBSVU5FX0FVVE9NRVJHRV9ST09UX0hJU1RPUlkQAhIbChdGUkFHTUVOVF9BVVRPTUVSR0VfUk9PVBADEhoKFlJFUExBQ0VfQVVUT01FUkdFX1JPT1QQBBIdChlNSUdSQVRFX1JFRkVSRU5DRVNfVE9fRFhOEAVCDAoKX21pZ3JhdGlvbkIVChNfYXV0b21lcmdlX3Jvb3RfdXJsIsgBChNDcmVhdGVFcG9jaFJlc3BvbnNlEkAKEGVwb2NoX2NyZWRlbnRpYWwYASABKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbEgAiAEBEkQKEWNvbnRyb2xfdGltZWZyYW1lGAIgASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIAYgBAUITChFfZXBvY2hfY3JlZGVudGlhbEIUChJfY29udHJvbF90aW1lZnJhbWUipwEKF1VwZGF0ZU1lbWJlclJvbGVSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSKAoKbWVtYmVyX2tleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSOQoIbmV3X3JvbGUYAyABKA4yJy5keG9zLmhhbG8uY3JlZGVudGlhbHMuU3BhY2VNZW1iZXIuUm9sZSKlAQoTQWRtaXRDb250YWN0UmVxdWVzdBIuCgdjb250YWN0GAEgASgLMh0uZHhvcy5jbGllbnQuc2VydmljZXMuQ29udGFjdBI1CgRyb2xlGAIgASgOMicuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlNwYWNlTWVtYmVyLlJvbGUSJwoJc3BhY2Vfa2V5GAMgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleSJJChBDb250YWN0QWRtaXNzaW9uEjUKCmNyZWRlbnRpYWwYASABKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbCI/ChFKb2luU3BhY2VSZXNwb25zZRIqCgVzcGFjZRgBIAEoCzIbLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlIkAKFUpvaW5CeVNwYWNlS2V5UmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Iq0BChdBY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBI0CgppbnZpdGF0aW9uGAEgASgLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbhJJCg5kZXZpY2VfcHJvZmlsZRgCIAEoCzIsLmR4b3MuaGFsby5jcmVkZW50aWFscy5EZXZpY2VQcm9maWxlRG9jdW1lbnRIAIgBAUIRCg9fZGV2aWNlX3Byb2ZpbGUiQQoVQXV0aGVudGljYXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkSEQoJYXV0aF9jb2RlGAIgASgJIjAKF0NhbmNlbEludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkihQEKEEludml0YXRpb25NZXRob2QSMwoHY3JlYXRlZBgBIAEoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb25IABI0CghhY2NlcHRlZBgCIAEoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb25IAEIGCgRraW5kIuICChhRdWVyeUludml0YXRpb25zUmVzcG9uc2USRQoGYWN0aW9uGAEgASgOMjUuZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlJbnZpdGF0aW9uc1Jlc3BvbnNlLkFjdGlvbhJBCgR0eXBlGAIgASgOMjMuZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlJbnZpdGF0aW9uc1Jlc3BvbnNlLlR5cGUSNQoLaW52aXRhdGlvbnMYAyADKAsyIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uEhUKCGV4aXN0aW5nGAQgASgISACIAQEiPgoGQWN0aW9uEgkKBUFEREVEEAASCwoHUkVNT1ZFRBABEgkKBVNBVkVEEAISEQoNTE9BRF9DT01QTEVURRADIiEKBFR5cGUSCwoHQ1JFQVRFRBAAEgwKCEFDQ0VQVEVEEAFCCwoJX2V4aXN0aW5nIloKIUxvYWRQZXJzaXN0ZW50SW52aXRhdGlvbnNSZXNwb25zZRI1CgtpbnZpdGF0aW9ucxgBIAMoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24ihQIKDU5ldHdvcmtTdGF0dXMSNAoFc3dhcm0YASABKA4yJS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Db25uZWN0aW9uU3RhdGUSPQoJc2lnbmFsaW5nGAIgAygLMiouZHhvcy5jbGllbnQuc2VydmljZXMuTmV0d29ya1N0YXR1cy5TaWduYWwSNwoPY29ubmVjdGlvbl9pbmZvGAMgAygLMh4uZHhvcy5kZXZ0b29scy5zd2FybS5Td2FybUluZm8aRgoGU2lnbmFsEg4KBnNlcnZlchgBIAEoCRIsCgVzdGF0ZRgCIAEoDjIdLmR4b3MubWVzaC5zaWduYWwuU2lnbmFsU3RhdGUiSwoTVXBkYXRlQ29uZmlnUmVxdWVzdBI0CgVzd2FybRgBIAEoDjIlLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbm5lY3Rpb25TdGF0ZSooCgxTeXN0ZW1TdGF0dXMSCgoGQUNUSVZFEAASDAoISU5BQ1RJVkUQASomCgpEZXZpY2VLaW5kEgsKB0NVUlJFTlQQABILCgdUUlVTVEVEEAEqKgoPQ29ubmVjdGlvblN0YXRlEgsKB09GRkxJTkUQABIKCgZPTkxJTkUQATLvAwoNU3lzdGVtU2VydmljZRI4CglHZXRDb25maWcSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaEy5keG9zLmNvbmZpZy5Db25maWcSawoOR2V0RGlhZ25vc3RpY3MSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5HZXREaWFnbm9zdGljc1JlcXVlc3QaLC5keG9zLmNsaWVudC5zZXJ2aWNlcy5HZXREaWFnbm9zdGljc1Jlc3BvbnNlElEKDFVwZGF0ZVN0YXR1cxIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLlVwZGF0ZVN0YXR1c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZAoLUXVlcnlTdGF0dXMSKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVN0YXR1c1JlcXVlc3QaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVN0YXR1c1Jlc3BvbnNlMAESNwoFUmVzZXQSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRQoLR2V0UGxhdGZvcm0SFi5nb29nbGUucHJvdG9idWYuRW1wdHkaHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5QbGF0Zm9ybTLqAwoPSWRlbnRpdHlTZXJ2aWNlEl0KDkNyZWF0ZUlkZW50aXR5EisuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlSWRlbnRpdHlSZXF1ZXN0Gh4uZHhvcy5jbGllbnQuc2VydmljZXMuSWRlbnRpdHkSXwoPUmVjb3ZlcklkZW50aXR5EiwuZHhvcy5jbGllbnQuc2VydmljZXMuUmVjb3ZlcklkZW50aXR5UmVxdWVzdBoeLmR4b3MuY2xpZW50LnNlcnZpY2VzLklkZW50aXR5ElYKDVF1ZXJ5SWRlbnRpdHkSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUlkZW50aXR5UmVzcG9uc2UwARJXCg1VcGRhdGVQcm9maWxlEiYuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByb2ZpbGVEb2N1bWVudBoeLmR4b3MuY2xpZW50LnNlcnZpY2VzLklkZW50aXR5EmYKEFNpZ25QcmVzZW50YXRpb24SLS5keG9zLmNsaWVudC5zZXJ2aWNlcy5TaWduUHJlc2VudGF0aW9uUmVxdWVzdBojLmR4b3MuaGFsby5jcmVkZW50aWFscy5QcmVzZW50YXRpb24ywgEKDkRldmljZXNTZXJ2aWNlEloKDFVwZGF0ZURldmljZRIsLmR4b3MuaGFsby5jcmVkZW50aWFscy5EZXZpY2VQcm9maWxlRG9jdW1lbnQaHC5keG9zLmNsaWVudC5zZXJ2aWNlcy5EZXZpY2USVAoMUXVlcnlEZXZpY2VzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiouZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlEZXZpY2VzUmVzcG9uc2UwATKpAQoPQ29udGFjdHNTZXJ2aWNlEkgKC0dldENvbnRhY3RzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiEuZHhvcy5jbGllbnQuc2VydmljZXMuQ29udGFjdEJvb2sSTAoNUXVlcnlDb250YWN0cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRohLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbnRhY3RCb29rMAEy9wcKDVNwYWNlc1NlcnZpY2USQgoLQ3JlYXRlU3BhY2USFi5nb29nbGUucHJvdG9idWYuRW1wdHkaGy5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZRJPCgtVcGRhdGVTcGFjZRIoLmR4b3MuY2xpZW50LnNlcnZpY2VzLlVwZGF0ZVNwYWNlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJSCgtRdWVyeVNwYWNlcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRopLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5U3BhY2VzUmVzcG9uc2UwARJZChBVcGRhdGVNZW1iZXJSb2xlEi0uZHhvcy5jbGllbnQuc2VydmljZXMuVXBkYXRlTWVtYmVyUm9sZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSUQoMQWRtaXRDb250YWN0EikuZHhvcy5jbGllbnQuc2VydmljZXMuQWRtaXRDb250YWN0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJmCg5Kb2luQnlTcGFjZUtleRIrLmR4b3MuY2xpZW50LnNlcnZpY2VzLkpvaW5CeVNwYWNlS2V5UmVxdWVzdBonLmR4b3MuY2xpZW50LnNlcnZpY2VzLkpvaW5TcGFjZVJlc3BvbnNlEk8KC1Bvc3RNZXNzYWdlEiguZHhvcy5jbGllbnQuc2VydmljZXMuUG9zdE1lc3NhZ2VSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Em8KEVN1YnNjcmliZU1lc3NhZ2VzEi4uZHhvcy5jbGllbnQuc2VydmljZXMuU3Vic2NyaWJlTWVzc2FnZXNSZXF1ZXN0GiguZHhvcy5tZXNoLnRlbGVwb3J0Lmdvc3NpcC5Hb3NzaXBNZXNzYWdlMAESWQoQV3JpdGVDcmVkZW50aWFscxItLmR4b3MuY2xpZW50LnNlcnZpY2VzLldyaXRlQ3JlZGVudGlhbHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EmYKEFF1ZXJ5Q3JlZGVudGlhbHMSLS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUNyZWRlbnRpYWxzUmVxdWVzdBohLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsMAESYgoLQ3JlYXRlRXBvY2gSKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5DcmVhdGVFcG9jaFJlcXVlc3QaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5DcmVhdGVFcG9jaFJlc3BvbnNlMuMDChJJbnZpdGF0aW9uc1NlcnZpY2USWAoQQ3JlYXRlSW52aXRhdGlvbhIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24aIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uMAESZQoQQWNjZXB0SW52aXRhdGlvbhItLmR4b3MuY2xpZW50LnNlcnZpY2VzLkFjY2VwdEludml0YXRpb25SZXF1ZXN0GiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbjABElMKDEF1dGhlbnRpY2F0ZRIrLmR4b3MuY2xpZW50LnNlcnZpY2VzLkF1dGhlbnRpY2F0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJZChBDYW5jZWxJbnZpdGF0aW9uEi0uZHhvcy5jbGllbnQuc2VydmljZXMuQ2FuY2VsSW52aXRhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSXAoQUXVlcnlJbnZpdGF0aW9ucxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRouLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5SW52aXRhdGlvbnNSZXNwb25zZTABMrEBCg5OZXR3b3JrU2VydmljZRJRCgxVcGRhdGVDb25maWcSKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5VcGRhdGVDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkwKC1F1ZXJ5U3RhdHVzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiMuZHhvcy5jbGllbnQuc2VydmljZXMuTmV0d29ya1N0YXR1czABYgZwcm90bzM", [file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_config, file_dxos_devtools_swarm, file_dxos_echo_metadata, file_dxos_echo_timeframe, file_dxos_error, file_dxos_halo_credentials, file_dxos_keys, file_dxos_mesh_signal, file_dxos_mesh_presence, file_dxos_mesh_teleport_gossip, file_dxos_value]);
44
+ fileDesc("ChpkeG9zL2NsaWVudC9zZXJ2aWNlcy5wcm90bxIUZHhvcy5jbGllbnQuc2VydmljZXMiSQoTVXBkYXRlU3RhdHVzUmVxdWVzdBIyCgZzdGF0dXMYASABKA4yIi5keG9zLmNsaWVudC5zZXJ2aWNlcy5TeXN0ZW1TdGF0dXMiOAoSUXVlcnlTdGF0dXNSZXF1ZXN0EhUKCGludGVydmFsGAEgASgFSACIAQFCCwoJX2ludGVydmFsIkkKE1F1ZXJ5U3RhdHVzUmVzcG9uc2USMgoGc3RhdHVzGAEgASgOMiIuZHhvcy5jbGllbnQuc2VydmljZXMuU3lzdGVtU3RhdHVzIp8BChVHZXREaWFnbm9zdGljc1JlcXVlc3QSSQoEa2V5cxgBIAEoDjI2LmR4b3MuY2xpZW50LnNlcnZpY2VzLkdldERpYWdub3N0aWNzUmVxdWVzdC5LRVlfT1BUSU9OSACIAQEiMgoKS0VZX09QVElPThIICgROT05FEAASDAoIVFJVTkNBVEUQARIMCghIVU1BTklaRRACQgcKBV9rZXlzInUKFkdldERpYWdub3N0aWNzUmVzcG9uc2USLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgtkaWFnbm9zdGljcxgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi5AIKCFBsYXRmb3JtEjoKBHR5cGUYASABKA4yLC5keG9zLmNsaWVudC5zZXJ2aWNlcy5QbGF0Zm9ybS5QTEFURk9STV9UWVBFEhcKCnVzZXJfYWdlbnQYAiABKAlIAIgBARIVCghwbGF0Zm9ybRgDIAEoCUgBiAEBEhEKBGFyY2gYBCABKAlIAogBARIUCgdydW50aW1lGAUgASgJSAOIAQESEwoGdXB0aW1lGAYgASgNSASIAQESLAoGbWVtb3J5GAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBIjkKDVBMQVRGT1JNX1RZUEUSCwoHQlJPV1NFUhAAEhEKDVNIQVJFRF9XT1JLRVIQARIICgROT0RFEAJCDQoLX3VzZXJfYWdlbnRCCwoJX3BsYXRmb3JtQgcKBV9hcmNoQgoKCF9ydW50aW1lQgkKB191cHRpbWVCCQoHX21lbW9yeSK8AQoISWRlbnRpdHkSKgoMaWRlbnRpdHlfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIsCglzcGFjZV9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SACIAQESPAoHcHJvZmlsZRgDIAEoCzImLmR4b3MuaGFsby5jcmVkZW50aWFscy5Qcm9maWxlRG9jdW1lbnRIAYgBAUIMCgpfc3BhY2Vfa2V5QgoKCF9wcm9maWxlIi4KFlJlY292ZXJJZGVudGl0eVJlcXVlc3QSFAoMcmVjb3Zlcnlfa2V5GAEgASgMIlsKFVF1ZXJ5SWRlbnRpdHlSZXNwb25zZRI1CghpZGVudGl0eRgBIAEoCzIeLmR4b3MuY2xpZW50LnNlcnZpY2VzLklkZW50aXR5SACIAQFCCwoJX2lkZW50aXR5InIKF1NpZ25QcmVzZW50YXRpb25SZXF1ZXN0EjkKDHByZXNlbnRhdGlvbhgBIAEoCzIjLmR4b3MuaGFsby5jcmVkZW50aWFscy5QcmVzZW50YXRpb24SEgoFbm9uY2UYAiABKAxIAIgBAUIICgZfbm9uY2UixQEKFUNyZWF0ZUlkZW50aXR5UmVxdWVzdBI8Cgdwcm9maWxlGAEgASgLMiYuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByb2ZpbGVEb2N1bWVudEgAiAEBEkkKDmRldmljZV9wcm9maWxlGAMgASgLMiwuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkRldmljZVByb2ZpbGVEb2N1bWVudEgBiAEBQgoKCF9wcm9maWxlQhEKD19kZXZpY2VfcHJvZmlsZUoECAIQAyKnAgoGRGV2aWNlEigKCmRldmljZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei4KBGtpbmQYAiABKA4yIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5EZXZpY2VLaW5kEkIKB3Byb2ZpbGUYAyABKAsyLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50SACIAQESPAoIcHJlc2VuY2UYBCABKA4yKi5keG9zLmNsaWVudC5zZXJ2aWNlcy5EZXZpY2UuUHJlc2VuY2VTdGF0ZSI1Cg1QcmVzZW5jZVN0YXRlEgsKB09GRkxJTkUQABIKCgZPTkxJTkUQARILCgdSRU1PVkVEEAJCCgoIX3Byb2ZpbGUiRQoUUXVlcnlEZXZpY2VzUmVzcG9uc2USLQoHZGV2aWNlcxgBIAMoCzIcLmR4b3MuY2xpZW50LnNlcnZpY2VzLkRldmljZSKqAQoHQ29udGFjdBIpCgtpZGVudGl0eUtleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSPAoHcHJvZmlsZRgBIAEoCzImLmR4b3MuaGFsby5jcmVkZW50aWFscy5Qcm9maWxlRG9jdW1lbnRIAIgBARIqCgxjb21tb25TcGFjZXMYAyADKAsyFC5keG9zLmtleXMuUHVibGljS2V5QgoKCF9wcm9maWxlIj4KC0NvbnRhY3RCb29rEi8KCGNvbnRhY3RzGAEgAygLMh0uZHhvcy5jbGllbnQuc2VydmljZXMuQ29udGFjdCKWAgoLU3BhY2VNZW1iZXISMAoIaWRlbnRpdHkYASABKAsyHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5JZGVudGl0eRJBCghwcmVzZW5jZRgCIAEoDjIvLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlTWVtYmVyLlByZXNlbmNlU3RhdGUSMQoKcGVlclN0YXRlcxgDIAMoCzIdLmR4b3MubWVzaC5wcmVzZW5jZS5QZWVyU3RhdGUSNQoEcm9sZRgEIAEoDjInLmR4b3MuaGFsby5jcmVkZW50aWFscy5TcGFjZU1lbWJlci5Sb2xlIigKDVByZXNlbmNlU3RhdGUSCwoHT0ZGTElORRAAEgoKBk9OTElORRABIuYSCgVTcGFjZRIKCgJpZBgFIAEoCRInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei8KBXN0YXRlGAIgASgOMiAuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2VTdGF0ZRJACghwaXBlbGluZRgDIAEoCzIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlLlBpcGVsaW5lU3RhdGVIAIgBARIlCgVlcnJvchgEIAEoCzIRLmR4b3MuZXJyb3IuRXJyb3JIAYgBARJJChBlZGdlX3JlcGxpY2F0aW9uGAYgASgOMiouZHhvcy5lY2hvLm1ldGFkYXRhLkVkZ2VSZXBsaWNhdGlvblNldHRpbmdIAogBARIyCgdtZW1iZXJzGAogAygLMiEuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2VNZW1iZXISKgoHY3JlYXRvchgLIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIA4gBARIyCgVjYWNoZRgUIAEoCzIeLmR4b3MuZWNoby5tZXRhZGF0YS5TcGFjZUNhY2hlSASIAQESNAoHbWV0cmljcxgVIAEoCzIjLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlLk1ldHJpY3Ma1wMKB01ldHJpY3MSLQoEb3BlbhgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI8ChNwaXBlbGluZV9pbml0X2JlZ2luGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEj8KFmNvbnRyb2xfcGlwZWxpbmVfcmVhZHkYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESOwoSZGF0YV9waXBlbGluZV9vcGVuGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjwKE2RhdGFfcGlwZWxpbmVfcmVhZHkYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESLgoFcmVhZHkYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQFCBwoFX29wZW5CFgoUX3BpcGVsaW5lX2luaXRfYmVnaW5CGQoXX2NvbnRyb2xfcGlwZWxpbmVfcmVhZHlCFQoTX2RhdGFfcGlwZWxpbmVfb3BlbkIWChRfZGF0YV9waXBlbGluZV9yZWFkeUIICgZfcmVhZHka3AoKDVBpcGVsaW5lU3RhdGUSMwoQY29udHJvbF9mZWVkX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAIgBARIwCg1kYXRhX2ZlZWRfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUgBiAEBEisKDWNvbnRyb2xfZmVlZHMYEiADKAsyFC5keG9zLmtleXMuUHVibGljS2V5EigKCmRhdGFfZmVlZHMYEyADKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ej0KDWN1cnJlbnRfZXBvY2gYFCABKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbEgCiAEBEj0KDWFwcGxpZWRfZXBvY2gYFSABKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbEgDiAEBEkwKGWN1cnJlbnRfY29udHJvbF90aW1lZnJhbWUYCiABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgEiAEBEksKGHRhcmdldF9jb250cm9sX3RpbWVmcmFtZRgLIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAWIAQESSgoXdG90YWxfY29udHJvbF90aW1lZnJhbWUYDiABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgGiAEBEkoKF2tub3duX2NvbnRyb2xfdGltZWZyYW1lGA8gASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIB4gBARJHChRzdGFydF9kYXRhX3RpbWVmcmFtZRhkIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAiIAQESSQoWY3VycmVudF9kYXRhX3RpbWVmcmFtZRgMIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAmIAQESSAoVdGFyZ2V0X2RhdGFfdGltZWZyYW1lGA0gASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JICogBARJHChR0b3RhbF9kYXRhX3RpbWVmcmFtZRgQIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAuIAQESRwoUa25vd25fZGF0YV90aW1lZnJhbWUYESABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgMiAEBEhsKDnNwYWNlX3Jvb3RfdXJsGBYgASgJSA2IAQFCEwoRX2NvbnRyb2xfZmVlZF9rZXlCEAoOX2RhdGFfZmVlZF9rZXlCEAoOX2N1cnJlbnRfZXBvY2hCEAoOX2FwcGxpZWRfZXBvY2hCHAoaX2N1cnJlbnRfY29udHJvbF90aW1lZnJhbWVCGwoZX3RhcmdldF9jb250cm9sX3RpbWVmcmFtZUIaChhfdG90YWxfY29udHJvbF90aW1lZnJhbWVCGgoYX2tub3duX2NvbnRyb2xfdGltZWZyYW1lQhcKFV9zdGFydF9kYXRhX3RpbWVmcmFtZUIZChdfY3VycmVudF9kYXRhX3RpbWVmcmFtZUIYChZfdGFyZ2V0X2RhdGFfdGltZWZyYW1lQhcKFV90b3RhbF9kYXRhX3RpbWVmcmFtZUIXChVfa25vd25fZGF0YV90aW1lZnJhbWVCEQoPX3NwYWNlX3Jvb3RfdXJsQgsKCV9waXBlbGluZUIICgZfZXJyb3JCEwoRX2VkZ2VfcmVwbGljYXRpb25CCgoIX2NyZWF0b3JCCAoGX2NhY2hlIt0BChJVcGRhdGVTcGFjZVJlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI0CgVzdGF0ZRgCIAEoDjIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlU3RhdGVIAIgBARJJChBlZGdlX3JlcGxpY2F0aW9uGAMgASgOMiouZHhvcy5lY2hvLm1ldGFkYXRhLkVkZ2VSZXBsaWNhdGlvblNldHRpbmdIAYgBAUIICgZfc3RhdGVCEwoRX2VkZ2VfcmVwbGljYXRpb24iQgoTUXVlcnlTcGFjZXNSZXNwb25zZRIrCgZzcGFjZXMYASADKAsyGy5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZSJ1ChJQb3N0TWVzc2FnZVJlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIPCgdjaGFubmVsGAIgASgJEiUKB21lc3NhZ2UYAyABKAsyFC5nb29nbGUucHJvdG9idWYuQW55IlQKGFN1YnNjcmliZU1lc3NhZ2VzUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Eg8KB2NoYW5uZWwYAiABKAkiegoXV3JpdGVDcmVkZW50aWFsc1JlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI2CgtjcmVkZW50aWFscxgCIAMoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsImQKF1F1ZXJ5Q3JlZGVudGlhbHNSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSFAoHbm9fdGFpbBgCIAEoCEgAiAEBQgoKCF9ub190YWlsIvUCChJDcmVhdGVFcG9jaFJlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRJKCgltaWdyYXRpb24YAiABKA4yMi5keG9zLmNsaWVudC5zZXJ2aWNlcy5DcmVhdGVFcG9jaFJlcXVlc3QuTWlncmF0aW9uSACIAQESHwoSYXV0b21lcmdlX3Jvb3RfdXJsGAMgASgJSAGIAQEiowEKCU1pZ3JhdGlvbhIICgROT05FEAASEgoOSU5JVF9BVVRPTUVSR0UQARIgChxQUlVORV9BVVRPTUVSR0VfUk9PVF9ISVNUT1JZEAISGwoXRlJBR01FTlRfQVVUT01FUkdFX1JPT1QQAxIaChZSRVBMQUNFX0FVVE9NRVJHRV9ST09UEAQSHQoZTUlHUkFURV9SRUZFUkVOQ0VTX1RPX0RYThAFQgwKCl9taWdyYXRpb25CFQoTX2F1dG9tZXJnZV9yb290X3VybCLIAQoTQ3JlYXRlRXBvY2hSZXNwb25zZRJAChBlcG9jaF9jcmVkZW50aWFsGAEgASgLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWxIAIgBARJEChFjb250cm9sX3RpbWVmcmFtZRgCIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAGIAQFCEwoRX2Vwb2NoX2NyZWRlbnRpYWxCFAoSX2NvbnRyb2xfdGltZWZyYW1lIqcBChdVcGRhdGVNZW1iZXJSb2xlUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EigKCm1lbWJlcl9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjkKCG5ld19yb2xlGAMgASgOMicuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlNwYWNlTWVtYmVyLlJvbGUipQEKE0FkbWl0Q29udGFjdFJlcXVlc3QSLgoHY29udGFjdBgBIAEoCzIdLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbnRhY3QSNQoEcm9sZRgCIAEoDjInLmR4b3MuaGFsby5jcmVkZW50aWFscy5TcGFjZU1lbWJlci5Sb2xlEicKCXNwYWNlX2tleRgDIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkiSQoQQ29udGFjdEFkbWlzc2lvbhI1CgpjcmVkZW50aWFsGAEgASgLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWwiPwoRSm9pblNwYWNlUmVzcG9uc2USKgoFc3BhY2UYASABKAsyGy5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZSJAChVKb2luQnlTcGFjZUtleVJlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleSKtAQoXQWNjZXB0SW52aXRhdGlvblJlcXVlc3QSNAoKaW52aXRhdGlvbhgBIAEoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24SSQoOZGV2aWNlX3Byb2ZpbGUYAiABKAsyLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50SACIAQFCEQoPX2RldmljZV9wcm9maWxlIkEKFUF1dGhlbnRpY2F0aW9uUmVxdWVzdBIVCg1pbnZpdGF0aW9uX2lkGAEgASgJEhEKCWF1dGhfY29kZRgCIAEoCSIwChdDYW5jZWxJbnZpdGF0aW9uUmVxdWVzdBIVCg1pbnZpdGF0aW9uX2lkGAEgASgJIoUBChBJbnZpdGF0aW9uTWV0aG9kEjMKB2NyZWF0ZWQYASABKAsyIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uSAASNAoIYWNjZXB0ZWQYAiABKAsyIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uSABCBgoEa2luZCLiAgoYUXVlcnlJbnZpdGF0aW9uc1Jlc3BvbnNlEkUKBmFjdGlvbhgBIAEoDjI1LmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5SW52aXRhdGlvbnNSZXNwb25zZS5BY3Rpb24SQQoEdHlwZRgCIAEoDjIzLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5SW52aXRhdGlvbnNSZXNwb25zZS5UeXBlEjUKC2ludml0YXRpb25zGAMgAygLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbhIVCghleGlzdGluZxgEIAEoCEgAiAEBIj4KBkFjdGlvbhIJCgVBRERFRBAAEgsKB1JFTU9WRUQQARIJCgVTQVZFRBACEhEKDUxPQURfQ09NUExFVEUQAyIhCgRUeXBlEgsKB0NSRUFURUQQABIMCghBQ0NFUFRFRBABQgsKCV9leGlzdGluZyJaCiFMb2FkUGVyc2lzdGVudEludml0YXRpb25zUmVzcG9uc2USNQoLaW52aXRhdGlvbnMYASADKAsyIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uIoUCCg1OZXR3b3JrU3RhdHVzEjQKBXN3YXJtGAEgASgOMiUuZHhvcy5jbGllbnQuc2VydmljZXMuQ29ubmVjdGlvblN0YXRlEj0KCXNpZ25hbGluZxgCIAMoCzIqLmR4b3MuY2xpZW50LnNlcnZpY2VzLk5ldHdvcmtTdGF0dXMuU2lnbmFsEjcKD2Nvbm5lY3Rpb25faW5mbxgDIAMoCzIeLmR4b3MuZGV2dG9vbHMuc3dhcm0uU3dhcm1JbmZvGkYKBlNpZ25hbBIOCgZzZXJ2ZXIYASABKAkSLAoFc3RhdGUYAiABKA4yHS5keG9zLm1lc2guc2lnbmFsLlNpZ25hbFN0YXRlIksKE1VwZGF0ZUNvbmZpZ1JlcXVlc3QSNAoFc3dhcm0YASABKA4yJS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Db25uZWN0aW9uU3RhdGUqKAoMU3lzdGVtU3RhdHVzEgoKBkFDVElWRRAAEgwKCElOQUNUSVZFEAEqJgoKRGV2aWNlS2luZBILCgdDVVJSRU5UEAASCwoHVFJVU1RFRBABKioKD0Nvbm5lY3Rpb25TdGF0ZRILCgdPRkZMSU5FEAASCgoGT05MSU5FEAEy7wMKDVN5c3RlbVNlcnZpY2USOAoJR2V0Q29uZmlnEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhMuZHhvcy5jb25maWcuQ29uZmlnEmsKDkdldERpYWdub3N0aWNzEisuZHhvcy5jbGllbnQuc2VydmljZXMuR2V0RGlhZ25vc3RpY3NSZXF1ZXN0GiwuZHhvcy5jbGllbnQuc2VydmljZXMuR2V0RGlhZ25vc3RpY3NSZXNwb25zZRJRCgxVcGRhdGVTdGF0dXMSKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5VcGRhdGVTdGF0dXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EmQKC1F1ZXJ5U3RhdHVzEiguZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlTdGF0dXNSZXF1ZXN0GikuZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlTdGF0dXNSZXNwb25zZTABEjcKBVJlc2V0EhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkUKC0dldFBsYXRmb3JtEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Gh4uZHhvcy5jbGllbnQuc2VydmljZXMuUGxhdGZvcm0y6gMKD0lkZW50aXR5U2VydmljZRJdCg5DcmVhdGVJZGVudGl0eRIrLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNyZWF0ZUlkZW50aXR5UmVxdWVzdBoeLmR4b3MuY2xpZW50LnNlcnZpY2VzLklkZW50aXR5El8KD1JlY292ZXJJZGVudGl0eRIsLmR4b3MuY2xpZW50LnNlcnZpY2VzLlJlY292ZXJJZGVudGl0eVJlcXVlc3QaHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5JZGVudGl0eRJWCg1RdWVyeUlkZW50aXR5EhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GisuZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlJZGVudGl0eVJlc3BvbnNlMAESVwoNVXBkYXRlUHJvZmlsZRImLmR4b3MuaGFsby5jcmVkZW50aWFscy5Qcm9maWxlRG9jdW1lbnQaHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5JZGVudGl0eRJmChBTaWduUHJlc2VudGF0aW9uEi0uZHhvcy5jbGllbnQuc2VydmljZXMuU2lnblByZXNlbnRhdGlvblJlcXVlc3QaIy5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJlc2VudGF0aW9uMsIBCg5EZXZpY2VzU2VydmljZRJaCgxVcGRhdGVEZXZpY2USLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50GhwuZHhvcy5jbGllbnQuc2VydmljZXMuRGV2aWNlElQKDFF1ZXJ5RGV2aWNlcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoqLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5RGV2aWNlc1Jlc3BvbnNlMAEyqQEKD0NvbnRhY3RzU2VydmljZRJICgtHZXRDb250YWN0cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRohLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbnRhY3RCb29rEkwKDVF1ZXJ5Q29udGFjdHMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaIS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Db250YWN0Qm9vazABMvcHCg1TcGFjZXNTZXJ2aWNlEkIKC0NyZWF0ZVNwYWNlEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhsuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2USTwoLVXBkYXRlU3BhY2USKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5VcGRhdGVTcGFjZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSUgoLUXVlcnlTcGFjZXMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVNwYWNlc1Jlc3BvbnNlMAESWQoQVXBkYXRlTWVtYmVyUm9sZRItLmR4b3MuY2xpZW50LnNlcnZpY2VzLlVwZGF0ZU1lbWJlclJvbGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElEKDEFkbWl0Q29udGFjdBIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLkFkbWl0Q29udGFjdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZgoOSm9pbkJ5U3BhY2VLZXkSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5Kb2luQnlTcGFjZUtleVJlcXVlc3QaJy5keG9zLmNsaWVudC5zZXJ2aWNlcy5Kb2luU3BhY2VSZXNwb25zZRJPCgtQb3N0TWVzc2FnZRIoLmR4b3MuY2xpZW50LnNlcnZpY2VzLlBvc3RNZXNzYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJvChFTdWJzY3JpYmVNZXNzYWdlcxIuLmR4b3MuY2xpZW50LnNlcnZpY2VzLlN1YnNjcmliZU1lc3NhZ2VzUmVxdWVzdBooLmR4b3MubWVzaC50ZWxlcG9ydC5nb3NzaXAuR29zc2lwTWVzc2FnZTABElkKEFdyaXRlQ3JlZGVudGlhbHMSLS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Xcml0ZUNyZWRlbnRpYWxzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJmChBRdWVyeUNyZWRlbnRpYWxzEi0uZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlDcmVkZW50aWFsc1JlcXVlc3QaIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbDABEmIKC0NyZWF0ZUVwb2NoEiguZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXF1ZXN0GikuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXNwb25zZTLjAwoSSW52aXRhdGlvbnNTZXJ2aWNlElgKEENyZWF0ZUludml0YXRpb24SIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uGiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbjABEmUKEEFjY2VwdEludml0YXRpb24SLS5keG9zLmNsaWVudC5zZXJ2aWNlcy5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBogLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24wARJTCgxBdXRoZW50aWNhdGUSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5BdXRoZW50aWNhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSWQoQQ2FuY2VsSW52aXRhdGlvbhItLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNhbmNlbEludml0YXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElwKEFF1ZXJ5SW52aXRhdGlvbnMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaLi5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUludml0YXRpb25zUmVzcG9uc2UwATKxAQoOTmV0d29ya1NlcnZpY2USUQoMVXBkYXRlQ29uZmlnEikuZHhvcy5jbGllbnQuc2VydmljZXMuVXBkYXRlQ29uZmlnUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJMCgtRdWVyeVN0YXR1cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRojLmR4b3MuY2xpZW50LnNlcnZpY2VzLk5ldHdvcmtTdGF0dXMwAWIGcHJvdG8z", [file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_config, file_dxos_devtools_swarm, file_dxos_echo_metadata, file_dxos_echo_timeframe, file_dxos_error, file_dxos_halo_credentials, file_dxos_keys, file_dxos_mesh_signal, file_dxos_mesh_presence, file_dxos_mesh_teleport_gossip, file_dxos_value]);
45
45
 
46
46
  /**
47
47
  * @generated from message dxos.client.services.UpdateStatusRequest
@@ -557,6 +557,11 @@ export type Space = Message<"dxos.client.services.Space"> & {
557
557
  */
558
558
  error?: Error;
559
559
 
560
+ /**
561
+ * @generated from field: optional dxos.echo.metadata.EdgeReplicationSetting edge_replication = 6;
562
+ */
563
+ edgeReplication?: EdgeReplicationSetting;
564
+
560
565
  /**
561
566
  * @generated from field: repeated dxos.client.services.SpaceMember members = 10;
562
567
  */
@@ -764,6 +769,11 @@ export type UpdateSpaceRequest = Message<"dxos.client.services.UpdateSpaceReques
764
769
  * @generated from field: optional dxos.client.services.SpaceState state = 2;
765
770
  */
766
771
  state?: SpaceState;
772
+
773
+ /**
774
+ * @generated from field: optional dxos.echo.metadata.EdgeReplicationSetting edge_replication = 3;
775
+ */
776
+ edgeReplication?: EdgeReplicationSetting;
767
777
  };
768
778
 
769
779
  /**
@@ -6,8 +6,8 @@
6
6
  // @generated from file dxos/echo/metadata.proto (package dxos.echo.metadata, syntax proto3)
7
7
  /* eslint-disable */
8
8
 
9
- import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
10
- import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
9
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
10
+ import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
11
11
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
12
12
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
13
13
  import type { Invitation, SpaceState } from "../client/invitation_pb.js";
@@ -26,7 +26,7 @@ import type { Message } from "@bufbuild/protobuf";
26
26
  * Describes the file dxos/echo/metadata.proto.
27
27
  */
28
28
  export const file_dxos_echo_metadata: GenFile = /*@__PURE__*/
29
- fileDesc("ChhkeG9zL2VjaG8vbWV0YWRhdGEucHJvdG8SEmR4b3MuZWNoby5tZXRhZGF0YSKrAgoMRWNob01ldGFkYXRhEg8KB3ZlcnNpb24YASABKAUSKwoHY3JlYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHdXBkYXRlZBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOQoIaWRlbnRpdHkYCiABKAsyIi5keG9zLmVjaG8ubWV0YWRhdGEuSWRlbnRpdHlSZWNvcmRIAIgBARIxCgZzcGFjZXMYCyADKAsyIS5keG9zLmVjaG8ubWV0YWRhdGEuU3BhY2VNZXRhZGF0YRI1CgtpbnZpdGF0aW9ucxgMIAMoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb25CCwoJX2lkZW50aXR5IhQKElNtYWxsU3BhY2VNZXRhZGF0YSKHAQoSTGFyZ2VTcGFjZU1ldGFkYXRhElMKGWNvbnRyb2xfcGlwZWxpbmVfc25hcHNob3QYASABKAsyKy5keG9zLmVjaG8ubWV0YWRhdGEuQ29udHJvbFBpcGVsaW5lU25hcHNob3RIAIgBAUIcChpfY29udHJvbF9waXBlbGluZV9zbmFwc2hvdCJeCgpTcGFjZUNhY2hlEkEKCnByb3BlcnRpZXMYASABKAsyKC5keG9zLmVjaG8ubW9kZWwuZG9jdW1lbnQuT2JqZWN0U25hcHNob3RIAIgBAUINCgtfcHJvcGVydGllcyLjBAoNU3BhY2VNZXRhZGF0YRIhCgNrZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjQKBXN0YXRlGAogASgOMiAuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2VTdGF0ZUgAiAEBEjMKEGdlbmVzaXNfZmVlZF9rZXkYBiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAGIAQESMwoQY29udHJvbF9mZWVkX2tleRgEIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAogBARInCglmZWVkX2tleXMYAiADKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjAKDWRhdGFfZmVlZF9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAOIAQESRAoRY29udHJvbF90aW1lZnJhbWUYCCABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgEiAEBEkEKDmRhdGFfdGltZWZyYW1lGAUgASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIBYgBARIyCgVjYWNoZRgJIAEoCzIeLmR4b3MuZWNoby5tZXRhZGF0YS5TcGFjZUNhY2hlSAaIAQFCCAoGX3N0YXRlQhMKEV9nZW5lc2lzX2ZlZWRfa2V5QhMKEV9jb250cm9sX2ZlZWRfa2V5QhAKDl9kYXRhX2ZlZWRfa2V5QhQKEl9jb250cm9sX3RpbWVmcmFtZUIRCg9fZGF0YV90aW1lZnJhbWVCCAoGX2NhY2hlIpECChdDb250cm9sUGlwZWxpbmVTbmFwc2hvdBI3Cgl0aW1lZnJhbWUYASABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvchJMCghtZXNzYWdlcxgCIAMoCzI6LmR4b3MuZWNoby5tZXRhZGF0YS5Db250cm9sUGlwZWxpbmVTbmFwc2hvdC5Db250cm9sTWVzc2FnZRpvCg5Db250cm9sTWVzc2FnZRImCghmZWVkX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNQoKY3JlZGVudGlhbBgCIAEoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsIrgCCg5JZGVudGl0eVJlY29yZBIqCgxpZGVudGl0eV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EigKCmRldmljZV9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjUKCmhhbG9fc3BhY2UYAyABKAsyIS5keG9zLmVjaG8ubWV0YWRhdGEuU3BhY2VNZXRhZGF0YRI9Cg1wcm9maWxlX3NwYWNlGAQgASgLMiEuZHhvcy5lY2hvLm1ldGFkYXRhLlNwYWNlTWV0YWRhdGFIAIgBARI8Cgdwcm9maWxlGAUgASgLMiYuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByb2ZpbGVEb2N1bWVudEgBiAEBQhAKDl9wcm9maWxlX3NwYWNlQgoKCF9wcm9maWxlYgZwcm90bzM", [file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_echo_model_document, file_dxos_echo_timeframe, file_dxos_halo_credentials, file_dxos_keys]);
29
+ fileDesc("ChhkeG9zL2VjaG8vbWV0YWRhdGEucHJvdG8SEmR4b3MuZWNoby5tZXRhZGF0YSKrAgoMRWNob01ldGFkYXRhEg8KB3ZlcnNpb24YASABKAUSKwoHY3JlYXRlZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHdXBkYXRlZBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOQoIaWRlbnRpdHkYCiABKAsyIi5keG9zLmVjaG8ubWV0YWRhdGEuSWRlbnRpdHlSZWNvcmRIAIgBARIxCgZzcGFjZXMYCyADKAsyIS5keG9zLmVjaG8ubWV0YWRhdGEuU3BhY2VNZXRhZGF0YRI1CgtpbnZpdGF0aW9ucxgMIAMoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb25CCwoJX2lkZW50aXR5IhQKElNtYWxsU3BhY2VNZXRhZGF0YSKHAQoSTGFyZ2VTcGFjZU1ldGFkYXRhElMKGWNvbnRyb2xfcGlwZWxpbmVfc25hcHNob3QYASABKAsyKy5keG9zLmVjaG8ubWV0YWRhdGEuQ29udHJvbFBpcGVsaW5lU25hcHNob3RIAIgBAUIcChpfY29udHJvbF9waXBlbGluZV9zbmFwc2hvdCJeCgpTcGFjZUNhY2hlEkEKCnByb3BlcnRpZXMYASABKAsyKC5keG9zLmVjaG8ubW9kZWwuZG9jdW1lbnQuT2JqZWN0U25hcHNob3RIAIgBAUINCgtfcHJvcGVydGllcyLDBQoNU3BhY2VNZXRhZGF0YRIhCgNrZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjQKBXN0YXRlGAogASgOMiAuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2VTdGF0ZUgAiAEBEjMKEGdlbmVzaXNfZmVlZF9rZXkYBiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAGIAQESMwoQY29udHJvbF9mZWVkX2tleRgEIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAogBARInCglmZWVkX2tleXMYAiADKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjAKDWRhdGFfZmVlZF9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAOIAQESRAoRY29udHJvbF90aW1lZnJhbWUYCCABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgEiAEBEkEKDmRhdGFfdGltZWZyYW1lGAUgASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIBYgBARIyCgVjYWNoZRgJIAEoCzIeLmR4b3MuZWNoby5tZXRhZGF0YS5TcGFjZUNhY2hlSAaIAQESSQoQZWRnZV9yZXBsaWNhdGlvbhgLIAEoDjIqLmR4b3MuZWNoby5tZXRhZGF0YS5FZGdlUmVwbGljYXRpb25TZXR0aW5nSAeIAQFCCAoGX3N0YXRlQhMKEV9nZW5lc2lzX2ZlZWRfa2V5QhMKEV9jb250cm9sX2ZlZWRfa2V5QhAKDl9kYXRhX2ZlZWRfa2V5QhQKEl9jb250cm9sX3RpbWVmcmFtZUIRCg9fZGF0YV90aW1lZnJhbWVCCAoGX2NhY2hlQhMKEV9lZGdlX3JlcGxpY2F0aW9uIpECChdDb250cm9sUGlwZWxpbmVTbmFwc2hvdBI3Cgl0aW1lZnJhbWUYASABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvchJMCghtZXNzYWdlcxgCIAMoCzI6LmR4b3MuZWNoby5tZXRhZGF0YS5Db250cm9sUGlwZWxpbmVTbmFwc2hvdC5Db250cm9sTWVzc2FnZRpvCg5Db250cm9sTWVzc2FnZRImCghmZWVkX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNQoKY3JlZGVudGlhbBgCIAEoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsIrgCCg5JZGVudGl0eVJlY29yZBIqCgxpZGVudGl0eV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EigKCmRldmljZV9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjUKCmhhbG9fc3BhY2UYAyABKAsyIS5keG9zLmVjaG8ubWV0YWRhdGEuU3BhY2VNZXRhZGF0YRI9Cg1wcm9maWxlX3NwYWNlGAQgASgLMiEuZHhvcy5lY2hvLm1ldGFkYXRhLlNwYWNlTWV0YWRhdGFIAIgBARI8Cgdwcm9maWxlGAUgASgLMiYuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByb2ZpbGVEb2N1bWVudEgBiAEBQhAKDl9wcm9maWxlX3NwYWNlQgoKCF9wcm9maWxlKjMKFkVkZ2VSZXBsaWNhdGlvblNldHRpbmcSDAoIRElTQUJMRUQQABILCgdFTkFCTEVEEAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_echo_model_document, file_dxos_echo_timeframe, file_dxos_halo_credentials, file_dxos_keys]);
30
30
 
31
31
  /**
32
32
  * / Main metadata record.
@@ -200,6 +200,11 @@ export type SpaceMetadata = Message<"dxos.echo.metadata.SpaceMetadata"> & {
200
200
  * @generated from field: optional dxos.echo.metadata.SpaceCache cache = 9;
201
201
  */
202
202
  cache?: SpaceCache;
203
+
204
+ /**
205
+ * @generated from field: optional dxos.echo.metadata.EdgeReplicationSetting edge_replication = 11;
206
+ */
207
+ edgeReplication?: EdgeReplicationSetting;
203
208
  };
204
209
 
205
210
  /**
@@ -299,3 +304,24 @@ export type IdentityRecord = Message<"dxos.echo.metadata.IdentityRecord"> & {
299
304
  export const IdentityRecordSchema: GenMessage<IdentityRecord> = /*@__PURE__*/
300
305
  messageDesc(file_dxos_echo_metadata, 6);
301
306
 
307
+ /**
308
+ * @generated from enum dxos.echo.metadata.EdgeReplicationSetting
309
+ */
310
+ export enum EdgeReplicationSetting {
311
+ /**
312
+ * @generated from enum value: DISABLED = 0;
313
+ */
314
+ DISABLED = 0,
315
+
316
+ /**
317
+ * @generated from enum value: ENABLED = 1;
318
+ */
319
+ ENABLED = 1,
320
+ }
321
+
322
+ /**
323
+ * Describes the enum dxos.echo.metadata.EdgeReplicationSetting.
324
+ */
325
+ export const EdgeReplicationSettingSchema: GenEnum<EdgeReplicationSetting> = /*@__PURE__*/
326
+ enumDesc(file_dxos_echo_metadata, 0);
327
+
@@ -24,7 +24,7 @@ import type { Message } from "@bufbuild/protobuf";
24
24
  * Describes the file dxos/halo/invitations.proto.
25
25
  */
26
26
  export const file_dxos_halo_invitations: GenFile = /*@__PURE__*/
27
- fileDesc("ChtkeG9zL2hhbG8vaW52aXRhdGlvbnMucHJvdG8SFWR4b3MuaGFsby5pbnZpdGF0aW9ucyJtChFJbnZpdGF0aW9uT3B0aW9ucxI7CgRyb2xlGAEgASgOMi0uZHhvcy5oYWxvLmludml0YXRpb25zLkludml0YXRpb25PcHRpb25zLlJvbGUiGwoEUm9sZRIJCgVHVUVTVBAAEggKBEhPU1QQASKNAQoTSW50cm9kdWN0aW9uUmVxdWVzdBI8Cgdwcm9maWxlGAEgASgLMiYuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByb2ZpbGVEb2N1bWVudEgAiAEBEhoKDWludml0YXRpb25faWQYAiABKAlIAYgBAUIKCghfcHJvZmlsZUIQCg5faW52aXRhdGlvbl9pZCK6AQoUSW50cm9kdWN0aW9uUmVzcG9uc2USQAoLYXV0aF9tZXRob2QYASABKA4yKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uLkF1dGhNZXRob2QSFgoJY2hhbGxlbmdlGAIgASgMSACIAQESLAoJc3BhY2Vfa2V5GGQgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUgBiAEBQgwKCl9jaGFsbGVuZ2VCDAoKX3NwYWNlX2tleSJxChVBdXRoZW50aWNhdGlvblJlcXVlc3QSFgoJYXV0aF9jb2RlGAEgASgJSACIAQESHQoQc2lnbmVkX2NoYWxsZW5nZRgCIAEoDEgBiAEBQgwKCl9hdXRoX2NvZGVCEwoRX3NpZ25lZF9jaGFsbGVuZ2Ui1gEKFkF1dGhlbnRpY2F0aW9uUmVzcG9uc2USSQoGc3RhdHVzGAEgASgOMjQuZHhvcy5oYWxvLmludml0YXRpb25zLkF1dGhlbnRpY2F0aW9uUmVzcG9uc2UuU3RhdHVzSACIAQEiZgoGU3RhdHVzEgYKAk9LEAASDwoLSU5WQUxJRF9PVFAQARIYChRJTlZBTElEX09QVF9BVFRFTVBUUxACEhIKDklOVEVSTkFMX0VSUk9SEAMSFQoRSU5WQUxJRF9TSUdOQVRVUkUQBEIJCgdfc3RhdHVzIu8BChZEZXZpY2VBZG1pc3Npb25SZXF1ZXN0EigKCmRldmljZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei4KEGNvbnRyb2xfZmVlZF9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EisKDWRhdGFfZmVlZF9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EkIKB3Byb2ZpbGUYBCABKAsyLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50SACIAQFCCgoIX3Byb2ZpbGUiygEKFVNwYWNlQWRtaXNzaW9uUmVxdWVzdBIqCgxpZGVudGl0eV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EigKCmRldmljZV9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei4KEGNvbnRyb2xfZmVlZF9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EisKDWRhdGFfZmVlZF9rZXkYBCABKAsyFC5keG9zLmtleXMuUHVibGljS2V5IuUCChdEZWxlZ2F0ZVNwYWNlSW52aXRhdGlvbhIVCg1pbnZpdGF0aW9uX2lkGAEgASgJEkAKC2F1dGhfbWV0aG9kGAIgASgOMisuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbi5BdXRoTWV0aG9kEicKCXN3YXJtX2tleRgDIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNQoEcm9sZRgEIAEoDjInLmR4b3MuaGFsby5jcmVkZW50aWFscy5TcGFjZU1lbWJlci5Sb2xlEiwKCWd1ZXN0X2tleRgFIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAIgBARIzCgpleHBpcmVzX29uGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhEKCW11bHRpX3VzZRgHIAEoCEIMCgpfZ3Vlc3Rfa2V5Qg0KC19leHBpcmVzX29uIkgKGUNhbmNlbERlbGVnYXRlZEludml0YXRpb24SKwoNY3JlZGVudGlhbF9pZBgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkimgEKEEFkbWlzc2lvblJlcXVlc3QSPwoGZGV2aWNlGAEgASgLMi0uZHhvcy5oYWxvLmludml0YXRpb25zLkRldmljZUFkbWlzc2lvblJlcXVlc3RIABI9CgVzcGFjZRgCIAEoCzIsLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5TcGFjZUFkbWlzc2lvblJlcXVlc3RIAEIGCgRraW5kIoICChpEZXZpY2VBZG1pc3Npb25DcmVkZW50aWFscxIqCgxpZGVudGl0eV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EiwKDmhhbG9fc3BhY2Vfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIuChBnZW5lc2lzX2ZlZWRfa2V5GAMgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRJEChFjb250cm9sX3RpbWVmcmFtZRgEIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySACIAQFCFAoSX2NvbnRyb2xfdGltZWZyYW1lIoQCChlTcGFjZUFkbWlzc2lvbkNyZWRlbnRpYWxzEjUKCmNyZWRlbnRpYWwYASABKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbBJEChFjb250cm9sX3RpbWVmcmFtZRgCIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySACIAQESQQoOZGF0YV90aW1lZnJhbWUYAyABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgBiAEBQhQKEl9jb250cm9sX3RpbWVmcmFtZUIRCg9fZGF0YV90aW1lZnJhbWUiowEKEUFkbWlzc2lvblJlc3BvbnNlEkMKBmRldmljZRgBIAEoCzIxLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5EZXZpY2VBZG1pc3Npb25DcmVkZW50aWFsc0gAEkEKBXNwYWNlGAIgASgLMjAuZHhvcy5oYWxvLmludml0YXRpb25zLlNwYWNlQWRtaXNzaW9uQ3JlZGVudGlhbHNIAEIGCgRraW5kMpMDChVJbnZpdGF0aW9uSG9zdFNlcnZpY2USSwoHT3B0aW9ucxIoLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5JbnZpdGF0aW9uT3B0aW9ucxoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJkCglJbnRyb2R1Y2USKi5keG9zLmhhbG8uaW52aXRhdGlvbnMuSW50cm9kdWN0aW9uUmVxdWVzdBorLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5JbnRyb2R1Y3Rpb25SZXNwb25zZRJrCgxBdXRoZW50aWNhdGUSLC5keG9zLmhhbG8uaW52aXRhdGlvbnMuQXV0aGVudGljYXRpb25SZXF1ZXN0Gi0uZHhvcy5oYWxvLmludml0YXRpb25zLkF1dGhlbnRpY2F0aW9uUmVzcG9uc2USWgoFQWRtaXQSJy5keG9zLmhhbG8uaW52aXRhdGlvbnMuQWRtaXNzaW9uUmVxdWVzdBooLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5BZG1pc3Npb25SZXNwb25zZWIGcHJvdG8z", [file_google_protobuf_empty, file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_echo_timeframe, file_dxos_halo_credentials, file_dxos_keys]);
27
+ fileDesc("ChtkeG9zL2hhbG8vaW52aXRhdGlvbnMucHJvdG8SFWR4b3MuaGFsby5pbnZpdGF0aW9ucyJtChFJbnZpdGF0aW9uT3B0aW9ucxI7CgRyb2xlGAEgASgOMi0uZHhvcy5oYWxvLmludml0YXRpb25zLkludml0YXRpb25PcHRpb25zLlJvbGUiGwoEUm9sZRIJCgVHVUVTVBAAEggKBEhPU1QQASKNAQoTSW50cm9kdWN0aW9uUmVxdWVzdBI8Cgdwcm9maWxlGAEgASgLMiYuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByb2ZpbGVEb2N1bWVudEgAiAEBEhoKDWludml0YXRpb25faWQYAiABKAlIAYgBAUIKCghfcHJvZmlsZUIQCg5faW52aXRhdGlvbl9pZCK6AQoUSW50cm9kdWN0aW9uUmVzcG9uc2USQAoLYXV0aF9tZXRob2QYASABKA4yKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uLkF1dGhNZXRob2QSFgoJY2hhbGxlbmdlGAIgASgMSACIAQESLAoJc3BhY2Vfa2V5GGQgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUgBiAEBQgwKCl9jaGFsbGVuZ2VCDAoKX3NwYWNlX2tleSJxChVBdXRoZW50aWNhdGlvblJlcXVlc3QSFgoJYXV0aF9jb2RlGAEgASgJSACIAQESHQoQc2lnbmVkX2NoYWxsZW5nZRgCIAEoDEgBiAEBQgwKCl9hdXRoX2NvZGVCEwoRX3NpZ25lZF9jaGFsbGVuZ2Ui1gEKFkF1dGhlbnRpY2F0aW9uUmVzcG9uc2USSQoGc3RhdHVzGAEgASgOMjQuZHhvcy5oYWxvLmludml0YXRpb25zLkF1dGhlbnRpY2F0aW9uUmVzcG9uc2UuU3RhdHVzSACIAQEiZgoGU3RhdHVzEgYKAk9LEAASDwoLSU5WQUxJRF9PVFAQARIYChRJTlZBTElEX09QVF9BVFRFTVBUUxACEhIKDklOVEVSTkFMX0VSUk9SEAMSFQoRSU5WQUxJRF9TSUdOQVRVUkUQBEIJCgdfc3RhdHVzIu8BChZEZXZpY2VBZG1pc3Npb25SZXF1ZXN0EigKCmRldmljZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei4KEGNvbnRyb2xfZmVlZF9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EisKDWRhdGFfZmVlZF9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EkIKB3Byb2ZpbGUYBCABKAsyLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50SACIAQFCCgoIX3Byb2ZpbGUiygEKFVNwYWNlQWRtaXNzaW9uUmVxdWVzdBIqCgxpZGVudGl0eV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EigKCmRldmljZV9rZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5Ei4KEGNvbnRyb2xfZmVlZF9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EisKDWRhdGFfZmVlZF9rZXkYBCABKAsyFC5keG9zLmtleXMuUHVibGljS2V5IuUCChdEZWxlZ2F0ZVNwYWNlSW52aXRhdGlvbhIVCg1pbnZpdGF0aW9uX2lkGAEgASgJEkAKC2F1dGhfbWV0aG9kGAIgASgOMisuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbi5BdXRoTWV0aG9kEicKCXN3YXJtX2tleRgDIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNQoEcm9sZRgEIAEoDjInLmR4b3MuaGFsby5jcmVkZW50aWFscy5TcGFjZU1lbWJlci5Sb2xlEiwKCWd1ZXN0X2tleRgFIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAIgBARIzCgpleHBpcmVzX29uGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhEKCW11bHRpX3VzZRgHIAEoCEIMCgpfZ3Vlc3Rfa2V5Qg0KC19leHBpcmVzX29uIkgKGUNhbmNlbERlbGVnYXRlZEludml0YXRpb24SKwoNY3JlZGVudGlhbF9pZBgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkimgEKEEFkbWlzc2lvblJlcXVlc3QSPwoGZGV2aWNlGAEgASgLMi0uZHhvcy5oYWxvLmludml0YXRpb25zLkRldmljZUFkbWlzc2lvblJlcXVlc3RIABI9CgVzcGFjZRgCIAEoCzIsLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5TcGFjZUFkbWlzc2lvblJlcXVlc3RIAEIGCgRraW5kIrkCChpEZXZpY2VBZG1pc3Npb25DcmVkZW50aWFscxIqCgxpZGVudGl0eV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EiwKDmhhbG9fc3BhY2Vfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIuChBnZW5lc2lzX2ZlZWRfa2V5GAMgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRJEChFjb250cm9sX3RpbWVmcmFtZRgEIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySACIAQESNQoKY3JlZGVudGlhbBgFIAEoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsQhQKEl9jb250cm9sX3RpbWVmcmFtZSKEAgoZU3BhY2VBZG1pc3Npb25DcmVkZW50aWFscxI1CgpjcmVkZW50aWFsGAEgASgLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWwSRAoRY29udHJvbF90aW1lZnJhbWUYAiABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgAiAEBEkEKDmRhdGFfdGltZWZyYW1lGAMgASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIAYgBAUIUChJfY29udHJvbF90aW1lZnJhbWVCEQoPX2RhdGFfdGltZWZyYW1lIqMBChFBZG1pc3Npb25SZXNwb25zZRJDCgZkZXZpY2UYASABKAsyMS5keG9zLmhhbG8uaW52aXRhdGlvbnMuRGV2aWNlQWRtaXNzaW9uQ3JlZGVudGlhbHNIABJBCgVzcGFjZRgCIAEoCzIwLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5TcGFjZUFkbWlzc2lvbkNyZWRlbnRpYWxzSABCBgoEa2luZDKTAwoVSW52aXRhdGlvbkhvc3RTZXJ2aWNlEksKB09wdGlvbnMSKC5keG9zLmhhbG8uaW52aXRhdGlvbnMuSW52aXRhdGlvbk9wdGlvbnMaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZAoJSW50cm9kdWNlEiouZHhvcy5oYWxvLmludml0YXRpb25zLkludHJvZHVjdGlvblJlcXVlc3QaKy5keG9zLmhhbG8uaW52aXRhdGlvbnMuSW50cm9kdWN0aW9uUmVzcG9uc2USawoMQXV0aGVudGljYXRlEiwuZHhvcy5oYWxvLmludml0YXRpb25zLkF1dGhlbnRpY2F0aW9uUmVxdWVzdBotLmR4b3MuaGFsby5pbnZpdGF0aW9ucy5BdXRoZW50aWNhdGlvblJlc3BvbnNlEloKBUFkbWl0EicuZHhvcy5oYWxvLmludml0YXRpb25zLkFkbWlzc2lvblJlcXVlc3QaKC5keG9zLmhhbG8uaW52aXRhdGlvbnMuQWRtaXNzaW9uUmVzcG9uc2ViBnByb3RvMw", [file_google_protobuf_empty, file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_echo_timeframe, file_dxos_halo_credentials, file_dxos_keys]);
28
28
 
29
29
  /**
30
30
  * @generated from message dxos.halo.invitations.InvitationOptions
@@ -382,6 +382,13 @@ export type DeviceAdmissionCredentials = Message<"dxos.halo.invitations.DeviceAd
382
382
  * @generated from field: optional dxos.echo.timeframe.TimeframeVector control_timeframe = 4;
383
383
  */
384
384
  controlTimeframe?: TimeframeVector;
385
+
386
+ /**
387
+ * / Credential of type `AuthorizedDevice` that allows guest device to act as the identity it was added to.
388
+ *
389
+ * @generated from field: dxos.halo.credentials.Credential credential = 5;
390
+ */
391
+ credential?: Credential;
385
392
  };
386
393
 
387
394
  /**
package/src/edge.ts CHANGED
@@ -45,20 +45,97 @@ export type PostNotarizationRequestBody = {
45
45
  credentials: string[];
46
46
  };
47
47
 
48
+ export type JoinSpaceRequest = {
49
+ invitationId: string;
50
+ identityKey: string;
51
+ /**
52
+ * Base64 encoded signed challenge.
53
+ * Used to verify the IdentityKey in case of `invitation.authMethod === Invitation.AuthMethod.KNOWN_PUBLIC_KEY`
54
+ */
55
+ signature?: string;
56
+ };
57
+
58
+ export type JoinSpaceResponseBody = {
59
+ spaceMemberCredential: string;
60
+ spaceGenesisFeedKey: string;
61
+ };
62
+
48
63
  export class EdgeCallFailedError extends Error {
49
64
  public static fromProcessingFailureCause(cause: Error) {
50
- return new EdgeCallFailedError('Error processing request.', undefined, cause);
65
+ return new EdgeCallFailedError({
66
+ reason: 'Error processing request.',
67
+ isRetryable: true,
68
+ cause,
69
+ });
51
70
  }
52
71
 
53
- public static fromFailureResponse(response: { status: number; statusText: string }) {
54
- return new EdgeCallFailedError(`HTTP code ${response.status}: ${response.statusText}.`);
72
+ public static fromHttpFailure(response: Response) {
73
+ return new EdgeCallFailedError({
74
+ reason: `HTTP code ${response.status}: ${response.statusText}.`,
75
+ isRetryable: isRetryableCode(response.status),
76
+ retryAfterMs: getRetryAfterMillis(response),
77
+ });
55
78
  }
56
79
 
80
+ public static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure) {
81
+ return new EdgeCallFailedError({
82
+ reason: body.reason,
83
+ errorData: body.errorData,
84
+ isRetryable: body.errorData == null && response.headers.has('Retry-After'),
85
+ retryAfterMs: getRetryAfterMillis(response),
86
+ });
87
+ }
88
+
89
+ readonly reason: string;
90
+ readonly errorData?: EdgeErrorData;
91
+ readonly isRetryable?: boolean;
92
+ readonly retryAfterMs?: number;
93
+
94
+ constructor(args: {
95
+ reason: string;
96
+ isRetryable?: boolean;
97
+ errorData?: EdgeErrorData;
98
+ retryAfterMs?: number;
99
+ cause?: Error;
100
+ }) {
101
+ super(args.reason, { cause: args.cause });
102
+ this.reason = args.reason;
103
+ this.errorData = args.errorData;
104
+ this.retryAfterMs = args.retryAfterMs;
105
+ this.isRetryable = Boolean(args.isRetryable);
106
+ }
107
+ }
108
+
109
+ export class EdgeAuthChallengeError extends EdgeCallFailedError {
57
110
  constructor(
58
- readonly reason: string,
59
- readonly errorData?: EdgeErrorData,
60
- cause?: Error,
111
+ public readonly challenge: string,
112
+ errorData: EdgeErrorData,
61
113
  ) {
62
- super(reason, { cause });
114
+ super({ reason: 'Auth challenge.', errorData });
63
115
  }
64
116
  }
117
+
118
+ export type EdgeAuthChallenge = {
119
+ type: 'auth_challenge';
120
+ challenge: string;
121
+ };
122
+
123
+ const getRetryAfterMillis = (response: Response) => {
124
+ const retryAfter = Number(response.headers.get('Retry-After'));
125
+ return Number.isNaN(retryAfter) ? undefined : retryAfter * 1000;
126
+ };
127
+
128
+ export const createRetryableHttpFailure = (args: { reason: any; retryAfterSeconds: number }) => {
129
+ return new Response(JSON.stringify({ success: false, reason: args.reason }), {
130
+ headers: { 'Retry-After': String(args.retryAfterSeconds) },
131
+ });
132
+ };
133
+
134
+ const isRetryableCode = (status: number) => {
135
+ if (status === 501) {
136
+ // Not Implemented
137
+ return false;
138
+ }
139
+ // TODO: handle 401 Not Authorized
140
+ return !(status >= 400 && status < 500);
141
+ };
package/src/index.ts CHANGED
@@ -9,5 +9,5 @@ export * from './tracing.js';
9
9
  export * from './types.js';
10
10
  export * from './query.js';
11
11
  export * from './profile-archive.js';
12
- export * from './collection-sync.js';
12
+ export * from './automerge.js';
13
13
  export * from './edge.js';
@@ -168,4 +168,7 @@ message Invitation {
168
168
 
169
169
  /// Role of the admitted member, defaults to ADMIN.
170
170
  optional dxos.halo.credentials.SpaceMember.Role role = 18;
171
+
172
+ /// Id of a the space to join (only present if kind is SPACE).
173
+ optional string space_id = 19;
171
174
  }
@@ -219,6 +219,7 @@ message SpaceMember {
219
219
  dxos.halo.credentials.SpaceMember.Role role = 4;
220
220
  }
221
221
 
222
+
222
223
  // TODO(burdon): Rename SpaceInfo?
223
224
  message Space {
224
225
  message Metrics {
@@ -283,6 +284,7 @@ message Space {
283
284
  SpaceState state = 2;
284
285
  optional PipelineState pipeline = 3;
285
286
  optional dxos.error.Error error = 4;
287
+ optional dxos.echo.metadata.EdgeReplicationSetting edge_replication = 6;
286
288
 
287
289
  repeated SpaceMember members = 10;
288
290
  optional dxos.keys.PublicKey creator = 11;
@@ -298,6 +300,8 @@ message UpdateSpaceRequest {
298
300
 
299
301
  /// Allowed values: ACTIVE, INACTIVE.
300
302
  optional SpaceState state = 2;
303
+
304
+ optional dxos.echo.metadata.EdgeReplicationSetting edge_replication = 3;
301
305
  }
302
306
 
303
307
  message QuerySpacesResponse {
@@ -75,6 +75,13 @@ message SpaceMetadata {
75
75
  optional timeframe.TimeframeVector data_timeframe = 5;
76
76
 
77
77
  optional SpaceCache cache = 9;
78
+
79
+ optional EdgeReplicationSetting edge_replication = 11;
80
+ }
81
+
82
+ enum EdgeReplicationSetting {
83
+ DISABLED = 0;
84
+ ENABLED = 1;
78
85
  }
79
86
 
80
87
  message ControlPipelineSnapshot {
@@ -102,6 +102,8 @@ message DeviceAdmissionCredentials {
102
102
  dxos.keys.PublicKey halo_space_key = 2;
103
103
  dxos.keys.PublicKey genesis_feed_key = 3;
104
104
  optional dxos.echo.timeframe.TimeframeVector control_timeframe = 4;
105
+ /// Credential of type `AuthorizedDevice` that allows guest device to act as the identity it was added to.
106
+ dxos.halo.credentials.Credential credential = 5;
105
107
  }
106
108
 
107
109
  message SpaceAdmissionCredentials {
@@ -203,6 +203,13 @@ export interface Invitation {
203
203
  * - proto3_optional = true
204
204
  */
205
205
  role?: dxos_halo_credentials.SpaceMember.Role;
206
+ /**
207
+ * Id of a the space to join (only present if kind is SPACE).
208
+ *
209
+ * Options:
210
+ * - proto3_optional = true
211
+ */
212
+ spaceId?: string;
206
213
  }
207
214
  export namespace Invitation {
208
215
  /**
@@ -766,6 +773,11 @@ export interface Space {
766
773
  * - proto3_optional = true
767
774
  */
768
775
  error?: dxos_error.Error;
776
+ /**
777
+ * Options:
778
+ * - proto3_optional = true
779
+ */
780
+ edgeReplication?: dxos_echo_metadata.EdgeReplicationSetting;
769
781
  members?: SpaceMember[];
770
782
  /**
771
783
  * Options:
@@ -935,6 +947,11 @@ export interface UpdateSpaceRequest {
935
947
  * - proto3_optional = true
936
948
  */
937
949
  state?: SpaceState;
950
+ /**
951
+ * Options:
952
+ * - proto3_optional = true
953
+ */
954
+ edgeReplication?: dxos_echo_metadata.EdgeReplicationSetting;
938
955
  }
939
956
  /**
940
957
  * Defined in:
@@ -177,6 +177,19 @@ export interface SpaceMetadata {
177
177
  * - proto3_optional = true
178
178
  */
179
179
  cache?: SpaceCache;
180
+ /**
181
+ * Options:
182
+ * - proto3_optional = true
183
+ */
184
+ edgeReplication?: EdgeReplicationSetting;
185
+ }
186
+ /**
187
+ * Defined in:
188
+ * {@link file://./../../../dxos/echo/metadata.proto}
189
+ */
190
+ export enum EdgeReplicationSetting {
191
+ DISABLED = 0,
192
+ ENABLED = 1
180
193
  }
181
194
  /**
182
195
  * Defined in: