@dxos/protocols 0.1.13 → 0.1.16

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 (172) hide show
  1. package/dist/src/codec.test.js +3 -2
  2. package/dist/src/codec.test.js.map +1 -1
  3. package/dist/src/proto/gen/dxos/bot.d.ts.map +1 -1
  4. package/dist/src/proto/gen/dxos/bot.js.map +1 -1
  5. package/dist/src/proto/gen/dxos/client/services.d.ts +19 -8
  6. package/dist/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  7. package/dist/src/proto/gen/dxos/client/services.js +12 -0
  8. package/dist/src/proto/gen/dxos/client/services.js.map +1 -1
  9. package/dist/src/proto/gen/dxos/client.d.ts.map +1 -1
  10. package/dist/src/proto/gen/dxos/client.js.map +1 -1
  11. package/dist/src/proto/gen/dxos/config.d.ts.map +1 -1
  12. package/dist/src/proto/gen/dxos/config.js.map +1 -1
  13. package/dist/src/proto/gen/dxos/devtools/host.d.ts +33 -33
  14. package/dist/src/proto/gen/dxos/devtools/host.d.ts.map +1 -1
  15. package/dist/src/proto/gen/dxos/devtools/swarm.d.ts.map +1 -1
  16. package/dist/src/proto/gen/dxos/echo/feed.d.ts.map +1 -1
  17. package/dist/src/proto/gen/dxos/echo/feed.js.map +1 -1
  18. package/dist/src/proto/gen/dxos/echo/metadata.d.ts.map +1 -1
  19. package/dist/src/proto/gen/dxos/echo/model/messenger.d.ts.map +1 -1
  20. package/dist/src/proto/gen/dxos/echo/model/object.d.ts.map +1 -1
  21. package/dist/src/proto/gen/dxos/echo/model/object.js.map +1 -1
  22. package/dist/src/proto/gen/dxos/echo/model/text.d.ts.map +1 -1
  23. package/dist/src/proto/gen/dxos/echo/service.d.ts.map +1 -1
  24. package/dist/src/proto/gen/dxos/echo/snapshot.d.ts.map +1 -1
  25. package/dist/src/proto/gen/dxos/echo/timeframe.d.ts.map +1 -1
  26. package/dist/src/proto/gen/dxos/gravity.d.ts +84 -0
  27. package/dist/src/proto/gen/dxos/gravity.d.ts.map +1 -0
  28. package/dist/src/proto/gen/dxos/gravity.js +3 -0
  29. package/dist/src/proto/gen/dxos/gravity.js.map +1 -0
  30. package/dist/src/proto/gen/dxos/halo/credentials/auth.d.ts.map +1 -1
  31. package/dist/src/proto/gen/dxos/halo/credentials/greet.d.ts.map +1 -1
  32. package/dist/src/proto/gen/dxos/halo/credentials/greet.js.map +1 -1
  33. package/dist/src/proto/gen/dxos/halo/credentials/identity.d.ts.map +1 -1
  34. package/dist/src/proto/gen/dxos/halo/credentials.d.ts +4 -0
  35. package/dist/src/proto/gen/dxos/halo/credentials.d.ts.map +1 -1
  36. package/dist/src/proto/gen/dxos/halo/credentials.js.map +1 -1
  37. package/dist/src/proto/gen/dxos/halo/invitations.d.ts +39 -15
  38. package/dist/src/proto/gen/dxos/halo/invitations.d.ts.map +1 -1
  39. package/dist/src/proto/gen/dxos/halo/invitations.js +14 -0
  40. package/dist/src/proto/gen/dxos/halo/invitations.js.map +1 -1
  41. package/dist/src/proto/gen/dxos/halo/keyring.d.ts +5 -1
  42. package/dist/src/proto/gen/dxos/halo/keyring.d.ts.map +1 -1
  43. package/dist/src/proto/gen/dxos/halo/keys.d.ts.map +1 -1
  44. package/dist/src/proto/gen/dxos/halo/keys.js.map +1 -1
  45. package/dist/src/proto/gen/dxos/halo/signed.d.ts.map +1 -1
  46. package/dist/src/proto/gen/dxos/iframe.d.ts.map +1 -1
  47. package/dist/src/proto/gen/dxos/keys.d.ts.map +1 -1
  48. package/dist/src/proto/gen/dxos/mesh/bridge.d.ts.map +1 -1
  49. package/dist/src/proto/gen/dxos/mesh/bridge.js.map +1 -1
  50. package/dist/src/proto/gen/dxos/mesh/broadcast.d.ts.map +1 -1
  51. package/dist/src/proto/gen/dxos/mesh/messaging.d.ts.map +1 -1
  52. package/dist/src/proto/gen/dxos/mesh/muxer.d.ts +68 -0
  53. package/dist/src/proto/gen/dxos/mesh/muxer.d.ts.map +1 -0
  54. package/dist/src/proto/gen/dxos/mesh/muxer.js +3 -0
  55. package/dist/src/proto/gen/dxos/mesh/muxer.js.map +1 -0
  56. package/dist/src/proto/gen/dxos/mesh/presence.d.ts.map +1 -1
  57. package/dist/src/proto/gen/dxos/mesh/protocol.d.ts.map +1 -1
  58. package/dist/src/proto/gen/dxos/mesh/replicator.d.ts.map +1 -1
  59. package/dist/src/proto/gen/dxos/mesh/signal.d.ts.map +1 -1
  60. package/dist/src/proto/gen/dxos/mesh/swarm.d.ts +1 -1
  61. package/dist/src/proto/gen/dxos/mesh/swarm.d.ts.map +1 -1
  62. package/dist/src/proto/gen/dxos/mesh/teleport/control.d.ts +21 -0
  63. package/dist/src/proto/gen/dxos/mesh/teleport/control.d.ts.map +1 -0
  64. package/dist/src/proto/gen/dxos/mesh/teleport/control.js +3 -0
  65. package/dist/src/proto/gen/dxos/mesh/teleport/control.js.map +1 -0
  66. package/dist/src/proto/gen/dxos/mesh/teleport/presence.d.ts +25 -0
  67. package/dist/src/proto/gen/dxos/mesh/teleport/presence.d.ts.map +1 -0
  68. package/dist/src/proto/gen/dxos/mesh/teleport/presence.js +3 -0
  69. package/dist/src/proto/gen/dxos/mesh/teleport/presence.js.map +1 -0
  70. package/dist/src/proto/gen/dxos/mesh/teleport/replicator.d.ts +77 -0
  71. package/dist/src/proto/gen/dxos/mesh/teleport/replicator.d.ts.map +1 -0
  72. package/dist/src/proto/gen/dxos/mesh/teleport/replicator.js +3 -0
  73. package/dist/src/proto/gen/dxos/mesh/teleport/replicator.js.map +1 -0
  74. package/dist/src/proto/gen/dxos/registry.d.ts +2 -2
  75. package/dist/src/proto/gen/dxos/registry.d.ts.map +1 -1
  76. package/dist/src/proto/gen/dxos/rpc.d.ts.map +1 -1
  77. package/dist/src/proto/gen/dxos/rpc.js.map +1 -1
  78. package/dist/src/proto/gen/dxos/service/publisher.d.ts +11 -1
  79. package/dist/src/proto/gen/dxos/service/publisher.d.ts.map +1 -1
  80. package/dist/src/proto/gen/dxos/service/scheduler.d.ts.map +1 -1
  81. package/dist/src/proto/gen/dxos/service/scheduler.js.map +1 -1
  82. package/dist/src/proto/gen/dxos/type.d.ts +5 -4
  83. package/dist/src/proto/gen/dxos/type.d.ts.map +1 -1
  84. package/dist/src/proto/gen/example/testing/data.d.ts.map +1 -1
  85. package/dist/src/proto/gen/example/testing/rpc.d.ts.map +1 -1
  86. package/dist/src/proto/gen/google/protobuf.d.ts +18 -0
  87. package/dist/src/proto/gen/google/protobuf.d.ts.map +1 -1
  88. package/dist/src/proto/gen/google/protobuf.js +5 -0
  89. package/dist/src/proto/gen/google/protobuf.js.map +1 -1
  90. package/dist/src/proto/gen/index.d.ts +36 -2
  91. package/dist/src/proto/gen/index.d.ts.map +1 -1
  92. package/dist/src/proto/gen/index.js +1 -1
  93. package/dist/src/proto/gen/index.js.map +1 -1
  94. package/dist/src/proto/substitutions.d.ts +4 -0
  95. package/dist/src/proto/substitutions.d.ts.map +1 -1
  96. package/dist/src/proto/substitutions.js +1 -0
  97. package/dist/src/proto/substitutions.js.map +1 -1
  98. package/dist/src/types.d.ts +6 -6
  99. package/dist/src/types.d.ts.map +1 -1
  100. package/package.json +5 -11
  101. package/proto/dxos/gravity.d.ts +5 -0
  102. package/proto/dxos/gravity.js +5 -0
  103. package/proto/dxos/mesh/muxer.d.ts +5 -0
  104. package/proto/dxos/mesh/muxer.js +5 -0
  105. package/proto/dxos/mesh/teleport/control.d.ts +5 -0
  106. package/proto/dxos/mesh/teleport/control.js +5 -0
  107. package/proto/dxos/mesh/teleport/presence.d.ts +5 -0
  108. package/proto/dxos/mesh/teleport/presence.js +5 -0
  109. package/proto/dxos/mesh/teleport/replicator.d.ts +5 -0
  110. package/proto/dxos/mesh/teleport/replicator.js +5 -0
  111. package/src/codec.test.ts +4 -2
  112. package/src/proto/dxos/client/services.proto +16 -7
  113. package/src/proto/dxos/devtools/host.proto +2 -2
  114. package/src/proto/dxos/gravity.proto +55 -0
  115. package/src/proto/dxos/halo/credentials.proto +3 -0
  116. package/src/proto/dxos/halo/invitations.proto +25 -12
  117. package/src/proto/dxos/halo/keyring.proto +1 -1
  118. package/src/proto/dxos/mesh/muxer.proto +51 -0
  119. package/src/proto/dxos/mesh/swarm.proto +2 -1
  120. package/src/proto/dxos/mesh/teleport/control.proto +19 -0
  121. package/src/proto/dxos/mesh/teleport/presence.proto +23 -0
  122. package/src/proto/dxos/mesh/teleport/replicator.proto +60 -0
  123. package/src/proto/dxos/registry.proto +3 -2
  124. package/src/proto/dxos/service/publisher.proto +5 -1
  125. package/src/proto/dxos/type.proto +5 -4
  126. package/src/proto/gen/dxos/bot.ts +5 -0
  127. package/src/proto/gen/dxos/client/services.ts +24 -8
  128. package/src/proto/gen/dxos/client.ts +5 -0
  129. package/src/proto/gen/dxos/config.ts +5 -0
  130. package/src/proto/gen/dxos/devtools/host.ts +37 -32
  131. package/src/proto/gen/dxos/devtools/swarm.ts +5 -0
  132. package/src/proto/gen/dxos/echo/feed.ts +5 -0
  133. package/src/proto/gen/dxos/echo/metadata.ts +5 -0
  134. package/src/proto/gen/dxos/echo/model/messenger.ts +5 -0
  135. package/src/proto/gen/dxos/echo/model/object.ts +5 -0
  136. package/src/proto/gen/dxos/echo/model/text.ts +5 -0
  137. package/src/proto/gen/dxos/echo/service.ts +5 -0
  138. package/src/proto/gen/dxos/echo/snapshot.ts +5 -0
  139. package/src/proto/gen/dxos/echo/timeframe.ts +5 -0
  140. package/src/proto/gen/dxos/gravity.ts +128 -0
  141. package/src/proto/gen/dxos/halo/credentials/auth.ts +5 -0
  142. package/src/proto/gen/dxos/halo/credentials/greet.ts +5 -0
  143. package/src/proto/gen/dxos/halo/credentials/identity.ts +5 -0
  144. package/src/proto/gen/dxos/halo/credentials.ts +9 -0
  145. package/src/proto/gen/dxos/halo/invitations.ts +44 -15
  146. package/src/proto/gen/dxos/halo/keyring.ts +10 -1
  147. package/src/proto/gen/dxos/halo/keys.ts +5 -0
  148. package/src/proto/gen/dxos/halo/signed.ts +5 -0
  149. package/src/proto/gen/dxos/iframe.ts +5 -0
  150. package/src/proto/gen/dxos/keys.ts +5 -0
  151. package/src/proto/gen/dxos/mesh/bridge.ts +5 -0
  152. package/src/proto/gen/dxos/mesh/broadcast.ts +5 -0
  153. package/src/proto/gen/dxos/mesh/messaging.ts +5 -0
  154. package/src/proto/gen/dxos/mesh/muxer.ts +113 -0
  155. package/src/proto/gen/dxos/mesh/presence.ts +5 -0
  156. package/src/proto/gen/dxos/mesh/protocol.ts +5 -0
  157. package/src/proto/gen/dxos/mesh/replicator.ts +5 -0
  158. package/src/proto/gen/dxos/mesh/signal.ts +5 -0
  159. package/src/proto/gen/dxos/mesh/swarm.ts +6 -1
  160. package/src/proto/gen/dxos/mesh/teleport/control.ts +66 -0
  161. package/src/proto/gen/dxos/mesh/teleport/presence.ts +69 -0
  162. package/src/proto/gen/dxos/mesh/teleport/replicator.ts +121 -0
  163. package/src/proto/gen/dxos/registry.ts +7 -2
  164. package/src/proto/gen/dxos/rpc.ts +5 -0
  165. package/src/proto/gen/dxos/service/publisher.ts +16 -1
  166. package/src/proto/gen/dxos/service/scheduler.ts +5 -0
  167. package/src/proto/gen/dxos/type.ts +9 -4
  168. package/src/proto/gen/example/testing/data.ts +5 -0
  169. package/src/proto/gen/example/testing/rpc.ts +5 -0
  170. package/src/proto/gen/google/protobuf.ts +22 -0
  171. package/src/proto/gen/index.ts +37 -3
  172. package/src/proto/substitutions.ts +2 -1
@@ -13,6 +13,7 @@ import * as dxos_echo_model_text from "./dxos/echo/model/text";
13
13
  import * as dxos_echo_service from "./dxos/echo/service";
14
14
  import * as dxos_echo_snapshot from "./dxos/echo/snapshot";
15
15
  import * as dxos_echo_timeframe from "./dxos/echo/timeframe";
16
+ import * as dxos_gravity from "./dxos/gravity";
16
17
  import * as dxos_halo_credentials from "./dxos/halo/credentials";
17
18
  import * as dxos_halo_credentials_auth from "./dxos/halo/credentials/auth";
18
19
  import * as dxos_halo_credentials_greet from "./dxos/halo/credentials/greet";
@@ -26,11 +27,15 @@ import * as dxos_keys from "./dxos/keys";
26
27
  import * as dxos_mesh_bridge from "./dxos/mesh/bridge";
27
28
  import * as dxos_mesh_broadcast from "./dxos/mesh/broadcast";
28
29
  import * as dxos_mesh_messaging from "./dxos/mesh/messaging";
30
+ import * as dxos_mesh_muxer from "./dxos/mesh/muxer";
29
31
  import * as dxos_mesh_presence from "./dxos/mesh/presence";
30
32
  import * as dxos_mesh_protocol from "./dxos/mesh/protocol";
31
33
  import * as dxos_mesh_replicator from "./dxos/mesh/replicator";
32
34
  import * as dxos_mesh_signal from "./dxos/mesh/signal";
33
35
  import * as dxos_mesh_swarm from "./dxos/mesh/swarm";
36
+ import * as dxos_mesh_teleport_control from "./dxos/mesh/teleport/control";
37
+ import * as dxos_mesh_teleport_presence from "./dxos/mesh/teleport/presence";
38
+ import * as dxos_mesh_teleport_replicator from "./dxos/mesh/teleport/replicator";
34
39
  import * as dxos_registry from "./dxos/registry";
35
40
  import * as dxos_rpc from "./dxos/rpc";
36
41
  import * as dxos_service_publisher from "./dxos/service/publisher";
