@dxos/protocols 0.8.4-main.5acf9ea → 0.8.4-main.5ea62a8

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 (41) hide show
  1. package/dist/src/buf/proto/gen/dxos/config_pb.d.ts +35 -6
  2. package/dist/src/buf/proto/gen/dxos/config_pb.d.ts.map +1 -1
  3. package/dist/src/buf/proto/gen/dxos/config_pb.js +6 -1
  4. package/dist/src/buf/proto/gen/dxos/config_pb.js.map +1 -1
  5. package/dist/src/edge-error.d.ts +1 -1
  6. package/dist/src/edge-error.d.ts.map +1 -1
  7. package/dist/src/edge-error.js +39 -1
  8. package/dist/src/edge-error.js.map +1 -1
  9. package/dist/src/edge.d.ts +51 -3
  10. package/dist/src/edge.d.ts.map +1 -1
  11. package/dist/src/edge.js +7 -1
  12. package/dist/src/edge.js.map +1 -1
  13. package/dist/src/errors/base-errors.d.ts.map +1 -1
  14. package/dist/src/errors/base-errors.js +1 -0
  15. package/dist/src/errors/base-errors.js.map +1 -1
  16. package/dist/src/errors/encoding.d.ts.map +1 -1
  17. package/dist/src/errors/encoding.js.map +1 -1
  18. package/dist/src/errors/errors.d.ts +1 -1
  19. package/dist/src/errors/errors.d.ts.map +1 -1
  20. package/dist/src/errors/errors.js.map +1 -1
  21. package/dist/src/errors/helpers.d.ts.map +1 -1
  22. package/dist/src/errors/helpers.js.map +1 -1
  23. package/dist/src/proto/gen/dxos/config.d.ts +28 -2
  24. package/dist/src/proto/gen/dxos/config.d.ts.map +1 -1
  25. package/dist/src/proto/gen/dxos/config.js.map +1 -1
  26. package/dist/src/proto/gen/index.d.ts +1 -0
  27. package/dist/src/proto/gen/index.d.ts.map +1 -1
  28. package/dist/src/proto/gen/index.js +1 -1
  29. package/dist/src/proto/gen/index.js.map +1 -1
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +10 -9
  32. package/src/buf/proto/gen/dxos/config_pb.ts +40 -7
  33. package/src/edge-error.ts +52 -1
  34. package/src/edge.ts +60 -3
  35. package/src/errors/base-errors.ts +1 -0
  36. package/src/errors/encoding.ts +2 -1
  37. package/src/errors/errors.ts +2 -1
  38. package/src/errors/helpers.ts +2 -1
  39. package/src/proto/dxos/config.proto +36 -40
  40. package/src/proto/gen/dxos/config.ts +28 -2
  41. package/src/proto/gen/index.ts +2 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/protocols",
3
- "version": "0.8.4-main.5acf9ea",
3
+ "version": "0.8.4-main.5ea62a8",
4
4
  "description": "Protobuf definitions for DXOS protocols.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -60,18 +60,19 @@
60
60
  ],
61
61
  "dependencies": {
62
62
  "@bufbuild/protobuf": "^2.1.0",
63
- "@dxos/codec-protobuf": "0.8.4-main.5acf9ea",
64
- "@dxos/effect": "0.8.4-main.5acf9ea",
65
- "@dxos/invariant": "0.8.4-main.5acf9ea",
66
- "@dxos/keys": "0.8.4-main.5acf9ea",
67
- "@dxos/timeframe": "0.8.4-main.5acf9ea",
68
- "@dxos/util": "0.8.4-main.5acf9ea"
63
+ "@dxos/codec-protobuf": "0.8.4-main.5ea62a8",
64
+ "@dxos/effect": "0.8.4-main.5ea62a8",
65
+ "@dxos/invariant": "0.8.4-main.5ea62a8",
66
+ "@dxos/errors": "0.8.4-main.5ea62a8",
67
+ "@dxos/keys": "0.8.4-main.5ea62a8",
68
+ "@dxos/timeframe": "0.8.4-main.5ea62a8",
69
+ "@dxos/util": "0.8.4-main.5ea62a8"
69
70
  },
70
71
  "devDependencies": {
71
72
  "@bufbuild/buf": "^1.43.0",
72
73
  "@bufbuild/protoc-gen-es": "^2.1.0",
73
- "effect": "3.17.0",
74
- "@dxos/protobuf-compiler": "0.8.4-main.5acf9ea"
74
+ "effect": "3.17.7",
75
+ "@dxos/protobuf-compiler": "0.8.4-main.5ea62a8"
75
76
  },