@@ -75,6 +80,7 @@ export interface TYPES {
75
80
  "dxos.client.services.Device": dxos_client_services.Device;
76
81
  "dxos.client.services.Identity": dxos_client_services.Identity;
77
82
  "dxos.client.services.Invitation": dxos_client_services.Invitation;
83
+ "dxos.client.services.Invitation.Error": dxos_client_services.Invitation.Error;
78
84
  "dxos.client.services.Invitation.State": dxos_client_services.Invitation.State;
79
85
  "dxos.client.services.Invitation.Type": dxos_client_services.Invitation.Type;
80
86
  "dxos.client.services.KeyRecord": dxos_client_services.KeyRecord;
@@ -221,6 +227,13 @@ export interface TYPES {
221
227
  "dxos.echo.snapshot.SpaceSnapshot": dxos_echo_snapshot.SpaceSnapshot;
222
228
  "dxos.echo.timeframe.TimeframeVector": dxos_echo_timeframe.TimeframeVector;
223
229
  "dxos.echo.timeframe.TimeframeVector.Frame": dxos_echo_timeframe.TimeframeVector.Frame;
230
+ "dxos.gravity.AcceptSpaceInvitationCommand": dxos_gravity.AcceptSpaceInvitationCommand;
231
+ "dxos.gravity.AgentSpec": dxos_gravity.AgentSpec;
232
+ "dxos.gravity.Command": dxos_gravity.Command;
233
+ "dxos.gravity.CommandSequence": dxos_gravity.CommandSequence;
234
+ "dxos.gravity.CreateProfileCommand": dxos_gravity.CreateProfileCommand;
235
+ "dxos.gravity.CreateSpaceCommand": dxos_gravity.CreateSpaceCommand;
236
+ "dxos.gravity.CreateSpaceInvitationCommand": dxos_gravity.CreateSpaceInvitationCommand;
224
237
  "dxos.halo.credentials.AdmittedFeed": dxos_halo_credentials.AdmittedFeed;
225
238
  "dxos.halo.credentials.AdmittedFeed.Designation": dxos_halo_credentials.AdmittedFeed.Designation;
226
239
  "dxos.halo.credentials.Auth": dxos_halo_credentials.Auth;
@@ -250,12 +263,14 @@ export interface TYPES {
250
263
  "dxos.halo.credentials.SpaceMember": dxos_halo_credentials.SpaceMember;
251
264
  "dxos.halo.credentials.SpaceMember.Role": dxos_halo_credentials.SpaceMember.Role;
252
265
  "dxos.halo.credentials.SpaceRecord": dxos_halo_credentials.SpaceRecord;
253
- "dxos.halo.invitations.AdmissionParameters": dxos_halo_invitations.AdmissionParameters;
254
266
  "dxos.halo.invitations.AuthenticationRequest": dxos_halo_invitations.AuthenticationRequest;
267
+ "dxos.halo.invitations.AuthenticationResponse": dxos_halo_invitations.AuthenticationResponse;
268
+ "dxos.halo.invitations.AuthenticationResponse.Status": dxos_halo_invitations.AuthenticationResponse.Status;
255
269
  "dxos.halo.invitations.HaloAdmissionCredentials": dxos_halo_invitations.HaloAdmissionCredentials;
256
270
  "dxos.halo.invitations.HaloAdmissionOffer": dxos_halo_invitations.HaloAdmissionOffer;
271
+ "dxos.halo.invitations.Introduction": dxos_halo_invitations.Introduction;
257
272
  "dxos.halo.invitations.SpaceAdmissionCredentials": dxos_halo_invitations.SpaceAdmissionCredentials;
258
- "dxos.halo.invitations.SpaceAdmissionOffer": dxos_halo_invitations.SpaceAdmissionOffer;
273
+ "dxos.halo.invitations.SpaceAdmissionRequest": dxos_halo_invitations.SpaceAdmissionRequest;
259
274
  "dxos.halo.keyring.KeyRecord": dxos_halo_keyring.KeyRecord;
260
275
  "dxos.halo.keys.KeyChain": dxos_halo_keys.KeyChain;
261
276
  "dxos.halo.keys.KeyRecord": dxos_halo_keys.KeyRecord;
@@ -280,6 +295,10 @@ export interface TYPES {
280
295
  "dxos.mesh.broadcast.Packet": dxos_mesh_broadcast.Packet;
281
296
  "dxos.mesh.messaging.Acknowledgement": dxos_mesh_messaging.Acknowledgement;
282
297
  "dxos.mesh.messaging.ReliablePayload": dxos_mesh_messaging.ReliablePayload;
298
+ "dxos.mesh.muxer.Command": dxos_mesh_muxer.Command;
299
+ "dxos.mesh.muxer.Data": dxos_mesh_muxer.Data;
300
+ "dxos.mesh.muxer.Destroy": dxos_mesh_muxer.Destroy;
301
+ "dxos.mesh.muxer.OpenChannel": dxos_mesh_muxer.OpenChannel;
283
302
  "dxos.mesh.presence.Alive": dxos_mesh_presence.Alive;
284
303
  "dxos.mesh.presence.Alive.Connection": dxos_mesh_presence.Alive.Connection;
285
304
  "dxos.mesh.protocol.Buffer": dxos_mesh_protocol.Buffer;
@@ -300,6 +319,13 @@ export interface TYPES {
300
319
  "dxos.mesh.swarm.Offer": dxos_mesh_swarm.Offer;
301
320
  "dxos.mesh.swarm.Signal": dxos_mesh_swarm.Signal;
302
321
  "dxos.mesh.swarm.SwarmMessage": dxos_mesh_swarm.SwarmMessage;
322
+ "dxos.mesh.teleport.control.RegisterExtensionRequest": dxos_mesh_teleport_control.RegisterExtensionRequest;
323
+ "dxos.mesh.teleport.presence.PeerState": dxos_mesh_teleport_presence.PeerState;
324
+ "dxos.mesh.teleport.replicator.FeedInfo": dxos_mesh_teleport_replicator.FeedInfo;
325
+ "dxos.mesh.teleport.replicator.StartReplicationRequest": dxos_mesh_teleport_replicator.StartReplicationRequest;
326
+ "dxos.mesh.teleport.replicator.StartReplicationResponse": dxos_mesh_teleport_replicator.StartReplicationResponse;
327
+ "dxos.mesh.teleport.replicator.StopReplicationRequest": dxos_mesh_teleport_replicator.StopReplicationRequest;
328
+ "dxos.mesh.teleport.replicator.UpdateFeedsRequest": dxos_mesh_teleport_replicator.UpdateFeedsRequest;
303
329
  "dxos.registry.Record": dxos_registry.Record;
304
330
  "dxos.registry.Record.Extension": dxos_registry.Record.Extension;
305
331
  "dxos.registry.Record.Type": dxos_registry.Record.Type;
@@ -313,6 +339,7 @@ export interface TYPES {
313
339
  "dxos.service.publisher.ListResponse": dxos_service_publisher.ListResponse;
314
340
  "dxos.service.publisher.PublishRequest": dxos_service_publisher.PublishRequest;
315
341
  "dxos.service.publisher.PublishResponse": dxos_service_publisher.PublishResponse;
342
+ "dxos.service.publisher.PublishResponse.PublishedModule": dxos_service_publisher.PublishResponse.PublishedModule;
316
343
  "dxos.service.publisher.ResetResponse": dxos_service_publisher.ResetResponse;
317
344
  "dxos.service.scheduler.Bot": dxos_service_scheduler.Bot;
318
345
  "dxos.service.scheduler.Bot.Spec": dxos_service_scheduler.Bot.Spec;
@@ -360,10 +387,14 @@ export interface TYPES {
360
387
  "google.protobuf.FloatValue": google_protobuf.FloatValue;
361
388
  "google.protobuf.Int32Value": google_protobuf.Int32Value;
362
389
  "google.protobuf.Int64Value": google_protobuf.Int64Value;
390
+ "google.protobuf.ListValue": google_protobuf.ListValue;
391
+ "google.protobuf.NullValue": google_protobuf.NullValue;
363
392
  "google.protobuf.StringValue": google_protobuf.StringValue;
393
+ "google.protobuf.Struct": google_protobuf.Struct;
364
394
  "google.protobuf.Timestamp": google_protobuf.Timestamp;
365
395
  "google.protobuf.UInt32Value": google_protobuf.UInt32Value;
366
396
  "google.protobuf.UInt64Value": google_protobuf.UInt64Value;
397
+ "google.protobuf.Value": google_protobuf.Value;
367
398
  }
368
399
  export interface SERVICES {
369
400
  "dxos.bot.BotFactoryService": dxos_bot.BotFactoryService;
@@ -389,6 +420,9 @@ export interface SERVICES {
389
420
  "dxos.iframe.WorkerService": dxos_iframe.WorkerService;
390
421
  "dxos.mesh.bridge.BridgeService": dxos_mesh_bridge.BridgeService;
391
422
  "dxos.mesh.signal.Signal": dxos_mesh_signal.Signal;
423
+ "dxos.mesh.teleport.control.ControlService": dxos_mesh_teleport_control.ControlService;
424
+ "dxos.mesh.teleport.presence.PresenceService": dxos_mesh_teleport_presence.PresenceService;
425
+ "dxos.mesh.teleport.replicator.ReplicatorService": dxos_mesh_teleport_replicator.ReplicatorService;
392
426
  "dxos.service.publisher.Publisher": dxos_service_publisher.Publisher;
393
427
  "dxos.service.scheduler.BotController": dxos_service_scheduler.BotController;
394
428
  "dxos.service.scheduler.BotHost": dxos_service_scheduler.BotHost;
@@ -398,5 +432,5 @@ export interface SERVICES {
398
432
  "example.testing.rpc.TestService": example_testing_rpc.TestService;
399
433
  "example.testing.rpc.TestStreamService": example_testing_rpc.TestStreamService;
400
434
  }
401
- export const schemaJson = JSON.parse("{\"nested\":{\"dxos\":{\"nested\":{\"bot\":{\"nested\":{\"Bot\":{\"oneofs\":{\"_status\":{\"oneof\":[\"status\"]},\"_desiredState\":{\"oneof\":[\"desiredState\"]},\"_attemptsToAchieveDesiredState\":{\"oneof\":[\"attemptsToAchieveDesiredState\"]},\"_packageSpecifier\":{\"oneof\":[\"packageSpecifier\"]},\"_lastStart\":{\"oneof\":[\"lastStart\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]},\"_runtime\":{\"oneof\":[\"runtime\"]},\"_report\":{\"oneof\":[\"report\"]}},\"fields\":{\"id\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"status\":{\"type\":\"Status\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"desiredState\":{\"type\":\"Status\",\"id\":55,\"options\":{\"proto3_optional\":true},\"comment\":\"The state that the bot aims to be in. Can be only either RUNNING or STOPPED.\"},\"attemptsToAchieveDesiredState\":{\"type\":\"int32\",\"id\":56,\"options\":{\"proto3_optional\":true},\"comment\":null},\"packageSpecifier\":{\"type\":\"BotPackageSpecifier\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"lastStart\":{\"type\":\"google.protobuf.Timestamp\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"runtime\":{\"type\":\"Runtime\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"report\":{\"type\":\"BotReport\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Runtime\":{\"oneofs\":{\"_exitCode\":{\"oneof\":[\"exitCode\"]},\"_exitSignal\":{\"oneof\":[\"exitSignal\"]},\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"exitCode\":{\"type\":\"int32\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"exitSignal\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Status\":{\"values\":{\"STOPPED\":0,\"STARTING\":1,\"RUNNING\":2,\"STOPPING\":3,\"SPAWNING\":4},\"comment\":null,\"comments\":{\"STOPPED\":null,\"STARTING\":\"Starting bot process.\",\"RUNNING\":\"Bot is running.\",\"STOPPING\":\"Bot is stopping.\",\"SPAWNING\":\"Bot is being spawned. Bot factory is downloading the bot bundle and initializing resources.\"}}},\"comment\":null},\"BotFactoryService\":{\"methods\":{\"GetBots\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"GetBotsResponse\",\"comment\":null},\"SpawnBot\":{\"requestType\":\"SpawnBotRequest\",\"responseType\":\"Bot\",\"comment\":null},\"Start\":{\"requestType\":\"Bot\",\"responseType\":\"Bot\",\"comment\":null},\"Stop\":{\"requestType\":\"Bot\",\"responseType\":\"Bot\",\"comment\":null},\"Remove\":{\"requestType\":\"Bot\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetLogs\":{\"requestType\":\"GetLogsRequest\",\"responseType\":\"GetLogsResponse\",\"responseStream\":true,\"comment\":null},\"SendCommand\":{\"requestType\":\"SendCommandRequest\",\"responseType\":\"SendCommandResponse\",\"comment\":null},\"RemoveAll\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Service that is used by clients to communicate with bot factory.\"},\"BotPackageSpecifier\":{\"oneofs\":{\"kind\":{\"oneof\":[\"name\",\"ipfsCid\",\"localPath\"],\"comment\":null}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"comment\":\"DXN of the bot in the DXNS registry.\"},\"ipfsCid\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"localPath\":{\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null},\"BotReport\":{\"oneofs\":{\"_spaceDetails\":{\"oneof\":[\"spaceDetails\"]}},\"fields\":{\"spaceDetails\":{\"type\":\"dxos.client.SpaceDetails\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Details of the space the bot was spawned for.\"}},\"comment\":null},\"BotService\":{\"methods\":{\"Initialize\":{\"requestType\":\"InitializeRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Initialize Client, create profile, and join a space.\"},\"Start\":{\"requestType\":\"StartRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Start an initialized bot.\"},\"Command\":{\"requestType\":\"SendCommandRequest\",\"responseType\":\"SendCommandResponse\",\"comment\":\"Custom commands sent to the bot factory.\"},\"Stop\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Stop the bot.\"},\"StartReporting\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"BotReport\",\"responseStream\":true,\"comment\":\"Send periodic reports of the bot's state.\"}},\"comment\":\"Service that is used by bots communicating with bot factory.\"},\"GetBotsResponse\":{\"fields\":{\"bots\":{\"rule\":\"repeated\",\"type\":\"Bot\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetLogsRequest\":{\"fields\":{\"botId\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetLogsResponse\":{\"fields\":{\"chunk\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"InitializeRequest\":{\"oneofs\":{\"_config\":{\"oneof\":[\"config\"]},\"_invitation\":{\"oneof\":[\"invitation\"]},\"_id\":{\"oneof\":[\"id\"]}},\"fields\":{\"config\":{\"type\":\"dxos.config.Config\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Bot runtime configuration.\"},\"invitation\":{\"type\":\"dxos.client.services.Invitation\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Invitation for the bot to join the target space.\"},\"id\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"ID of the bot.\"}},\"comment\":null},\"SendCommandRequest\":{\"oneofs\":{\"_botId\":{\"oneof\":[\"botId\"]},\"_command\":{\"oneof\":[\"command\"]}},\"fields\":{\"botId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"command\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SendCommandResponse\":{\"oneofs\":{\"_response\":{\"oneof\":[\"response\"]}},\"fields\":{\"response\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SpawnBotRequest\":{\"oneofs\":{\"_package\":{\"oneof\":[\"package\"]},\"_invitation\":{\"oneof\":[\"invitation\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]}},\"fields\":{\"package\":{\"type\":\"BotPackageSpecifier\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"invitation\":{\"type\":\"dxos.client.services.Invitation\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Invitation for the bot to join the target space.\"},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Key of the space bot is invited to.\"}},\"comment\":null},\"StartRequest\":{\"fields\":{\"config\":{\"type\":\"dxos.config.Config\",\"id\":1,\"comment\":\"Bot runtime configuration.\"}},\"comment\":null}}},\"client\":{\"nested\":{\"AddKeyRecordRequest\":{\"fields\":{\"keyRecord\":{\"type\":\"dxos.halo.keys.KeyRecord\",\"id\":1,\"comment\":null}},\"comment\":null},\"AuthenticateInvitationRequest\":{\"fields\":{\"processId\":{\"type\":\"string\",\"id\":1,\"comment\":\"Id from corresponding RedeemedInvitation.\"},\"secret\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Contact\":{\"oneofs\":{\"_displayName\":{\"oneof\":[\"displayName\"]}},\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Contacts\":{\"fields\":{\"contacts\":{\"rule\":\"repeated\",\"type\":\"Contact\",\"id\":1,\"comment\":null}},\"comment\":null},\"CreateInvitationRequest\":{\"oneofs\":{\"_inviteeKey\":{\"oneof\":[\"inviteeKey\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"inviteeKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"When specified the invitation will be of OFFLINE type, not requiring secret exchange.\"}},\"comment\":null},\"CreateProfileRequest\":{\"oneofs\":{\"_publicKey\":{\"oneof\":[\"publicKey\"]},\"_secretKey\":{\"oneof\":[\"secretKey\"]},\"_displayName\":{\"oneof\":[\"displayName\"]}},\"fields\":{\"publicKey\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"secretKey\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"CreateSnapshotRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetPreferenceRequest\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetPreferenceResponse\":{\"fields\":{\"value\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetSpaceDetailsRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"HaloService\":{\"methods\":{\"Sign\":{\"requestType\":\"SignRequest\",\"responseType\":\"SignResponse\",\"comment\":null},\"AddKeyRecord\":{\"requestType\":\"AddKeyRecordRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"SubscribeContacts\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Contacts\",\"responseStream\":true,\"comment\":null},\"SetGlobalPreference\":{\"requestType\":\"SetPreferenceRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetGlobalPreference\":{\"requestType\":\"GetPreferenceRequest\",\"responseType\":\"GetPreferenceResponse\",\"comment\":null},\"SetDevicePreference\":{\"requestType\":\"SetPreferenceRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetDevicePreference\":{\"requestType\":\"GetPreferenceRequest\",\"responseType\":\"GetPreferenceResponse\",\"comment\":null}},\"comment\":null},\"InvitationRequest\":{\"oneofs\":{\"_descriptor\":{\"oneof\":[\"descriptor\"]},\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"descriptor\":{\"type\":\"dxos.client.services.Invitation\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"state\":{\"type\":\"InvitationState\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Only if state == ERROR.\"}},\"comment\":\"Invitation process created by sender.\"},\"InvitationState\":{\"values\":{\"WAITING_FOR_CONNECTION\":0,\"CONNECTED\":1,\"SUCCESS\":2,\"ERROR\":3},\"comment\":null,\"comments\":{\"WAITING_FOR_CONNECTION\":null,\"CONNECTED\":null,\"SUCCESS\":null,\"ERROR\":null}},\"Profile\":{\"oneofs\":{\"_displayName\":{\"oneof\":[\"displayName\"]},\"_deviceKey\":{\"oneof\":[\"deviceKey\"]}},\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ProfileService\":{\"methods\":{\"CreateProfile\":{\"requestType\":\"CreateProfileRequest\",\"responseType\":\"Profile\",\"comment\":null},\"RecoverProfile\":{\"requestType\":\"RecoverProfileRequest\",\"responseType\":\"Profile\",\"comment\":null},\"SubscribeProfile\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeProfileResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"RecoverProfileRequest\":{\"fields\":{\"seedPhrase\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"RedeemedInvitation\":{\"oneofs\":{\"_error\":{\"oneof\":[\"error\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]}},\"fields\":{\"id\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"state\":{\"type\":\"InvitationState\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Only if state == ERROR.\"},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Only on space invitations that are finished.\"}},\"comment\":\"Invitation that is being redeemed.\"},\"services\":{\"nested\":{\"AuthenticationRequest\":{\"fields\":{\"invitationId\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"authenticationCode\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"CancelInvitationRequest\":{\"fields\":{\"invitationId\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"Contact\":{\"fields\":{\"profile\":{\"type\":\"halo.credentials.ProfileDocument\",\"id\":1,\"comment\":null}},\"comment\":null},\"ContactsService\":{\"methods\":{\"UpdateContact\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Contact\",\"comment\":null},\"QueryContacts\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Contact\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"Device\":{\"fields\":{\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"DevicesService\":{\"methods\":{\"UpdateDevice\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Device\",\"comment\":null},\"QueryDevices\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"QueryDevicesResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"HaloInvitationsService\":{\"methods\":{\"CreateInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"AcceptInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"CancelInvitation\":{\"requestType\":\"CancelInvitationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"HaloService\":{\"methods\":{\"RecoverProfile\":{\"requestType\":\"RecoverProfileRequest\",\"responseType\":\"Identity\",\"comment\":null},\"UpdateProfile\":{\"requestType\":\"Identity\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"QueryProfile\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Identity\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"Identity\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"profile\":{\"type\":\"halo.credentials.ProfileDocument\",\"id\":2,\"comment\":null}},\"comment\":null},\"Invitation\":{\"oneofs\":{\"_invitationId\":{\"oneof\":[\"invitationId\"]},\"_type\":{\"oneof\":[\"type\"]},\"_state\":{\"oneof\":[\"state\"]},\"_errorCode\":{\"oneof\":[\"errorCode\"]},\"_swarmKey\":{\"oneof\":[\"swarmKey\"]},\"_identityKey\":{\"oneof\":[\"identityKey\"]},\"_authenticationCode\":{\"oneof\":[\"authenticationCode\"]},\"_timeout\":{\"oneof\":[\"timeout\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]}},\"fields\":{\"invitationId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Local identifier.\"},\"type\":{\"type\":\"Type\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Determined when created.\"},\"state\":{\"type\":\"State\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Local state.\"},\"errorCode\":{\"type\":\"int32\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Local error code.\"},\"swarmKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Swarm rendezvous (random).\"},\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Guest's identity (only present if OFFLINE).\"},\"authenticationCode\":{\"type\":\"string\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":\"Authentication code created by host.\"},\"timeout\":{\"type\":\"int32\",\"id\":8,\"options\":{\"proto3_optional\":true},\"comment\":\"Timeout (ms).\"},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":9,\"options\":{\"proto3_optional\":true},\"comment\":\"Space key (if data invitation).\"}},\"nested\":{\"State\":{\"values\":{\"INIT\":0,\"CONNECTING\":1,\"CONNECTED\":2,\"AUTHENTICATING\":3,\"SUCCESS\":4,\"CANCELLED\":5,\"TIMEOUT\":6,\"ERROR\":7},\"comment\":null,\"comments\":{\"INIT\":null,\"CONNECTING\":null,\"CONNECTED\":null,\"AUTHENTICATING\":null,\"SUCCESS\":null,\"CANCELLED\":null,\"TIMEOUT\":null,\"ERROR\":null}},\"Type\":{\"values\":{\"INTERACTIVE\":0,\"INTERACTIVE_TESTING\":1,\"OFFLINE\":2},\"comment\":null,\"comments\":{\"INTERACTIVE\":\"Requires both to be online with OTP to complete key exchange.\",\"INTERACTIVE_TESTING\":\"Interactive without OTP.\",\"OFFLINE\":\"Guest's identity key is known; invitation can be accepted by any valid peer.\"}}},\"comment\":\"Represents the invitation state passed between client and service.\"},\"KeyRecord\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"QueryDevicesResponse\":{\"fields\":{\"devices\":{\"rule\":\"repeated\",\"type\":\"Device\",\"id\":1,\"comment\":null}},\"comment\":null},\"QueryMembersRequest\":{\"fields\":{},\"comment\":null},\"QueryMembersResponse\":{\"fields\":{\"members\":{\"type\":\"dxos.halo.credentials.IdentityProfile\",\"id\":1,\"comment\":null}},\"comment\":null},\"RecoverProfileRequest\":{\"fields\":{\"recoveryKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"SigningService\":{\"methods\":{\"UpdateKeyRecord\":{\"requestType\":\"KeyRecord\",\"responseType\":\"KeyRecord\",\"comment\":null},\"Sign\":{\"requestType\":\"SignRequest\",\"responseType\":\"SignResponse\",\"comment\":null}},\"comment\":null},\"SignRequest\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"SignResponse\":{\"fields\":{\"signed\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Space\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SpaceInvitationsService\":{\"methods\":{\"CreateInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"AcceptInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"CancelInvitation\":{\"requestType\":\"CancelInvitationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"SpacesService\":{\"methods\":{\"CreateSpace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Space\",\"comment\":null},\"QuerySpaces\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Space\",\"responseStream\":true,\"comment\":null},\"QueryMembers\":{\"requestType\":\"QueryMembersRequest\",\"responseType\":\"QueryMembersResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"SystemService\":{\"methods\":{\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"dxos.config.Config\",\"comment\":null},\"Reset\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null}}},\"SetPreferenceRequest\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"value\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"SetSpaceStateRequest\":{\"oneofs\":{\"_open\":{\"oneof\":[\"open\"]},\"_activeGlobal\":{\"oneof\":[\"activeGlobal\"]},\"_activeDevice\":{\"oneof\":[\"activeDevice\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"open\":{\"type\":\"bool\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"activeGlobal\":{\"type\":\"bool\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"activeDevice\":{\"type\":\"bool\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SignRequest\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"The public key of the key that is supposed to be used for signing.\"},\"payload\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"SignResponse\":{\"fields\":{\"signed\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Space\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"isOpen\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"isActive\":{\"type\":\"bool\",\"id\":3,\"comment\":null},\"members\":{\"rule\":\"repeated\",\"type\":\"SpaceMember\",\"id\":4,\"comment\":null}},\"comment\":null},\"SpaceActivationOptions\":{\"fields\":{\"global\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"device\":{\"type\":\"bool\",\"id\":2,\"comment\":null}},\"comment\":null},\"SpaceDetails\":{\"fields\":{\"processedTimeframe\":{\"type\":\"dxos.echo.timeframe.TimeframeVector\",\"id\":1,\"comment\":\"The timeframe of mutations processed by the client.\"}},\"comment\":null},\"SpaceMember\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"profile\":{\"type\":\"Profile\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SpaceService\":{\"methods\":{\"SubscribeToSpace\":{\"requestType\":\"SubscribeSpaceRequest\",\"responseType\":\"SubscribeSpaceResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeSpaces\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeSpacesResponse\",\"responseStream\":true,\"comment\":null},\"GetSpaceDetails\":{\"requestType\":\"GetSpaceDetailsRequest\",\"responseType\":\"SpaceDetails\",\"comment\":null},\"CreateSpace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Space\",\"comment\":null},\"CloneSpace\":{\"requestType\":\"dxos.echo.snapshot.SpaceSnapshot\",\"responseType\":\"Space\",\"comment\":null},\"SetSpaceState\":{\"requestType\":\"SetSpaceStateRequest\",\"responseType\":\"Space\",\"comment\":\"Open and close or activate and deactivate a space.\"},\"SubscribeMembers\":{\"requestType\":\"SubscribeMembersRequest\",\"responseType\":\"SubscribeMembersResponse\",\"responseStream\":true,\"comment\":null},\"CreateSnapshot\":{\"requestType\":\"CreateSnapshotRequest\",\"responseType\":\"echo.snapshot.SpaceSnapshot\",\"comment\":null}},\"comment\":null},\"Status\":{\"fields\":{\"message\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeMembersRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeMembersResponse\":{\"fields\":{\"members\":{\"rule\":\"repeated\",\"type\":\"SpaceMember\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeProfileResponse\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"profile\":{\"type\":\"Profile\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeSpaceRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeSpaceResponse\":{\"oneofs\":{\"_space\":{\"oneof\":[\"space\"]}},\"fields\":{\"space\":{\"type\":\"Space\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeSpacesResponse\":{\"fields\":{\"spaces\":{\"rule\":\"repeated\",\"type\":\"Space\",\"id\":1,\"comment\":null}},\"comment\":null},\"SystemService\":{\"methods\":{\"InitSession\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Called at the start of the session. Service should block until it is fully initialized.\"},\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"dxos.config.Config\",\"comment\":null},\"GetStatus\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Status\",\"comment\":null},\"Reset\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null}}},\"config\":{\"nested\":{\"Config\":{\"oneofs\":{\"_version\":{\"oneof\":[\"version\"]},\"_package\":{\"oneof\":[\"package\"]},\"_runtime\":{\"oneof\":[\"runtime\"]}},\"fields\":{\"version\":{\"type\":\"int32\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"package\":{\"type\":\"Package\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"runtime\":{\"type\":\"Runtime\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Module\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]},\"_type\":{\"oneof\":[\"type\"]},\"_displayName\":{\"oneof\":[\"displayName\"]},\"_description\":{\"oneof\":[\"description\"]},\"_bundle\":{\"oneof\":[\"bundle\"]},\"_build\":{\"oneof\":[\"build\"]},\"_record\":{\"oneof\":[\"record\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"type\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"description\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"tags\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":5,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"build\":{\"type\":\"Build\",\"id\":100,\"options\":{\"proto3_optional\":true},\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":101,\"comment\":null},\"record\":{\"type\":\"google.protobuf.Any\",\"id\":200,\"options\":{\"proto3_optional\":true},\"comment\":\"The data will be validated based on the type when being published.\"}},\"nested\":{\"Build\":{\"oneofs\":{\"_command\":{\"oneof\":[\"command\"]},\"_outdir\":{\"oneof\":[\"outdir\"]},\"_version\":{\"oneof\":[\"version\"]},\"_tag\":{\"oneof\":[\"tag\"]}},\"fields\":{\"command\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"outdir\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"version\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"tag\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Package\":{\"oneofs\":{\"_license\":{\"oneof\":[\"license\"]}},\"fields\":{\"license\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":2,\"comment\":null},\"modules\":{\"rule\":\"repeated\",\"type\":\"Module\",\"id\":3,\"comment\":null}},\"comment\":null},\"Repo\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]},\"_url\":{\"oneof\":[\"url\"]},\"_version\":{\"oneof\":[\"version\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"url\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"version\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Runtime\":{\"oneofs\":{\"_client\":{\"oneof\":[\"client\"]},\"_app\":{\"oneof\":[\"app\"]},\"_cli\":{\"oneof\":[\"cli\"]},\"_props\":{\"oneof\":[\"props\"]},\"_services\":{\"oneof\":[\"services\"]},\"_system\":{\"oneof\":[\"system\"]},\"_kube\":{\"oneof\":[\"kube\"]}},\"fields\":{\"client\":{\"type\":\"Client\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"app\":{\"type\":\"App\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"cli\":{\"type\":\"CLI\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"props\":{\"type\":\"Props\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"services\":{\"type\":\"Services\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"system\":{\"type\":\"System\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"kube\":{\"type\":\"Kube\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"App\":{\"oneofs\":{\"_org\":{\"oneof\":[\"org\"]},\"_theme\":{\"oneof\":[\"theme\"]},\"_website\":{\"oneof\":[\"website\"]},\"_publicUrl\":{\"oneof\":[\"publicUrl\"]}},\"fields\":{\"org\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"theme\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"website\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"publicUrl\":{\"type\":\"string\",\"id\":4,\"options\":{\"(env)\":\"PUBLIC_URL\",\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"CLI\":{\"oneofs\":{\"_nodePath\":{\"oneof\":[\"nodePath\"]},\"_app\":{\"oneof\":[\"app\"]},\"_console\":{\"oneof\":[\"console\"]},\"_mdns\":{\"oneof\":[\"mdns\"]},\"_signal\":{\"oneof\":[\"signal\"]},\"_npmClient\":{\"oneof\":[\"npmClient\"]},\"_channel\":{\"oneof\":[\"channel\"]}},\"fields\":{\"nodePath\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"app\":{\"type\":\"AppServe\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"console\":{\"type\":\"Package\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"mdns\":{\"type\":\"Package\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"signal\":{\"type\":\"Package\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"npmClient\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"channel\":{\"type\":\"string\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"AppServe\":{\"oneofs\":{\"_serve\":{\"oneof\":[\"serve\"]}},\"fields\":{\"serve\":{\"type\":\"Serve\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Serve\":{\"oneofs\":{\"_config\":{\"oneof\":[\"config\"]},\"_loginApp\":{\"oneof\":[\"loginApp\"]},\"_keyPhrase\":{\"oneof\":[\"keyPhrase\"]}},\"fields\":{\"config\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"loginApp\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"keyPhrase\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Package\":{\"oneofs\":{\"_package\":{\"oneof\":[\"package\"]},\"_channel\":{\"oneof\":[\"channel\"]},\"_bin\":{\"oneof\":[\"bin\"]},\"_config\":{\"oneof\":[\"config\"]}},\"fields\":{\"package\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"channel\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"bin\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"config\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Client\":{\"oneofs\":{\"_debug\":{\"oneof\":[\"debug\"]},\"_storage\":{\"oneof\":[\"storage\"]},\"_enableSnapshots\":{\"oneof\":[\"enableSnapshots\"]},\"_snapshotInterval\":{\"oneof\":[\"snapshotInterval\"]},\"_invitationExpiration\":{\"oneof\":[\"invitationExpiration\"]},\"_remoteSource\":{\"oneof\":[\"remoteSource\"]}},\"fields\":{\"debug\":{\"type\":\"string\",\"id\":1,\"options\":{\"(env)\":\"DEBUG\",\"proto3_optional\":true},\"comment\":null},\"storage\":{\"type\":\"Storage\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"enableSnapshots\":{\"type\":\"bool\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"snapshotInterval\":{\"type\":\"int32\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Milliseconds\"},\"invitationExpiration\":{\"type\":\"int32\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Milliseconds\"},\"remoteSource\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Storage\":{\"oneofs\":{\"_persistent\":{\"oneof\":[\"persistent\"]},\"_keyStorage\":{\"oneof\":[\"keyStorage\"]},\"_storageType\":{\"oneof\":[\"storageType\"]},\"_path\":{\"oneof\":[\"path\"]}},\"fields\":{\"persistent\":{\"type\":\"bool\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"keyStorage\":{\"type\":\"StorageDriver\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"storageType\":{\"type\":\"StorageDriver\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"path\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"StorageDriver\":{\"values\":{\"RAM\":0,\"IDB\":1,\"CHROME\":2,\"FIREFOX\":3,\"NODE\":4,\"LEVELJS\":11,\"JSONDOWN\":12},\"comment\":null,\"comments\":{\"RAM\":null,\"IDB\":null,\"CHROME\":null,\"FIREFOX\":null,\"NODE\":null,\"LEVELJS\":null,\"JSONDOWN\":null}}},\"comment\":null}},\"comment\":null},\"Kube\":{\"oneofs\":{\"_host\":{\"oneof\":[\"host\"]},\"_port\":{\"oneof\":[\"port\"]},\"_autoupdate\":{\"oneof\":[\"autoupdate\"]},\"_https\":{\"oneof\":[\"https\"]},\"_p2p\":{\"oneof\":[\"p2p\"]},\"_confhost\":{\"oneof\":[\"confhost\"]},\"_monitoring\":{\"oneof\":[\"monitoring\"]},\"_trace\":{\"oneof\":[\"trace\"]},\"_telemetry\":{\"oneof\":[\"telemetry\"]}},\"fields\":{\"host\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"port\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"autoupdate\":{\"type\":\"Autoupdate\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"https\":{\"type\":\"Https\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"p2p\":{\"type\":\"P2P\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"confhost\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"env\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":7,\"comment\":null},\"alias\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":8,\"comment\":null},\"monitoring\":{\"type\":\"Monitoring\",\"id\":9,\"options\":{\"proto3_optional\":true},\"comment\":null},\"trace\":{\"type\":\"Trace\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"telemetry\":{\"type\":\"Telemetry\",\"id\":11,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Autoupdate\":{\"oneofs\":{\"_enabled\":{\"oneof\":[\"enabled\"]},\"_interval\":{\"oneof\":[\"interval\"]}},\"fields\":{\"enabled\":{\"type\":\"bool\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"interval\":{\"type\":\"int64\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Seconds\"}},\"comment\":null},\"Https\":{\"oneofs\":{\"_enabled\":{\"oneof\":[\"enabled\"]},\"_port\":{\"oneof\":[\"port\"]},\"_email\":{\"oneof\":[\"email\"]},\"_certfile\":{\"oneof\":[\"certfile\"]},\"_keyfile\":{\"oneof\":[\"keyfile\"]},\"_dnsprovider\":{\"oneof\":[\"dnsprovider\"]}},\"fields\":{\"enabled\":{\"type\":\"bool\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"port\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"email\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"certfile\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"keyfile\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"dnsprovider\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Monitoring\":{\"fields\":{\"enabled\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"endpoint\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"interval\":{\"type\":\"int64\",\"id\":3,\"comment\":\"Seconds\"}},\"comment\":null},\"P2P\":{\"oneofs\":{\"_privateKey\":{\"oneof\":[\"privateKey\"]},\"_port\":{\"oneof\":[\"port\"]}},\"fields\":{\"privateKey\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"port\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"bootstrap\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null},\"Telemetry\":{\"fields\":{\"disabled\":{\"type\":\"bool\",\"id\":1,\"comment\":null}},\"comment\":null},\"Trace\":{\"fields\":{\"disabled\":{\"type\":\"bool\",\"id\":1,\"comment\":null}},\"comment\":null}},\"comment\":null},\"Props\":{\"oneofs\":{\"_title\":{\"oneof\":[\"title\"]}},\"fields\":{\"title\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Services\":{\"oneofs\":{\"_kube\":{\"oneof\":[\"kube\"]},\"_app\":{\"oneof\":[\"app\"]},\"_dxns\":{\"oneof\":[\"dxns\"]},\"_ipfs\":{\"oneof\":[\"ipfs\"]},\"_signal\":{\"oneof\":[\"signal\"]},\"_machine\":{\"oneof\":[\"machine\"]},\"_bot\":{\"oneof\":[\"bot\"]},\"_publisher\":{\"oneof\":[\"publisher\"]}},\"fields\":{\"kube\":{\"type\":\"Kube\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"app\":{\"type\":\"AppServer\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"dxns\":{\"type\":\"Dxns\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"ipfs\":{\"type\":\"Ipfs\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"signal\":{\"type\":\"Signal\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"ice\":{\"rule\":\"repeated\",\"type\":\"Ice\",\"id\":6,\"comment\":null},\"machine\":{\"type\":\"Machine\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null},\"bot\":{\"type\":\"BotFactory\",\"id\":8,\"options\":{\"proto3_optional\":true},\"comment\":null},\"publisher\":{\"type\":\"Publisher\",\"id\":9,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"AppServer\":{\"oneofs\":{\"_prefix\":{\"oneof\":[\"prefix\"]},\"_server\":{\"oneof\":[\"server\"]}},\"fields\":{\"prefix\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"server\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"BotFactory\":{\"oneofs\":{\"_topic\":{\"oneof\":[\"topic\"]},\"_persistent\":{\"oneof\":[\"persistent\"]},\"_retryAttempts\":{\"oneof\":[\"retryAttempts\"]},\"_retryInterval\":{\"oneof\":[\"retryInterval\"]}},\"fields\":{\"topic\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"persistent\":{\"type\":\"bool\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"retryAttempts\":{\"type\":\"int32\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"retryInterval\":{\"type\":\"int32\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Dxns\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]},\"_accountUri\":{\"oneof\":[\"accountUri\"]},\"_address\":{\"oneof\":[\"address\"]},\"_account\":{\"oneof\":[\"account\"]},\"_faucet\":{\"oneof\":[\"faucet\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"DXNS endpoint.\"},\"accountUri\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Substrate account URI. This is a secret.\\nKUBEs do not serve this with the config but we store it in profile.yml.\\n\\nTODO(dmaretskyi): Deprecate this and move it to keyring.\"},\"address\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Public Polkadot Address.\"},\"account\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Public address of a DXNS Account.\"},\"faucet\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Ice\":{\"oneofs\":{\"_urls\":{\"oneof\":[\"urls\"]},\"_username\":{\"oneof\":[\"username\"]},\"_credential\":{\"oneof\":[\"credential\"]}},\"fields\":{\"urls\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"username\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"credential\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Ipfs\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]},\"_gateway\":{\"oneof\":[\"gateway\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"gateway\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Kube\":{\"oneofs\":{\"_endpoints\":{\"oneof\":[\"endpoints\"]},\"_publicUrl\":{\"oneof\":[\"publicUrl\"]}},\"fields\":{\"endpoints\":{\"type\":\"Endpoints\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"publicUrl\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Endpoints\":{\"oneofs\":{\"_logs\":{\"oneof\":[\"logs\"]},\"_services\":{\"oneof\":[\"services\"]},\"_cert\":{\"oneof\":[\"cert\"]}},\"fields\":{\"logs\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"services\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"cert\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Machine\":{\"oneofs\":{\"_doAccessToken\":{\"oneof\":[\"doAccessToken\"]},\"_githubAccessToken\":{\"oneof\":[\"githubAccessToken\"]},\"_githubUsername\":{\"oneof\":[\"githubUsername\"]},\"_dnsDomain\":{\"oneof\":[\"dnsDomain\"]},\"_npmAccessToken\":{\"oneof\":[\"npmAccessToken\"]}},\"fields\":{\"doAccessToken\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"githubAccessToken\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"githubUsername\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"dnsDomain\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"npmAccessToken\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Publisher\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Signal\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]},\"_api\":{\"oneof\":[\"api\"]},\"_status\":{\"oneof\":[\"status\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"api\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"status\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"System\":{\"oneofs\":{\"_debug\":{\"oneof\":[\"debug\"]}},\"fields\":{\"debug\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null}}},\"devtools\":{\"nested\":{\"host\":{\"nested\":{\"ClearSnapshotsRequest\":{\"fields\":{},\"comment\":null},\"DevtoolsHost\":{\"methods\":{\"Events\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Event\",\"responseStream\":true,\"comment\":null},\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"GetConfigResponse\",\"comment\":null},\"ResetStorage\":{\"requestType\":\"ResetStorageRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"EnableDebugLogging\":{\"requestType\":\"EnableDebugLoggingRequest\",\"responseType\":\"EnableDebugLoggingResponse\",\"comment\":null},\"DisableDebugLogging\":{\"requestType\":\"EnableDebugLoggingRequest\",\"responseType\":\"EnableDebugLoggingResponse\",\"comment\":null},\"SubscribeToKeyringKeys\":{\"requestType\":\"SubscribeToKeyringKeysRequest\",\"responseType\":\"SubscribeToKeyringKeysResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToCredentialMessages\":{\"requestType\":\"SubscribeToCredentialMessagesRequest\",\"responseType\":\"SubscribeToCredentialMessagesResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSpaces\":{\"requestType\":\"SubscribeToSpacesRequest\",\"responseType\":\"SubscribeToSpacesResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToItems\":{\"requestType\":\"SubscribeToItemsRequest\",\"responseType\":\"SubscribeToItemsResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToFeeds\":{\"requestType\":\"SubscribeToFeedsRequest\",\"responseType\":\"SubscribeToFeedsResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToFeedBlocks\":{\"requestType\":\"SubscribeToFeedBlocksRequest\",\"responseType\":\"SubscribeToFeedBlocksResponse\",\"responseStream\":true,\"comment\":null},\"GetSpaceSnapshot\":{\"requestType\":\"GetSpaceSnapshotRequest\",\"responseType\":\"GetSpaceSnapshotResponse\",\"comment\":null},\"SaveSpaceSnapshot\":{\"requestType\":\"SaveSpaceSnapshotRequest\",\"responseType\":\"SaveSpaceSnapshotResponse\",\"comment\":null},\"ClearSnapshots\":{\"requestType\":\"ClearSnapshotsRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetNetworkPeers\":{\"requestType\":\"GetNetworkPeersRequest\",\"responseType\":\"GetNetworkPeersResponse\",\"comment\":null},\"SubscribeToNetworkTopics\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeToNetworkTopicsResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSignalStatus\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeToSignalStatusResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSignalTrace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeToSignalTraceResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSwarmInfo\":{\"requestType\":\"SubscribeToSwarmInfoRequest\",\"responseType\":\"SubscribeToSwarmInfoResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"DisableDebugLoggingRequest\":{\"oneofs\":{\"_namespaces\":{\"oneof\":[\"namespaces\"]}},\"fields\":{\"namespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"DisableDebugLoggingResponse\":{\"oneofs\":{\"_enabledNamespaces\":{\"oneof\":[\"enabledNamespaces\"]}},\"fields\":{\"enabledNamespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"EnableDebugLoggingRequest\":{\"oneofs\":{\"_namespaces\":{\"oneof\":[\"namespaces\"]}},\"fields\":{\"namespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"EnableDebugLoggingResponse\":{\"oneofs\":{\"_enabledNamespaces\":{\"oneof\":[\"enabledNamespaces\"]}},\"fields\":{\"enabledNamespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Event\":{\"oneofs\":{\"payload\":{\"oneof\":[\"ready\"],\"comment\":null}},\"fields\":{\"ready\":{\"type\":\"ReadyEvent\",\"id\":1,\"comment\":null}},\"comment\":null},\"FeedStats\":{\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"length\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null},\"GetConfigResponse\":{\"fields\":{\"config\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetNetworkPeersRequest\":{\"fields\":{\"topic\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetNetworkPeersResponse\":{\"fields\":{\"peers\":{\"rule\":\"repeated\",\"type\":\"PeerInfo\",\"id\":1,\"comment\":null}},\"nested\":{\"PeerInfo\":{\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"state\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"connections\":{\"rule\":\"repeated\",\"type\":\"bytes\",\"id\":3,\"comment\":null}},\"comment\":null}},\"comment\":null},\"GetSpaceSnapshotRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetSpaceSnapshotResponse\":{\"oneofs\":{\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"snapshot\":{\"type\":\"dxos.echo.snapshot.SpaceSnapshot\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"PeerStats\":{\"fields\":{\"controlFeed\":{\"type\":\"FeedStats\",\"id\":1,\"comment\":null},\"dataFeed\":{\"type\":\"FeedStats\",\"id\":2,\"comment\":null}},\"comment\":null},\"ReadyEvent\":{\"fields\":{},\"comment\":null},\"ResetStorageRequest\":{\"fields\":{},\"comment\":null},\"SaveSpaceSnapshotRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SaveSpaceSnapshotResponse\":{\"oneofs\":{\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"snapshot\":{\"type\":\"dxos.echo.snapshot.SpaceSnapshot\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Services\":{\"fields\":{\"spaces\":{\"rule\":\"repeated\",\"type\":\"SpaceStats\",\"id\":1,\"comment\":null}},\"comment\":null},\"SetTracingOptionsRequest\":{\"fields\":{\"enable\":{\"type\":\"bool\",\"id\":1,\"comment\":null}},\"comment\":null},\"SpaceStats\":{\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"peers\":{\"rule\":\"repeated\",\"type\":\"PeerStats\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeToCredentialMessagesRequest\":{\"oneofs\":{\"_spaceKey\":{\"oneof\":[\"spaceKey\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeToCredentialMessagesResponse\":{\"fields\":{\"messages\":{\"rule\":\"repeated\",\"type\":\"dxos.halo.signed.SignedMessage\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToFeedBlocksRequest\":{\"oneofs\":{\"_spaceKey\":{\"oneof\":[\"spaceKey\"]},\"_feedKey\":{\"oneof\":[\"feedKey\"]},\"_maxBlocks\":{\"oneof\":[\"maxBlocks\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"maxBlocks\":{\"type\":\"int32\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeToFeedBlocksResponse\":{\"fields\":{\"blocks\":{\"rule\":\"repeated\",\"type\":\"Block\",\"id\":1,\"comment\":null}},\"nested\":{\"Block\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":2,\"comment\":null},\"data\":{\"type\":\"dxos.echo.feed.FeedMessage\",\"id\":3,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToFeedsRequest\":{\"fields\":{\"feedKeys\":{\"rule\":\"repeated\",\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToFeedsResponse\":{\"fields\":{\"feeds\":{\"rule\":\"repeated\",\"type\":\"Feed\",\"id\":1,\"comment\":null}},\"nested\":{\"Feed\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"length\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToItemsRequest\":{\"fields\":{},\"comment\":null},\"SubscribeToItemsResponse\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToKeyringKeysRequest\":{\"fields\":{},\"comment\":null},\"SubscribeToKeyringKeysResponse\":{\"fields\":{\"keys\":{\"rule\":\"repeated\",\"type\":\"dxos.halo.keys.KeyRecord\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToNetworkTopicsResponse\":{\"fields\":{\"topics\":{\"rule\":\"repeated\",\"type\":\"Topic\",\"id\":1,\"comment\":null}},\"nested\":{\"Topic\":{\"oneofs\":{\"_label\":{\"oneof\":[\"label\"]}},\"fields\":{\"topic\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"label\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToSignalStatusResponse\":{\"fields\":{\"servers\":{\"rule\":\"repeated\",\"type\":\"SignalServer\",\"id\":1,\"comment\":null}},\"nested\":{\"SignalServer\":{\"oneofs\":{\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"host\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"state\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"reconnectIn\":{\"type\":\"int32\",\"id\":4,\"comment\":null},\"connectionStarted\":{\"type\":\"int32\",\"id\":5,\"comment\":null},\"lastStateChange\":{\"type\":\"int32\",\"id\":6,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToSignalTraceResponse\":{\"fields\":{\"events\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToSpacesRequest\":{\"fields\":{\"spaceKeys\":{\"rule\":\"repeated\",\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToSpacesResponse\":{\"fields\":{\"spaces\":{\"rule\":\"repeated\",\"type\":\"SpaceInfo\",\"id\":1,\"comment\":null}},\"nested\":{\"SpaceInfo\":{\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"isOpen\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"timeframe\":{\"type\":\"dxos.echo.timeframe.TimeframeVector\",\"id\":3,\"comment\":null},\"genesisFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":null},\"controlFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":5,\"comment\":null},\"dataFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToSwarmInfoRequest\":{\"fields\":{},\"comment\":null},\"SubscribeToSwarmInfoResponse\":{\"fields\":{\"data\":{\"rule\":\"repeated\",\"type\":\"SwarmInfo\",\"id\":1,\"comment\":null}},\"comment\":null},\"TracingService\":{\"methods\":{\"SetTracingOptions\":{\"requestType\":\"SetTracingOptionsRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"SubscribeToRpcTrace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"dxos.rpc.RpcMessage\",\"responseStream\":true,\"comment\":null}},\"comment\":null}}},\"swarm\":{\"nested\":{\"ConnectionEvent\":{\"oneofs\":{\"_newState\":{\"oneof\":[\"newState\"]},\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"newState\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ConnectionInfo\":{\"oneofs\":{\"_transport\":{\"oneof\":[\"transport\"]}},\"fields\":{\"state\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"sessionId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"remotePeerId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"transport\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"protocolExtensions\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":5,\"comment\":null},\"events\":{\"rule\":\"repeated\",\"type\":\"ConnectionEvent\",\"id\":6,\"comment\":null}},\"comment\":null},\"SwarmInfo\":{\"oneofs\":{\"_label\":{\"oneof\":[\"label\"]}},\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"topic\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"label\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"isActive\":{\"type\":\"bool\",\"id\":4,\"comment\":null},\"connections\":{\"rule\":\"repeated\",\"type\":\"ConnectionInfo\",\"id\":5,\"comment\":null}},\"comment\":null}}}}},\"echo\":{\"nested\":{\"feed\":{\"nested\":{\"CredentialsMessage\":{\"fields\":{\"credential\":{\"type\":\"dxos.halo.credentials.Credential\",\"id\":1,\"comment\":null}},\"comment\":\"A container for dxos.credentials.Message\"},\"EchoEnvelope\":{\"oneofs\":{\"_genesis\":{\"oneof\":[\"genesis\"]},\"_itemMutation\":{\"oneof\":[\"itemMutation\"]},\"_mutation\":{\"oneof\":[\"mutation\"]},\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"itemId\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"genesis\":{\"type\":\"ItemGenesis\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"itemMutation\":{\"type\":\"ItemMutation\",\"id\":11,\"options\":{\"proto3_optional\":true},\"comment\":null},\"mutation\":{\"type\":\"bytes\",\"id\":12,\"options\":{\"proto3_optional\":true},\"comment\":null},\"snapshot\":{\"type\":\"snapshot.ModelSnapshot\",\"id\":13,\"options\":{\"proto3_optional\":true},\"comment\":\"Set the model to the provided snapshot.\"}},\"comment\":null},\"FeedMessage\":{\"fields\":{\"timeframe\":{\"type\":\"dxos.echo.timeframe.TimeframeVector\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":\"Outer message type decoded by Codec.\\nThis is what is written to the feeds.\"},\"ItemGenesis\":{\"oneofs\":{\"_itemType\":{\"oneof\":[\"itemType\"]},\"_modelVersion\":{\"oneof\":[\"modelVersion\"]},\"_link\":{\"oneof\":[\"link\"]}},\"fields\":{\"itemType\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"modelType\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"modelVersion\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"link\":{\"type\":\"LinkData\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ItemMutation\":{\"oneofs\":{\"_parentId\":{\"oneof\":[\"parentId\"]},\"_action\":{\"oneof\":[\"action\"]}},\"fields\":{\"parentId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"action\":{\"type\":\"Action\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Action\":{\"values\":{\"NOOP\":0,\"DELETE\":1,\"RESTORE\":2},\"comment\":null,\"comments\":{\"NOOP\":null,\"DELETE\":null,\"RESTORE\":null}}},\"comment\":\"Item mutation.\"},\"LinkData\":{\"fields\":{\"source\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"target\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"metadata\":{\"nested\":{\"EchoMetadata\":{\"oneofs\":{\"_identity\":{\"oneof\":[\"identity\"]}},\"fields\":{\"version\":{\"type\":\"int32\",\"id\":1,\"comment\":\"Version number that is inceremnted every time there's a breaking change to the storage schema.\\nThis is used to detect if the storage schema has changed since the last time the client was run.\\nLoading data from a different version will might result in an error.\"},\"created\":{\"type\":\"google.protobuf.Timestamp\",\"id\":2,\"comment\":null},\"updated\":{\"type\":\"google.protobuf.Timestamp\",\"id\":3,\"comment\":null},\"identity\":{\"type\":\"dxos.halo.credentials.IdentityRecord\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"spaces\":{\"rule\":\"repeated\",\"type\":\"SpaceMetadata\",\"id\":11,\"comment\":\"List of the data spaces.\"}},\"comment\":null},\"SpaceMetadata\":{\"oneofs\":{\"_genesisFeedKey\":{\"oneof\":[\"genesisFeedKey\"]},\"_controlFeedKey\":{\"oneof\":[\"controlFeedKey\"]},\"_dataFeedKey\":{\"oneof\":[\"dataFeedKey\"]},\"_latestTimeframe\":{\"oneof\":[\"latestTimeframe\"]}},\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"Space key.\"},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"controlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Key of the wriatable control feed.\"},\"feedKeys\":{\"rule\":\"repeated\",\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"List of all feed associated with the space.\"},\"dataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Key of the wriatable data feed.\"},\"latestTimeframe\":{\"type\":\"timeframe.TimeframeVector\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}}},\"model\":{\"nested\":{\"messenger\":{\"nested\":{\"Message\":{\"fields\":{\"timestamp\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"text\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"sender\":{\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null}}},\"object\":{\"nested\":{\"Array\":{\"fields\":{\"values\":{\"rule\":\"repeated\",\"type\":\"Value\",\"id\":1,\"comment\":null}},\"comment\":\"Ordered collection of values.\"},\"KeyValue\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"value\":{\"type\":\"Value\",\"id\":2,\"comment\":null}},\"comment\":\"Key x Value tuple.\"},\"KeyValueObject\":{\"fields\":{\"properties\":{\"rule\":\"repeated\",\"type\":\"KeyValue\",\"id\":1,\"comment\":null}},\"comment\":\"Object data definition.\"},\"ObjectMutation\":{\"oneofs\":{\"_value\":{\"oneof\":[\"value\"]}},\"fields\":{\"operation\":{\"type\":\"Operation\",\"id\":1,\"comment\":null},\"key\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"value\":{\"type\":\"Value\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Operation\":{\"values\":{\"SET\":0,\"DELETE\":1,\"ARRAY_PUSH\":2,\"SET_ADD\":4,\"SET_DELETE\":5},\"comment\":null,\"comments\":{\"SET\":null,\"DELETE\":null,\"ARRAY_PUSH\":null,\"SET_ADD\":null,\"SET_DELETE\":null}}},\"comment\":\"Atomic mutation.\"},\"ObjectMutationSet\":{\"fields\":{\"mutations\":{\"rule\":\"repeated\",\"type\":\"ObjectMutation\",\"id\":1,\"comment\":null}},\"comment\":\"Set of mutations.\"},\"ObjectSnapshot\":{\"fields\":{\"root\":{\"type\":\"Value\",\"id\":1,\"comment\":null}},\"comment\":\"State snapshot.\"},\"Predicate\":{\"oneofs\":{\"_key\":{\"oneof\":[\"key\"]},\"_value\":{\"oneof\":[\"value\"]}},\"fields\":{\"op\":{\"type\":\"Operation\",\"id\":1,\"comment\":null},\"key\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"value\":{\"type\":\"Value\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"predicates\":{\"rule\":\"repeated\",\"type\":\"Predicate\",\"id\":4,\"comment\":null}},\"nested\":{\"Operation\":{\"values\":{\"OR\":0,\"AND\":1,\"NOT\":2,\"IN\":10,\"EQUALS\":11,\"GTE\":12,\"GT\":13,\"LTE\":14,\"LT\":15,\"PREFIX_MATCH\":20,\"TEXT_MATCH\":21},\"comment\":null,\"comments\":{\"OR\":null,\"AND\":null,\"NOT\":null,\"IN\":null,\"EQUALS\":null,\"GTE\":null,\"GT\":null,\"LTE\":null,\"LT\":null,\"PREFIX_MATCH\":null,\"TEXT_MATCH\":null}}},\"comment\":\"Query predicate.\"},\"Query\":{\"fields\":{\"root\":{\"type\":\"Predicate\",\"id\":1,\"comment\":null}},\"comment\":\"Query.\"},\"Value\":{\"oneofs\":{\"Type\":{\"oneof\":[\"null\",\"bool\",\"int\",\"float\",\"string\",\"timestamp\",\"datetime\",\"bytes\",\"object\",\"array\"],\"comment\":null}},\"fields\":{\"null\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"bool\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"int\":{\"type\":\"int64\",\"id\":3,\"comment\":null},\"float\":{\"type\":\"float\",\"id\":4,\"comment\":null},\"string\":{\"type\":\"string\",\"id\":5,\"comment\":null},\"timestamp\":{\"type\":\"string\",\"id\":10,\"comment\":null},\"datetime\":{\"type\":\"string\",\"id\":11,\"comment\":null},\"bytes\":{\"type\":\"bytes\",\"id\":12,\"comment\":null},\"object\":{\"type\":\"KeyValueObject\",\"id\":20,\"comment\":null},\"array\":{\"type\":\"Array\",\"id\":21,\"comment\":null}},\"comment\":\"Generic value.\"}}},\"text\":{\"nested\":{\"Mutation\":{\"fields\":{\"update\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"clientId\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null},\"Snapshot\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null}}}}},\"service\":{\"nested\":{\"DataService\":{\"methods\":{\"SubscribeEntitySet\":{\"requestType\":\"SubscribeEntitySetRequest\",\"responseType\":\"SubscribeEntitySetResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeEntityStream\":{\"requestType\":\"SubscribeEntityStreamRequest\",\"responseType\":\"SubscribeEntityStreamResponse\",\"responseStream\":true,\"comment\":null},\"Write\":{\"requestType\":\"WriteRequest\",\"responseType\":\"MutationReceipt\",\"comment\":null}},\"comment\":null},\"MutationReceipt\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeEntitySetRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeEntitySetResponse\":{\"fields\":{\"added\":{\"rule\":\"repeated\",\"type\":\"feed.EchoEnvelope\",\"id\":1,\"comment\":null},\"deleted\":{\"rule\":\"repeated\",\"type\":\"feed.EchoEnvelope\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeEntityStreamRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"itemId\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeEntityStreamResponse\":{\"oneofs\":{\"kind\":{\"oneof\":[\"snapshot\",\"mutation\"],\"comment\":null}},\"fields\":{\"snapshot\":{\"type\":\"snapshot.ItemSnapshot\",\"id\":1,\"comment\":null},\"mutation\":{\"type\":\"Mutation\",\"id\":2,\"comment\":null}},\"nested\":{\"Mutation\":{\"fields\":{\"data\":{\"type\":\"feed.EchoEnvelope\",\"id\":1,\"comment\":null},\"meta\":{\"type\":\"Metadata\",\"id\":2,\"comment\":null}},\"nested\":{\"Metadata\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"memberKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":3,\"comment\":null},\"timeframe\":{\"type\":\"timeframe.TimeframeVector\",\"id\":4,\"comment\":null}},\"comment\":null}},\"comment\":null}},\"comment\":null},\"WriteRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"mutation\":{\"type\":\"feed.EchoEnvelope\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"snapshot\":{\"nested\":{\"DatabaseSnapshot\":{\"fields\":{\"items\":{\"rule\":\"repeated\",\"type\":\"ItemSnapshot\",\"id\":1,\"comment\":null},\"links\":{\"rule\":\"repeated\",\"type\":\"LinkSnapshot\",\"id\":2,\"comment\":null}},\"comment\":null},\"HaloStateSnapshot\":{\"fields\":{\"messages\":{\"rule\":\"repeated\",\"type\":\"dxos.halo.signed.Message\",\"id\":1,\"comment\":null}},\"comment\":null},\"ItemSnapshot\":{\"oneofs\":{\"_itemId\":{\"oneof\":[\"itemId\"]},\"_itemType\":{\"oneof\":[\"itemType\"]},\"_modelVersion\":{\"oneof\":[\"modelVersion\"]},\"_parentId\":{\"oneof\":[\"parentId\"]},\"_model\":{\"oneof\":[\"model\"]}},\"fields\":{\"itemId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"itemType\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"modelType\":{\"type\":\"string\",\"id\":3,\"comment\":null},\"modelVersion\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"parentId\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"model\":{\"type\":\"ModelSnapshot\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"LinkSnapshot\":{\"oneofs\":{\"_linkId\":{\"oneof\":[\"linkId\"]},\"_linkType\":{\"oneof\":[\"linkType\"]},\"_modelVersion\":{\"oneof\":[\"modelVersion\"]},\"_model\":{\"oneof\":[\"model\"]}},\"fields\":{\"linkId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"linkType\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"modelType\":{\"type\":\"string\",\"id\":3,\"comment\":null},\"modelVersion\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"source\":{\"type\":\"string\",\"id\":5,\"comment\":null},\"target\":{\"type\":\"string\",\"id\":6,\"comment\":null},\"model\":{\"type\":\"ModelSnapshot\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ModelMutation\":{\"fields\":{\"mutation\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"meta\":{\"type\":\"ModelMutationMeta\",\"id\":2,\"comment\":null}},\"comment\":null},\"ModelMutationMeta\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":2,\"comment\":null},\"memberKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null},\"ModelSnapshot\":{\"oneofs\":{\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"snapshot\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Encoded model snapshot (defined by the model's codec).\\nIf undefined the state machine will be initialized with it's default state.\"},\"mutations\":{\"rule\":\"repeated\",\"type\":\"ModelMutation\",\"id\":2,\"comment\":\"Mutations to be applied on top of the snapshot, or on top of initial state if the snapshot is undefined.\"}},\"comment\":null},\"SpaceSnapshot\":{\"oneofs\":{\"_timeframe\":{\"oneof\":[\"timeframe\"]},\"_timestamp\":{\"oneof\":[\"timestamp\"]}},\"fields\":{\"spaceKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"timeframe\":{\"type\":\"timeframe.TimeframeVector\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"timestamp\":{\"type\":\"int32\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"halo\":{\"type\":\"HaloStateSnapshot\",\"id\":11,\"comment\":null},\"database\":{\"type\":\"DatabaseSnapshot\",\"id\":12,\"comment\":null}},\"comment\":null}}},\"timeframe\":{\"nested\":{\"TimeframeVector\":{\"fields\":{\"frames\":{\"rule\":\"repeated\",\"type\":\"Frame\",\"id\":1,\"comment\":null}},\"nested\":{\"Frame\":{\"fields\":{\"feedKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":3,\"comment\":null}},\"comment\":null}},\"comment\":\"Vector timestamp used to order messages.\"}}}}},\"halo\":{\"nested\":{\"credentials\":{\"nested\":{\"AdmittedFeed\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"Owning identity.\"},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"designation\":{\"type\":\"Designation\",\"id\":4,\"comment\":\"Feeds with different designations are consumed by separate pipelines.\"}},\"nested\":{\"Designation\":{\"values\":{\"GENERAL\":0,\"CONTROL\":1,\"DATA\":2},\"comment\":null,\"comments\":{\"GENERAL\":\"Classic general purpose feeds for both HALO and ECHO messages together. To be deprecated.\",\"CONTROL\":\"Contain system-level messages messages, such as credentials and epochs.\",\"DATA\":\"Database mutations.\"}}},\"comment\":null},\"auth\":{\"nested\":{\"Auth\":{\"oneofs\":{\"_feedKey\":{\"oneof\":[\"feedKey\"]},\"_feedAdmit\":{\"oneof\":[\"feedAdmit\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"The publicKey of the target Space for these credentials.\"},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"The publicKey of the authenticating Device.\"},\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":\"The publicKey of the authenticating Identity.\"},\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"The publicKey of the authenticating Identity.\"},\"feedAdmit\":{\"type\":\"google.protobuf.Any\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"FeedAdmit message to the should be written to a control feed in case the `feed_key` is not admitted to the space.\"}},\"comment\":\"The payload for a SignedMessage sent during handshake for replication authentication.\"}}},\"Auth\":{\"fields\":{},\"comment\":\"Assertion for agents authenticating in the space swarm.\"},\"AuthorizedDevice\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null}},\"comment\":null},\"Chain\":{\"fields\":{\"credential\":{\"type\":\"Credential\",\"id\":1,\"comment\":\"Credential that authorizes the subject to issue new credentials (can be recursive).\"}},\"comment\":\"A chain of credentials that establishes the delegated authority to issue new credentials.\\nEach key in the chain has an assotiated credential that establishes the authrity of that specific key.\\n\\nExample:\\nAlice/Device-2 => Alice/Device-1 => Alice\\n\\nThis chain would include 2 credentials:\\n1. Giving Alice/Device-2 the authority to issue credentials on behalf of Alice, signed by Alice/Device-1.\\n2. Giving Alice/Device-1 the authority to issue credentials on behalf of Alice, signed by Alice.\"},\"Claim\":{\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"assertion\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null},\"Credential\":{\"oneofs\":{\"_id\":{\"oneof\":[\"id\"]},\"_expirationDate\":{\"oneof\":[\"expirationDate\"]},\"_expirationRef\":{\"oneof\":[\"expirationRef\"]}},\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"issuer\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"issuanceDate\":{\"type\":\"google.protobuf.Timestamp\",\"id\":3,\"comment\":null},\"expirationDate\":{\"type\":\"google.protobuf.Timestamp\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"expirationRef\":{\"type\":\"bytes\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"subject\":{\"type\":\"Claim\",\"id\":10,\"comment\":null},\"proof\":{\"type\":\"Proof\",\"id\":11,\"comment\":null}},\"comment\":null},\"greet\":{\"nested\":{\"BeginResponse\":{\"fields\":{\"info\":{\"keyType\":\"string\",\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"ClaimResponse\":{\"fields\":{\"id\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"rendezvousKey\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Command\":{\"oneofs\":{\"_secret\":{\"oneof\":[\"secret\"]}},\"fields\":{\"command\":{\"type\":\"Type\",\"id\":1,\"comment\":null},\"secret\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"params\":{\"rule\":\"repeated\",\"type\":\"google.protobuf.Any\",\"id\":10,\"comment\":null}},\"nested\":{\"Type\":{\"values\":{\"BEGIN\":0,\"HANDSHAKE\":1,\"NOTARIZE\":2,\"FINISH\":3,\"CLAIM\":10},\"comment\":null,\"comments\":{\"BEGIN\":null,\"HANDSHAKE\":null,\"NOTARIZE\":null,\"FINISH\":null,\"CLAIM\":null}}},\"comment\":\"A Greeter command.\"},\"HandshakeResponse\":{\"fields\":{\"nonce\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null}},\"comment\":null},\"KeyHint\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"type\":{\"type\":\"keys.KeyType\",\"id\":2,\"comment\":null}},\"comment\":null},\"NotarizeResponse\":{\"fields\":{\"copies\":{\"rule\":\"repeated\",\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null},\"genesisFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null}}},\"HaloSpace\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"haloKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"Space key.\"}},\"comment\":\"[ASSERTION]: Associtaes a space that will implement Agent's HALO with an Identity.\"},\"identity\":{\"nested\":{\"DeviceInfo\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"IdentityInfo\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"IdentityProfile\":{\"fields\":{\"profile\":{\"type\":\"ProfileDocument\",\"id\":1,\"comment\":null}},\"comment\":\"[ASSERTION]: Sets profile information.\"},\"IdentityRecord\":{\"oneofs\":{\"_profileSpace\":{\"oneof\":[\"profileSpace\"]},\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"haloSpace\":{\"type\":\"SpaceRecord\",\"id\":3,\"comment\":null},\"profileSpace\":{\"type\":\"SpaceRecord\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"TODO(burdon): Not yet implemented. Must be null.\"},\"profile\":{\"type\":\"ProfileDocument\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Cached profile.\"}},\"comment\":\"Information needed to bootstrap an Identity.\"},\"IdentityRecovery\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"recoveryKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"Public key derrived from the recovery seedphrase.\"}},\"comment\":\"[ASSERTION]: Grants recovery permissions to a recovery key.\"},\"KeyInfo\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":\"Subject must be a key being referenced.\"},\"Presentation\":{\"fields\":{\"credentials\":{\"rule\":\"repeated\",\"type\":\"Credential\",\"id\":1,\"comment\":null},\"proofs\":{\"rule\":\"repeated\",\"type\":\"Proof\",\"id\":2,\"comment\":null}},\"comment\":null},\"ProfileDocument\":{\"oneofs\":{\"_displayName\":{\"oneof\":[\"displayName\"]},\"_avatarCid\":{\"oneof\":[\"avatarCid\"]}},\"fields\":{\"displayName\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"avatarCid\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Proof\":{\"oneofs\":{\"_nonce\":{\"oneof\":[\"nonce\"]},\"_chain\":{\"oneof\":[\"chain\"]}},\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"creationDate\":{\"type\":\"google.protobuf.Timestamp\",\"id\":2,\"comment\":null},\"signer\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"nonce\":{\"type\":\"bytes\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"value\":{\"type\":\"bytes\",\"id\":5,\"comment\":\"Signature (excluded from signed data).\"},\"chain\":{\"type\":\"Chain\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Must be present if signer is not credential issuer.\\nEstablishes the authority of the signer. Proves that the signer can issue such credentials.\\nExcluded from signed data.\"}},\"comment\":null},\"SpaceGenesis\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SpaceMember\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"role\":{\"type\":\"Role\",\"id\":2,\"comment\":null},\"profile\":{\"type\":\"ProfileDocument\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Role\":{\"values\":{\"INVALID\":0,\"ADMIN\":1,\"MEMBER\":2,\"READER\":3},\"comment\":null,\"comments\":{\"INVALID\":null,\"ADMIN\":\"Manage members.\",\"MEMBER\":\"Read and write.\",\"READER\":\"Read-only.\"}}},\"comment\":null},\"SpaceRecord\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"This is the root feed of that structure.\"},\"writeControlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":\"Keyring must have the associated private key.\"},\"writeDataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":\"Keyring must have the associated private key.\"}},\"comment\":\"Information needed to bootstrap a Space.\"}}},\"invitations\":{\"nested\":{\"AdmissionParameters\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"profile\":{\"type\":\"ProfileDocument\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Guest's profile.\"}},\"comment\":null},\"AuthenticationRequest\":{\"fields\":{\"authenticationCode\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"HaloAdmissionCredentials\":{\"fields\":{\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"controlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"dataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null},\"HaloAdmissionOffer\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"haloSpaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null},\"HaloHostService\":{\"methods\":{\"RequestAdmission\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"HaloAdmissionOffer\",\"comment\":\"Process admission offer from host.\"},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Authenticate request.\"},\"PresentAdmissionCredentials\":{\"requestType\":\"HaloAdmissionCredentials\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Process admission request from guest.\"}},\"comment\":null},\"SpaceAdmissionCredentials\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"controlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"dataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":null}},\"comment\":null},\"SpaceAdmissionOffer\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null},\"SpaceHostService\":{\"methods\":{\"RequestAdmission\":{\"requestType\":\"AdmissionParameters\",\"responseType\":\"SpaceAdmissionOffer\",\"comment\":\"Process admission request.\"},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Authenticate request.\"},\"PresentAdmissionCredentials\":{\"requestType\":\"SpaceAdmissionCredentials\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Process admission credentials.\"}},\"comment\":null}}},\"keyring\":{\"nested\":{\"KeyRecord\":{\"fields\":{\"publicKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"privateKey\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"keys\":{\"nested\":{\"KeyChain\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"message\":{\"type\":\"dxos.halo.signed.SignedMessage\",\"id\":2,\"comment\":null},\"parents\":{\"rule\":\"repeated\",\"type\":\"KeyChain\",\"id\":3,\"comment\":null}},\"comment\":null},\"KeyRecord\":{\"oneofs\":{\"_secretKey\":{\"oneof\":[\"secretKey\"]},\"_hint\":{\"oneof\":[\"hint\"]},\"_own\":{\"oneof\":[\"own\"]},\"_trusted\":{\"oneof\":[\"trusted\"]},\"_added\":{\"oneof\":[\"added\"]},\"_created\":{\"oneof\":[\"created\"]}},\"fields\":{\"type\":{\"type\":\"KeyType\",\"id\":1,\"comment\":\"The `KeyType` type of the key. This is often unknown for keys from other sources.\"},\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"The public key as a Buffer (required).\"},\"secretKey\":{\"type\":\"dxos.keys.PrivateKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"The secret key as a Buffer (this will never be visible outside the Keyring).\"},\"hint\":{\"type\":\"bool\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Is this key from a Greeting \\\"hint\\\"?\"},\"own\":{\"type\":\"bool\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Determines if this is our key?\\nUsually true if `secret_key` is present; may be false for \\\"inception keys\\\" such as the Space key.\"},\"trusted\":{\"type\":\"bool\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Is this key to be trusted?\"},\"added\":{\"type\":\"string\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":\"An RFC-3339 date/time string for when the key was added to the Keyring.\"},\"created\":{\"type\":\"string\",\"id\":8,\"options\":{\"proto3_optional\":true},\"comment\":\"An RFC-3339 date/time string for when the key was created.\"}},\"comment\":null},\"KeyRecordList\":{\"fields\":{\"keys\":{\"rule\":\"repeated\",\"type\":\"KeyRecord\",\"id\":1,\"comment\":null}},\"comment\":null},\"KeyType\":{\"values\":{\"UNKNOWN\":0,\"IDENTITY\":1,\"DEVICE\":2,\"SPACE\":3,\"FEED\":4,\"DXNS_ADDRESS\":5},\"comment\":null,\"comments\":{\"UNKNOWN\":null,\"IDENTITY\":null,\"DEVICE\":null,\"SPACE\":null,\"FEED\":null,\"DXNS_ADDRESS\":null}}}},\"signed\":{\"nested\":{\"Message\":{\"fields\":{\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"SignedMessage\":{\"fields\":{\"signed\":{\"type\":\"Signed\",\"id\":1,\"comment\":\"The signed message contents.\"},\"signatures\":{\"rule\":\"repeated\",\"type\":\"Signature\",\"id\":2,\"comment\":\"An array of Signatures, one for each key that signed the message.\"}},\"nested\":{\"Signature\":{\"oneofs\":{\"_keyChain\":{\"oneof\":[\"keyChain\"]}},\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"The publicKey of the keypair that made this signature.\"},\"signature\":{\"type\":\"bytes\",\"id\":2,\"comment\":\"The bytes of the signature.\"},\"keyChain\":{\"type\":\"keys.KeyChain\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"The certification chain of SignedMessages for this key.\"}},\"comment\":null},\"Signed\":{\"fields\":{\"created\":{\"type\":\"string\",\"id\":1,\"comment\":\"RFC-3339 datetime string.\"},\"nonce\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":10,\"comment\":\"The payload to be signed.\"}},\"comment\":null}},\"comment\":\"A generic container message used whenever messages are signed (e.g. SpaceCredential)\"}}}}},\"iframe\":{\"nested\":{\"IframeService\":{\"methods\":{\"Heartbeat\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Worker-to-iframe RPCs.\"},\"StartRequest\":{\"fields\":{\"origin\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"WorkerService\":{\"methods\":{\"Start\":{\"requestType\":\"StartRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"Stop\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Iframe-to-worker RPCs.\"}}},\"keys\":{\"nested\":{\"PrivateKey\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"PublicKey\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"mesh\":{\"nested\":{\"bridge\":{\"nested\":{\"BridgeEvent\":{\"oneofs\":{\"type\":{\"oneof\":[\"connection\",\"signal\",\"data\"],\"comment\":null}},\"fields\":{\"connection\":{\"type\":\"ConnectionEvent\",\"id\":1,\"comment\":null},\"signal\":{\"type\":\"SignalEvent\",\"id\":2,\"comment\":null},\"data\":{\"type\":\"DataEvent\",\"id\":3,\"comment\":null}},\"nested\":{\"ConnectionEvent\":{\"oneofs\":{\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"state\":{\"type\":\"ConnectionState\",\"id\":1,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"DataEvent\":{\"fields\":{\"payload\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"SignalEvent\":{\"fields\":{\"payload\":{\"type\":\"dxos.mesh.swarm.Signal\",\"id\":1,\"comment\":null}},\"comment\":null}},\"comment\":null},\"BridgeService\":{\"methods\":{\"Open\":{\"requestType\":\"ConnectionRequest\",\"responseType\":\"BridgeEvent\",\"responseStream\":true,\"comment\":\"\"},\"SendSignal\":{\"requestType\":\"SignalRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"\"},\"SendData\":{\"requestType\":\"DataRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"\"},\"Close\":{\"requestType\":\"CloseRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"\"}},\"comment\":null},\"CloseRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"ConnectionRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"initiator\":{\"type\":\"bool\",\"id\":2,\"comment\":null}},\"comment\":null},\"ConnectionState\":{\"values\":{\"INVALID\":0,\"CONNECTING\":1,\"CONNECTED\":2,\"CLOSED\":3},\"comment\":null,\"comments\":{\"INVALID\":null,\"CONNECTING\":null,\"CONNECTED\":null,\"CLOSED\":null}},\"DataRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"SignalRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"signal\":{\"type\":\"dxos.mesh.swarm.Signal\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"broadcast\":{\"nested\":{\"Packet\":{\"oneofs\":{\"_from\":{\"oneof\":[\"from\"]}},\"fields\":{\"seq\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"origin\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"from\":{\"type\":\"bytes\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"data\":{\"type\":\"bytes\",\"id\":4,\"comment\":null}},\"comment\":null}}},\"messaging\":{\"nested\":{\"Acknowledgement\":{\"fields\":{\"messageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"MessageId of the Message that is being acknowledged.\"}},\"comment\":null},\"ReliablePayload\":{\"fields\":{\"messageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"Unique message identifier. Used for Acknolegment.\"},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":\"Payload for signal server netwrok.\"}},\"comment\":null}}},\"presence\":{\"nested\":{\"Alive\":{\"oneofs\":{\"_metadata\":{\"oneof\":[\"metadata\"]}},\"fields\":{\"peerId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"connections\":{\"rule\":\"repeated\",\"type\":\"Connection\",\"id\":2,\"comment\":null},\"metadata\":{\"type\":\"bytes\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Connection\":{\"oneofs\":{\"_initiator\":{\"oneof\":[\"initiator\"]}},\"fields\":{\"peerId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"initiator\":{\"type\":\"bool\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null}}},\"protocol\":{\"nested\":{\"Buffer\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"Error\":{\"fields\":{\"code\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"message\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"Message\":{\"fields\":{\"nmId\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"nmResponse\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"nmEphemeral\":{\"type\":\"bool\",\"id\":3,\"comment\":null},\"nmData\":{\"type\":\"google.protobuf.Any\",\"id\":4,\"comment\":null}},\"comment\":null}}},\"replicator\":{\"nested\":{\"Container\":{\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"data\":{\"rule\":\"repeated\",\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null},\"Feed\":{\"oneofs\":{\"_key\":{\"oneof\":[\"key\"]},\"_discoveryKey\":{\"oneof\":[\"discoveryKey\"]}},\"fields\":{\"key\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"discoveryKey\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}}},\"signal\":{\"options\":{\"go_package\":\"github.com/dxos/kube/go/signal/pb\"},\"nested\":{\"HostEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"peerAvailable\"],\"comment\":null}},\"fields\":{\"peerAvailable\":{\"type\":\"SwarmEvent.PeerAvailable\",\"id\":1,\"comment\":null}},\"comment\":\"Goes on a Pub/Sub host topic.\"},\"JoinRequest\":{\"fields\":{\"swarm\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"peer\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Message\":{\"fields\":{\"author\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"recipient\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":3,\"comment\":null}},\"comment\":null},\"PeerEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"message\"],\"comment\":null}},\"fields\":{\"message\":{\"type\":\"Message\",\"id\":1,\"comment\":null}},\"comment\":\"Goes on Pub/Sub peer topic.\"},\"ReceptionRequest\":{\"fields\":{\"peer\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"Signal\":{\"methods\":{\"Join\":{\"requestType\":\"JoinRequest\",\"responseType\":\"SwarmEvent\",\"responseStream\":true,\"comment\":null},\"ReceiveMessages\":{\"requestType\":\"ReceptionRequest\",\"responseType\":\"Message\",\"responseStream\":true,\"comment\":null},\"SendMessage\":{\"requestType\":\"Message\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"SwarmEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"peerAvailable\",\"peerLeft\"],\"comment\":null}},\"fields\":{\"peerAvailable\":{\"type\":\"PeerAvailable\",\"id\":1,\"comment\":\"The peer was announced as available on the swarm.\"},\"peerLeft\":{\"type\":\"PeerLeft\",\"id\":2,\"comment\":\"The peer left, or their announcement timed out.\"}},\"nested\":{\"PeerAvailable\":{\"oneofs\":{\"_until\":{\"oneof\":[\"until\"]},\"_announceBackToHost\":{\"oneof\":[\"announceBackToHost\"]}},\"fields\":{\"peer\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"since\":{\"type\":\"google.protobuf.Timestamp\",\"id\":2,\"comment\":null},\"until\":{\"type\":\"google.protobuf.Timestamp\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"announceBackToHost\":{\"type\":\"bytes\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Only relevant in Pub/Sub. Optional, the host topic to eagerly send PeerAvailable messages back to.\"}},\"comment\":null},\"PeerLeft\":{\"fields\":{\"peer\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null}},\"comment\":\"Goes on Pub/Sub swarm topic and as a Join stream in RPC.\"}}},\"swarm\":{\"nested\":{\"Answer\":{\"oneofs\":{\"_offerMessageId\":{\"oneof\":[\"offerMessageId\"]}},\"fields\":{\"accept\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"offerMessageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"MessageId of the Offer being answered.\"}},\"comment\":null},\"MessageData\":{\"oneofs\":{\"payload\":{\"oneof\":[\"offer\",\"answer\",\"signal\"],\"comment\":null}},\"fields\":{\"offer\":{\"type\":\"Offer\",\"id\":1,\"comment\":null},\"answer\":{\"type\":\"Answer\",\"id\":2,\"comment\":null},\"signal\":{\"type\":\"Signal\",\"id\":3,\"comment\":null}},\"comment\":null},\"Offer\":{\"fields\":{},\"comment\":null},\"Signal\":{\"fields\":{\"json\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"SwarmMessage\":{\"fields\":{\"topic\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":\"Swarm identefier.\"},\"sessionId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":\"Unique connection identifier.\"},\"data\":{\"type\":\"MessageData\",\"id\":5,\"comment\":\"Message payload.\"},\"messageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"comment\":\"Unique message identifier. Used for Acknolegment and matching Anwers to Offers.\"}},\"comment\":null}}}}},\"registry\":{\"nested\":{\"Record\":{\"oneofs\":{\"_created\":{\"oneof\":[\"created\"]},\"_displayName\":{\"oneof\":[\"displayName\"]},\"_description\":{\"oneof\":[\"description\"]},\"kind\":{\"oneof\":[\"type\",\"payload\"],\"comment\":null}},\"fields\":{\"created\":{\"type\":\"google.protobuf.Timestamp\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Record creation timetstamp.\"},\"displayName\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Human-readable name of record.\"},\"description\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Record description.\"},\"tags\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":4,\"comment\":\"Optional record tags.\"},\"type\":{\"type\":\"Type\",\"id\":100,\"comment\":\"Type record variant.\"},\"payload\":{\"type\":\"Extension\",\"id\":101,\"comment\":\"Data record variant.\"}},\"nested\":{\"Extension\":{\"fields\":{\"typeRecord\":{\"type\":\"bytes\",\"id\":1,\"comment\":\"CID of type record.\"},\"data\":{\"type\":\"bytes\",\"id\":2,\"comment\":\"Serialized payload data.\"}},\"comment\":\"Data with a reference to a type record that defines the encoding.\"},\"Type\":{\"oneofs\":{\"_protobufIpfsCid\":{\"oneof\":[\"protobufIpfsCid\"]}},\"fields\":{\"messageName\":{\"type\":\"string\",\"id\":1,\"comment\":\"FQ protobuf message name.\"},\"protobufDefs\":{\"type\":\"string\",\"id\":2,\"comment\":\"Set of protobuf messages encoded in JSON.\"},\"protobufIpfsCid\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"CID of protobuf source file.\"}},\"comment\":\"Types are system records that define protocol-buffer schema of other records.\"}},\"comment\":null}}},\"rpc\":{\"options\":{\"go_package\":\"github.com/dxos/kube/go/dxrpc/pb\"},\"nested\":{\"Error\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]},\"_message\":{\"oneof\":[\"message\"]},\"_stack\":{\"oneof\":[\"stack\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"message\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"stack\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"MessageTrace\":{\"fields\":{\"direction\":{\"type\":\"Direction\",\"id\":1,\"comment\":null},\"data\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"nested\":{\"Direction\":{\"values\":{\"INCOMING\":0,\"OUTGOING\":1},\"comment\":null,\"comments\":{\"INCOMING\":null,\"OUTGOING\":null}}},\"comment\":null},\"Request\":{\"fields\":{\"id\":{\"type\":\"int32\",\"id\":1,\"comment\":null},\"method\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":3,\"comment\":null},\"stream\":{\"type\":\"bool\",\"id\":4,\"comment\":null}},\"comment\":null},\"Response\":{\"oneofs\":{\"content\":{\"oneof\":[\"payload\",\"error\",\"close\",\"streamReady\"],\"comment\":null}},\"fields\":{\"id\":{\"type\":\"int32\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"Error\",\"id\":3,\"comment\":null},\"close\":{\"type\":\"bool\",\"id\":4,\"comment\":\"Sent when stream is closed without an error.\"},\"streamReady\":{\"type\":\"bool\",\"id\":5,\"comment\":\"Sent when the server has processed a request with a streaming response.\\nCan be skipped by the server.\\nIn this case the first payload should be treated as the server being ready.\"}},\"comment\":null},\"RpcMessage\":{\"oneofs\":{\"content\":{\"oneof\":[\"request\",\"response\",\"open\",\"openAck\",\"streamClose\"],\"comment\":null}},\"fields\":{\"request\":{\"type\":\"Request\",\"id\":1,\"comment\":null},\"response\":{\"type\":\"Response\",\"id\":2,\"comment\":null},\"open\":{\"type\":\"bool\",\"id\":3,\"comment\":\"Means that the node is trying to open the connection.\"},\"openAck\":{\"type\":\"bool\",\"id\":4,\"comment\":\"Means that the node has received the \\\"open\\\" message and is ready to perform requests.\"},\"streamClose\":{\"type\":\"StreamClose\",\"id\":5,\"comment\":null}},\"comment\":null},\"StreamClose\":{\"fields\":{\"id\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"service\":{\"nested\":{\"publisher\":{\"options\":{\"go_package\":\"github.com/dxos/kube/publisher/pb\"},\"nested\":{\"ListResponse\":{\"fields\":{\"modules\":{\"rule\":\"repeated\",\"type\":\"dxos.config.Module\",\"id\":1,\"comment\":null}},\"comment\":null},\"Publisher\":{\"methods\":{\"Publish\":{\"requestType\":\"PublishRequest\",\"responseType\":\"PublishResponse\",\"comment\":null},\"List\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"ListResponse\",\"comment\":null},\"Reset\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"ResetResponse\",\"comment\":null}},\"comment\":null},\"PublishRequest\":{\"fields\":{\"package\":{\"type\":\"dxos.config.Package\",\"id\":1,\"comment\":null},\"skipExisting\":{\"type\":\"bool\",\"id\":2,\"comment\":null}},\"comment\":null},\"PublishResponse\":{\"fields\":{\"package\":{\"type\":\"dxos.config.Package\",\"id\":1,\"comment\":null}},\"comment\":null},\"ResetResponse\":{\"fields\":{\"count\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"scheduler\":{\"options\":{\"go_package\":\"github.com/dxos/kube/scheduler/pb\"},\"nested\":{\"Bot\":{\"oneofs\":{\"_spec\":{\"oneof\":[\"spec\"]},\"_stats\":{\"oneof\":[\"stats\"]},\"_identityKey\":{\"oneof\":[\"identityKey\"]}},\"fields\":{\"id\":{\"type\":\"bytes\",\"id\":1,\"comment\":\"Scheduler\"},\"state\":{\"type\":\"State\",\"id\":2,\"comment\":\"Current state.\"},\"desiredState\":{\"type\":\"State\",\"id\":3,\"comment\":\"Desired state.\"},\"spec\":{\"type\":\"Spec\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Omitted when returned from the Query RPC.\"},\"stats\":{\"type\":\"Stats\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Omitted when returned from the Query RPC.\"},\"identityKey\":{\"type\":\"bytes\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Identity key of the bot profile.\"}},\"nested\":{\"Spec\":{\"fields\":{\"executable\":{\"type\":\"string\",\"id\":1,\"comment\":\"URL to the bot executable. KUBEs support file:// and ipfs:// urls.\"},\"echo\":{\"type\":\"Echo\",\"id\":2,\"comment\":null}},\"nested\":{\"Echo\":{\"fields\":{\"spaceKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"invitation\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null}},\"comment\":null},\"Stats\":{\"oneofs\":{\"_pid\":{\"oneof\":[\"pid\"]},\"_executableDownloaded\":{\"oneof\":[\"executableDownloaded\"]},\"_created\":{\"oneof\":[\"created\"]},\"_started\":{\"oneof\":[\"started\"]},\"_stopped\":{\"oneof\":[\"stopped\"]},\"_lastPingTime\":{\"oneof\":[\"lastPingTime\"]},\"_exitCode\":{\"oneof\":[\"exitCode\"]},\"_errorMessage\":{\"oneof\":[\"errorMessage\"]}},\"fields\":{\"pid\":{\"type\":\"int64\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"executableDownloaded\":{\"type\":\"google.protobuf.Timestamp\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"created\":{\"type\":\"google.protobuf.Timestamp\",\"id\":11,\"options\":{\"proto3_optional\":true},\"comment\":null},\"started\":{\"type\":\"google.protobuf.Timestamp\",\"id\":12,\"options\":{\"proto3_optional\":true},\"comment\":null},\"stopped\":{\"type\":\"google.protobuf.Timestamp\",\"id\":13,\"options\":{\"proto3_optional\":true},\"comment\":null},\"lastPingTime\":{\"type\":\"google.protobuf.Timestamp\",\"id\":14,\"options\":{\"proto3_optional\":true},\"comment\":null},\"exitCode\":{\"type\":\"int32\",\"id\":30,\"options\":{\"proto3_optional\":true},\"comment\":null},\"errorMessage\":{\"type\":\"string\",\"id\":31,\"options\":{\"proto3_optional\":true},\"comment\":null},\"cpuUsage\":{\"type\":\"CPUUsage\",\"id\":40,\"comment\":null},\"memoryUsage\":{\"type\":\"MemoryUsage\",\"id\":41,\"comment\":null},\"diskUsage\":{\"type\":\"DiskUsage\",\"id\":42,\"comment\":null},\"networkUsage\":{\"type\":\"NetworkUsage\",\"id\":43,\"comment\":null},\"echo\":{\"type\":\"Echo\",\"id\":44,\"comment\":null}},\"nested\":{\"CPUUsage\":{\"fields\":{\"cores\":{\"type\":\"double\",\"id\":1,\"comment\":null}},\"comment\":null},\"DiskUsage\":{\"fields\":{\"bytes\":{\"type\":\"int64\",\"id\":1,\"comment\":null}},\"comment\":null},\"Echo\":{\"fields\":{},\"comment\":\"Echo stats.\"},\"MemoryUsage\":{\"fields\":{\"bytes\":{\"type\":\"int64\",\"id\":1,\"comment\":null}},\"comment\":null},\"NetworkUsage\":{\"fields\":{},\"comment\":null}},\"comment\":null}},\"comment\":null},\"BotConfig\":{\"fields\":{\"spec\":{\"type\":\"Bot.Spec.Echo\",\"id\":1,\"comment\":null},\"clientConfig\":{\"type\":\"dxos.config.Config\",\"id\":2,\"comment\":null}},\"comment\":null},\"BotController\":{\"methods\":{\"Query\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"QueryResponse\",\"comment\":\"Enumerate all services.\"},\"Describe\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Bot\",\"comment\":\"Query information about a specific service\"},\"Create\":{\"requestType\":\"CreateRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Create a new service.\"},\"Remove\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Remove a service with its identity and persistent storage.\"},\"Start\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Start the bot.\"},\"Stop\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Start the bot.\"},\"Restart\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Start the bot.\"},\"Call\":{\"requestType\":\"Request\",\"responseType\":\"Reply\",\"responseStream\":true,\"comment\":\"Issue an RPC request to the bot instance.\"}},\"comment\":\"Exposed by bot controller to clients. Allows creation and management of bots.\"},\"BotHost\":{\"methods\":{\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"BotConfig\",\"comment\":null},\"SendReport\":{\"requestType\":\"Report\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Internal service exposed by bot controller to the bot.\"},\"BotService\":{\"methods\":{\"Call\":{\"requestType\":\"Request\",\"responseType\":\"Reply\",\"responseStream\":true,\"comment\":\"Issue an RPC request to the bot instance.\"},\"Healthcheck\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Called by the bot controller to verify that the bot is functional.\"}},\"comment\":\"Internal service exposed by bot to the bot controller.\"},\"CreateRequest\":{\"oneofs\":{\"_desiredState\":{\"oneof\":[\"desiredState\"]}},\"fields\":{\"spec\":{\"type\":\"Bot.Spec\",\"id\":1,\"comment\":null},\"desiredState\":{\"type\":\"State\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Progress\":{\"fields\":{\"state\":{\"type\":\"Bot\",\"id\":1,\"comment\":null}},\"comment\":null},\"QueryResponse\":{\"fields\":{\"services\":{\"rule\":\"repeated\",\"type\":\"Bot\",\"id\":1,\"comment\":null}},\"comment\":null},\"Reply\":{\"fields\":{\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"Report\":{\"oneofs\":{\"_identityKey\":{\"oneof\":[\"identityKey\"]}},\"fields\":{\"identityKey\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Identity key of the bot profile.\"}},\"comment\":null},\"Request\":{\"fields\":{\"serviceId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null},\"ServiceRequest\":{\"fields\":{\"serviceId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"State\":{\"values\":{\"INVALID\":0,\"STOPPED\":1,\"STARTING\":2,\"RUNNING\":3,\"FAILING\":4},\"comment\":null,\"comments\":{\"INVALID\":null,\"STOPPED\":null,\"STARTING\":null,\"RUNNING\":null,\"FAILING\":null}}}}}},\"type\":{\"nested\":{\"App\":{\"oneofs\":{\"_version\":{\"oneof\":[\"version\"]},\"_license\":{\"oneof\":[\"license\"]},\"_bundle\":{\"oneof\":[\"bundle\"]},\"kind\":{\"oneof\":[\"web\"],\"comment\":null},\"_extension\":{\"oneof\":[\"extension\"]}},\"fields\":{\"version\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Optional **semver 2.0** compliant record version.\\nShould conform to the semver regex (see https://semver.org/).\"},\"license\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":3,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"App bundle content Id in the CID v0 format (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats).\"},\"web\":{\"type\":\"Web\",\"id\":100,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":200,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Web\":{\"oneofs\":{\"_indexFile\":{\"oneof\":[\"indexFile\"]},\"_entryPoint\":{\"oneof\":[\"entryPoint\"]}},\"fields\":{\"indexFile\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Relative path in resource to entrypoint, defaults to index.html.\"},\"entryPoint\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Relative path in resource to entrypoint, defaults to main.js.\"}},\"comment\":null}},\"comment\":null},\"AppServer\":{\"fields\":{\"url\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"Bot\":{\"fields\":{\"version\":{\"type\":\"string\",\"id\":1,\"comment\":\"Optional **semver 2.0** compliant record version.\\nShould conform to the semver regex (see https://semver.org/).\"},\"license\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":3,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":4,\"comment\":\"Bot bundle content Id in the CID v0 format (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats).\"},\"localPath\":{\"type\":\"string\",\"id\":5,\"comment\":\"This would be the path to the bot executable in bot-factory's file-system.\"},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"BotFactory\":{\"fields\":{\"topic\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"File\":{\"fields\":{\"contentType\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"fileName\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":3,\"comment\":\"File content Id in the CID v0 format (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats).\"},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"IPFS\":{\"fields\":{\"protocol\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"addresses\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":2,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"KUBE\":{\"fields\":{\"url\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"Repo\":{\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"url\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"version\":{\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null},\"Service\":{\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"kube\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"Signal\":{\"fields\":{\"bootstrap\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"url\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"StateMachine\":{\"fields\":{\"mutationProtobufDefs\":{\"type\":\"string\",\"id\":1,\"comment\":\"Set of protobuf messages encoded in JSON.\"},\"snapshotProtobufDefs\":{\"type\":\"string\",\"id\":2,\"comment\":\"Set of protobuf messages encoded in JSON.\"},\"codeIpfsCid\":{\"type\":\"bytes\",\"id\":3,\"comment\":null}},\"comment\":null}}}}},\"example\":{\"nested\":{\"testing\":{\"nested\":{\"data\":{\"nested\":{\"TestItemMutation\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"value\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"TestItemSnapshot\":{\"fields\":{\"keys\":{\"rule\":\"repeated\",\"type\":\"TestItemMutation\",\"id\":1,\"comment\":null}},\"comment\":null},\"TestListMutation\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"rpc\":{\"nested\":{\"MessageWithAny\":{\"fields\":{\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"PingReponse\":{\"fields\":{\"nonce\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null},\"PingRequest\":{\"fields\":{\"nonce\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null},\"PingService\":{\"methods\":{\"Ping\":{\"requestType\":\"PingRequest\",\"responseType\":\"PingReponse\",\"comment\":null}},\"comment\":null},\"TestAnyService\":{\"methods\":{\"TestCall\":{\"requestType\":\"MessageWithAny\",\"responseType\":\"MessageWithAny\",\"comment\":null}},\"comment\":null},\"TestRpcRequest\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"TestRpcResponse\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"TestService\":{\"methods\":{\"TestCall\":{\"requestType\":\"TestRpcRequest\",\"responseType\":\"TestRpcResponse\",\"comment\":null},\"VoidCall\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"TestStreamService\":{\"methods\":{\"TestCall\":{\"requestType\":\"TestRpcRequest\",\"responseType\":\"TestRpcResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null}}}}}}},\"google\":{\"nested\":{\"protobuf\":{\"nested\":{\"Any\":{\"fields\":{\"type_url\":{\"type\":\"string\",\"id\":1},\"value\":{\"type\":\"bytes\",\"id\":2}},\"comment\":null},\"BoolValue\":{\"fields\":{\"value\":{\"type\":\"bool\",\"id\":1}},\"comment\":null},\"BytesValue\":{\"fields\":{\"value\":{\"type\":\"bytes\",\"id\":1}},\"comment\":null},\"DoubleValue\":{\"fields\":{\"value\":{\"type\":\"double\",\"id\":1}},\"comment\":null},\"Empty\":{\"fields\":{},\"comment\":null},\"FloatValue\":{\"fields\":{\"value\":{\"type\":\"float\",\"id\":1}},\"comment\":null},\"Int32Value\":{\"fields\":{\"value\":{\"type\":\"int32\",\"id\":1}},\"comment\":null},\"Int64Value\":{\"fields\":{\"value\":{\"type\":\"int64\",\"id\":1}},\"comment\":null},\"StringValue\":{\"fields\":{\"value\":{\"type\":\"string\",\"id\":1}},\"comment\":null},\"Timestamp\":{\"fields\":{\"seconds\":{\"type\":\"int64\",\"id\":1},\"nanos\":{\"type\":\"int32\",\"id\":2}},\"comment\":null},\"UInt32Value\":{\"fields\":{\"value\":{\"type\":\"uint32\",\"id\":1}},\"comment\":null},\"UInt64Value\":{\"fields\":{\"value\":{\"type\":\"uint64\",\"id\":1}},\"comment\":null}}}}}}}");
435
+ export const schemaJson = JSON.parse("{\"nested\":{\"dxos\":{\"nested\":{\"bot\":{\"nested\":{\"Bot\":{\"oneofs\":{\"_status\":{\"oneof\":[\"status\"]},\"_desiredState\":{\"oneof\":[\"desiredState\"]},\"_attemptsToAchieveDesiredState\":{\"oneof\":[\"attemptsToAchieveDesiredState\"]},\"_packageSpecifier\":{\"oneof\":[\"packageSpecifier\"]},\"_lastStart\":{\"oneof\":[\"lastStart\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]},\"_runtime\":{\"oneof\":[\"runtime\"]},\"_report\":{\"oneof\":[\"report\"]}},\"fields\":{\"id\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"status\":{\"type\":\"Status\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"desiredState\":{\"type\":\"Status\",\"id\":55,\"options\":{\"proto3_optional\":true},\"comment\":\"The state that the bot aims to be in. Can be only either RUNNING or STOPPED.\"},\"attemptsToAchieveDesiredState\":{\"type\":\"int32\",\"id\":56,\"options\":{\"proto3_optional\":true},\"comment\":null},\"packageSpecifier\":{\"type\":\"BotPackageSpecifier\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"lastStart\":{\"type\":\"google.protobuf.Timestamp\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"runtime\":{\"type\":\"Runtime\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"report\":{\"type\":\"BotReport\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Runtime\":{\"oneofs\":{\"_exitCode\":{\"oneof\":[\"exitCode\"]},\"_exitSignal\":{\"oneof\":[\"exitSignal\"]},\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"exitCode\":{\"type\":\"int32\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"exitSignal\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Status\":{\"values\":{\"STOPPED\":0,\"STARTING\":1,\"RUNNING\":2,\"STOPPING\":3,\"SPAWNING\":4},\"comment\":null,\"comments\":{\"STOPPED\":null,\"STARTING\":\"Starting bot process.\",\"RUNNING\":\"Bot is running.\",\"STOPPING\":\"Bot is stopping.\",\"SPAWNING\":\"Bot is being spawned. Bot factory is downloading the bot bundle and initializing resources.\"}}},\"comment\":null},\"BotFactoryService\":{\"methods\":{\"GetBots\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"GetBotsResponse\",\"comment\":null},\"SpawnBot\":{\"requestType\":\"SpawnBotRequest\",\"responseType\":\"Bot\",\"comment\":null},\"Start\":{\"requestType\":\"Bot\",\"responseType\":\"Bot\",\"comment\":null},\"Stop\":{\"requestType\":\"Bot\",\"responseType\":\"Bot\",\"comment\":null},\"Remove\":{\"requestType\":\"Bot\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetLogs\":{\"requestType\":\"GetLogsRequest\",\"responseType\":\"GetLogsResponse\",\"responseStream\":true,\"comment\":null},\"SendCommand\":{\"requestType\":\"SendCommandRequest\",\"responseType\":\"SendCommandResponse\",\"comment\":null},\"RemoveAll\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Service that is used by clients to communicate with bot factory.\"},\"BotPackageSpecifier\":{\"oneofs\":{\"kind\":{\"oneof\":[\"name\",\"ipfsCid\",\"localPath\"],\"comment\":null}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"comment\":\"DXN of the bot in the DXNS registry.\"},\"ipfsCid\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"localPath\":{\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null},\"BotReport\":{\"oneofs\":{\"_spaceDetails\":{\"oneof\":[\"spaceDetails\"]}},\"fields\":{\"spaceDetails\":{\"type\":\"dxos.client.SpaceDetails\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Details of the space the bot was spawned for.\"}},\"comment\":null},\"BotService\":{\"methods\":{\"Initialize\":{\"requestType\":\"InitializeRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Initialize Client, create profile, and join a space.\"},\"Start\":{\"requestType\":\"StartRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Start an initialized bot.\"},\"Command\":{\"requestType\":\"SendCommandRequest\",\"responseType\":\"SendCommandResponse\",\"comment\":\"Custom commands sent to the bot factory.\"},\"Stop\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Stop the bot.\"},\"StartReporting\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"BotReport\",\"responseStream\":true,\"comment\":\"Send periodic reports of the bot's state.\"}},\"comment\":\"Service that is used by bots communicating with bot factory.\"},\"GetBotsResponse\":{\"fields\":{\"bots\":{\"rule\":\"repeated\",\"type\":\"Bot\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetLogsRequest\":{\"fields\":{\"botId\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetLogsResponse\":{\"fields\":{\"chunk\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"InitializeRequest\":{\"oneofs\":{\"_config\":{\"oneof\":[\"config\"]},\"_invitation\":{\"oneof\":[\"invitation\"]},\"_id\":{\"oneof\":[\"id\"]}},\"fields\":{\"config\":{\"type\":\"dxos.config.Config\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Bot runtime configuration.\"},\"invitation\":{\"type\":\"dxos.client.services.Invitation\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Invitation for the bot to join the target space.\"},\"id\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"ID of the bot.\"}},\"comment\":null},\"SendCommandRequest\":{\"oneofs\":{\"_botId\":{\"oneof\":[\"botId\"]},\"_command\":{\"oneof\":[\"command\"]}},\"fields\":{\"botId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"command\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SendCommandResponse\":{\"oneofs\":{\"_response\":{\"oneof\":[\"response\"]}},\"fields\":{\"response\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SpawnBotRequest\":{\"oneofs\":{\"_package\":{\"oneof\":[\"package\"]},\"_invitation\":{\"oneof\":[\"invitation\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]}},\"fields\":{\"package\":{\"type\":\"BotPackageSpecifier\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"invitation\":{\"type\":\"dxos.client.services.Invitation\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Invitation for the bot to join the target space.\"},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Key of the space bot is invited to.\"}},\"comment\":null},\"StartRequest\":{\"fields\":{\"config\":{\"type\":\"dxos.config.Config\",\"id\":1,\"comment\":\"Bot runtime configuration.\"}},\"comment\":null}}},\"client\":{\"nested\":{\"AddKeyRecordRequest\":{\"fields\":{\"keyRecord\":{\"type\":\"dxos.halo.keys.KeyRecord\",\"id\":1,\"comment\":null}},\"comment\":null},\"AuthenticateInvitationRequest\":{\"fields\":{\"processId\":{\"type\":\"string\",\"id\":1,\"comment\":\"Id from corresponding RedeemedInvitation.\"},\"secret\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Contact\":{\"oneofs\":{\"_displayName\":{\"oneof\":[\"displayName\"]}},\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Contacts\":{\"fields\":{\"contacts\":{\"rule\":\"repeated\",\"type\":\"Contact\",\"id\":1,\"comment\":null}},\"comment\":null},\"CreateInvitationRequest\":{\"oneofs\":{\"_inviteeKey\":{\"oneof\":[\"inviteeKey\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"inviteeKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"When specified the invitation will be of OFFLINE type, not requiring secret exchange.\"}},\"comment\":null},\"CreateProfileRequest\":{\"oneofs\":{\"_publicKey\":{\"oneof\":[\"publicKey\"]},\"_secretKey\":{\"oneof\":[\"secretKey\"]},\"_displayName\":{\"oneof\":[\"displayName\"]}},\"fields\":{\"publicKey\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"secretKey\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"CreateSnapshotRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetPreferenceRequest\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetPreferenceResponse\":{\"fields\":{\"value\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetSpaceDetailsRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"HaloService\":{\"methods\":{\"Sign\":{\"requestType\":\"SignRequest\",\"responseType\":\"SignResponse\",\"comment\":null},\"AddKeyRecord\":{\"requestType\":\"AddKeyRecordRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"SubscribeContacts\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Contacts\",\"responseStream\":true,\"comment\":null},\"SetGlobalPreference\":{\"requestType\":\"SetPreferenceRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetGlobalPreference\":{\"requestType\":\"GetPreferenceRequest\",\"responseType\":\"GetPreferenceResponse\",\"comment\":null},\"SetDevicePreference\":{\"requestType\":\"SetPreferenceRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetDevicePreference\":{\"requestType\":\"GetPreferenceRequest\",\"responseType\":\"GetPreferenceResponse\",\"comment\":null}},\"comment\":null},\"InvitationRequest\":{\"oneofs\":{\"_descriptor\":{\"oneof\":[\"descriptor\"]},\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"descriptor\":{\"type\":\"dxos.client.services.Invitation\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"state\":{\"type\":\"InvitationState\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Only if state == ERROR.\"}},\"comment\":\"Invitation process created by sender.\"},\"InvitationState\":{\"values\":{\"WAITING_FOR_CONNECTION\":0,\"CONNECTED\":1,\"SUCCESS\":2,\"ERROR\":3},\"comment\":null,\"comments\":{\"WAITING_FOR_CONNECTION\":null,\"CONNECTED\":null,\"SUCCESS\":null,\"ERROR\":null}},\"Profile\":{\"oneofs\":{\"_displayName\":{\"oneof\":[\"displayName\"]},\"_deviceKey\":{\"oneof\":[\"deviceKey\"]}},\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ProfileService\":{\"methods\":{\"CreateProfile\":{\"requestType\":\"CreateProfileRequest\",\"responseType\":\"Profile\",\"comment\":null},\"RecoverProfile\":{\"requestType\":\"RecoverProfileRequest\",\"responseType\":\"Profile\",\"comment\":null},\"SubscribeProfile\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeProfileResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"RecoverProfileRequest\":{\"fields\":{\"seedPhrase\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"RedeemedInvitation\":{\"oneofs\":{\"_error\":{\"oneof\":[\"error\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]}},\"fields\":{\"id\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"state\":{\"type\":\"InvitationState\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Only if state == ERROR.\"},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Only on space invitations that are finished.\"}},\"comment\":\"Invitation that is being redeemed.\"},\"services\":{\"nested\":{\"AuthenticationRequest\":{\"fields\":{\"invitationId\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"authenticationCode\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"CancelInvitationRequest\":{\"fields\":{\"invitationId\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"Contact\":{\"fields\":{\"profile\":{\"type\":\"halo.credentials.ProfileDocument\",\"id\":1,\"comment\":null}},\"comment\":null},\"ContactsService\":{\"methods\":{\"UpdateContact\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Contact\",\"comment\":null},\"QueryContacts\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Contact\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"Device\":{\"fields\":{\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"DevicesService\":{\"methods\":{\"UpdateDevice\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Device\",\"comment\":null},\"QueryDevices\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"QueryDevicesResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"HaloInvitationsService\":{\"methods\":{\"CreateInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"AcceptInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"CancelInvitation\":{\"requestType\":\"CancelInvitationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"HaloService\":{\"methods\":{\"RecoverProfile\":{\"requestType\":\"RecoverProfileRequest\",\"responseType\":\"Identity\",\"comment\":null},\"UpdateProfile\":{\"requestType\":\"Identity\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"QueryProfile\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Identity\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"Identity\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"profile\":{\"type\":\"halo.credentials.ProfileDocument\",\"id\":2,\"comment\":null}},\"comment\":null},\"Invitation\":{\"oneofs\":{\"_invitationId\":{\"oneof\":[\"invitationId\"]},\"_type\":{\"oneof\":[\"type\"]},\"_state\":{\"oneof\":[\"state\"]},\"_error\":{\"oneof\":[\"error\"]},\"_swarmKey\":{\"oneof\":[\"swarmKey\"]},\"_identityKey\":{\"oneof\":[\"identityKey\"]},\"_spaceKey\":{\"oneof\":[\"spaceKey\"]},\"_authenticationCode\":{\"oneof\":[\"authenticationCode\"]},\"_timeout\":{\"oneof\":[\"timeout\"]}},\"fields\":{\"invitationId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Local identifier.\"},\"type\":{\"type\":\"Type\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Determined when created.\"},\"state\":{\"type\":\"State\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Local state.\"},\"error\":{\"type\":\"Error\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Error.\"},\"swarmKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Swarm rendezvous (random).\"},\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Guest's identity (only present if OFFLINE).\"},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":\"Space to join.\"},\"authenticationCode\":{\"type\":\"string\",\"id\":8,\"options\":{\"proto3_optional\":true},\"comment\":\"Authentication code created by host.\"},\"timeout\":{\"type\":\"int32\",\"id\":9,\"options\":{\"proto3_optional\":true},\"comment\":\"Timeout (ms).\"}},\"nested\":{\"Error\":{\"values\":{\"OK\":0,\"TIMEOUT\":1,\"INVALID_OTP\":2,\"INVALID_OPT_ATTEMPTS\":3,\"INVALID_CREDENTIALS\":4},\"comment\":null,\"comments\":{\"OK\":null,\"TIMEOUT\":null,\"INVALID_OTP\":null,\"INVALID_OPT_ATTEMPTS\":null,\"INVALID_CREDENTIALS\":null}},\"State\":{\"values\":{\"INIT\":0,\"CONNECTING\":1,\"CONNECTED\":2,\"AUTHENTICATING\":3,\"SUCCESS\":4,\"CANCELLED\":5,\"TIMEOUT\":6,\"ERROR\":7},\"comment\":null,\"comments\":{\"INIT\":null,\"CONNECTING\":null,\"CONNECTED\":null,\"AUTHENTICATING\":null,\"SUCCESS\":null,\"CANCELLED\":null,\"TIMEOUT\":null,\"ERROR\":null}},\"Type\":{\"values\":{\"INTERACTIVE\":0,\"INTERACTIVE_TESTING\":1,\"OFFLINE\":2},\"comment\":null,\"comments\":{\"INTERACTIVE\":\"Requires both to be online with OTP to complete key exchange.\",\"INTERACTIVE_TESTING\":\"Interactive without OTP.\",\"OFFLINE\":\"Guest's identity key is known; invitation can be accepted by any valid peer.\"}}},\"comment\":\"Represents the invitation state passed between client and service.\"},\"KeyRecord\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"QueryDevicesResponse\":{\"fields\":{\"devices\":{\"rule\":\"repeated\",\"type\":\"Device\",\"id\":1,\"comment\":null}},\"comment\":null},\"QueryMembersRequest\":{\"fields\":{},\"comment\":null},\"QueryMembersResponse\":{\"fields\":{\"members\":{\"type\":\"dxos.halo.credentials.IdentityProfile\",\"id\":1,\"comment\":null}},\"comment\":null},\"RecoverProfileRequest\":{\"fields\":{\"recoveryKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"SigningService\":{\"methods\":{\"UpdateKeyRecord\":{\"requestType\":\"KeyRecord\",\"responseType\":\"KeyRecord\",\"comment\":null},\"Sign\":{\"requestType\":\"SignRequest\",\"responseType\":\"SignResponse\",\"comment\":null}},\"comment\":null},\"SignRequest\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"SignResponse\":{\"fields\":{\"signed\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Space\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SpaceInvitationsService\":{\"methods\":{\"CreateInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"AcceptInvitation\":{\"requestType\":\"Invitation\",\"responseType\":\"Invitation\",\"responseStream\":true,\"comment\":null},\"CancelInvitation\":{\"requestType\":\"CancelInvitationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"SpacesService\":{\"methods\":{\"CreateSpace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Space\",\"comment\":null},\"QuerySpaces\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Space\",\"responseStream\":true,\"comment\":null},\"QueryMembers\":{\"requestType\":\"QueryMembersRequest\",\"responseType\":\"QueryMembersResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"SystemService\":{\"methods\":{\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"dxos.config.Config\",\"comment\":null},\"Reset\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null}}},\"SetPreferenceRequest\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"value\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"SetSpaceStateRequest\":{\"oneofs\":{\"_open\":{\"oneof\":[\"open\"]},\"_activeGlobal\":{\"oneof\":[\"activeGlobal\"]},\"_activeDevice\":{\"oneof\":[\"activeDevice\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"open\":{\"type\":\"bool\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"activeGlobal\":{\"type\":\"bool\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"activeDevice\":{\"type\":\"bool\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SignRequest\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"The public key of the key that is supposed to be used for signing.\"},\"payload\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"SignResponse\":{\"fields\":{\"signed\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Space\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"isOpen\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"isActive\":{\"type\":\"bool\",\"id\":3,\"comment\":null},\"members\":{\"rule\":\"repeated\",\"type\":\"SpaceMember\",\"id\":4,\"comment\":null}},\"comment\":null},\"SpaceActivationOptions\":{\"fields\":{\"global\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"device\":{\"type\":\"bool\",\"id\":2,\"comment\":null}},\"comment\":null},\"SpaceDetails\":{\"fields\":{\"processedTimeframe\":{\"type\":\"dxos.echo.timeframe.TimeframeVector\",\"id\":1,\"comment\":\"The timeframe of mutations processed by the client.\"}},\"comment\":null},\"SpaceMember\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"profile\":{\"type\":\"Profile\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SpaceService\":{\"methods\":{\"SubscribeToSpace\":{\"requestType\":\"SubscribeSpaceRequest\",\"responseType\":\"SubscribeSpaceResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeSpaces\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeSpacesResponse\",\"responseStream\":true,\"comment\":null},\"GetSpaceDetails\":{\"requestType\":\"GetSpaceDetailsRequest\",\"responseType\":\"SpaceDetails\",\"comment\":null},\"CreateSpace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Space\",\"comment\":null},\"CloneSpace\":{\"requestType\":\"dxos.echo.snapshot.SpaceSnapshot\",\"responseType\":\"Space\",\"comment\":null},\"SetSpaceState\":{\"requestType\":\"SetSpaceStateRequest\",\"responseType\":\"Space\",\"comment\":\"Open and close or activate and deactivate a space.\"},\"SubscribeMembers\":{\"requestType\":\"SubscribeMembersRequest\",\"responseType\":\"SubscribeMembersResponse\",\"responseStream\":true,\"comment\":null},\"CreateSnapshot\":{\"requestType\":\"CreateSnapshotRequest\",\"responseType\":\"echo.snapshot.SpaceSnapshot\",\"comment\":null}},\"comment\":null},\"Status\":{\"fields\":{\"message\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeMembersRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeMembersResponse\":{\"fields\":{\"members\":{\"rule\":\"repeated\",\"type\":\"SpaceMember\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeProfileResponse\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"profile\":{\"type\":\"Profile\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeSpaceRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeSpaceResponse\":{\"oneofs\":{\"_space\":{\"oneof\":[\"space\"]}},\"fields\":{\"space\":{\"type\":\"Space\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeSpacesResponse\":{\"fields\":{\"spaces\":{\"rule\":\"repeated\",\"type\":\"Space\",\"id\":1,\"comment\":null}},\"comment\":null},\"SystemService\":{\"methods\":{\"InitSession\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Called at the start of the session. Service should block until it is fully initialized.\"},\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"dxos.config.Config\",\"comment\":null},\"GetStatus\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Status\",\"comment\":null},\"Reset\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null}}},\"config\":{\"nested\":{\"Config\":{\"oneofs\":{\"_version\":{\"oneof\":[\"version\"]},\"_package\":{\"oneof\":[\"package\"]},\"_runtime\":{\"oneof\":[\"runtime\"]}},\"fields\":{\"version\":{\"type\":\"int32\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"package\":{\"type\":\"Package\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"runtime\":{\"type\":\"Runtime\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Module\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]},\"_type\":{\"oneof\":[\"type\"]},\"_displayName\":{\"oneof\":[\"displayName\"]},\"_description\":{\"oneof\":[\"description\"]},\"_bundle\":{\"oneof\":[\"bundle\"]},\"_build\":{\"oneof\":[\"build\"]},\"_record\":{\"oneof\":[\"record\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"type\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"description\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"tags\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":5,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"build\":{\"type\":\"Build\",\"id\":100,\"options\":{\"proto3_optional\":true},\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":101,\"comment\":null},\"record\":{\"type\":\"google.protobuf.Any\",\"id\":200,\"options\":{\"proto3_optional\":true},\"comment\":\"The data will be validated based on the type when being published.\"}},\"nested\":{\"Build\":{\"oneofs\":{\"_command\":{\"oneof\":[\"command\"]},\"_outdir\":{\"oneof\":[\"outdir\"]},\"_version\":{\"oneof\":[\"version\"]},\"_tag\":{\"oneof\":[\"tag\"]}},\"fields\":{\"command\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"outdir\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"version\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"tag\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Package\":{\"oneofs\":{\"_license\":{\"oneof\":[\"license\"]}},\"fields\":{\"license\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":2,\"comment\":null},\"modules\":{\"rule\":\"repeated\",\"type\":\"Module\",\"id\":3,\"comment\":null}},\"comment\":null},\"Repo\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]},\"_url\":{\"oneof\":[\"url\"]},\"_version\":{\"oneof\":[\"version\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"url\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"version\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Runtime\":{\"oneofs\":{\"_client\":{\"oneof\":[\"client\"]},\"_app\":{\"oneof\":[\"app\"]},\"_cli\":{\"oneof\":[\"cli\"]},\"_props\":{\"oneof\":[\"props\"]},\"_services\":{\"oneof\":[\"services\"]},\"_system\":{\"oneof\":[\"system\"]},\"_kube\":{\"oneof\":[\"kube\"]}},\"fields\":{\"client\":{\"type\":\"Client\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"app\":{\"type\":\"App\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"cli\":{\"type\":\"CLI\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"props\":{\"type\":\"Props\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"services\":{\"type\":\"Services\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"system\":{\"type\":\"System\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"kube\":{\"type\":\"Kube\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"App\":{\"oneofs\":{\"_org\":{\"oneof\":[\"org\"]},\"_theme\":{\"oneof\":[\"theme\"]},\"_website\":{\"oneof\":[\"website\"]},\"_publicUrl\":{\"oneof\":[\"publicUrl\"]}},\"fields\":{\"org\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"theme\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"website\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"publicUrl\":{\"type\":\"string\",\"id\":4,\"options\":{\"(env)\":\"PUBLIC_URL\",\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"CLI\":{\"oneofs\":{\"_nodePath\":{\"oneof\":[\"nodePath\"]},\"_app\":{\"oneof\":[\"app\"]},\"_console\":{\"oneof\":[\"console\"]},\"_mdns\":{\"oneof\":[\"mdns\"]},\"_signal\":{\"oneof\":[\"signal\"]},\"_npmClient\":{\"oneof\":[\"npmClient\"]},\"_channel\":{\"oneof\":[\"channel\"]}},\"fields\":{\"nodePath\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"app\":{\"type\":\"AppServe\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"console\":{\"type\":\"Package\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"mdns\":{\"type\":\"Package\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"signal\":{\"type\":\"Package\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"npmClient\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"channel\":{\"type\":\"string\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"AppServe\":{\"oneofs\":{\"_serve\":{\"oneof\":[\"serve\"]}},\"fields\":{\"serve\":{\"type\":\"Serve\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Serve\":{\"oneofs\":{\"_config\":{\"oneof\":[\"config\"]},\"_loginApp\":{\"oneof\":[\"loginApp\"]},\"_keyPhrase\":{\"oneof\":[\"keyPhrase\"]}},\"fields\":{\"config\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"loginApp\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"keyPhrase\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Package\":{\"oneofs\":{\"_package\":{\"oneof\":[\"package\"]},\"_channel\":{\"oneof\":[\"channel\"]},\"_bin\":{\"oneof\":[\"bin\"]},\"_config\":{\"oneof\":[\"config\"]}},\"fields\":{\"package\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"channel\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"bin\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"config\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Client\":{\"oneofs\":{\"_debug\":{\"oneof\":[\"debug\"]},\"_storage\":{\"oneof\":[\"storage\"]},\"_enableSnapshots\":{\"oneof\":[\"enableSnapshots\"]},\"_snapshotInterval\":{\"oneof\":[\"snapshotInterval\"]},\"_invitationExpiration\":{\"oneof\":[\"invitationExpiration\"]},\"_remoteSource\":{\"oneof\":[\"remoteSource\"]}},\"fields\":{\"debug\":{\"type\":\"string\",\"id\":1,\"options\":{\"(env)\":\"DEBUG\",\"proto3_optional\":true},\"comment\":null},\"storage\":{\"type\":\"Storage\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"enableSnapshots\":{\"type\":\"bool\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"snapshotInterval\":{\"type\":\"int32\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Milliseconds\"},\"invitationExpiration\":{\"type\":\"int32\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Milliseconds\"},\"remoteSource\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Storage\":{\"oneofs\":{\"_persistent\":{\"oneof\":[\"persistent\"]},\"_keyStorage\":{\"oneof\":[\"keyStorage\"]},\"_storageType\":{\"oneof\":[\"storageType\"]},\"_path\":{\"oneof\":[\"path\"]}},\"fields\":{\"persistent\":{\"type\":\"bool\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"keyStorage\":{\"type\":\"StorageDriver\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"storageType\":{\"type\":\"StorageDriver\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"path\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"StorageDriver\":{\"values\":{\"RAM\":0,\"IDB\":1,\"CHROME\":2,\"FIREFOX\":3,\"NODE\":4,\"LEVELJS\":11,\"JSONDOWN\":12},\"comment\":null,\"comments\":{\"RAM\":null,\"IDB\":null,\"CHROME\":null,\"FIREFOX\":null,\"NODE\":null,\"LEVELJS\":null,\"JSONDOWN\":null}}},\"comment\":null}},\"comment\":null},\"Kube\":{\"oneofs\":{\"_host\":{\"oneof\":[\"host\"]},\"_port\":{\"oneof\":[\"port\"]},\"_autoupdate\":{\"oneof\":[\"autoupdate\"]},\"_https\":{\"oneof\":[\"https\"]},\"_p2p\":{\"oneof\":[\"p2p\"]},\"_confhost\":{\"oneof\":[\"confhost\"]},\"_monitoring\":{\"oneof\":[\"monitoring\"]},\"_trace\":{\"oneof\":[\"trace\"]},\"_telemetry\":{\"oneof\":[\"telemetry\"]}},\"fields\":{\"host\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"port\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"autoupdate\":{\"type\":\"Autoupdate\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"https\":{\"type\":\"Https\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"p2p\":{\"type\":\"P2P\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"confhost\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"env\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":7,\"comment\":null},\"alias\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":8,\"comment\":null},\"monitoring\":{\"type\":\"Monitoring\",\"id\":9,\"options\":{\"proto3_optional\":true},\"comment\":null},\"trace\":{\"type\":\"Trace\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"telemetry\":{\"type\":\"Telemetry\",\"id\":11,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Autoupdate\":{\"oneofs\":{\"_enabled\":{\"oneof\":[\"enabled\"]},\"_interval\":{\"oneof\":[\"interval\"]}},\"fields\":{\"enabled\":{\"type\":\"bool\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"interval\":{\"type\":\"int64\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Seconds\"}},\"comment\":null},\"Https\":{\"oneofs\":{\"_enabled\":{\"oneof\":[\"enabled\"]},\"_port\":{\"oneof\":[\"port\"]},\"_email\":{\"oneof\":[\"email\"]},\"_certfile\":{\"oneof\":[\"certfile\"]},\"_keyfile\":{\"oneof\":[\"keyfile\"]},\"_dnsprovider\":{\"oneof\":[\"dnsprovider\"]}},\"fields\":{\"enabled\":{\"type\":\"bool\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"port\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"email\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"certfile\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"keyfile\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"dnsprovider\":{\"type\":\"string\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Monitoring\":{\"fields\":{\"enabled\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"endpoint\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"interval\":{\"type\":\"int64\",\"id\":3,\"comment\":\"Seconds\"}},\"comment\":null},\"P2P\":{\"oneofs\":{\"_privateKey\":{\"oneof\":[\"privateKey\"]},\"_port\":{\"oneof\":[\"port\"]}},\"fields\":{\"privateKey\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"port\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"bootstrap\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null},\"Telemetry\":{\"fields\":{\"disabled\":{\"type\":\"bool\",\"id\":1,\"comment\":null}},\"comment\":null},\"Trace\":{\"fields\":{\"disabled\":{\"type\":\"bool\",\"id\":1,\"comment\":null}},\"comment\":null}},\"comment\":null},\"Props\":{\"oneofs\":{\"_title\":{\"oneof\":[\"title\"]}},\"fields\":{\"title\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Services\":{\"oneofs\":{\"_kube\":{\"oneof\":[\"kube\"]},\"_app\":{\"oneof\":[\"app\"]},\"_dxns\":{\"oneof\":[\"dxns\"]},\"_ipfs\":{\"oneof\":[\"ipfs\"]},\"_signal\":{\"oneof\":[\"signal\"]},\"_machine\":{\"oneof\":[\"machine\"]},\"_bot\":{\"oneof\":[\"bot\"]},\"_publisher\":{\"oneof\":[\"publisher\"]}},\"fields\":{\"kube\":{\"type\":\"Kube\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"app\":{\"type\":\"AppServer\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"dxns\":{\"type\":\"Dxns\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"ipfs\":{\"type\":\"Ipfs\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"signal\":{\"type\":\"Signal\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"ice\":{\"rule\":\"repeated\",\"type\":\"Ice\",\"id\":6,\"comment\":null},\"machine\":{\"type\":\"Machine\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null},\"bot\":{\"type\":\"BotFactory\",\"id\":8,\"options\":{\"proto3_optional\":true},\"comment\":null},\"publisher\":{\"type\":\"Publisher\",\"id\":9,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"AppServer\":{\"oneofs\":{\"_prefix\":{\"oneof\":[\"prefix\"]},\"_server\":{\"oneof\":[\"server\"]}},\"fields\":{\"prefix\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"server\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"BotFactory\":{\"oneofs\":{\"_topic\":{\"oneof\":[\"topic\"]},\"_persistent\":{\"oneof\":[\"persistent\"]},\"_retryAttempts\":{\"oneof\":[\"retryAttempts\"]},\"_retryInterval\":{\"oneof\":[\"retryInterval\"]}},\"fields\":{\"topic\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"persistent\":{\"type\":\"bool\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"retryAttempts\":{\"type\":\"int32\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"retryInterval\":{\"type\":\"int32\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Dxns\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]},\"_accountUri\":{\"oneof\":[\"accountUri\"]},\"_address\":{\"oneof\":[\"address\"]},\"_account\":{\"oneof\":[\"account\"]},\"_faucet\":{\"oneof\":[\"faucet\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"DXNS endpoint.\"},\"accountUri\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Substrate account URI. This is a secret.\\nKUBEs do not serve this with the config but we store it in profile.yml.\\n\\nTODO(dmaretskyi): Deprecate this and move it to keyring.\"},\"address\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Public Polkadot Address.\"},\"account\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Public address of a DXNS Account.\"},\"faucet\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Ice\":{\"oneofs\":{\"_urls\":{\"oneof\":[\"urls\"]},\"_username\":{\"oneof\":[\"username\"]},\"_credential\":{\"oneof\":[\"credential\"]}},\"fields\":{\"urls\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"username\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"credential\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Ipfs\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]},\"_gateway\":{\"oneof\":[\"gateway\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"gateway\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Kube\":{\"oneofs\":{\"_endpoints\":{\"oneof\":[\"endpoints\"]},\"_publicUrl\":{\"oneof\":[\"publicUrl\"]}},\"fields\":{\"endpoints\":{\"type\":\"Endpoints\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"publicUrl\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Endpoints\":{\"oneofs\":{\"_logs\":{\"oneof\":[\"logs\"]},\"_services\":{\"oneof\":[\"services\"]},\"_cert\":{\"oneof\":[\"cert\"]}},\"fields\":{\"logs\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"services\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"cert\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"Machine\":{\"oneofs\":{\"_doAccessToken\":{\"oneof\":[\"doAccessToken\"]},\"_githubAccessToken\":{\"oneof\":[\"githubAccessToken\"]},\"_githubUsername\":{\"oneof\":[\"githubUsername\"]},\"_dnsDomain\":{\"oneof\":[\"dnsDomain\"]},\"_npmAccessToken\":{\"oneof\":[\"npmAccessToken\"]}},\"fields\":{\"doAccessToken\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"githubAccessToken\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"githubUsername\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"dnsDomain\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"npmAccessToken\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Publisher\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Signal\":{\"oneofs\":{\"_server\":{\"oneof\":[\"server\"]},\"_api\":{\"oneof\":[\"api\"]},\"_status\":{\"oneof\":[\"status\"]}},\"fields\":{\"server\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"api\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"status\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"System\":{\"oneofs\":{\"_debug\":{\"oneof\":[\"debug\"]}},\"fields\":{\"debug\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null}}},\"devtools\":{\"nested\":{\"host\":{\"nested\":{\"ClearSnapshotsRequest\":{\"fields\":{},\"comment\":null},\"DevtoolsHost\":{\"methods\":{\"Events\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"Event\",\"responseStream\":true,\"comment\":null},\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"GetConfigResponse\",\"comment\":null},\"ResetStorage\":{\"requestType\":\"ResetStorageRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"EnableDebugLogging\":{\"requestType\":\"EnableDebugLoggingRequest\",\"responseType\":\"EnableDebugLoggingResponse\",\"comment\":null},\"DisableDebugLogging\":{\"requestType\":\"EnableDebugLoggingRequest\",\"responseType\":\"EnableDebugLoggingResponse\",\"comment\":null},\"SubscribeToKeyringKeys\":{\"requestType\":\"SubscribeToKeyringKeysRequest\",\"responseType\":\"SubscribeToKeyringKeysResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToCredentialMessages\":{\"requestType\":\"SubscribeToCredentialMessagesRequest\",\"responseType\":\"SubscribeToCredentialMessagesResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSpaces\":{\"requestType\":\"SubscribeToSpacesRequest\",\"responseType\":\"SubscribeToSpacesResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToItems\":{\"requestType\":\"SubscribeToItemsRequest\",\"responseType\":\"SubscribeToItemsResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToFeeds\":{\"requestType\":\"SubscribeToFeedsRequest\",\"responseType\":\"SubscribeToFeedsResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToFeedBlocks\":{\"requestType\":\"SubscribeToFeedBlocksRequest\",\"responseType\":\"SubscribeToFeedBlocksResponse\",\"responseStream\":true,\"comment\":null},\"GetSpaceSnapshot\":{\"requestType\":\"GetSpaceSnapshotRequest\",\"responseType\":\"GetSpaceSnapshotResponse\",\"comment\":null},\"SaveSpaceSnapshot\":{\"requestType\":\"SaveSpaceSnapshotRequest\",\"responseType\":\"SaveSpaceSnapshotResponse\",\"comment\":null},\"ClearSnapshots\":{\"requestType\":\"ClearSnapshotsRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"GetNetworkPeers\":{\"requestType\":\"GetNetworkPeersRequest\",\"responseType\":\"GetNetworkPeersResponse\",\"comment\":null},\"SubscribeToNetworkTopics\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeToNetworkTopicsResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSignalStatus\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeToSignalStatusResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSignalTrace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"SubscribeToSignalTraceResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeToSwarmInfo\":{\"requestType\":\"SubscribeToSwarmInfoRequest\",\"responseType\":\"SubscribeToSwarmInfoResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null},\"DisableDebugLoggingRequest\":{\"oneofs\":{\"_namespaces\":{\"oneof\":[\"namespaces\"]}},\"fields\":{\"namespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"DisableDebugLoggingResponse\":{\"oneofs\":{\"_enabledNamespaces\":{\"oneof\":[\"enabledNamespaces\"]}},\"fields\":{\"enabledNamespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"EnableDebugLoggingRequest\":{\"oneofs\":{\"_namespaces\":{\"oneof\":[\"namespaces\"]}},\"fields\":{\"namespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"EnableDebugLoggingResponse\":{\"oneofs\":{\"_enabledNamespaces\":{\"oneof\":[\"enabledNamespaces\"]}},\"fields\":{\"enabledNamespaces\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Event\":{\"oneofs\":{\"payload\":{\"oneof\":[\"ready\"],\"comment\":null}},\"fields\":{\"ready\":{\"type\":\"ReadyEvent\",\"id\":1,\"comment\":null}},\"comment\":null},\"FeedStats\":{\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"length\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null},\"GetConfigResponse\":{\"fields\":{\"config\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetNetworkPeersRequest\":{\"fields\":{\"topic\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetNetworkPeersResponse\":{\"fields\":{\"peers\":{\"rule\":\"repeated\",\"type\":\"PeerInfo\",\"id\":1,\"comment\":null}},\"nested\":{\"PeerInfo\":{\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"state\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"connections\":{\"rule\":\"repeated\",\"type\":\"bytes\",\"id\":3,\"comment\":null}},\"comment\":null}},\"comment\":null},\"GetSpaceSnapshotRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"GetSpaceSnapshotResponse\":{\"oneofs\":{\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"snapshot\":{\"type\":\"dxos.echo.snapshot.SpaceSnapshot\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"PeerStats\":{\"fields\":{\"controlFeed\":{\"type\":\"FeedStats\",\"id\":1,\"comment\":null},\"dataFeed\":{\"type\":\"FeedStats\",\"id\":2,\"comment\":null}},\"comment\":null},\"ReadyEvent\":{\"fields\":{},\"comment\":null},\"ResetStorageRequest\":{\"fields\":{},\"comment\":null},\"SaveSpaceSnapshotRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SaveSpaceSnapshotResponse\":{\"oneofs\":{\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"snapshot\":{\"type\":\"dxos.echo.snapshot.SpaceSnapshot\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Services\":{\"fields\":{\"spaces\":{\"rule\":\"repeated\",\"type\":\"SpaceStats\",\"id\":1,\"comment\":null}},\"comment\":null},\"SetTracingOptionsRequest\":{\"fields\":{\"enable\":{\"type\":\"bool\",\"id\":1,\"comment\":null}},\"comment\":null},\"SpaceStats\":{\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"peers\":{\"rule\":\"repeated\",\"type\":\"PeerStats\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeToCredentialMessagesRequest\":{\"oneofs\":{\"_spaceKey\":{\"oneof\":[\"spaceKey\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeToCredentialMessagesResponse\":{\"fields\":{\"messages\":{\"rule\":\"repeated\",\"type\":\"dxos.halo.signed.SignedMessage\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToFeedBlocksRequest\":{\"oneofs\":{\"_spaceKey\":{\"oneof\":[\"spaceKey\"]},\"_feedKey\":{\"oneof\":[\"feedKey\"]},\"_maxBlocks\":{\"oneof\":[\"maxBlocks\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"maxBlocks\":{\"type\":\"int32\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"SubscribeToFeedBlocksResponse\":{\"fields\":{\"blocks\":{\"rule\":\"repeated\",\"type\":\"Block\",\"id\":1,\"comment\":null}},\"nested\":{\"Block\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":2,\"comment\":null},\"data\":{\"type\":\"dxos.echo.feed.FeedMessage\",\"id\":3,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToFeedsRequest\":{\"fields\":{\"feedKeys\":{\"rule\":\"repeated\",\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToFeedsResponse\":{\"fields\":{\"feeds\":{\"rule\":\"repeated\",\"type\":\"Feed\",\"id\":1,\"comment\":null}},\"nested\":{\"Feed\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"length\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToItemsRequest\":{\"fields\":{},\"comment\":null},\"SubscribeToItemsResponse\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToKeyringKeysRequest\":{\"fields\":{},\"comment\":null},\"SubscribeToKeyringKeysResponse\":{\"fields\":{\"keys\":{\"rule\":\"repeated\",\"type\":\"dxos.halo.keyring.KeyRecord\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToNetworkTopicsResponse\":{\"fields\":{\"topics\":{\"rule\":\"repeated\",\"type\":\"Topic\",\"id\":1,\"comment\":null}},\"nested\":{\"Topic\":{\"oneofs\":{\"_label\":{\"oneof\":[\"label\"]}},\"fields\":{\"topic\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"label\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToSignalStatusResponse\":{\"fields\":{\"servers\":{\"rule\":\"repeated\",\"type\":\"SignalServer\",\"id\":1,\"comment\":null}},\"nested\":{\"SignalServer\":{\"oneofs\":{\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"host\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"state\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"reconnectIn\":{\"type\":\"int32\",\"id\":4,\"comment\":null},\"connectionStarted\":{\"type\":\"int32\",\"id\":5,\"comment\":null},\"lastStateChange\":{\"type\":\"int32\",\"id\":6,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToSignalTraceResponse\":{\"fields\":{\"events\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToSpacesRequest\":{\"fields\":{\"spaceKeys\":{\"rule\":\"repeated\",\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeToSpacesResponse\":{\"fields\":{\"spaces\":{\"rule\":\"repeated\",\"type\":\"SpaceInfo\",\"id\":1,\"comment\":null}},\"nested\":{\"SpaceInfo\":{\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"isOpen\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"timeframe\":{\"type\":\"dxos.echo.timeframe.TimeframeVector\",\"id\":3,\"comment\":null},\"genesisFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":null},\"controlFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":5,\"comment\":null},\"dataFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"comment\":null}},\"comment\":null}},\"comment\":null},\"SubscribeToSwarmInfoRequest\":{\"fields\":{},\"comment\":null},\"SubscribeToSwarmInfoResponse\":{\"fields\":{\"data\":{\"rule\":\"repeated\",\"type\":\"SwarmInfo\",\"id\":1,\"comment\":null}},\"comment\":null},\"TracingService\":{\"methods\":{\"SetTracingOptions\":{\"requestType\":\"SetTracingOptionsRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"SubscribeToRpcTrace\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"dxos.rpc.RpcMessage\",\"responseStream\":true,\"comment\":null}},\"comment\":null}}},\"swarm\":{\"nested\":{\"ConnectionEvent\":{\"oneofs\":{\"_newState\":{\"oneof\":[\"newState\"]},\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"newState\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"error\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ConnectionInfo\":{\"oneofs\":{\"_transport\":{\"oneof\":[\"transport\"]}},\"fields\":{\"state\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"sessionId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"remotePeerId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"transport\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"protocolExtensions\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":5,\"comment\":null},\"events\":{\"rule\":\"repeated\",\"type\":\"ConnectionEvent\",\"id\":6,\"comment\":null}},\"comment\":null},\"SwarmInfo\":{\"oneofs\":{\"_label\":{\"oneof\":[\"label\"]}},\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"topic\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"label\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"isActive\":{\"type\":\"bool\",\"id\":4,\"comment\":null},\"connections\":{\"rule\":\"repeated\",\"type\":\"ConnectionInfo\",\"id\":5,\"comment\":null}},\"comment\":null}}}}},\"echo\":{\"nested\":{\"feed\":{\"nested\":{\"CredentialsMessage\":{\"fields\":{\"credential\":{\"type\":\"dxos.halo.credentials.Credential\",\"id\":1,\"comment\":null}},\"comment\":\"A container for dxos.credentials.Message\"},\"EchoEnvelope\":{\"oneofs\":{\"_genesis\":{\"oneof\":[\"genesis\"]},\"_itemMutation\":{\"oneof\":[\"itemMutation\"]},\"_mutation\":{\"oneof\":[\"mutation\"]},\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"itemId\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"genesis\":{\"type\":\"ItemGenesis\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"itemMutation\":{\"type\":\"ItemMutation\",\"id\":11,\"options\":{\"proto3_optional\":true},\"comment\":null},\"mutation\":{\"type\":\"bytes\",\"id\":12,\"options\":{\"proto3_optional\":true},\"comment\":null},\"snapshot\":{\"type\":\"snapshot.ModelSnapshot\",\"id\":13,\"options\":{\"proto3_optional\":true},\"comment\":\"Set the model to the provided snapshot.\"}},\"comment\":null},\"FeedMessage\":{\"fields\":{\"timeframe\":{\"type\":\"dxos.echo.timeframe.TimeframeVector\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":\"Outer message type decoded by Codec.\\nThis is what is written to the feeds.\"},\"ItemGenesis\":{\"oneofs\":{\"_itemType\":{\"oneof\":[\"itemType\"]},\"_modelVersion\":{\"oneof\":[\"modelVersion\"]},\"_link\":{\"oneof\":[\"link\"]}},\"fields\":{\"itemType\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"modelType\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"modelVersion\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"link\":{\"type\":\"LinkData\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ItemMutation\":{\"oneofs\":{\"_parentId\":{\"oneof\":[\"parentId\"]},\"_action\":{\"oneof\":[\"action\"]}},\"fields\":{\"parentId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"action\":{\"type\":\"Action\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Action\":{\"values\":{\"NOOP\":0,\"DELETE\":1,\"RESTORE\":2},\"comment\":null,\"comments\":{\"NOOP\":null,\"DELETE\":null,\"RESTORE\":null}}},\"comment\":\"Item mutation.\"},\"LinkData\":{\"fields\":{\"source\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"target\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"metadata\":{\"nested\":{\"EchoMetadata\":{\"oneofs\":{\"_identity\":{\"oneof\":[\"identity\"]}},\"fields\":{\"version\":{\"type\":\"int32\",\"id\":1,\"comment\":\"Version number that is inceremnted every time there's a breaking change to the storage schema.\\nThis is used to detect if the storage schema has changed since the last time the client was run.\\nLoading data from a different version will might result in an error.\"},\"created\":{\"type\":\"google.protobuf.Timestamp\",\"id\":2,\"comment\":null},\"updated\":{\"type\":\"google.protobuf.Timestamp\",\"id\":3,\"comment\":null},\"identity\":{\"type\":\"dxos.halo.credentials.IdentityRecord\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"spaces\":{\"rule\":\"repeated\",\"type\":\"SpaceMetadata\",\"id\":11,\"comment\":\"List of the data spaces.\"}},\"comment\":null},\"SpaceMetadata\":{\"oneofs\":{\"_genesisFeedKey\":{\"oneof\":[\"genesisFeedKey\"]},\"_controlFeedKey\":{\"oneof\":[\"controlFeedKey\"]},\"_dataFeedKey\":{\"oneof\":[\"dataFeedKey\"]},\"_latestTimeframe\":{\"oneof\":[\"latestTimeframe\"]}},\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"Space key.\"},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null},\"controlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Key of the wriatable control feed.\"},\"feedKeys\":{\"rule\":\"repeated\",\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"List of all feed associated with the space.\"},\"dataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Key of the wriatable data feed.\"},\"latestTimeframe\":{\"type\":\"timeframe.TimeframeVector\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}}},\"model\":{\"nested\":{\"messenger\":{\"nested\":{\"Message\":{\"fields\":{\"timestamp\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"text\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"sender\":{\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null}}},\"object\":{\"nested\":{\"Array\":{\"fields\":{\"values\":{\"rule\":\"repeated\",\"type\":\"Value\",\"id\":1,\"comment\":null}},\"comment\":\"Ordered collection of values.\"},\"KeyValue\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"value\":{\"type\":\"Value\",\"id\":2,\"comment\":null}},\"comment\":\"Key x Value tuple.\"},\"KeyValueObject\":{\"fields\":{\"properties\":{\"rule\":\"repeated\",\"type\":\"KeyValue\",\"id\":1,\"comment\":null}},\"comment\":\"Object data definition.\"},\"ObjectMutation\":{\"oneofs\":{\"_value\":{\"oneof\":[\"value\"]}},\"fields\":{\"operation\":{\"type\":\"Operation\",\"id\":1,\"comment\":null},\"key\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"value\":{\"type\":\"Value\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Operation\":{\"values\":{\"SET\":0,\"DELETE\":1,\"ARRAY_PUSH\":2,\"SET_ADD\":4,\"SET_DELETE\":5},\"comment\":null,\"comments\":{\"SET\":null,\"DELETE\":null,\"ARRAY_PUSH\":null,\"SET_ADD\":null,\"SET_DELETE\":null}}},\"comment\":\"Atomic mutation.\"},\"ObjectMutationSet\":{\"fields\":{\"mutations\":{\"rule\":\"repeated\",\"type\":\"ObjectMutation\",\"id\":1,\"comment\":null}},\"comment\":\"Set of mutations.\"},\"ObjectSnapshot\":{\"fields\":{\"root\":{\"type\":\"Value\",\"id\":1,\"comment\":null}},\"comment\":\"State snapshot.\"},\"Predicate\":{\"oneofs\":{\"_key\":{\"oneof\":[\"key\"]},\"_value\":{\"oneof\":[\"value\"]}},\"fields\":{\"op\":{\"type\":\"Operation\",\"id\":1,\"comment\":null},\"key\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"value\":{\"type\":\"Value\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"predicates\":{\"rule\":\"repeated\",\"type\":\"Predicate\",\"id\":4,\"comment\":null}},\"nested\":{\"Operation\":{\"values\":{\"OR\":0,\"AND\":1,\"NOT\":2,\"IN\":10,\"EQUALS\":11,\"GTE\":12,\"GT\":13,\"LTE\":14,\"LT\":15,\"PREFIX_MATCH\":20,\"TEXT_MATCH\":21},\"comment\":null,\"comments\":{\"OR\":null,\"AND\":null,\"NOT\":null,\"IN\":null,\"EQUALS\":null,\"GTE\":null,\"GT\":null,\"LTE\":null,\"LT\":null,\"PREFIX_MATCH\":null,\"TEXT_MATCH\":null}}},\"comment\":\"Query predicate.\"},\"Query\":{\"fields\":{\"root\":{\"type\":\"Predicate\",\"id\":1,\"comment\":null}},\"comment\":\"Query.\"},\"Value\":{\"oneofs\":{\"Type\":{\"oneof\":[\"null\",\"bool\",\"int\",\"float\",\"string\",\"timestamp\",\"datetime\",\"bytes\",\"object\",\"array\"],\"comment\":null}},\"fields\":{\"null\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"bool\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"int\":{\"type\":\"int64\",\"id\":3,\"comment\":null},\"float\":{\"type\":\"float\",\"id\":4,\"comment\":null},\"string\":{\"type\":\"string\",\"id\":5,\"comment\":null},\"timestamp\":{\"type\":\"string\",\"id\":10,\"comment\":null},\"datetime\":{\"type\":\"string\",\"id\":11,\"comment\":null},\"bytes\":{\"type\":\"bytes\",\"id\":12,\"comment\":null},\"object\":{\"type\":\"KeyValueObject\",\"id\":20,\"comment\":null},\"array\":{\"type\":\"Array\",\"id\":21,\"comment\":null}},\"comment\":\"Generic value.\"}}},\"text\":{\"nested\":{\"Mutation\":{\"fields\":{\"update\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"clientId\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null},\"Snapshot\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null}}}}},\"service\":{\"nested\":{\"DataService\":{\"methods\":{\"SubscribeEntitySet\":{\"requestType\":\"SubscribeEntitySetRequest\",\"responseType\":\"SubscribeEntitySetResponse\",\"responseStream\":true,\"comment\":null},\"SubscribeEntityStream\":{\"requestType\":\"SubscribeEntityStreamRequest\",\"responseType\":\"SubscribeEntityStreamResponse\",\"responseStream\":true,\"comment\":null},\"Write\":{\"requestType\":\"WriteRequest\",\"responseType\":\"MutationReceipt\",\"comment\":null}},\"comment\":null},\"MutationReceipt\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeEntitySetRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SubscribeEntitySetResponse\":{\"fields\":{\"added\":{\"rule\":\"repeated\",\"type\":\"feed.EchoEnvelope\",\"id\":1,\"comment\":null},\"deleted\":{\"rule\":\"repeated\",\"type\":\"feed.EchoEnvelope\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeEntityStreamRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"itemId\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"SubscribeEntityStreamResponse\":{\"oneofs\":{\"kind\":{\"oneof\":[\"snapshot\",\"mutation\"],\"comment\":null}},\"fields\":{\"snapshot\":{\"type\":\"snapshot.ItemSnapshot\",\"id\":1,\"comment\":null},\"mutation\":{\"type\":\"Mutation\",\"id\":2,\"comment\":null}},\"nested\":{\"Mutation\":{\"fields\":{\"data\":{\"type\":\"feed.EchoEnvelope\",\"id\":1,\"comment\":null},\"meta\":{\"type\":\"Metadata\",\"id\":2,\"comment\":null}},\"nested\":{\"Metadata\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"memberKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":3,\"comment\":null},\"timeframe\":{\"type\":\"timeframe.TimeframeVector\",\"id\":4,\"comment\":null}},\"comment\":null}},\"comment\":null}},\"comment\":null},\"WriteRequest\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"mutation\":{\"type\":\"feed.EchoEnvelope\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"snapshot\":{\"nested\":{\"DatabaseSnapshot\":{\"fields\":{\"items\":{\"rule\":\"repeated\",\"type\":\"ItemSnapshot\",\"id\":1,\"comment\":null},\"links\":{\"rule\":\"repeated\",\"type\":\"LinkSnapshot\",\"id\":2,\"comment\":null}},\"comment\":null},\"HaloStateSnapshot\":{\"fields\":{\"messages\":{\"rule\":\"repeated\",\"type\":\"dxos.halo.signed.Message\",\"id\":1,\"comment\":null}},\"comment\":null},\"ItemSnapshot\":{\"oneofs\":{\"_itemId\":{\"oneof\":[\"itemId\"]},\"_itemType\":{\"oneof\":[\"itemType\"]},\"_modelVersion\":{\"oneof\":[\"modelVersion\"]},\"_parentId\":{\"oneof\":[\"parentId\"]},\"_model\":{\"oneof\":[\"model\"]}},\"fields\":{\"itemId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"itemType\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"modelType\":{\"type\":\"string\",\"id\":3,\"comment\":null},\"modelVersion\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"parentId\":{\"type\":\"string\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"model\":{\"type\":\"ModelSnapshot\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"LinkSnapshot\":{\"oneofs\":{\"_linkId\":{\"oneof\":[\"linkId\"]},\"_linkType\":{\"oneof\":[\"linkType\"]},\"_modelVersion\":{\"oneof\":[\"modelVersion\"]},\"_model\":{\"oneof\":[\"model\"]}},\"fields\":{\"linkId\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"linkType\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"modelType\":{\"type\":\"string\",\"id\":3,\"comment\":null},\"modelVersion\":{\"type\":\"string\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"source\":{\"type\":\"string\",\"id\":5,\"comment\":null},\"target\":{\"type\":\"string\",\"id\":6,\"comment\":null},\"model\":{\"type\":\"ModelSnapshot\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"ModelMutation\":{\"fields\":{\"mutation\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"meta\":{\"type\":\"ModelMutationMeta\",\"id\":2,\"comment\":null}},\"comment\":null},\"ModelMutationMeta\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":2,\"comment\":null},\"memberKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null},\"ModelSnapshot\":{\"oneofs\":{\"_snapshot\":{\"oneof\":[\"snapshot\"]}},\"fields\":{\"snapshot\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Encoded model snapshot (defined by the model's codec).\\nIf undefined the state machine will be initialized with it's default state.\"},\"mutations\":{\"rule\":\"repeated\",\"type\":\"ModelMutation\",\"id\":2,\"comment\":\"Mutations to be applied on top of the snapshot, or on top of initial state if the snapshot is undefined.\"}},\"comment\":null},\"SpaceSnapshot\":{\"oneofs\":{\"_timeframe\":{\"oneof\":[\"timeframe\"]},\"_timestamp\":{\"oneof\":[\"timestamp\"]}},\"fields\":{\"spaceKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"timeframe\":{\"type\":\"timeframe.TimeframeVector\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"timestamp\":{\"type\":\"int32\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"halo\":{\"type\":\"HaloStateSnapshot\",\"id\":11,\"comment\":null},\"database\":{\"type\":\"DatabaseSnapshot\",\"id\":12,\"comment\":null}},\"comment\":null}}},\"timeframe\":{\"nested\":{\"TimeframeVector\":{\"fields\":{\"frames\":{\"rule\":\"repeated\",\"type\":\"Frame\",\"id\":1,\"comment\":null}},\"nested\":{\"Frame\":{\"fields\":{\"feedKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"seq\":{\"type\":\"int32\",\"id\":3,\"comment\":null}},\"comment\":null}},\"comment\":\"Vector timestamp used to order messages.\"}}}}},\"gravity\":{\"nested\":{\"AcceptSpaceInvitationCommand\":{\"fields\":{\"swarmKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"AgentSpec\":{\"oneofs\":{\"_version\":{\"oneof\":[\"version\"]},\"_stateMachine\":{\"oneof\":[\"stateMachine\"]},\"_startSequence\":{\"oneof\":[\"startSequence\"]},\"_stopSequence\":{\"oneof\":[\"stopSequence\"]}},\"fields\":{\"version\":{\"type\":\"int32\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"stateMachine\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"startSequence\":{\"type\":\"CommandSequence\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"stopSequence\":{\"type\":\"CommandSequence\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"testSequences\":{\"rule\":\"repeated\",\"type\":\"CommandSequence\",\"id\":5,\"comment\":null}},\"comment\":\"Root specification for Agent.\"},\"Command\":{\"oneofs\":{\"Cmd\":{\"oneof\":[\"createProfile\",\"createSpace\",\"createSpaceInvitation\",\"acceptSpaceInvitation\"],\"comment\":null}},\"fields\":{\"createProfile\":{\"type\":\"CreateProfileCommand\",\"id\":1,\"comment\":null},\"createSpace\":{\"type\":\"CreateSpaceCommand\",\"id\":2,\"comment\":null},\"createSpaceInvitation\":{\"type\":\"CreateSpaceInvitationCommand\",\"id\":3,\"comment\":null},\"acceptSpaceInvitation\":{\"type\":\"AcceptSpaceInvitationCommand\",\"id\":4,\"comment\":null}},\"comment\":\"Atomic async command.\"},\"CommandSequence\":{\"fields\":{\"commands\":{\"rule\":\"repeated\",\"type\":\"Command\",\"id\":1,\"comment\":null}},\"comment\":\"Commands that must be run sequentially.\"},\"CreateProfileCommand\":{\"fields\":{},\"comment\":null},\"CreateSpaceCommand\":{\"oneofs\":{\"_id\":{\"oneof\":[\"id\"]}},\"fields\":{\"id\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"CreateSpaceInvitationCommand\":{\"fields\":{\"id\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"swarmKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"halo\":{\"nested\":{\"credentials\":{\"nested\":{\"AdmittedFeed\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"Owning identity.\"},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"designation\":{\"type\":\"Designation\",\"id\":4,\"comment\":\"Feeds with different designations are consumed by separate pipelines.\"}},\"nested\":{\"Designation\":{\"values\":{\"GENERAL\":0,\"CONTROL\":1,\"DATA\":2},\"comment\":null,\"comments\":{\"GENERAL\":\"Classic general purpose feeds for both HALO and ECHO messages together. To be deprecated.\",\"CONTROL\":\"Contain system-level messages messages, such as credentials and epochs.\",\"DATA\":\"Database mutations.\"}}},\"comment\":null},\"auth\":{\"nested\":{\"Auth\":{\"oneofs\":{\"_feedKey\":{\"oneof\":[\"feedKey\"]},\"_feedAdmit\":{\"oneof\":[\"feedAdmit\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"The publicKey of the target Space for these credentials.\"},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"The publicKey of the authenticating Device.\"},\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":\"The publicKey of the authenticating Identity.\"},\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"The publicKey of the authenticating Identity.\"},\"feedAdmit\":{\"type\":\"google.protobuf.Any\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"FeedAdmit message to the should be written to a control feed in case the `feed_key` is not admitted to the space.\"}},\"comment\":\"The payload for a SignedMessage sent during handshake for replication authentication.\"}}},\"Auth\":{\"fields\":{},\"comment\":\"Assertion for agents authenticating in the space swarm.\"},\"AuthorizedDevice\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null}},\"comment\":null},\"Chain\":{\"fields\":{\"credential\":{\"type\":\"Credential\",\"id\":1,\"comment\":\"Credential that authorizes the subject to issue new credentials (can be recursive).\"}},\"comment\":\"A chain of credentials that establishes the delegated authority to issue new credentials.\\nEach key in the chain has an assotiated credential that establishes the authrity of that specific key.\\n\\nExample:\\nAlice/Device-2 => Alice/Device-1 => Alice\\n\\nThis chain would include 2 credentials:\\n1. Giving Alice/Device-2 the authority to issue credentials on behalf of Alice, signed by Alice/Device-1.\\n2. Giving Alice/Device-1 the authority to issue credentials on behalf of Alice, signed by Alice.\"},\"Claim\":{\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"assertion\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null},\"Credential\":{\"oneofs\":{\"_id\":{\"oneof\":[\"id\"]},\"_expirationDate\":{\"oneof\":[\"expirationDate\"]},\"_expirationRef\":{\"oneof\":[\"expirationRef\"]}},\"fields\":{\"id\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"issuer\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"issuanceDate\":{\"type\":\"google.protobuf.Timestamp\",\"id\":3,\"comment\":null},\"expirationDate\":{\"type\":\"google.protobuf.Timestamp\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"expirationRef\":{\"type\":\"bytes\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":null},\"subject\":{\"type\":\"Claim\",\"id\":10,\"comment\":null},\"proof\":{\"type\":\"Proof\",\"id\":11,\"comment\":null}},\"comment\":null},\"greet\":{\"nested\":{\"BeginResponse\":{\"fields\":{\"info\":{\"keyType\":\"string\",\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"ClaimResponse\":{\"fields\":{\"id\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"rendezvousKey\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Command\":{\"oneofs\":{\"_secret\":{\"oneof\":[\"secret\"]}},\"fields\":{\"command\":{\"type\":\"Type\",\"id\":1,\"comment\":null},\"secret\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"params\":{\"rule\":\"repeated\",\"type\":\"google.protobuf.Any\",\"id\":10,\"comment\":null}},\"nested\":{\"Type\":{\"values\":{\"BEGIN\":0,\"HANDSHAKE\":1,\"NOTARIZE\":2,\"FINISH\":3,\"CLAIM\":10},\"comment\":null,\"comments\":{\"BEGIN\":null,\"HANDSHAKE\":null,\"NOTARIZE\":null,\"FINISH\":null,\"CLAIM\":null}}},\"comment\":\"A Greeter command.\"},\"HandshakeResponse\":{\"fields\":{\"nonce\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null}},\"comment\":null},\"KeyHint\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"type\":{\"type\":\"keys.KeyType\",\"id\":2,\"comment\":null}},\"comment\":null},\"NotarizeResponse\":{\"fields\":{\"copies\":{\"rule\":\"repeated\",\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null},\"genesisFeed\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null}}},\"HaloSpace\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"haloKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"Space key.\"}},\"comment\":\"[ASSERTION]: Associtaes a space that will implement Agent's HALO with an Identity.\"},\"identity\":{\"nested\":{\"DeviceInfo\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"IdentityInfo\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"displayName\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"IdentityProfile\":{\"fields\":{\"profile\":{\"type\":\"ProfileDocument\",\"id\":1,\"comment\":null}},\"comment\":\"[ASSERTION]: Sets profile information.\"},\"IdentityRecord\":{\"oneofs\":{\"_profileSpace\":{\"oneof\":[\"profileSpace\"]},\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"haloSpace\":{\"type\":\"SpaceRecord\",\"id\":3,\"comment\":null},\"profileSpace\":{\"type\":\"SpaceRecord\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"TODO(burdon): Not yet implemented. Must be null.\"},\"profile\":{\"type\":\"ProfileDocument\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Cached profile.\"}},\"comment\":\"Information needed to bootstrap an Identity.\"},\"IdentityRecovery\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"recoveryKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"Public key derrived from the recovery seedphrase.\"}},\"comment\":\"[ASSERTION]: Grants recovery permissions to a recovery key.\"},\"KeyInfo\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":\"Subject must be a key being referenced.\"},\"Presentation\":{\"fields\":{\"credentials\":{\"rule\":\"repeated\",\"type\":\"Credential\",\"id\":1,\"comment\":null},\"proofs\":{\"rule\":\"repeated\",\"type\":\"Proof\",\"id\":2,\"comment\":null}},\"comment\":null},\"ProfileDocument\":{\"oneofs\":{\"_displayName\":{\"oneof\":[\"displayName\"]},\"_avatarCid\":{\"oneof\":[\"avatarCid\"]}},\"fields\":{\"displayName\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"avatarCid\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Proof\":{\"oneofs\":{\"_nonce\":{\"oneof\":[\"nonce\"]},\"_chain\":{\"oneof\":[\"chain\"]}},\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"creationDate\":{\"type\":\"google.protobuf.Timestamp\",\"id\":2,\"comment\":null},\"signer\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"nonce\":{\"type\":\"bytes\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":null},\"value\":{\"type\":\"bytes\",\"id\":5,\"comment\":\"Signature (excluded from signed data).\"},\"chain\":{\"type\":\"Chain\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Must be present if signer is not credential issuer.\\nEstablishes the authority of the signer. Proves that the signer can issue such credentials.\\nExcluded from signed data.\"}},\"comment\":null},\"SpaceGenesis\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"SpaceMember\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"role\":{\"type\":\"Role\",\"id\":2,\"comment\":null},\"profile\":{\"type\":\"ProfileDocument\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":\"Genesis feed of the space. Needed so that the admitted member can start replicating the space based on this credential alone.\"}},\"nested\":{\"Role\":{\"values\":{\"INVALID\":0,\"ADMIN\":1,\"MEMBER\":2,\"READER\":3},\"comment\":null,\"comments\":{\"INVALID\":null,\"ADMIN\":\"Manage members.\",\"MEMBER\":\"Read and write.\",\"READER\":\"Read-only.\"}}},\"comment\":null},\"SpaceRecord\":{\"fields\":{\"spaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"This is the root feed of that structure.\"},\"writeControlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":\"Keyring must have the associated private key.\"},\"writeDataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":\"Keyring must have the associated private key.\"}},\"comment\":\"Information needed to bootstrap a Space.\"}}},\"invitations\":{\"nested\":{\"AuthenticationRequest\":{\"fields\":{\"authenticationCode\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"AuthenticationResponse\":{\"oneofs\":{\"_status\":{\"oneof\":[\"status\"]}},\"fields\":{\"status\":{\"type\":\"Status\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Status\":{\"values\":{\"OK\":0,\"INVALID_OTP\":1,\"INVALID_OPT_ATTEMPTS\":2},\"comment\":null,\"comments\":{\"OK\":null,\"INVALID_OTP\":null,\"INVALID_OPT_ATTEMPTS\":null}}},\"comment\":null},\"HaloAdmissionCredentials\":{\"fields\":{\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"controlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"dataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null},\"HaloAdmissionOffer\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"haloSpaceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"genesisFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null}},\"comment\":null},\"HaloHostService\":{\"methods\":{\"RequestAdmission\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"HaloAdmissionOffer\",\"comment\":\"Process admission offer from host.\"},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"AuthenticationResponse\",\"comment\":\"Authenticate request.\"},\"PresentAdmissionCredentials\":{\"requestType\":\"HaloAdmissionCredentials\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Process admission request from guest.\"}},\"comment\":null},\"Introduction\":{\"oneofs\":{\"_profile\":{\"oneof\":[\"profile\"]}},\"fields\":{\"profile\":{\"type\":\"halo.credentials.ProfileDocument\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Guest's profile.\"}},\"comment\":null},\"SpaceAdmissionCredentials\":{\"fields\":{\"credential\":{\"type\":\"dxos.halo.credentials.Credential\",\"id\":1,\"comment\":\"Credential of type `SpaceMember` that grants Guest's identity access to the space.\"}},\"comment\":null},\"SpaceAdmissionRequest\":{\"fields\":{\"identityKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"deviceKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":null},\"controlFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":null},\"dataFeedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":null}},\"comment\":null},\"SpaceHostService\":{\"methods\":{\"Introduce\":{\"requestType\":\"Introduction\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Introduce Guest to the host.\"},\"Authenticate\":{\"requestType\":\"AuthenticationRequest\",\"responseType\":\"AuthenticationResponse\",\"comment\":\"Authenticate request.\"},\"RequestAdmission\":{\"requestType\":\"SpaceAdmissionRequest\",\"responseType\":\"SpaceAdmissionCredentials\",\"comment\":\"Process admission credentials.\"}},\"comment\":null}}},\"keyring\":{\"nested\":{\"KeyRecord\":{\"oneofs\":{\"_privateKey\":{\"oneof\":[\"privateKey\"]}},\"fields\":{\"publicKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"privateKey\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}}},\"keys\":{\"nested\":{\"KeyChain\":{\"fields\":{\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"message\":{\"type\":\"dxos.halo.signed.SignedMessage\",\"id\":2,\"comment\":null},\"parents\":{\"rule\":\"repeated\",\"type\":\"KeyChain\",\"id\":3,\"comment\":null}},\"comment\":null},\"KeyRecord\":{\"oneofs\":{\"_secretKey\":{\"oneof\":[\"secretKey\"]},\"_hint\":{\"oneof\":[\"hint\"]},\"_own\":{\"oneof\":[\"own\"]},\"_trusted\":{\"oneof\":[\"trusted\"]},\"_added\":{\"oneof\":[\"added\"]},\"_created\":{\"oneof\":[\"created\"]}},\"fields\":{\"type\":{\"type\":\"KeyType\",\"id\":1,\"comment\":\"The `KeyType` type of the key. This is often unknown for keys from other sources.\"},\"publicKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"The public key as a Buffer (required).\"},\"secretKey\":{\"type\":\"dxos.keys.PrivateKey\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"The secret key as a Buffer (this will never be visible outside the Keyring).\"},\"hint\":{\"type\":\"bool\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Is this key from a Greeting \\\"hint\\\"?\"},\"own\":{\"type\":\"bool\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Determines if this is our key?\\nUsually true if `secret_key` is present; may be false for \\\"inception keys\\\" such as the Space key.\"},\"trusted\":{\"type\":\"bool\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Is this key to be trusted?\"},\"added\":{\"type\":\"string\",\"id\":7,\"options\":{\"proto3_optional\":true},\"comment\":\"An RFC-3339 date/time string for when the key was added to the Keyring.\"},\"created\":{\"type\":\"string\",\"id\":8,\"options\":{\"proto3_optional\":true},\"comment\":\"An RFC-3339 date/time string for when the key was created.\"}},\"comment\":null},\"KeyRecordList\":{\"fields\":{\"keys\":{\"rule\":\"repeated\",\"type\":\"KeyRecord\",\"id\":1,\"comment\":null}},\"comment\":null},\"KeyType\":{\"values\":{\"UNKNOWN\":0,\"IDENTITY\":1,\"DEVICE\":2,\"SPACE\":3,\"FEED\":4,\"DXNS_ADDRESS\":5},\"comment\":null,\"comments\":{\"UNKNOWN\":null,\"IDENTITY\":null,\"DEVICE\":null,\"SPACE\":null,\"FEED\":null,\"DXNS_ADDRESS\":null}}}},\"signed\":{\"nested\":{\"Message\":{\"fields\":{\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"SignedMessage\":{\"fields\":{\"signed\":{\"type\":\"Signed\",\"id\":1,\"comment\":\"The signed message contents.\"},\"signatures\":{\"rule\":\"repeated\",\"type\":\"Signature\",\"id\":2,\"comment\":\"An array of Signatures, one for each key that signed the message.\"}},\"nested\":{\"Signature\":{\"oneofs\":{\"_keyChain\":{\"oneof\":[\"keyChain\"]}},\"fields\":{\"key\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"The publicKey of the keypair that made this signature.\"},\"signature\":{\"type\":\"bytes\",\"id\":2,\"comment\":\"The bytes of the signature.\"},\"keyChain\":{\"type\":\"keys.KeyChain\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"The certification chain of SignedMessages for this key.\"}},\"comment\":null},\"Signed\":{\"fields\":{\"created\":{\"type\":\"string\",\"id\":1,\"comment\":\"RFC-3339 datetime string.\"},\"nonce\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":10,\"comment\":\"The payload to be signed.\"}},\"comment\":null}},\"comment\":\"A generic container message used whenever messages are signed (e.g. SpaceCredential)\"}}}}},\"iframe\":{\"nested\":{\"IframeService\":{\"methods\":{\"Heartbeat\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Worker-to-iframe RPCs.\"},\"StartRequest\":{\"fields\":{\"origin\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"WorkerService\":{\"methods\":{\"Start\":{\"requestType\":\"StartRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"Stop\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Iframe-to-worker RPCs.\"}}},\"keys\":{\"nested\":{\"PrivateKey\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"PublicKey\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"mesh\":{\"nested\":{\"bridge\":{\"nested\":{\"BridgeEvent\":{\"oneofs\":{\"type\":{\"oneof\":[\"connection\",\"signal\",\"data\"],\"comment\":null}},\"fields\":{\"connection\":{\"type\":\"ConnectionEvent\",\"id\":1,\"comment\":null},\"signal\":{\"type\":\"SignalEvent\",\"id\":2,\"comment\":null},\"data\":{\"type\":\"DataEvent\",\"id\":3,\"comment\":null}},\"nested\":{\"ConnectionEvent\":{\"oneofs\":{\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"state\":{\"type\":\"ConnectionState\",\"id\":1,\"comment\":null},\"error\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"DataEvent\":{\"fields\":{\"payload\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"SignalEvent\":{\"fields\":{\"payload\":{\"type\":\"dxos.mesh.swarm.Signal\",\"id\":1,\"comment\":null}},\"comment\":null}},\"comment\":null},\"BridgeService\":{\"methods\":{\"Open\":{\"requestType\":\"ConnectionRequest\",\"responseType\":\"BridgeEvent\",\"responseStream\":true,\"comment\":\"\"},\"SendSignal\":{\"requestType\":\"SignalRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"\"},\"SendData\":{\"requestType\":\"DataRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"\"},\"Close\":{\"requestType\":\"CloseRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"\"}},\"comment\":null},\"CloseRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null}},\"comment\":null},\"ConnectionRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"initiator\":{\"type\":\"bool\",\"id\":2,\"comment\":null}},\"comment\":null},\"ConnectionState\":{\"values\":{\"INVALID\":0,\"CONNECTING\":1,\"CONNECTED\":2,\"CLOSED\":3},\"comment\":null,\"comments\":{\"INVALID\":null,\"CONNECTING\":null,\"CONNECTED\":null,\"CLOSED\":null}},\"DataRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"SignalRequest\":{\"fields\":{\"proxyId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"signal\":{\"type\":\"dxos.mesh.swarm.Signal\",\"id\":2,\"comment\":null}},\"comment\":null}}},\"broadcast\":{\"nested\":{\"Packet\":{\"oneofs\":{\"_from\":{\"oneof\":[\"from\"]}},\"fields\":{\"seq\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"origin\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"from\":{\"type\":\"bytes\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"data\":{\"type\":\"bytes\",\"id\":4,\"comment\":null}},\"comment\":null}}},\"messaging\":{\"nested\":{\"Acknowledgement\":{\"fields\":{\"messageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"MessageId of the Message that is being acknowledged.\"}},\"comment\":null},\"ReliablePayload\":{\"fields\":{\"messageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":\"Unique message identifier. Used for Acknolegment.\"},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":\"Payload for signal server netwrok.\"}},\"comment\":null}}},\"muxer\":{\"nested\":{\"Command\":{\"oneofs\":{\"payload\":{\"oneof\":[\"openChannel\",\"data\",\"destroy\"],\"comment\":null}},\"fields\":{\"openChannel\":{\"type\":\"OpenChannel\",\"id\":1,\"comment\":null},\"data\":{\"type\":\"Data\",\"id\":2,\"comment\":null},\"destroy\":{\"type\":\"Destroy\",\"id\":3,\"comment\":null}},\"comment\":\"Root type for messages sent over the stream.\"},\"Data\":{\"fields\":{\"channelId\":{\"type\":\"int32\",\"id\":1,\"comment\":\"Identifier for the channel as assigned by the remote peer.\\nNOTE: An OpenChannel message must received before any data is sent on a channel.\\nAny data messages sent before that, should be ignored.\"},\"data\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Destroy\":{\"oneofs\":{\"_error\":{\"oneof\":[\"error\"]}},\"fields\":{\"error\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Error that caused the termination.\"}},\"comment\":\"Terminate the connection. The other peer can expect the connection to be closed.\"},\"OpenChannel\":{\"oneofs\":{\"_contentType\":{\"oneof\":[\"contentType\"]}},\"fields\":{\"id\":{\"type\":\"int32\",\"id\":1,\"comment\":\"Session-specific ID for the channel.\"},\"tag\":{\"type\":\"string\",\"id\":2,\"comment\":\"Stable identifier for the channel that is agreed upon by both peers.\"},\"contentType\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Optional Mime-type or URL describing the protocol that is hosted ober this stream. Used for introspection.\"}},\"comment\":\"Notify the remote peer that we are opening a channel.\\n\\nMeans that we are ready to receive data on the channel.\\nThe remote peer could now send data messages with this channel id that will be atributed to this channel.\\n\\nThe local peer must buffer any data messages until the remote peer replies with OpenChannel for this tag.\"}}},\"presence\":{\"nested\":{\"Alive\":{\"oneofs\":{\"_metadata\":{\"oneof\":[\"metadata\"]}},\"fields\":{\"peerId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"connections\":{\"rule\":\"repeated\",\"type\":\"Connection\",\"id\":2,\"comment\":null},\"metadata\":{\"type\":\"bytes\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Connection\":{\"oneofs\":{\"_initiator\":{\"oneof\":[\"initiator\"]}},\"fields\":{\"peerId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"initiator\":{\"type\":\"bool\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}},\"comment\":null}}},\"protocol\":{\"nested\":{\"Buffer\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"Error\":{\"fields\":{\"code\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"message\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"Message\":{\"fields\":{\"nmId\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"nmResponse\":{\"type\":\"bool\",\"id\":2,\"comment\":null},\"nmEphemeral\":{\"type\":\"bool\",\"id\":3,\"comment\":null},\"nmData\":{\"type\":\"google.protobuf.Any\",\"id\":4,\"comment\":null}},\"comment\":null}}},\"replicator\":{\"nested\":{\"Container\":{\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"data\":{\"rule\":\"repeated\",\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null},\"Feed\":{\"oneofs\":{\"_key\":{\"oneof\":[\"key\"]},\"_discoveryKey\":{\"oneof\":[\"discoveryKey\"]}},\"fields\":{\"key\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"discoveryKey\":{\"type\":\"bytes\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null}}},\"signal\":{\"options\":{\"go_package\":\"github.com/dxos/kube/go/signal/pb\"},\"nested\":{\"HostEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"peerAvailable\"],\"comment\":null}},\"fields\":{\"peerAvailable\":{\"type\":\"SwarmEvent.PeerAvailable\",\"id\":1,\"comment\":null}},\"comment\":\"Goes on a Pub/Sub host topic.\"},\"JoinRequest\":{\"fields\":{\"swarm\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"peer\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"comment\":null},\"Message\":{\"fields\":{\"author\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"recipient\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":3,\"comment\":null}},\"comment\":null},\"PeerEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"message\"],\"comment\":null}},\"fields\":{\"message\":{\"type\":\"Message\",\"id\":1,\"comment\":null}},\"comment\":\"Goes on Pub/Sub peer topic.\"},\"ReceptionRequest\":{\"fields\":{\"peer\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"Signal\":{\"methods\":{\"Join\":{\"requestType\":\"JoinRequest\",\"responseType\":\"SwarmEvent\",\"responseStream\":true,\"comment\":null},\"ReceiveMessages\":{\"requestType\":\"ReceptionRequest\",\"responseType\":\"Message\",\"responseStream\":true,\"comment\":null},\"SendMessage\":{\"requestType\":\"Message\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"SwarmEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"peerAvailable\",\"peerLeft\"],\"comment\":null}},\"fields\":{\"peerAvailable\":{\"type\":\"PeerAvailable\",\"id\":1,\"comment\":\"The peer was announced as available on the swarm.\"},\"peerLeft\":{\"type\":\"PeerLeft\",\"id\":2,\"comment\":\"The peer left, or their announcement timed out.\"}},\"nested\":{\"PeerAvailable\":{\"oneofs\":{\"_until\":{\"oneof\":[\"until\"]},\"_announceBackToHost\":{\"oneof\":[\"announceBackToHost\"]}},\"fields\":{\"peer\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"since\":{\"type\":\"google.protobuf.Timestamp\",\"id\":2,\"comment\":null},\"until\":{\"type\":\"google.protobuf.Timestamp\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null},\"announceBackToHost\":{\"type\":\"bytes\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Only relevant in Pub/Sub. Optional, the host topic to eagerly send PeerAvailable messages back to.\"}},\"comment\":null},\"PeerLeft\":{\"fields\":{\"peer\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null}},\"comment\":\"Goes on Pub/Sub swarm topic and as a Join stream in RPC.\"}}},\"swarm\":{\"nested\":{\"Answer\":{\"oneofs\":{\"_offerMessageId\":{\"oneof\":[\"offerMessageId\"]}},\"fields\":{\"accept\":{\"type\":\"bool\",\"id\":1,\"comment\":null},\"offerMessageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"MessageId of the Offer being answered.\"}},\"comment\":null},\"MessageData\":{\"oneofs\":{\"payload\":{\"oneof\":[\"offer\",\"answer\",\"signal\"],\"comment\":null}},\"fields\":{\"offer\":{\"type\":\"Offer\",\"id\":1,\"comment\":null},\"answer\":{\"type\":\"Answer\",\"id\":2,\"comment\":null},\"signal\":{\"type\":\"Signal\",\"id\":3,\"comment\":null}},\"comment\":null},\"Offer\":{\"fields\":{},\"comment\":null},\"Signal\":{\"fields\":{\"payload\":{\"type\":\"google.protobuf.Struct\",\"id\":1,\"comment\":null}},\"comment\":null},\"SwarmMessage\":{\"fields\":{\"topic\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":\"Swarm identefier.\"},\"sessionId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":4,\"comment\":\"Unique connection identifier.\"},\"data\":{\"type\":\"MessageData\",\"id\":5,\"comment\":\"Message payload.\"},\"messageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":6,\"comment\":\"Unique message identifier. Used for Acknolegment and matching Anwers to Offers.\"}},\"comment\":null}}},\"teleport\":{\"nested\":{\"control\":{\"nested\":{\"ControlService\":{\"methods\":{\"RegisterExtension\":{\"requestType\":\"RegisterExtensionRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null},\"Heartbeat\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Controls the lifycycle of the teleport session and its exentsions.\"},\"RegisterExtensionRequest\":{\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"comment\":\"Must not contain slashes: /[\\\\w_.]+/. Example: `dxos.mesh.teleport.control`.\"}},\"comment\":null}}},\"presence\":{\"nested\":{\"PeerState\":{\"fields\":{\"peerId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"connections\":{\"rule\":\"repeated\",\"type\":\"dxos.keys.PublicKey\",\"id\":2,\"comment\":\"Will be used to build network graph\"},\"messageId\":{\"type\":\"dxos.keys.PublicKey\",\"id\":3,\"comment\":\"Peer tracks what had been sent by message id\"},\"timestamp\":{\"type\":\"google.protobuf.Timestamp\",\"id\":4,\"comment\":null}},\"comment\":null},\"PresenceService\":{\"methods\":{\"Announce\":{\"requestType\":\"PeerState\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null}}},\"replicator\":{\"nested\":{\"FeedInfo\":{\"fields\":{\"feedKey\":{\"type\":\"dxos.keys.PublicKey\",\"id\":1,\"comment\":null},\"download\":{\"type\":\"bool\",\"id\":2,\"comment\":\"set if the peer whishes to download the data from the feed.\"},\"upload\":{\"type\":\"bool\",\"id\":3,\"comment\":\"set if the peer whishes to updload the data from the feed.\"}},\"comment\":null},\"ReplicatorService\":{\"methods\":{\"UpdateFeeds\":{\"requestType\":\"UpdateFeedsRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Notify about available feeds.\"},\"StartReplication\":{\"requestType\":\"StartReplicationRequest\",\"responseType\":\"StartReplicationResponse\",\"comment\":\"Start replicating feed. If this feed is already being replicated, the existing replication session must be stopped.\"},\"StopReplication\":{\"requestType\":\"StopReplicationRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Stop replicating feed.\"}},\"comment\":\"RPC verbs for replication teleport extension.\\nAssumes one peer is designated an initiator.\\nThe initiator will start and stop replication streams.\\nThe other peer will send updates using the UpdateFeeds method.\"},\"StartReplicationRequest\":{\"fields\":{\"info\":{\"type\":\"FeedInfo\",\"id\":1,\"comment\":null}},\"comment\":null},\"StartReplicationResponse\":{\"oneofs\":{\"_streamTag\":{\"oneof\":[\"streamTag\"]}},\"fields\":{\"streamTag\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Tag of the stream the peers will use for the replication.\\nSet to null or \\\"\\\" (empty string) of the peer does not wish to replicate the feed.\\n\\nA new stream must be open with unique tag to start replicating. Existing streams cannot be reused.\"}},\"comment\":null},\"StopReplicationRequest\":{\"fields\":{\"info\":{\"type\":\"FeedInfo\",\"id\":1,\"comment\":null}},\"comment\":null},\"UpdateFeedsRequest\":{\"fields\":{\"feeds\":{\"rule\":\"repeated\",\"type\":\"FeedInfo\",\"id\":1,\"comment\":null}},\"comment\":null}}}}}}},\"registry\":{\"nested\":{\"Record\":{\"oneofs\":{\"_created\":{\"oneof\":[\"created\"]},\"_displayName\":{\"oneof\":[\"displayName\"]},\"_description\":{\"oneof\":[\"description\"]},\"kind\":{\"oneof\":[\"type\",\"payload\"],\"comment\":null}},\"fields\":{\"created\":{\"type\":\"google.protobuf.Timestamp\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Record creation timetstamp.\"},\"displayName\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Human-readable name of record.\"},\"description\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"Record description.\"},\"tags\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":4,\"comment\":\"Optional record tags.\"},\"type\":{\"type\":\"Type\",\"id\":100,\"comment\":\"Type record variant.\"},\"payload\":{\"type\":\"Extension\",\"id\":101,\"comment\":\"Data record variant.\"}},\"nested\":{\"Extension\":{\"fields\":{\"typeRecord\":{\"type\":\"bytes\",\"id\":1,\"comment\":\"CID of type record.\"},\"data\":{\"type\":\"bytes\",\"id\":2,\"comment\":\"Serialized payload data.\"}},\"comment\":\"Data with a reference to a type record that defines the encoding.\"},\"Type\":{\"oneofs\":{\"_protobufIpfsCid\":{\"oneof\":[\"protobufIpfsCid\"]}},\"fields\":{\"messageName\":{\"type\":\"string\",\"id\":1,\"comment\":\"FQ protobuf message name.\"},\"protobufDefs\":{\"type\":\"google.protobuf.Struct\",\"id\":2,\"comment\":\"Set of protobuf messages encoded.\"},\"protobufIpfsCid\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":\"CID of protobuf source file.\"}},\"comment\":\"Types are system records that define protocol-buffer schema of other records.\"}},\"comment\":null}}},\"rpc\":{\"options\":{\"go_package\":\"github.com/dxos/kube/go/dxrpc/pb\"},\"nested\":{\"Error\":{\"oneofs\":{\"_name\":{\"oneof\":[\"name\"]},\"_message\":{\"oneof\":[\"message\"]},\"_stack\":{\"oneof\":[\"stack\"]}},\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"message\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"stack\":{\"type\":\"string\",\"id\":3,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"MessageTrace\":{\"fields\":{\"direction\":{\"type\":\"Direction\",\"id\":1,\"comment\":null},\"data\":{\"type\":\"bytes\",\"id\":2,\"comment\":null}},\"nested\":{\"Direction\":{\"values\":{\"INCOMING\":0,\"OUTGOING\":1},\"comment\":null,\"comments\":{\"INCOMING\":null,\"OUTGOING\":null}}},\"comment\":null},\"Request\":{\"fields\":{\"id\":{\"type\":\"int32\",\"id\":1,\"comment\":null},\"method\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":3,\"comment\":null},\"stream\":{\"type\":\"bool\",\"id\":4,\"comment\":null}},\"comment\":null},\"Response\":{\"oneofs\":{\"content\":{\"oneof\":[\"payload\",\"error\",\"close\",\"streamReady\"],\"comment\":null}},\"fields\":{\"id\":{\"type\":\"int32\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null},\"error\":{\"type\":\"Error\",\"id\":3,\"comment\":null},\"close\":{\"type\":\"bool\",\"id\":4,\"comment\":\"Sent when stream is closed without an error.\"},\"streamReady\":{\"type\":\"bool\",\"id\":5,\"comment\":\"Sent when the server has processed a request with a streaming response.\\nCan be skipped by the server.\\nIn this case the first payload should be treated as the server being ready.\"}},\"comment\":null},\"RpcMessage\":{\"oneofs\":{\"content\":{\"oneof\":[\"request\",\"response\",\"open\",\"openAck\",\"streamClose\"],\"comment\":null}},\"fields\":{\"request\":{\"type\":\"Request\",\"id\":1,\"comment\":null},\"response\":{\"type\":\"Response\",\"id\":2,\"comment\":null},\"open\":{\"type\":\"bool\",\"id\":3,\"comment\":\"Means that the node is trying to open the connection.\"},\"openAck\":{\"type\":\"bool\",\"id\":4,\"comment\":\"Means that the node has received the \\\"open\\\" message and is ready to perform requests.\"},\"streamClose\":{\"type\":\"StreamClose\",\"id\":5,\"comment\":null}},\"comment\":null},\"StreamClose\":{\"fields\":{\"id\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"service\":{\"nested\":{\"publisher\":{\"options\":{\"go_package\":\"github.com/dxos/kube/publisher/pb\"},\"nested\":{\"ListResponse\":{\"fields\":{\"modules\":{\"rule\":\"repeated\",\"type\":\"dxos.config.Module\",\"id\":1,\"comment\":null}},\"comment\":null},\"Publisher\":{\"methods\":{\"Publish\":{\"requestType\":\"PublishRequest\",\"responseType\":\"PublishResponse\",\"comment\":null},\"List\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"ListResponse\",\"comment\":null},\"Reset\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"ResetResponse\",\"comment\":null}},\"comment\":null},\"PublishRequest\":{\"fields\":{\"package\":{\"type\":\"dxos.config.Package\",\"id\":1,\"comment\":null},\"skipExisting\":{\"type\":\"bool\",\"id\":2,\"comment\":null}},\"comment\":null},\"PublishResponse\":{\"fields\":{\"modules\":{\"rule\":\"repeated\",\"type\":\"PublishedModule\",\"id\":1,\"comment\":null}},\"nested\":{\"PublishedModule\":{\"fields\":{\"module\":{\"type\":\"dxos.config.Module\",\"id\":1,\"comment\":null},\"urls\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null}},\"comment\":null},\"ResetResponse\":{\"fields\":{\"count\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"scheduler\":{\"options\":{\"go_package\":\"github.com/dxos/kube/scheduler/pb\"},\"nested\":{\"Bot\":{\"oneofs\":{\"_spec\":{\"oneof\":[\"spec\"]},\"_stats\":{\"oneof\":[\"stats\"]},\"_identityKey\":{\"oneof\":[\"identityKey\"]}},\"fields\":{\"id\":{\"type\":\"bytes\",\"id\":1,\"comment\":\"Scheduler\"},\"state\":{\"type\":\"State\",\"id\":2,\"comment\":\"Current state.\"},\"desiredState\":{\"type\":\"State\",\"id\":3,\"comment\":\"Desired state.\"},\"spec\":{\"type\":\"Spec\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"Omitted when returned from the Query RPC.\"},\"stats\":{\"type\":\"Stats\",\"id\":5,\"options\":{\"proto3_optional\":true},\"comment\":\"Omitted when returned from the Query RPC.\"},\"identityKey\":{\"type\":\"bytes\",\"id\":6,\"options\":{\"proto3_optional\":true},\"comment\":\"Identity key of the bot profile.\"}},\"nested\":{\"Spec\":{\"fields\":{\"executable\":{\"type\":\"string\",\"id\":1,\"comment\":\"URL to the bot executable. KUBEs support file:// and ipfs:// urls.\"},\"echo\":{\"type\":\"Echo\",\"id\":2,\"comment\":null}},\"nested\":{\"Echo\":{\"fields\":{\"spaceKey\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"invitation\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null}},\"comment\":null},\"Stats\":{\"oneofs\":{\"_pid\":{\"oneof\":[\"pid\"]},\"_executableDownloaded\":{\"oneof\":[\"executableDownloaded\"]},\"_created\":{\"oneof\":[\"created\"]},\"_started\":{\"oneof\":[\"started\"]},\"_stopped\":{\"oneof\":[\"stopped\"]},\"_lastPingTime\":{\"oneof\":[\"lastPingTime\"]},\"_exitCode\":{\"oneof\":[\"exitCode\"]},\"_errorMessage\":{\"oneof\":[\"errorMessage\"]}},\"fields\":{\"pid\":{\"type\":\"int64\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":null},\"executableDownloaded\":{\"type\":\"google.protobuf.Timestamp\",\"id\":10,\"options\":{\"proto3_optional\":true},\"comment\":null},\"created\":{\"type\":\"google.protobuf.Timestamp\",\"id\":11,\"options\":{\"proto3_optional\":true},\"comment\":null},\"started\":{\"type\":\"google.protobuf.Timestamp\",\"id\":12,\"options\":{\"proto3_optional\":true},\"comment\":null},\"stopped\":{\"type\":\"google.protobuf.Timestamp\",\"id\":13,\"options\":{\"proto3_optional\":true},\"comment\":null},\"lastPingTime\":{\"type\":\"google.protobuf.Timestamp\",\"id\":14,\"options\":{\"proto3_optional\":true},\"comment\":null},\"exitCode\":{\"type\":\"int32\",\"id\":30,\"options\":{\"proto3_optional\":true},\"comment\":null},\"errorMessage\":{\"type\":\"string\",\"id\":31,\"options\":{\"proto3_optional\":true},\"comment\":null},\"cpuUsage\":{\"type\":\"CPUUsage\",\"id\":40,\"comment\":null},\"memoryUsage\":{\"type\":\"MemoryUsage\",\"id\":41,\"comment\":null},\"diskUsage\":{\"type\":\"DiskUsage\",\"id\":42,\"comment\":null},\"networkUsage\":{\"type\":\"NetworkUsage\",\"id\":43,\"comment\":null},\"echo\":{\"type\":\"Echo\",\"id\":44,\"comment\":null}},\"nested\":{\"CPUUsage\":{\"fields\":{\"cores\":{\"type\":\"double\",\"id\":1,\"comment\":null}},\"comment\":null},\"DiskUsage\":{\"fields\":{\"bytes\":{\"type\":\"int64\",\"id\":1,\"comment\":null}},\"comment\":null},\"Echo\":{\"fields\":{},\"comment\":\"Echo stats.\"},\"MemoryUsage\":{\"fields\":{\"bytes\":{\"type\":\"int64\",\"id\":1,\"comment\":null}},\"comment\":null},\"NetworkUsage\":{\"fields\":{},\"comment\":null}},\"comment\":null}},\"comment\":null},\"BotConfig\":{\"fields\":{\"spec\":{\"type\":\"Bot.Spec.Echo\",\"id\":1,\"comment\":null},\"clientConfig\":{\"type\":\"dxos.config.Config\",\"id\":2,\"comment\":null}},\"comment\":null},\"BotController\":{\"methods\":{\"Query\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"QueryResponse\",\"comment\":\"Enumerate all services.\"},\"Describe\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Bot\",\"comment\":\"Query information about a specific service\"},\"Create\":{\"requestType\":\"CreateRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Create a new service.\"},\"Remove\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Remove a service with its identity and persistent storage.\"},\"Start\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Start the bot.\"},\"Stop\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Start the bot.\"},\"Restart\":{\"requestType\":\"ServiceRequest\",\"responseType\":\"Progress\",\"responseStream\":true,\"comment\":\"Start the bot.\"},\"Call\":{\"requestType\":\"Request\",\"responseType\":\"Reply\",\"responseStream\":true,\"comment\":\"Issue an RPC request to the bot instance.\"}},\"comment\":\"Exposed by bot controller to clients. Allows creation and management of bots.\"},\"BotHost\":{\"methods\":{\"GetConfig\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"BotConfig\",\"comment\":null},\"SendReport\":{\"requestType\":\"Report\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":\"Internal service exposed by bot controller to the bot.\"},\"BotService\":{\"methods\":{\"Call\":{\"requestType\":\"Request\",\"responseType\":\"Reply\",\"responseStream\":true,\"comment\":\"Issue an RPC request to the bot instance.\"},\"Healthcheck\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":\"Called by the bot controller to verify that the bot is functional.\"}},\"comment\":\"Internal service exposed by bot to the bot controller.\"},\"CreateRequest\":{\"oneofs\":{\"_desiredState\":{\"oneof\":[\"desiredState\"]}},\"fields\":{\"spec\":{\"type\":\"Bot.Spec\",\"id\":1,\"comment\":null},\"desiredState\":{\"type\":\"State\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"comment\":null},\"Progress\":{\"fields\":{\"state\":{\"type\":\"Bot\",\"id\":1,\"comment\":null}},\"comment\":null},\"QueryResponse\":{\"fields\":{\"services\":{\"rule\":\"repeated\",\"type\":\"Bot\",\"id\":1,\"comment\":null}},\"comment\":null},\"Reply\":{\"fields\":{\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"Report\":{\"oneofs\":{\"_identityKey\":{\"oneof\":[\"identityKey\"]}},\"fields\":{\"identityKey\":{\"type\":\"bytes\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Identity key of the bot profile.\"}},\"comment\":null},\"Request\":{\"fields\":{\"serviceId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null},\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":2,\"comment\":null}},\"comment\":null},\"ServiceRequest\":{\"fields\":{\"serviceId\":{\"type\":\"bytes\",\"id\":1,\"comment\":null}},\"comment\":null},\"State\":{\"values\":{\"INVALID\":0,\"STOPPED\":1,\"STARTING\":2,\"RUNNING\":3,\"FAILING\":4},\"comment\":null,\"comments\":{\"INVALID\":null,\"STOPPED\":null,\"STARTING\":null,\"RUNNING\":null,\"FAILING\":null}}}}}},\"type\":{\"nested\":{\"App\":{\"oneofs\":{\"_version\":{\"oneof\":[\"version\"]},\"_license\":{\"oneof\":[\"license\"]},\"_bundle\":{\"oneof\":[\"bundle\"]},\"kind\":{\"oneof\":[\"web\"],\"comment\":null},\"_extension\":{\"oneof\":[\"extension\"]}},\"fields\":{\"version\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Optional **semver 2.0** compliant record version.\\nShould conform to the semver regex (see https://semver.org/).\"},\"license\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":3,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":4,\"options\":{\"proto3_optional\":true},\"comment\":\"App bundle content Id in the CID v0 format (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats).\"},\"web\":{\"type\":\"Web\",\"id\":100,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":200,\"options\":{\"proto3_optional\":true},\"comment\":null}},\"nested\":{\"Web\":{\"oneofs\":{\"_indexFile\":{\"oneof\":[\"indexFile\"]},\"_entryPoint\":{\"oneof\":[\"entryPoint\"]}},\"fields\":{\"indexFile\":{\"type\":\"string\",\"id\":1,\"options\":{\"proto3_optional\":true},\"comment\":\"Relative path in resource to entrypoint, defaults to index.html.\"},\"entryPoint\":{\"type\":\"string\",\"id\":2,\"options\":{\"proto3_optional\":true},\"comment\":\"Relative path in resource to entrypoint, defaults to main.js.\"}},\"comment\":null}},\"comment\":null},\"AppServer\":{\"fields\":{\"url\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"Bot\":{\"fields\":{\"version\":{\"type\":\"string\",\"id\":1,\"comment\":\"Optional **semver 2.0** compliant record version.\\nShould conform to the semver regex (see https://semver.org/).\"},\"license\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"repos\":{\"rule\":\"repeated\",\"type\":\"Repo\",\"id\":3,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":4,\"comment\":\"Bot bundle content Id in the CID v0 format (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats).\"},\"localPath\":{\"type\":\"string\",\"id\":5,\"comment\":\"This would be the path to the bot executable in bot-factory's file-system.\"},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"BotFactory\":{\"fields\":{\"topic\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"File\":{\"fields\":{\"contentType\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"fileName\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"bundle\":{\"type\":\"bytes\",\"id\":3,\"comment\":\"File content Id in the CID v0 format (https://docs.ipfs.io/concepts/content-addressing/#identifier-formats).\"},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"IPFS\":{\"fields\":{\"protocol\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"addresses\":{\"rule\":\"repeated\",\"type\":\"string\",\"id\":2,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"KUBE\":{\"fields\":{\"url\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"Repo\":{\"fields\":{\"name\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"url\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"version\":{\"type\":\"string\",\"id\":3,\"comment\":null}},\"comment\":null},\"Service\":{\"fields\":{\"type\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"kube\":{\"type\":\"bytes\",\"id\":2,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"Signal\":{\"fields\":{\"bootstrap\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"url\":{\"type\":\"string\",\"id\":2,\"comment\":null},\"extension\":{\"type\":\"dxos.registry.Record.Extension\",\"id\":100,\"comment\":null}},\"comment\":null},\"StateMachine\":{\"fields\":{\"mutationProtobufDefs\":{\"type\":\"google.protobuf.Struct\",\"id\":1,\"comment\":\"Set of protobuf messages.\"},\"snapshotProtobufDefs\":{\"type\":\"google.protobuf.Struct\",\"id\":2,\"comment\":\"Set of protobuf messages.\"},\"codeIpfsCid\":{\"type\":\"bytes\",\"id\":3,\"comment\":null}},\"comment\":null}}}}},\"example\":{\"nested\":{\"testing\":{\"nested\":{\"data\":{\"nested\":{\"TestItemMutation\":{\"fields\":{\"key\":{\"type\":\"string\",\"id\":1,\"comment\":null},\"value\":{\"type\":\"string\",\"id\":2,\"comment\":null}},\"comment\":null},\"TestItemSnapshot\":{\"fields\":{\"keys\":{\"rule\":\"repeated\",\"type\":\"TestItemMutation\",\"id\":1,\"comment\":null}},\"comment\":null},\"TestListMutation\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null}}},\"rpc\":{\"nested\":{\"MessageWithAny\":{\"fields\":{\"payload\":{\"type\":\"google.protobuf.Any\",\"id\":1,\"comment\":null}},\"comment\":null},\"PingReponse\":{\"fields\":{\"nonce\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null},\"PingRequest\":{\"fields\":{\"nonce\":{\"type\":\"int32\",\"id\":1,\"comment\":null}},\"comment\":null},\"PingService\":{\"methods\":{\"Ping\":{\"requestType\":\"PingRequest\",\"responseType\":\"PingReponse\",\"comment\":null}},\"comment\":null},\"TestAnyService\":{\"methods\":{\"TestCall\":{\"requestType\":\"MessageWithAny\",\"responseType\":\"MessageWithAny\",\"comment\":null}},\"comment\":null},\"TestRpcRequest\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"TestRpcResponse\":{\"fields\":{\"data\":{\"type\":\"string\",\"id\":1,\"comment\":null}},\"comment\":null},\"TestService\":{\"methods\":{\"TestCall\":{\"requestType\":\"TestRpcRequest\",\"responseType\":\"TestRpcResponse\",\"comment\":null},\"VoidCall\":{\"requestType\":\"google.protobuf.Empty\",\"responseType\":\"google.protobuf.Empty\",\"comment\":null}},\"comment\":null},\"TestStreamService\":{\"methods\":{\"TestCall\":{\"requestType\":\"TestRpcRequest\",\"responseType\":\"TestRpcResponse\",\"responseStream\":true,\"comment\":null}},\"comment\":null}}}}}}},\"google\":{\"nested\":{\"protobuf\":{\"nested\":{\"Any\":{\"fields\":{\"type_url\":{\"type\":\"string\",\"id\":1},\"value\":{\"type\":\"bytes\",\"id\":2}},\"comment\":null},\"BoolValue\":{\"fields\":{\"value\":{\"type\":\"bool\",\"id\":1}},\"comment\":null},\"BytesValue\":{\"fields\":{\"value\":{\"type\":\"bytes\",\"id\":1}},\"comment\":null},\"DoubleValue\":{\"fields\":{\"value\":{\"type\":\"double\",\"id\":1}},\"comment\":null},\"Empty\":{\"fields\":{},\"comment\":null},\"FloatValue\":{\"fields\":{\"value\":{\"type\":\"float\",\"id\":1}},\"comment\":null},\"Int32Value\":{\"fields\":{\"value\":{\"type\":\"int32\",\"id\":1}},\"comment\":null},\"Int64Value\":{\"fields\":{\"value\":{\"type\":\"int64\",\"id\":1}},\"comment\":null},\"ListValue\":{\"fields\":{\"values\":{\"rule\":\"repeated\",\"type\":\"Value\",\"id\":1}},\"comment\":null},\"NullValue\":{\"values\":{\"NULL_VALUE\":0},\"comments\":{}},\"StringValue\":{\"fields\":{\"value\":{\"type\":\"string\",\"id\":1}},\"comment\":null},\"Struct\":{\"fields\":{\"fields\":{\"keyType\":\"string\",\"type\":\"Value\",\"id\":1}},\"comment\":null},\"Timestamp\":{\"fields\":{\"seconds\":{\"type\":\"int64\",\"id\":1},\"nanos\":{\"type\":\"int32\",\"id\":2}},\"comment\":null},\"UInt32Value\":{\"fields\":{\"value\":{\"type\":\"uint32\",\"id\":1}},\"comment\":null},\"UInt64Value\":{\"fields\":{\"value\":{\"type\":\"uint64\",\"id\":1}},\"comment\":null},\"Value\":{\"oneofs\":{\"kind\":{\"oneof\":[\"nullValue\",\"numberValue\",\"stringValue\",\"boolValue\",\"structValue\",\"listValue\"]}},\"fields\":{\"nullValue\":{\"type\":\"NullValue\",\"id\":1},\"numberValue\":{\"type\":\"double\",\"id\":2},\"stringValue\":{\"type\":\"string\",\"id\":3},\"boolValue\":{\"type\":\"bool\",\"id\":4},\"structValue\":{\"type\":\"Struct\",\"id\":5},\"listValue\":{\"type\":\"ListValue\",\"id\":6}},\"comment\":null}}}}}}}");
402
436
  export const schema = Schema.fromJson<TYPES, SERVICES>(schemaJson, substitutions);