76
77
  "peerDependencies": {
77
78
  "effect": "^3.13.3"
@@ -16,7 +16,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
16
16
  * Describes the file dxos/config.proto.
17
17
  */
18
18
  export const file_dxos_config: GenFile = /*@__PURE__*/
19
- fileDesc("ChFkeG9zL2NvbmZpZy5wcm90bxILZHhvcy5jb25maWcimgEKBkNvbmZpZxIUCgd2ZXJzaW9uGAEgASgFSACIAQESKgoHcGFja2FnZRgCIAEoCzIULmR4b3MuY29uZmlnLlBhY2thZ2VIAYgBARIqCgdydW50aW1lGAMgASgLMhQuZHhvcy5jb25maWcuUnVudGltZUgCiAEBQgoKCF92ZXJzaW9uQgoKCF9wYWNrYWdlQgoKCF9ydW50aW1lInMKB1BhY2thZ2USFAoHbGljZW5zZRgBIAEoCUgAiAEBEiAKBXJlcG9zGAIgAygLMhEuZHhvcy5jb25maWcuUmVwbxIkCgdtb2R1bGVzGAMgAygLMhMuZHhvcy5jb25maWcuTW9kdWxlQgoKCF9saWNlbnNlIl4KBFJlcG8SEQoEbmFtZRgBIAEoCUgAiAEBEhAKA3VybBgCIAEoCUgBiAEBEhQKB3ZlcnNpb24YAyABKAlIAogBAUIHCgVfbmFtZUIGCgRfdXJsQgoKCF92ZXJzaW9uIuwECgZNb2R1bGUSDwoCaWQYCCABKAlIAIgBARIRCgRuYW1lGAEgASgJSAGIAQESEQoEdHlwZRgCIAEoCUgCiAEBEhkKDGRpc3BsYXlfbmFtZRgDIAEoCUgDiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSASIAQESDAoEdGFncxgFIAMoCRITCgZidW5kbGUYBiABKAxIBYgBARITCgZ0dW5uZWwYByABKAhIBogBARIhCgRkZXBzGAogAygLMhMuZHhvcy5jb25maWcuTW9kdWxlEi0KBWJ1aWxkGGQgASgLMhkuZHhvcy5jb25maWcuTW9kdWxlLkJ1aWxkSAeIAQESIAoFcmVwb3MYZSADKAsyES5keG9zLmNvbmZpZy5SZXBvEioKBnJlY29yZBjIASABKAsyFC5nb29nbGUucHJvdG9idWYuQW55SAiIAQEauAEKBUJ1aWxkEhQKB2NvbW1hbmQYASABKAlIAIgBARITCgZvdXRkaXIYAiABKAlIAYgBARIUCgd2ZXJzaW9uGAMgASgJSAKIAQESEAoDdGFnGAQgASgJSAOIAQESKQoDZW52GAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQgoKCF9jb21tYW5kQgkKB19vdXRkaXJCCgoIX3ZlcnNpb25CBgoEX3RhZ0IGCgRfZW52QgUKA19pZEIHCgVfbmFtZUIHCgVfdHlwZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfYnVuZGxlQgkKB190dW5uZWxCCAoGX2J1aWxkQgkKB19yZWNvcmQi/jkKB1J1bnRpbWUSMAoGY2xpZW50GAEgASgLMhsuZHhvcy5jb25maWcuUnVudGltZS5DbGllbnRIAIgBARIqCgNhcHAYAiABKAsyGC5keG9zLmNvbmZpZy5SdW50aW1lLkFwcEgBiAEBEioKA2NsaRgDIAEoCzIYLmR4b3MuY29uZmlnLlJ1bnRpbWUuQ0xJSAKIAQESLgoFcHJvcHMYBCABKAsyGi5keG9zLmNvbmZpZy5SdW50aW1lLlByb3BzSAOIAQESNAoIc2VydmljZXMYBSABKAsyHS5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzSASIAQESMAoGc3lzdGVtGAYgASgLMhsuZHhvcy5jb25maWcuUnVudGltZS5TeXN0ZW1IBYgBARIsCgRrdWJlGAcgASgLMhkuZHhvcy5jb25maWcuUnVudGltZS5LdWJlSAaIAQESJwoEa2V5cxgIIAMoCzIZLmR4b3MuY29uZmlnLlJ1bnRpbWUuS2V5cxIuCgVhZ2VudBgJIAEoCzIaLmR4b3MuY29uZmlnLlJ1bnRpbWUuQWdlbnRIB4gBARrICwoGQ2xpZW50EjEKA2xvZxgBIAEoCzIfLmR4b3MuY29uZmlnLlJ1bnRpbWUuQ2xpZW50LkxvZ0gAiAEBEjkKB3N0b3JhZ2UYAiABKAsyIy5keG9zLmNvbmZpZy5SdW50aW1lLkNsaWVudC5TdG9yYWdlSAGIAQESHQoQZW5hYmxlX3NuYXBzaG90cxgDIAEoCEgCiAEBEh4KEXNuYXBzaG90X2ludGVydmFsGAQgASgFSAOIAQESIgoVaW52aXRhdGlvbl9leHBpcmF0aW9uGAUgASgFSASIAQESGgoNcmVtb3RlX3NvdXJjZRgGIAEoCUgFiAEBEi8KInJlbW90ZV9zb3VyY2VfYXV0aGVudGljYXRpb25fdG9rZW4YCCABKAlIBogBARIbCg5kZXZ0b29sc19wcm94eRgHIAEoCUgHiAEBEhwKD2xhenlfc3BhY2Vfb3BlbhgJIAEoCEgIiAEBEiQKF2Rpc2FibGVfcDJwX3JlcGxpY2F0aW9uGAogASgISAmIAQESIwoWZW5hYmxlX3ZlY3Rvcl9pbmRleGluZxgMIAEoCEgKiAEBEkQKDWVkZ2VfZmVhdHVyZXMYCyABKAsyKC5keG9zLmNvbmZpZy5SdW50aW1lLkNsaWVudC5FZGdlRmVhdHVyZXNIC4gBARqxAwoHU3RvcmFnZRIXCgpwZXJzaXN0ZW50GAEgASgISACIAQESSQoJa2V5X3N0b3JlGAIgASgOMjEuZHhvcy5jb25maWcuUnVudGltZS5DbGllbnQuU3RvcmFnZS5TdG9yYWdlRHJpdmVySAGIAQESSgoKZGF0YV9zdG9yZRgDIAEoDjIxLmR4b3MuY29uZmlnLlJ1bnRpbWUuQ2xpZW50LlN0b3JhZ2UuU3RvcmFnZURyaXZlckgCiAEBEhYKCWRhdGFfcm9vdBgEIAEoCUgDiAEBEiAKE3NwYWNlX2ZyYWdtZW50YXRpb24YBSABKAhIBIgBASJqCg1TdG9yYWdlRHJpdmVyEgcKA1JBTRAAEgcKA0lEQhABEgoKBkNIUk9NRRACEgsKB0ZJUkVGT1gQAxIICgROT0RFEAQSCQoFV0VCRlMQBRILCgdMRVZFTEpTEAsSDAoISlNPTkRPV04QDEINCgtfcGVyc2lzdGVudEIMCgpfa2V5X3N0b3JlQg0KC19kYXRhX3N0b3JlQgwKCl9kYXRhX3Jvb3RCFgoUX3NwYWNlX2ZyYWdtZW50YXRpb24aYwoDTG9nEiIKBmZpbHRlchgBIAEoCUINwj4KTE9HX0ZJTFRFUkgAiAEBEiIKBnByZWZpeBgCIAEoCUINwj4KTE9HX1BSRUZJWEgBiAEBQgkKB19maWx0ZXJCCQoHX3ByZWZpeBq4AQoMRWRnZUZlYXR1cmVzEhwKD2ZlZWRfcmVwbGljYXRvchgBIAEoCEgAiAEBEhwKD2VjaG9fcmVwbGljYXRvchgCIAEoCEgBiAEBEhYKCXNpZ25hbGluZxgDIAEoCEgCiAEBEhMKBmFnZW50cxgEIAEoCEgDiAEBQhIKEF9mZWVkX3JlcGxpY2F0b3JCEgoQX2VjaG9fcmVwbGljYXRvckIMCgpfc2lnbmFsaW5nQgkKB19hZ2VudHNCBgoEX2xvZ0IKCghfc3RvcmFnZUITChFfZW5hYmxlX3NuYXBzaG90c0IUChJfc25hcHNob3RfaW50ZXJ2YWxCGAoWX2ludml0YXRpb25fZXhwaXJhdGlvbkIQCg5fcmVtb3RlX3NvdXJjZUIlCiNfcmVtb3RlX3NvdXJjZV9hdXRoZW50aWNhdGlvbl90b2tlbkIRCg9fZGV2dG9vbHNfcHJveHlCEgoQX2xhenlfc3BhY2Vfb3BlbkIaChhfZGlzYWJsZV9wMnBfcmVwbGljYXRpb25CGQoXX2VuYWJsZV92ZWN0b3JfaW5kZXhpbmdCEAoOX2VkZ2VfZmVhdHVyZXMaqwMKA0FwcBIQCgNvcmcYASABKAlIAIgBARISCgV0aGVtZRgCIAEoCUgBiAEBEhQKB3dlYnNpdGUYAyABKAlIAogBARImCgpwdWJsaWNfdXJsGAQgASgJQg3CPgpQVUJMSUNfVVJMSAOIAQESNgoFYnVpbGQYZCABKAsyIi5keG9zLmNvbmZpZy5SdW50aW1lLkFwcC5CdWlsZEluZm9IBIgBARIpCgNlbnYYZSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQEanQEKCUJ1aWxkSW5mbxIWCgl0aW1lc3RhbXAYASABKAlIAIgBARIYCgtjb21taXRfaGFzaBgCIAEoCUgBiAEBEhQKB3ZlcnNpb24YAyABKAlIAogBARITCgZicmFuY2gYBCABKAlIA4gBAUIMCgpfdGltZXN0YW1wQg4KDF9jb21taXRfaGFzaEIKCghfdmVyc2lvbkIJCgdfYnJhbmNoQgYKBF9vcmdCCAoGX3RoZW1lQgoKCF93ZWJzaXRlQg0KC19wdWJsaWNfdXJsQggKBl9idWlsZEIGCgRfZW52GsYBCgVBZ2VudBIyCgdwbHVnaW5zGAEgAygLMiEuZHhvcy5jb25maWcuUnVudGltZS5BZ2VudC5QbHVnaW4aiAEKBlBsdWdpbhIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESFAoHZW5hYmxlZBgDIAEoCEgBiAEBEikKBmNvbmZpZxgKIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlIAogBAUIHCgVfbmFtZUIKCghfZW5hYmxlZEIJCgdfY29uZmlnGssFCgNDTEkSFgoJbm9kZV9wYXRoGAEgASgJSACIAQESMwoDYXBwGAIgASgLMiEuZHhvcy5jb25maWcuUnVudGltZS5DTEkuQXBwU2VydmVIAYgBARI2Cgdjb25zb2xlGAMgASgLMiAuZHhvcy5jb25maWcuUnVudGltZS5DTEkuUGFja2FnZUgCiAEBEjMKBG1kbnMYBCABKAsyIC5keG9zLmNvbmZpZy5SdW50aW1lLkNMSS5QYWNrYWdlSAOIAQESNQoGc2lnbmFsGAUgASgLMiAuZHhvcy5jb25maWcuUnVudGltZS5DTEkuUGFja2FnZUgEiAEBEhcKCm5wbV9jbGllbnQYBiABKAlIBYgBARIUCgdjaGFubmVsGAcgASgJSAaIAQEayAEKCEFwcFNlcnZlEjsKBXNlcnZlGAEgASgLMicuZHhvcy5jb25maWcuUnVudGltZS5DTEkuQXBwU2VydmUuU2VydmVIAIgBARp1CgVTZXJ2ZRITCgZjb25maWcYASABKAlIAIgBARIWCglsb2dpbl9hcHAYAiABKAlIAYgBARIXCgprZXlfcGhyYXNlGAMgASgJSAKIAQFCCQoHX2NvbmZpZ0IMCgpfbG9naW5fYXBwQg0KC19rZXlfcGhyYXNlQggKBl9zZXJ2ZRqHAQoHUGFja2FnZRIUCgdwYWNrYWdlGAEgASgJSACIAQESFAoHY2hhbm5lbBgCIAEoCUgBiAEBEhAKA2JpbhgDIAEoCUgCiAEBEhMKBmNvbmZpZxgEIAEoCUgDiAEBQgoKCF9wYWNrYWdlQgoKCF9jaGFubmVsQgYKBF9iaW5CCQoHX2NvbmZpZ0IMCgpfbm9kZV9wYXRoQgYKBF9hcHBCCgoIX2NvbnNvbGVCBwoFX21kbnNCCQoHX3NpZ25hbEINCgtfbnBtX2NsaWVudEIKCghfY2hhbm5lbBolCgVQcm9wcxISCgV0aXRsZRgBIAEoCUgAiAEBQggKBl90aXRsZRomCgZTeXN0ZW0SEgoFZGVidWcYASABKAlIAIgBAUIICgZfZGVidWcahwoKBEt1YmUSDAoEaG9zdBgBIAEoCRIMCgRwb3J0GAIgASgJEjgKCmF1dG91cGRhdGUYAyABKAsyJC5keG9zLmNvbmZpZy5SdW50aW1lLkt1YmUuQXV0b3VwZGF0ZRIuCgVodHRwcxgEIAEoCzIfLmR4b3MuY29uZmlnLlJ1bnRpbWUuS3ViZS5IdHRwcxIqCgNwMnAYBSABKAsyHS5keG9zLmNvbmZpZy5SdW50aW1lLkt1YmUuUDJQEhAKCGNvbmZob3N0GAYgASgJEgsKA2VudhgHIAMoCRINCgVhbGlhcxgIIAMoCRI4Cgptb25pdG9yaW5nGAkgASgLMiQuZHhvcy5jb25maWcuUnVudGltZS5LdWJlLk1vbml0b3JpbmcSLgoFdHJhY2UYCiABKAsyHy5keG9zLmNvbmZpZy5SdW50aW1lLkt1YmUuVHJhY2USNgoJdGVsZW1ldHJ5GAsgASgLMiMuZHhvcy5jb25maWcuUnVudGltZS5LdWJlLlRlbGVtZXRyeRIyCgdncmF2aXR5GAwgASgLMiEuZHhvcy5jb25maWcuUnVudGltZS5LdWJlLkdyYXZpdHkSPQoNYXBwX3R1bm5lbGluZxgNIAEoCzImLmR4b3MuY29uZmlnLlJ1bnRpbWUuS3ViZS5BcHBUdW5uZWxpbmcSLAoEYm90cxgOIAEoCzIeLmR4b3MuY29uZmlnLlJ1bnRpbWUuS3ViZS5Cb3RzEk8KF2lwZnNfYXBpX2F1dGhvcml6YXRpb25zGA8gAygLMi4uZHhvcy5jb25maWcuUnVudGltZS5LdWJlLkt1Ym9BcGlBdXRob3JpemF0aW9uGi8KCkF1dG91cGRhdGUSDwoHZW5hYmxlZBgBIAEoCBIQCghpbnRlcnZhbBgCIAEoBRptCgVIdHRwcxIPCgdlbmFibGVkGAEgASgIEgwKBHBvcnQYAiABKAkSDQoFZW1haWwYAyABKAkSEAoIY2VydGZpbGUYBCABKAkSDwoHa2V5ZmlsZRgFIAEoCRITCgtkbnNwcm92aWRlchgGIAEoCRo6CgNQMlASEgoKcHJpdmF0ZWtleRgBIAEoCRIMCgRwb3J0GAIgASgJEhEKCWJvb3RzdHJhcBgDIAMoCRpBCgpNb25pdG9yaW5nEg8KB2VuYWJsZWQYASABKAgSEAoIZW5kcG9pbnQYAiABKAkSEAoIaW50ZXJ2YWwYAyABKAUaGQoFVHJhY2USEAoIZGlzYWJsZWQYASABKAgaKwoJVGVsZW1ldHJ5EhAKCGRpc2FibGVkGAEgASgIEgwKBHRhZ3MYAiADKAkaSwoHR3Jhdml0eRIQCghkaXNhYmxlZBgBIAEoCBIMCgRuYW1lGAIgASgJEhQKB2xvZ19kaXIYAyABKAlIAIgBAUIKCghfbG9nX2RpchpaCgxBcHBUdW5uZWxpbmcSDwoHZW5hYmxlZBgBIAEoCBIYChBjb21tYW5kX3RlbXBsYXRlGAIgASgJEhEKCW91dHB1dF9yZRgDIAEoCRIMCgRwb3J0GAQgASgJGikKBEJvdHMSDwoHZW5hYmxlZBgBIAEoCBIQCghpbnRlcnZhbBgCIAEoBRpQChRLdWJvQXBpQXV0aG9yaXphdGlvbhIMCgRuYW1lGAEgASgJEhMKC2F1dGhfc2VjcmV0GAIgASgJEhUKDWFsbG93ZWRfcGF0aHMYAyADKAkazhQKCFNlcnZpY2VzEjUKBGt1YmUYASABKAsyIi5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkt1YmVIAIgBARI5CgNhcHAYAiABKAsyJy5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkFwcFNlcnZlckgBiAEBEjUKBGR4bnMYAyABKAsyIi5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkR4bnNIAogBARI1CgRpcGZzGAQgASgLMiIuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5JcGZzSAOIAQESNwoJc2lnbmFsaW5nGAUgAygLMiQuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5TaWduYWwSLgoDaWNlGAYgAygLMiEuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5JY2USQAoNaWNlX3Byb3ZpZGVycxgOIAMoCzIpLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuSWNlUHJvdmlkZXISOwoHbWFjaGluZRgHIAEoCzIlLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuTWFjaGluZUgEiAEBEjcKA2JvdBgIIAEoCzIlLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuQm90SG9zdEgFiAEBEj8KCXB1Ymxpc2hlchgJIAEoCzInLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuUHVibGlzaGVySAaIAQESQQoKc3VwZXJ2aXNvchgKIAEoCzIoLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuU3VwZXJ2aXNvckgHiAEBEj8KCXR1bm5lbGluZxgLIAEoCzInLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuVHVubmVsaW5nSAiIAQESNwoFZmFhc2QYDCABKAsyIy5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkZhYXNkSAmIAQESRgoNYWdlbnRfaG9zdGluZxgNIAEoCzIqLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuQWdlbnRIb3N0aW5nSAqIAQESNQoEZWRnZRgPIAEoCzIiLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuRWRnZUgLiAEBEjEKAmFpGBAgASgLMiAuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5BaUgMiAEBGusBCgRLdWJlEkQKCWVuZHBvaW50cxgBIAEoCzIsLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuS3ViZS5FbmRwb2ludHNIAIgBARIXCgpwdWJsaWNfdXJsGAIgASgJSAGIAQEaZwoJRW5kcG9pbnRzEhEKBGxvZ3MYASABKAlIAIgBARIVCghzZXJ2aWNlcxgCIAEoCUgBiAEBEhEKBGNlcnQYAyABKAlIAogBAUIHCgVfbG9nc0ILCglfc2VydmljZXNCBwoFX2NlcnRCDAoKX2VuZHBvaW50c0INCgtfcHVibGljX3VybBpLCglBcHBTZXJ2ZXISEwoGcHJlZml4GAEgASgJSACIAQESEwoGc2VydmVyGAIgASgJSAGIAQFCCQoHX3ByZWZpeEIJCgdfc2VydmVyGrQBCgREeG5zEhMKBnNlcnZlchgBIAEoCUgAiAEBEhgKC2FjY291bnRfdXJpGAIgASgJSAGIAQESFAoHYWRkcmVzcxgDIAEoCUgCiAEBEhQKB2FjY291bnQYBCABKAlIA4gBARITCgZmYXVjZXQYBSABKAlIBIgBAUIJCgdfc2VydmVyQg4KDF9hY2NvdW50X3VyaUIKCghfYWRkcmVzc0IKCghfYWNjb3VudEIJCgdfZmF1Y2V0GoABCgRJcGZzEhMKBnNlcnZlchgBIAEoCUgAiAEBEhQKB2dhdGV3YXkYAiABKAlIAYgBARIfChJzZXJ2ZXJfYXV0aF9zZWNyZXQYAyABKAlIAogBAUIJCgdfc2VydmVyQgoKCF9nYXRld2F5QhUKE19zZXJ2ZXJfYXV0aF9zZWNyZXQaUgoGU2lnbmFsEg4KBnNlcnZlchgBIAEoCRIQCgNhcGkYAiABKAlIAIgBARITCgZzdGF0dXMYAyABKAlIAYgBAUIGCgRfYXBpQgkKB19zdGF0dXMaXwoDSWNlEgwKBHVybHMYASABKAkSFQoIdXNlcm5hbWUYAiABKAlIAIgBARIXCgpjcmVkZW50aWFsGAMgASgJSAGIAQFCCwoJX3VzZXJuYW1lQg0KC19jcmVkZW50aWFsGhsKC0ljZVByb3ZpZGVyEgwKBHVybHMYASABKAkagwIKB01hY2hpbmUSHAoPZG9fYWNjZXNzX3Rva2VuGAEgASgJSACIAQESIAoTZ2l0aHViX2FjY2Vzc190b2tlbhgCIAEoCUgBiAEBEhwKD2dpdGh1Yl91c2VybmFtZRgDIAEoCUgCiAEBEhcKCmRuc19kb21haW4YBCABKAlIA4gBARIdChBucG1fYWNjZXNzX3Rva2VuGAUgASgJSASIAQFCEgoQX2RvX2FjY2Vzc190b2tlbkIWChRfZ2l0aHViX2FjY2Vzc190b2tlbkISChBfZ2l0aHViX3VzZXJuYW1lQg0KC19kbnNfZG9tYWluQhMKEV9ucG1fYWNjZXNzX3Rva2VuGicKB0JvdEhvc3QSEgoFcHJveHkYASABKAlIAIgBAUIICgZfcHJveHkaKwoJUHVibGlzaGVyEhMKBnNlcnZlchgBIAEoCUgAiAEBQgkKB19zZXJ2ZXIaKwoJVHVubmVsaW5nEhMKBnNlcnZlchgBIAEoCUgAiAEBQgkKB19zZXJ2ZXIaLAoKU3VwZXJ2aXNvchITCgZzZXJ2ZXIYASABKAlIAIgBAUIJCgdfc2VydmVyGnEKBUZhYXNkEhQKB2dhdGV3YXkYASABKAlIAIgBARIVCgh1c2VybmFtZRgCIAEoCUgBiAEBEhUKCHBhc3N3b3JkGAMgASgJSAKIAQFCCgoIX2dhdGV3YXlCCwoJX3VzZXJuYW1lQgsKCV9wYXNzd29yZBpKCgxBZ2VudEhvc3RpbmcSEwoGc2VydmVyGAEgASgJSACIAQESEQoEdHlwZRgCIAEoCUgBiAEBQgkKB19zZXJ2ZXJCBwoFX3R5cGUaIAoERWRnZRIQCgN1cmwYASABKAlIAIgBAUIGCgRfdXJsGiQKAkFpEhMKBnNlcnZlchgBIAEoCUgAiAEBQgkKB19zZXJ2ZXJCBwoFX2t1YmVCBgoEX2FwcEIHCgVfZHhuc0IHCgVfaXBmc0IKCghfbWFjaGluZUIGCgRfYm90QgwKCl9wdWJsaXNoZXJCDQoLX3N1cGVydmlzb3JCDAoKX3R1bm5lbGluZ0IICgZfZmFhc2RCEAoOX2FnZW50X2hvc3RpbmdCBwoFX2VkZ2VCBQoDX2FpGkAKBEtleXMSEQoEbmFtZRgBIAEoCUgAiAEBEhIKBXZhbHVlGAIgASgJSAGIAQFCBwoFX25hbWVCCAoGX3ZhbHVlQgkKB19jbGllbnRCBgoEX2FwcEIGCgRfY2xpQggKBl9wcm9wc0ILCglfc2VydmljZXNCCQoHX3N5c3RlbUIHCgVfa3ViZUIICgZfYWdlbnQ6OgoHZW52X3ZhchIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY6AcgASgJUgZlbnZWYXKIAQFCLFoqZ2l0aHViLmNvbS9keG9zL2R4b3MvcHJvdG8vZGVmL2R4b3MvY29uZmlnYgZwcm90bzM", [file_google_protobuf_any, file_google_protobuf_struct, file_google_protobuf_descriptor]);
19
+ fileDesc("ChFkeG9zL2NvbmZpZy5wcm90bxILZHhvcy5jb25maWcimgEKBkNvbmZpZxIUCgd2ZXJzaW9uGAEgASgFSACIAQESKgoHcGFja2FnZRgCIAEoCzIULmR4b3MuY29uZmlnLlBhY2thZ2VIAYgBARIqCgdydW50aW1lGAMgASgLMhQuZHhvcy5jb25maWcuUnVudGltZUgCiAEBQgoKCF92ZXJzaW9uQgoKCF9wYWNrYWdlQgoKCF9ydW50aW1lInMKB1BhY2thZ2USFAoHbGljZW5zZRgBIAEoCUgAiAEBEiAKBXJlcG9zGAIgAygLMhEuZHhvcy5jb25maWcuUmVwbxIkCgdtb2R1bGVzGAMgAygLMhMuZHhvcy5jb25maWcuTW9kdWxlQgoKCF9saWNlbnNlIl4KBFJlcG8SEQoEbmFtZRgBIAEoCUgAiAEBEhAKA3VybBgCIAEoCUgBiAEBEhQKB3ZlcnNpb24YAyABKAlIAogBAUIHCgVfbmFtZUIGCgRfdXJsQgoKCF92ZXJzaW9uIuwECgZNb2R1bGUSDwoCaWQYCCABKAlIAIgBARIRCgRuYW1lGAEgASgJSAGIAQESEQoEdHlwZRgCIAEoCUgCiAEBEhkKDGRpc3BsYXlfbmFtZRgDIAEoCUgDiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSASIAQESDAoEdGFncxgFIAMoCRITCgZidW5kbGUYBiABKAxIBYgBARITCgZ0dW5uZWwYByABKAhIBogBARIhCgRkZXBzGAogAygLMhMuZHhvcy5jb25maWcuTW9kdWxlEi0KBWJ1aWxkGGQgASgLMhkuZHhvcy5jb25maWcuTW9kdWxlLkJ1aWxkSAeIAQESIAoFcmVwb3MYZSADKAsyES5keG9zLmNvbmZpZy5SZXBvEioKBnJlY29yZBjIASABKAsyFC5nb29nbGUucHJvdG9idWYuQW55SAiIAQEauAEKBUJ1aWxkEhQKB2NvbW1hbmQYASABKAlIAIgBARITCgZvdXRkaXIYAiABKAlIAYgBARIUCgd2ZXJzaW9uGAMgASgJSAKIAQESEAoDdGFnGAQgASgJSAOIAQESKQoDZW52GAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQgoKCF9jb21tYW5kQgkKB19vdXRkaXJCCgoIX3ZlcnNpb25CBgoEX3RhZ0IGCgRfZW52QgUKA19pZEIHCgVfbmFtZUIHCgVfdHlwZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfYnVuZGxlQgkKB190dW5uZWxCCAoGX2J1aWxkQgkKB19yZWNvcmQi3DoKB1J1bnRpbWUSMAoGY2xpZW50GAEgASgLMhsuZHhvcy5jb25maWcuUnVudGltZS5DbGllbnRIAIgBARIqCgNhcHAYAiABKAsyGC5keG9zLmNvbmZpZy5SdW50aW1lLkFwcEgBiAEBEioKA2NsaRgDIAEoCzIYLmR4b3MuY29uZmlnLlJ1bnRpbWUuQ0xJSAKIAQESLgoFcHJvcHMYBCABKAsyGi5keG9zLmNvbmZpZy5SdW50aW1lLlByb3BzSAOIAQESNAoIc2VydmljZXMYBSABKAsyHS5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzSASIAQESMAoGc3lzdGVtGAYgASgLMhsuZHhvcy5jb25maWcuUnVudGltZS5TeXN0ZW1IBYgBARIsCgRrdWJlGAcgASgLMhkuZHhvcy5jb25maWcuUnVudGltZS5LdWJlSAaIAQESJwoEa2V5cxgIIAMoCzIZLmR4b3MuY29uZmlnLlJ1bnRpbWUuS2V5cxIuCgVhZ2VudBgJIAEoCzIaLmR4b3MuY29uZmlnLlJ1bnRpbWUuQWdlbnRIB4gBARrICwoGQ2xpZW50EjEKA2xvZxgBIAEoCzIfLmR4b3MuY29uZmlnLlJ1bnRpbWUuQ2xpZW50LkxvZ0gAiAEBEjkKB3N0b3JhZ2UYAiABKAsyIy5keG9zLmNvbmZpZy5SdW50aW1lLkNsaWVudC5TdG9yYWdlSAGIAQESHQoQZW5hYmxlX3NuYXBzaG90cxgDIAEoCEgCiAEBEh4KEXNuYXBzaG90X2ludGVydmFsGAQgASgFSAOIAQESIgoVaW52aXRhdGlvbl9leHBpcmF0aW9uGAUgASgFSASIAQESGgoNcmVtb3RlX3NvdXJjZRgGIAEoCUgFiAEBEi8KInJlbW90ZV9zb3VyY2VfYXV0aGVudGljYXRpb25fdG9rZW4YCCABKAlIBogBARIbCg5kZXZ0b29sc19wcm94eRgHIAEoCUgHiAEBEhwKD2xhenlfc3BhY2Vfb3BlbhgJIAEoCEgIiAEBEiQKF2Rpc2FibGVfcDJwX3JlcGxpY2F0aW9uGAogASgISAmIAQESIwoWZW5hYmxlX3ZlY3Rvcl9pbmRleGluZxgMIAEoCEgKiAEBEkQKDWVkZ2VfZmVhdHVyZXMYCyABKAsyKC5keG9zLmNvbmZpZy5SdW50aW1lLkNsaWVudC5FZGdlRmVhdHVyZXNIC4gBARqxAwoHU3RvcmFnZRIXCgpwZXJzaXN0ZW50GAEgASgISACIAQESSQoJa2V5X3N0b3JlGAIgASgOMjEuZHhvcy5jb25maWcuUnVudGltZS5DbGllbnQuU3RvcmFnZS5TdG9yYWdlRHJpdmVySAGIAQESSgoKZGF0YV9zdG9yZRgDIAEoDjIxLmR4b3MuY29uZmlnLlJ1bnRpbWUuQ2xpZW50LlN0b3JhZ2UuU3RvcmFnZURyaXZlckgCiAEBEhYKCWRhdGFfcm9vdBgEIAEoCUgDiAEBEiAKE3NwYWNlX2ZyYWdtZW50YXRpb24YBSABKAhIBIgBASJqCg1TdG9yYWdlRHJpdmVyEgcKA1JBTRAAEgcKA0lEQhABEgoKBkNIUk9NRRACEgsKB0ZJUkVGT1gQAxIICgROT0RFEAQSCQoFV0VCRlMQBRILCgdMRVZFTEpTEAsSDAoISlNPTkRPV04QDEINCgtfcGVyc2lzdGVudEIMCgpfa2V5X3N0b3JlQg0KC19kYXRhX3N0b3JlQgwKCl9kYXRhX3Jvb3RCFgoUX3NwYWNlX2ZyYWdtZW50YXRpb24aYwoDTG9nEiIKBmZpbHRlchgBIAEoCUINwj4KTE9HX0ZJTFRFUkgAiAEBEiIKBnByZWZpeBgCIAEoCUINwj4KTE9HX1BSRUZJWEgBiAEBQgkKB19maWx0ZXJCCQoHX3ByZWZpeBq4AQoMRWRnZUZlYXR1cmVzEhwKD2ZlZWRfcmVwbGljYXRvchgBIAEoCEgAiAEBEhwKD2VjaG9fcmVwbGljYXRvchgCIAEoCEgBiAEBEhYKCXNpZ25hbGluZxgDIAEoCEgCiAEBEhMKBmFnZW50cxgEIAEoCEgDiAEBQhIKEF9mZWVkX3JlcGxpY2F0b3JCEgoQX2VjaG9fcmVwbGljYXRvckIMCgpfc2lnbmFsaW5nQgkKB19hZ2VudHNCBgoEX2xvZ0IKCghfc3RvcmFnZUITChFfZW5hYmxlX3NuYXBzaG90c0IUChJfc25hcHNob3RfaW50ZXJ2YWxCGAoWX2ludml0YXRpb25fZXhwaXJhdGlvbkIQCg5fcmVtb3RlX3NvdXJjZUIlCiNfcmVtb3RlX3NvdXJjZV9hdXRoZW50aWNhdGlvbl90b2tlbkIRCg9fZGV2dG9vbHNfcHJveHlCEgoQX2xhenlfc3BhY2Vfb3BlbkIaChhfZGlzYWJsZV9wMnBfcmVwbGljYXRpb25CGQoXX2VuYWJsZV92ZWN0b3JfaW5kZXhpbmdCEAoOX2VkZ2VfZmVhdHVyZXMaqwMKA0FwcBIQCgNvcmcYASABKAlIAIgBARISCgV0aGVtZRgCIAEoCUgBiAEBEhQKB3dlYnNpdGUYAyABKAlIAogBARImCgpwdWJsaWNfdXJsGAQgASgJQg3CPgpQVUJMSUNfVVJMSAOIAQESNgoFYnVpbGQYZCABKAsyIi5keG9zLmNvbmZpZy5SdW50aW1lLkFwcC5CdWlsZEluZm9IBIgBARIpCgNlbnYYZSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQEanQEKCUJ1aWxkSW5mbxIWCgl0aW1lc3RhbXAYASABKAlIAIgBARIYCgtjb21taXRfaGFzaBgCIAEoCUgBiAEBEhQKB3ZlcnNpb24YAyABKAlIAogBARITCgZicmFuY2gYBCABKAlIA4gBAUIMCgpfdGltZXN0YW1wQg4KDF9jb21taXRfaGFzaEIKCghfdmVyc2lvbkIJCgdfYnJhbmNoQgYKBF9vcmdCCAoGX3RoZW1lQgoKCF93ZWJzaXRlQg0KC19wdWJsaWNfdXJsQggKBl9idWlsZEIGCgRfZW52GsYBCgVBZ2VudBIyCgdwbHVnaW5zGAEgAygLMiEuZHhvcy5jb25maWcuUnVudGltZS5BZ2VudC5QbHVnaW4aiAEKBlBsdWdpbhIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESFAoHZW5hYmxlZBgDIAEoCEgBiAEBEikKBmNvbmZpZxgKIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlIAogBAUIHCgVfbmFtZUIKCghfZW5hYmxlZEIJCgdfY29uZmlnGssFCgNDTEkSFgoJbm9kZV9wYXRoGAEgASgJSACIAQESMwoDYXBwGAIgASgLMiEuZHhvcy5jb25maWcuUnVudGltZS5DTEkuQXBwU2VydmVIAYgBARI2Cgdjb25zb2xlGAMgASgLMiAuZHhvcy5jb25maWcuUnVudGltZS5DTEkuUGFja2FnZUgCiAEBEjMKBG1kbnMYBCABKAsyIC5keG9zLmNvbmZpZy5SdW50aW1lLkNMSS5QYWNrYWdlSAOIAQESNQoGc2lnbmFsGAUgASgLMiAuZHhvcy5jb25maWcuUnVudGltZS5DTEkuUGFja2FnZUgEiAEBEhcKCm5wbV9jbGllbnQYBiABKAlIBYgBARIUCgdjaGFubmVsGAcgASgJSAaIAQEayAEKCEFwcFNlcnZlEjsKBXNlcnZlGAEgASgLMicuZHhvcy5jb25maWcuUnVudGltZS5DTEkuQXBwU2VydmUuU2VydmVIAIgBARp1CgVTZXJ2ZRITCgZjb25maWcYASABKAlIAIgBARIWCglsb2dpbl9hcHAYAiABKAlIAYgBARIXCgprZXlfcGhyYXNlGAMgASgJSAKIAQFCCQoHX2NvbmZpZ0IMCgpfbG9naW5fYXBwQg0KC19rZXlfcGhyYXNlQggKBl9zZXJ2ZRqHAQoHUGFja2FnZRIUCgdwYWNrYWdlGAEgASgJSACIAQESFAoHY2hhbm5lbBgCIAEoCUgBiAEBEhAKA2JpbhgDIAEoCUgCiAEBEhMKBmNvbmZpZxgEIAEoCUgDiAEBQgoKCF9wYWNrYWdlQgoKCF9jaGFubmVsQgYKBF9iaW5CCQoHX2NvbmZpZ0IMCgpfbm9kZV9wYXRoQgYKBF9hcHBCCgoIX2NvbnNvbGVCBwoFX21kbnNCCQoHX3NpZ25hbEINCgtfbnBtX2NsaWVudEIKCghfY2hhbm5lbBolCgVQcm9wcxISCgV0aXRsZRgBIAEoCUgAiAEBQggKBl90aXRsZRomCgZTeXN0ZW0SEgoFZGVidWcYASABKAlIAIgBAUIICgZfZGVidWcahwoKBEt1YmUSDAoEaG9zdBgBIAEoCRIMCgRwb3J0GAIgASgJEjgKCmF1dG91cGRhdGUYAyABKAsyJC5keG9zLmNvbmZpZy5SdW50aW1lLkt1YmUuQXV0b3VwZGF0ZRIuCgVodHRwcxgEIAEoCzIfLmR4b3MuY29uZmlnLlJ1bnRpbWUuS3ViZS5IdHRwcxIqCgNwMnAYBSABKAsyHS5keG9zLmNvbmZpZy5SdW50aW1lLkt1YmUuUDJQEhAKCGNvbmZob3N0GAYgASgJEgsKA2VudhgHIAMoCRINCgVhbGlhcxgIIAMoCRI4Cgptb25pdG9yaW5nGAkgASgLMiQuZHhvcy5jb25maWcuUnVudGltZS5LdWJlLk1vbml0b3JpbmcSLgoFdHJhY2UYCiABKAsyHy5keG9zLmNvbmZpZy5SdW50aW1lLkt1YmUuVHJhY2USNgoJdGVsZW1ldHJ5GAsgASgLMiMuZHhvcy5jb25maWcuUnVudGltZS5LdWJlLlRlbGVtZXRyeRIyCgdncmF2aXR5GAwgASgLMiEuZHhvcy5jb25maWcuUnVudGltZS5LdWJlLkdyYXZpdHkSPQoNYXBwX3R1bm5lbGluZxgNIAEoCzImLmR4b3MuY29uZmlnLlJ1bnRpbWUuS3ViZS5BcHBUdW5uZWxpbmcSLAoEYm90cxgOIAEoCzIeLmR4b3MuY29uZmlnLlJ1bnRpbWUuS3ViZS5Cb3RzEk8KF2lwZnNfYXBpX2F1dGhvcml6YXRpb25zGA8gAygLMi4uZHhvcy5jb25maWcuUnVudGltZS5LdWJlLkt1Ym9BcGlBdXRob3JpemF0aW9uGi8KCkF1dG91cGRhdGUSDwoHZW5hYmxlZBgBIAEoCBIQCghpbnRlcnZhbBgCIAEoBRptCgVIdHRwcxIPCgdlbmFibGVkGAEgASgIEgwKBHBvcnQYAiABKAkSDQoFZW1haWwYAyABKAkSEAoIY2VydGZpbGUYBCABKAkSDwoHa2V5ZmlsZRgFIAEoCRITCgtkbnNwcm92aWRlchgGIAEoCRo6CgNQMlASEgoKcHJpdmF0ZWtleRgBIAEoCRIMCgRwb3J0GAIgASgJEhEKCWJvb3RzdHJhcBgDIAMoCRpBCgpNb25pdG9yaW5nEg8KB2VuYWJsZWQYASABKAgSEAoIZW5kcG9pbnQYAiABKAkSEAoIaW50ZXJ2YWwYAyABKAUaGQoFVHJhY2USEAoIZGlzYWJsZWQYASABKAgaKwoJVGVsZW1ldHJ5EhAKCGRpc2FibGVkGAEgASgIEgwKBHRhZ3MYAiADKAkaSwoHR3Jhdml0eRIQCghkaXNhYmxlZBgBIAEoCBIMCgRuYW1lGAIgASgJEhQKB2xvZ19kaXIYAyABKAlIAIgBAUIKCghfbG9nX2RpchpaCgxBcHBUdW5uZWxpbmcSDwoHZW5hYmxlZBgBIAEoCBIYChBjb21tYW5kX3RlbXBsYXRlGAIgASgJEhEKCW91dHB1dF9yZRgDIAEoCRIMCgRwb3J0GAQgASgJGikKBEJvdHMSDwoHZW5hYmxlZBgBIAEoCBIQCghpbnRlcnZhbBgCIAEoBRpQChRLdWJvQXBpQXV0aG9yaXphdGlvbhIMCgRuYW1lGAEgASgJEhMKC2F1dGhfc2VjcmV0GAIgASgJEhUKDWFsbG93ZWRfcGF0aHMYAyADKAkarBUKCFNlcnZpY2VzEjUKBGt1YmUYASABKAsyIi5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkt1YmVIAIgBARI5CgNhcHAYAiABKAsyJy5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkFwcFNlcnZlckgBiAEBEjUKBGR4bnMYAyABKAsyIi5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkR4bnNIAogBARI1CgRpcGZzGAQgASgLMiIuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5JcGZzSAOIAQESNwoJc2lnbmFsaW5nGAUgAygLMiQuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5TaWduYWwSLgoDaWNlGAYgAygLMiEuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5JY2USQAoNaWNlX3Byb3ZpZGVycxgOIAMoCzIpLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuSWNlUHJvdmlkZXISOwoHbWFjaGluZRgHIAEoCzIlLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuTWFjaGluZUgEiAEBEjcKA2JvdBgIIAEoCzIlLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuQm90SG9zdEgFiAEBEj8KCXB1Ymxpc2hlchgJIAEoCzInLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuUHVibGlzaGVySAaIAQESQQoKc3VwZXJ2aXNvchgKIAEoCzIoLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuU3VwZXJ2aXNvckgHiAEBEj8KCXR1bm5lbGluZxgLIAEoCzInLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuVHVubmVsaW5nSAiIAQESNwoFZmFhc2QYDCABKAsyIy5keG9zLmNvbmZpZy5SdW50aW1lLlNlcnZpY2VzLkZhYXNkSAmIAQESRgoNYWdlbnRfaG9zdGluZxgNIAEoCzIqLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuQWdlbnRIb3N0aW5nSAqIAQESNQoEZWRnZRgPIAEoCzIiLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuRWRnZUgLiAEBEjEKAmFpGBAgASgLMiAuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5BaUgMiAEBEjMKA2h1YhgRIAEoCzIhLmR4b3MuY29uZmlnLlJ1bnRpbWUuU2VydmljZXMuSHViSA2IAQEa6wEKBEt1YmUSRAoJZW5kcG9pbnRzGAEgASgLMiwuZHhvcy5jb25maWcuUnVudGltZS5TZXJ2aWNlcy5LdWJlLkVuZHBvaW50c0gAiAEBEhcKCnB1YmxpY191cmwYAiABKAlIAYgBARpnCglFbmRwb2ludHMSEQoEbG9ncxgBIAEoCUgAiAEBEhUKCHNlcnZpY2VzGAIgASgJSAGIAQESEQoEY2VydBgDIAEoCUgCiAEBQgcKBV9sb2dzQgsKCV9zZXJ2aWNlc0IHCgVfY2VydEIMCgpfZW5kcG9pbnRzQg0KC19wdWJsaWNfdXJsGksKCUFwcFNlcnZlchITCgZwcmVmaXgYASABKAlIAIgBARITCgZzZXJ2ZXIYAiABKAlIAYgBAUIJCgdfcHJlZml4QgkKB19zZXJ2ZXIatAEKBER4bnMSEwoGc2VydmVyGAEgASgJSACIAQESGAoLYWNjb3VudF91cmkYAiABKAlIAYgBARIUCgdhZGRyZXNzGAMgASgJSAKIAQESFAoHYWNjb3VudBgEIAEoCUgDiAEBEhMKBmZhdWNldBgFIAEoCUgEiAEBQgkKB19zZXJ2ZXJCDgoMX2FjY291bnRfdXJpQgoKCF9hZGRyZXNzQgoKCF9hY2NvdW50QgkKB19mYXVjZXQagAEKBElwZnMSEwoGc2VydmVyGAEgASgJSACIAQESFAoHZ2F0ZXdheRgCIAEoCUgBiAEBEh8KEnNlcnZlcl9hdXRoX3NlY3JldBgDIAEoCUgCiAEBQgkKB19zZXJ2ZXJCCgoIX2dhdGV3YXlCFQoTX3NlcnZlcl9hdXRoX3NlY3JldBpSCgZTaWduYWwSDgoGc2VydmVyGAEgASgJEhAKA2FwaRgCIAEoCUgAiAEBEhMKBnN0YXR1cxgDIAEoCUgBiAEBQgYKBF9hcGlCCQoHX3N0YXR1cxpfCgNJY2USDAoEdXJscxgBIAEoCRIVCgh1c2VybmFtZRgCIAEoCUgAiAEBEhcKCmNyZWRlbnRpYWwYAyABKAlIAYgBAUILCglfdXNlcm5hbWVCDQoLX2NyZWRlbnRpYWwaGwoLSWNlUHJvdmlkZXISDAoEdXJscxgBIAEoCRqDAgoHTWFjaGluZRIcCg9kb19hY2Nlc3NfdG9rZW4YASABKAlIAIgBARIgChNnaXRodWJfYWNjZXNzX3Rva2VuGAIgASgJSAGIAQESHAoPZ2l0aHViX3VzZXJuYW1lGAMgASgJSAKIAQESFwoKZG5zX2RvbWFpbhgEIAEoCUgDiAEBEh0KEG5wbV9hY2Nlc3NfdG9rZW4YBSABKAlIBIgBAUISChBfZG9fYWNjZXNzX3Rva2VuQhYKFF9naXRodWJfYWNjZXNzX3Rva2VuQhIKEF9naXRodWJfdXNlcm5hbWVCDQoLX2Ruc19kb21haW5CEwoRX25wbV9hY2Nlc3NfdG9rZW4aJwoHQm90SG9zdBISCgVwcm94eRgBIAEoCUgAiAEBQggKBl9wcm94eRorCglQdWJsaXNoZXISEwoGc2VydmVyGAEgASgJSACIAQFCCQoHX3NlcnZlchorCglUdW5uZWxpbmcSEwoGc2VydmVyGAEgASgJSACIAQFCCQoHX3NlcnZlchosCgpTdXBlcnZpc29yEhMKBnNlcnZlchgBIAEoCUgAiAEBQgkKB19zZXJ2ZXIacQoFRmFhc2QSFAoHZ2F0ZXdheRgBIAEoCUgAiAEBEhUKCHVzZXJuYW1lGAIgASgJSAGIAQESFQoIcGFzc3dvcmQYAyABKAlIAogBAUIKCghfZ2F0ZXdheUILCglfdXNlcm5hbWVCCwoJX3Bhc3N3b3JkGkoKDEFnZW50SG9zdGluZxITCgZzZXJ2ZXIYASABKAlIAIgBARIRCgR0eXBlGAIgASgJSAGIAQFCCQoHX3NlcnZlckIHCgVfdHlwZRogCgRFZGdlEhAKA3VybBgBIAEoCUgAiAEBQgYKBF91cmwaJAoCQWkSEwoGc2VydmVyGAEgASgJSACIAQFCCQoHX3NlcnZlchofCgNIdWISEAoDdXJsGAEgASgJSACIAQFCBgoEX3VybEIHCgVfa3ViZUIGCgRfYXBwQgcKBV9keG5zQgcKBV9pcGZzQgoKCF9tYWNoaW5lQgYKBF9ib3RCDAoKX3B1Ymxpc2hlckINCgtfc3VwZXJ2aXNvckIMCgpfdHVubmVsaW5nQggKBl9mYWFzZEIQCg5fYWdlbnRfaG9zdGluZ0IHCgVfZWRnZUIFCgNfYWlCBgoEX2h1YhpACgRLZXlzEhEKBG5hbWUYASABKAlIAIgBARISCgV2YWx1ZRgCIAEoCUgBiAEBQgcKBV9uYW1lQggKBl92YWx1ZUIJCgdfY2xpZW50QgYKBF9hcHBCBgoEX2NsaUIICgZfcHJvcHNCCwoJX3NlcnZpY2VzQgkKB19zeXN0ZW1CBwoFX2t1YmVCCAoGX2FnZW50OjoKB2Vudl92YXISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGOgHIAEoCVIGZW52VmFyiAEBQixaKmdpdGh1Yi5jb20vZHhvcy9keG9zL3Byb3RvL2RlZi9keG9zL2NvbmZpZ2IGcHJvdG8z", [file_google_protobuf_any, file_google_protobuf_struct, file_google_protobuf_descriptor]);
20
20
 
21
21
  /**
22
22
  * @generated from message dxos.config.Config
@@ -124,7 +124,7 @@ export type Module = Message<"dxos.config.Module"> & {
124
124
  name?: string;
125
125
 
126
126
  /**
127
- * TODO(burdon): Define namespace (e.g., 'dxos.org/type/frame' vs. 'dxos.type.frame')
127
+ * TODO(burdon): Define namespace (e.g.,
128
128
  *
129
129
  * @generated from field: optional string type = 2;
130
130
  */
@@ -325,7 +325,8 @@ export type Runtime_Client = Message<"dxos.config.Runtime.Client"> & {
325
325
 
326
326
  /**
327
327
  * / Location of the remote client host.
328
- * TODO(burdon): Rename vault_endpoint (generalize http/ws; drop vault.html).
328
+ * TODO(burdon): Rename vault_endpoint (generalize http/ws; drop
329
+ * vault.html).
329
330
  *
330
331
  * @generated from field: optional string remote_source = 6;
331
332
  */
@@ -346,7 +347,8 @@ export type Runtime_Client = Message<"dxos.config.Runtime.Client"> & {
346
347
  devtoolsProxy?: string;
347
348
 
348
349
  /**
349
- * / Spaces will stay in SpaceState.CLOSED until explicitly opened. Speeds up client-services initialization.
350
+ * / Spaces will stay in SpaceState.CLOSED until explicitly opened. Speeds up
351
+ * / client-services initialization.
350
352
  *
351
353
  * @generated from field: optional bool lazy_space_open = 9;
352
354
  */
@@ -1195,6 +1197,8 @@ export const Runtime_Kube_KuboApiAuthorizationSchema: GenMessage<Runtime_Kube_Ku
1195
1197
  */
1196
1198
  export type Runtime_Services = Message<"dxos.config.Runtime.Services"> & {
1197
1199
  /**
1200
+ * * Deprecated
1201
+ *
1198
1202
  * @generated from field: optional dxos.config.Runtime.Services.Kube kube = 1;
1199
1203
  */
1200
1204
  kube?: Runtime_Services_Kube;
@@ -1245,23 +1249,29 @@ export type Runtime_Services = Message<"dxos.config.Runtime.Services"> & {
1245
1249
  publisher?: Runtime_Services_Publisher;
1246
1250
 
1247
1251
  /**
1248
- * TODO(burdon): Promote to 1; start others at 10.
1252
+ * * Deprecated
1249
1253
  *
1250
1254
  * @generated from field: optional dxos.config.Runtime.Services.Supervisor supervisor = 10;
1251
1255
  */
1252
1256
  supervisor?: Runtime_Services_Supervisor;
1253
1257
 
1254
1258
  /**
1259
+ * * Deprecated
1260
+ *
1255
1261
  * @generated from field: optional dxos.config.Runtime.Services.Tunneling tunneling = 11;
1256
1262
  */
1257
1263
  tunneling?: Runtime_Services_Tunneling;
1258
1264
 
1259
1265
  /**
1266
+ * * Deprecated
1267
+ *
1260
1268
  * @generated from field: optional dxos.config.Runtime.Services.Faasd faasd = 12;
1261
1269
  */
1262
1270
  faasd?: Runtime_Services_Faasd;
1263
1271
 
1264
1272
  /**
1273
+ * * Deprecated
1274
+ *
1265
1275
  * @generated from field: optional dxos.config.Runtime.Services.AgentHosting agent_hosting = 13;
1266
1276
  */
1267
1277
  agentHosting?: Runtime_Services_AgentHosting;
@@ -1275,6 +1285,11 @@ export type Runtime_Services = Message<"dxos.config.Runtime.Services"> & {
1275
1285
  * @generated from field: optional dxos.config.Runtime.Services.Ai ai = 16;
1276
1286
  */
1277
1287
  ai?: Runtime_Services_Ai;
1288
+
1289
+ /**
1290
+ * @generated from field: optional dxos.config.Runtime.Services.Hub hub = 17;
1291
+ */
1292
+ hub?: Runtime_Services_Hub;
1278
1293
  };
1279
1294
 
1280
1295
  /**
@@ -1423,8 +1438,9 @@ export type Runtime_Services_Ipfs = Message<"dxos.config.Runtime.Services.Ipfs">
1423
1438
  gateway?: string;
1424
1439
 
1425
1440
  /**
1426
- * / Used for IPFS API authentication, regardless if server is direct KUBO API (e.g. path of '/api/v0') or a reverse proxy
1427
- * / Same secret format as https://github.com/ipfs/kubo/blob/master/docs/config.md#apiauthorizations
1441
+ * / Used for IPFS API authentication, regardless if server is direct KUBO
1442
+ * / API (e.g. path of '/api/v0') or a reverse proxy Same secret format as
1443
+ * / https://github.com/ipfs/kubo/blob/master/docs/config.md#apiauthorizations
1428
1444
  *
1429
1445
  * @generated from field: optional string server_auth_secret = 3;
1430
1446
  */
@@ -1707,6 +1723,23 @@ export type Runtime_Services_Ai = Message<"dxos.config.Runtime.Services.Ai"> & {
1707
1723
  export const Runtime_Services_AiSchema: GenMessage<Runtime_Services_Ai> = /*@__PURE__*/
1708
1724
  messageDesc(file_dxos_config, 4, 7, 15);
1709
1725
 
1726
+ /**
1727
+ * @generated from message dxos.config.Runtime.Services.Hub
1728
+ */
1729
+ export type Runtime_Services_Hub = Message<"dxos.config.Runtime.Services.Hub"> & {
1730
+ /**
1731
+ * @generated from field: optional string url = 1;
1732
+ */
1733
+ url?: string;
1734
+ };
1735
+
1736
+ /**
1737
+ * Describes the message dxos.config.Runtime.Services.Hub.
1738
+ * Use `create(Runtime_Services_HubSchema)` to create a new message.
1739
+ */
1740
+ export const Runtime_Services_HubSchema: GenMessage<Runtime_Services_Hub> = /*@__PURE__*/
1741
+ messageDesc(file_dxos_config, 4, 7, 16);
1742
+
1710
1743
  /**
1711
1744
  * @generated from message dxos.config.Runtime.Keys
1712
1745
  */
package/src/edge-error.ts CHANGED
@@ -2,6 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { BaseError } from '@dxos/errors';
6
+
5
7
  import { type EdgeErrorData, type EdgeHttpFailure } from './edge';
6
8
 
7
9
  export class EdgeCallFailedError extends Error {
@@ -13,11 +15,12 @@ export class EdgeCallFailedError extends Error {
13
15
  });
14
16
  }
15
17
 
16
- public static fromHttpFailure(response: Response): EdgeCallFailedError {
18
+ public static async fromHttpFailure(response: Response): Promise<EdgeCallFailedError> {
17
19
  return new EdgeCallFailedError({
18
20
  reason: `HTTP code ${response.status}: ${response.statusText}.`,
19
21
  isRetryable: isRetryableCode(response.status),
20
22
  retryAfterMs: getRetryAfterMillis(response),
23
+ cause: await parseErrorBody(response),
21
24
  });
22
25
  }
23
26
 
@@ -77,3 +80,51 @@ const isRetryableCode = (status: number) => {
77
80
  }
78
81
  return !(status >= 400 && status < 500);
79
82
  };
83
+
84
+ const parseErrorBody = async (response: Response): Promise<Error | undefined> => {
85
+ if (response.headers.get('Content-Type') !== 'application/json') {
86
+ const body = await response.text();
87
+ return new Error(body.slice(0, 256));
88
+ }
89
+
90
+ const body = await response.json();
91
+ if (!('error' in body)) {
92
+ return undefined;
93
+ }
94
+
95
+ return parseSerializedError(body.error);
96
+ };
97
+
98
+ type SerializedError = {
99
+ code?: string;
100
+ message?: string;
101
+ context?: Record<string, unknown>;
102
+ stack?: string;
103
+ cause?: SerializedError;
104
+ };
105
+
106
+ const parseSerializedError = (serializedError: SerializedError): Error => {
107
+ let err: Error;
108
+ if (typeof serializedError.code === 'string') {
109
+ err = new BaseError(serializedError.code, serializedError.message ?? 'Unknown error', {
110
+ cause: serializedError.cause ? parseSerializedError(serializedError.cause) : undefined,
111
+ context: serializedError.context,
112
+ });
113
+ if (serializedError.stack) {
114
+ Object.defineProperty(err, 'stack', {
115
+ value: serializedError.stack,
116
+ });
117
+ }
118
+ } else {
119
+ err = new Error(serializedError.message ?? 'Unknown error', {
120
+ cause: serializedError.cause ? parseSerializedError(serializedError.cause) : undefined,
121
+ });
122
+ if (serializedError.stack) {
123
+ Object.defineProperty(err, 'stack', {
124
+ value: serializedError.stack,
125
+ });
126
+ }
127
+ }
128
+
129
+ return err;
130
+ };
package/src/edge.ts CHANGED
@@ -6,12 +6,14 @@ import { Schema } from 'effect';
6
6
 
7
7
  import { SpaceId } from '@dxos/keys';
8
8
 
9
- // TODO(burdon): Rename EdgerRouterEndpoint?
9
+ // TODO(burdon): Rename EdgerRouterEndpoint.
10
+ // If we would rename it, we need to be careful to not break composer production.
10
11
  export enum EdgeService {
11
12
  AUTOMERGE_REPLICATOR = 'automerge-replicator',
12
13
  FEED_REPLICATOR = 'feed-replicator',
13
14
  SWARM = 'swarm',
14
15
  SIGNAL = 'signal',
16
+ STATUS = 'status',
15
17
  }
16
18
 
17
19
  export type EdgeHttpSuccess<T> = {
@@ -116,15 +118,18 @@ export type GetAgentStatusResponseBody = {
116
118
 
117
119
  export type UploadFunctionRequest = {
118
120
  name?: string;
119
- script: string;
120
121
  version: string;
121
122
  ownerPublicKey: string;
123
+ entryPoint: string;
124
+ assets: Record<string, Uint8Array>;
122
125
  };
123
126
 
124
127
  export type UploadFunctionResponseBody = {
125
128
  functionId: string;
126
129
  version: string;
127
130
  meta: {
131
+ key?: string;
132
+ name?: string;
128
133
  description?: string;
129
134
  /**
130
135
  * JSON Schema for the input of the function.
@@ -138,12 +143,18 @@ export type UploadFunctionResponseBody = {
138
143
  };
139
144
 
140
145
  export type CreateSpaceRequest = {
146
+ /**
147
+ * HEX encoded public key of the agent.
148
+ */
141
149
  agentKey: string;
142
150
  };
143
151
 
144
152
  export type CreateSpaceResponseBody = {
153
+ /**
154
+ * HEX encoded public key of the space.
155
+ */
145
156
  spaceKey: string;
146
- spaceId: string; // TODO(burdon): Use SpaceId.
157
+ spaceId: SpaceId;
147
158
  automergeRoot: string;
148
159
  };
149
160
 
@@ -220,3 +231,49 @@ export type EdgeStatus = {
220
231
  fetchError?: string;
221
232
  };
222
233
  };
234
+
235
+ //
236
+ // Space import/export.
237
+ //
238
+
239
+ export type ImportBundleRequest = {
240
+ bundle: {
241
+ /**
242
+ * DocumentId.
243
+ */
244
+ documentId: string;
245
+ /**
246
+ * Encoded mutation.
247
+ */
248
+ mutation: string;
249
+ /**
250
+ * Heads of the document.
251
+ */
252
+ heads: string[];
253
+ }[];
254
+ };
255
+
256
+ export type ExportBundleRequest = {
257
+ /**
258
+ * DocumentId -> Heads (decoded heads since which we want to export).
259
+ */
260
+ docHeads: Record<string, string[]>;
261
+ };
262
+
263
+ export type ExportBundleResponse = {
264
+ bundle: {
265
+ /**
266
+ * DocumentId.
267
+ */
268
+ documentId: string;
269
+ /**
270
+ * Encoded mutation.
271
+ */
272
+ mutation: string;
273
+ }[];
274
+ };
275
+
276
+ export const DocumentCodec = {
277
+ encode: (doc: Uint8Array) => Buffer.from(doc).toString('base64'),
278
+ decode: (doc: string) => new Uint8Array(Buffer.from(doc, 'base64')),
279
+ };
@@ -6,6 +6,7 @@
6
6
  * NOTE: Messages should be sentences (Start with a capital letter and end with a period).
7
7
  * Errors can optionally include a JSON context object.
8
8
  */
9
+ // TODO(dmaretskyi): Duplicate of @dxos/errors
9
10
  export class BaseError extends Error {
10
11
  constructor(
11
12
  readonly code: string,
@@ -2,9 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { reconstructError } from './helpers.js';
6
5
  import { type Error as SerializedErrorProto } from '../proto/gen/dxos/error.js';
7
6
 
7
+ import { reconstructError } from './helpers.js';
8
+
8
9
  export const encodeError = (err: any): SerializedErrorProto => {
9
10
  if (typeof err === 'object' && err?.message) {
10
11
  return {
@@ -4,9 +4,10 @@
4
4
 
5
5
  import { PublicKey } from '@dxos/keys';
6
6
 
7
+ import type { ObjectId } from '../types.js';
8
+
7
9
  import { ApiError, BaseError, DatabaseError, SystemError } from './base-errors.js';
8
10
  import { registerError, registerErrorMessageContext, registerErrorNoArgs } from './helpers.js';
9
- import type { ObjectId } from '../types.js';
10
11
 
11
12
  /**
12
13
  * Thrown when request was terminated because the RPC endpoint has been closed.
@@ -4,9 +4,10 @@
4
4
 
5
5
  import { invariant } from '@dxos/invariant';
6
6
 
7
- import { SystemError } from './base-errors.js';
8
7
  import { type Error as SerializedErrorProto } from '../proto/gen/dxos/error.js';
9
8
 
9
+ import { SystemError } from './base-errors.js';
10
+
10
11
  export const reconstructError = (error: SerializedErrorProto) => {
11
12
  const { name, message, context } = error;
12
13
  return errorFromCode(name, message, context);
@@ -12,9 +12,7 @@ package dxos.config;
12
12
 
13
13
  option go_package = "github.com/dxos/dxos/proto/def/dxos/config";
14
14
 
15
- extend google.protobuf.FieldOptions {
16
- optional string env_var = 1000;
17
- }
15
+ extend google.protobuf.FieldOptions { optional string env_var = 1000; }
18
16
 
19
17
  message Config {
20
18
  optional int32 version = 1;
@@ -58,9 +56,10 @@ message Module {
58
56
  optional google.protobuf.Struct env = 10;
59
57
  }
60
58
 
61
- optional string id = 8; // TODO(burdon): Ensured FQ (e.g., 'dxos.app.xxx')
62
- optional string name = 1; // TODO(burdon): Replace with id (or key?)
63
- optional string type = 2; // TODO(burdon): Define namespace (e.g., 'dxos.org/type/frame' vs. 'dxos.type.frame')
59
+ optional string id = 8; // TODO(burdon): Ensured FQ (e.g., 'dxos.app.xxx')
60
+ optional string name = 1; // TODO(burdon): Replace with id (or key?)
61
+ optional string type = 2; // TODO(burdon): Define namespace (e.g.,
62
+ // 'dxos.org/type/frame' vs. 'dxos.type.frame')
64
63
 
65
64
  // TODO(burdon): Developer info message.
66
65
 
@@ -74,7 +73,7 @@ message Module {
74
73
  optional bool tunnel = 7;
75
74
 
76
75
  // TODO(burdon): Start at 100.
77
- repeated Module deps = 10; // TODO(burdon): E.g., types.
76
+ repeated Module deps = 10; // TODO(burdon): E.g., types.
78
77
  optional Build build = 100;
79
78
  repeated Repo repos = 101;
80
79
 
@@ -111,8 +110,8 @@ message Runtime {
111
110
  }
112
111
 
113
112
  message Log {
114
- optional string filter = 1 [(env_var) = "LOG_FILTER"];
115
- optional string prefix = 2 [(env_var) = "LOG_PREFIX"];
113
+ optional string filter = 1 [ (env_var) = "LOG_FILTER" ];
114
+ optional string prefix = 2 [ (env_var) = "LOG_PREFIX" ];
116
115
  }
117
116
 
118
117
  message EdgeFeatures {
@@ -136,7 +135,8 @@ message Runtime {
136
135
  optional int32 invitation_expiration = 5;
137
136
 
138
137
  /// Location of the remote client host.
139
- // TODO(burdon): Rename vault_endpoint (generalize http/ws; drop vault.html).
138
+ // TODO(burdon): Rename vault_endpoint (generalize http/ws; drop
139
+ // vault.html).
140
140
  optional string remote_source = 6;
141
141
 
142
142
  // Authenticate via `Sec-WebSocket-Protocol` header hack.
@@ -145,7 +145,8 @@ message Runtime {
145
145
  /// Connect to and serve client services to a remote proxy.
146
146
  optional string devtools_proxy = 7;
147
147
 
148
- /// Spaces will stay in SpaceState.CLOSED until explicitly opened. Speeds up client-services initialization.
148
+ /// Spaces will stay in SpaceState.CLOSED until explicitly opened. Speeds up
149
+ /// client-services initialization.
149
150
  optional bool lazy_space_open = 9;
150
151
 
151
152
  /// Disabled automerge & hypercore replication through P2P connections.
@@ -169,7 +170,7 @@ message Runtime {
169
170
  optional string org = 1;
170
171
  optional string theme = 2;
171
172
  optional string website = 3;
172
- optional string public_url = 4 [(env_var) = "PUBLIC_URL"];
173
+ optional string public_url = 4 [ (env_var) = "PUBLIC_URL" ];
173
174
 
174
175
  optional BuildInfo build = 100;
175
176
  optional google.protobuf.Struct env = 101;
@@ -214,13 +215,9 @@ message Runtime {
214
215
  optional string channel = 7;
215
216
  }
216
217
 
217
- message Props {
218
- optional string title = 1;
219
- }
218
+ message Props { optional string title = 1; }
220
219
 
221
- message System {
222
- optional string debug = 1;
223
- }
220
+ message System { optional string debug = 1; }
224
221
 
225
222
  //
226
223
  // KUBE
@@ -255,9 +252,7 @@ message Runtime {
255
252
  int32 interval = 3;
256
253
  }
257
254
 
258
- message Trace {
259
- bool disabled = 1;
260
- }
255
+ message Trace { bool disabled = 1; }
261
256
 
262
257
  message Telemetry {
263
258
  bool disabled = 1;
@@ -285,10 +280,10 @@ message Runtime {
285
280
 
286
281
  /// https://github.com/ipfs/kubo/blob/master/docs/config.md#apiauthorizations
287
282
  message KuboApiAuthorization {
288
- /// Just for organizational purposes.
289
- string name = 1;
290
- string auth_secret = 2;
291
- repeated string allowed_paths = 3;
283
+ /// Just for organizational purposes.
284
+ string name = 1;
285
+ string auth_secret = 2;
286
+ repeated string allowed_paths = 3;
292
287
  }
293
288
 
294
289
  // TODO(burdon): Needs documentation/
@@ -359,8 +354,9 @@ message Runtime {
359
354
  message Ipfs {
360
355
  optional string server = 1;
361
356
  optional string gateway = 2;
362
- /// Used for IPFS API authentication, regardless if server is direct KUBO API (e.g. path of '/api/v0') or a reverse proxy
363
- /// Same secret format as https://github.com/ipfs/kubo/blob/master/docs/config.md#apiauthorizations
357
+ /// Used for IPFS API authentication, regardless if server is direct KUBO
358
+ /// API (e.g. path of '/api/v0') or a reverse proxy Same secret format as
359
+ /// https://github.com/ipfs/kubo/blob/master/docs/config.md#apiauthorizations
364
360
  optional string server_auth_secret = 3;
365
361
  }
366
362
 
@@ -376,9 +372,7 @@ message Runtime {
376
372
  optional string credential = 3;
377
373
  }
378
374
 
379
- message IceProvider {
380
- string urls = 1;
381
- }
375
+ message IceProvider { string urls = 1; }
382
376
 
383
377
  message Machine {
384
378
  optional string do_access_token = 1;
@@ -396,9 +390,7 @@ message Runtime {
396
390
  optional string server = 1;
397
391
  }
398
392
 
399
- message Tunneling {
400
- optional string server = 1;
401
- }
393
+ message Tunneling { optional string server = 1; }
402
394
 
403
395
  message Supervisor { // TODO(burdon): Is this a service?
404
396
  optional string server = 1;
@@ -416,14 +408,13 @@ message Runtime {
416
408
  optional string type = 2;
417
409
  }
418
410
 
419
- message Edge {
420
- optional string url = 1;
421
- }
411
+ message Edge { optional string url = 1; }
422
412
 
423
- message Ai {
424
- optional string server = 1;
425
- }
413
+ message Ai { optional string server = 1; }
414
+
415
+ message Hub { optional string url = 1; }
426
416
 
417
+ /** Deprecated */
427
418
  optional Kube kube = 1;
428
419
  optional AppServer app = 2;
429
420
  optional Dxns dxns = 3;
@@ -434,12 +425,17 @@ message Runtime {
434
425
  optional Machine machine = 7;
435
426
  optional BotHost bot = 8;
436
427
  optional Publisher publisher = 9;
437
- optional Supervisor supervisor = 10; // TODO(burdon): Promote to 1; start others at 10.
428
+ /** Deprecated */
429
+ optional Supervisor supervisor = 10;
430
+ /** Deprecated */
438
431
  optional Tunneling tunneling = 11;
432
+ /** Deprecated */
439
433
  optional Faasd faasd = 12;
434
+ /** Deprecated */
440
435
  optional AgentHosting agent_hosting = 13;
441
436
  optional Edge edge = 15;
442
437
  optional Ai ai = 16;
438
+ optional Hub hub = 17;
443
439
  }
444
440
 
445
441
  message Keys {