@mochabug/adapt-core 1.0.1-rc.1 → 1.0.1-rc.3

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.
@@ -20,7 +20,7 @@ import { file_mochabugapis_adapt_graph_signal_data } from "../../graph/signal_da
20
20
  /**
21
21
  * Describes the file mochabugapis/adapt/automations/v1/automations.proto.
22
22
  */
23
- export const file_mochabugapis_adapt_automations_v1_automations = /*@__PURE__*/ fileDesc("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIwChZDcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIqIBChdDcmVhdGVDaGFsbGVuZ2VSZXNwb25zZRINCgVjb3VudBgBIAEoDRIMCgRzaXplGAIgASgNEhIKCmRpZmZpY3VsdHkYAyABKA0SKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdG9rZW4YBSABKAkSGgoSdmVyaWZpY2F0aW9uX3Rva2VuGAYgASgJIngKFlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSJgoSdmVyaWZpY2F0aW9uX3Rva2VuGAIgASgJQgq6SAdyBRABGNAPEh4KCXNvbHV0aW9ucxgDIAMoA0ILukgIkgEFCAEQ6AciVQoXUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2USDQoFdG9rZW4YASABKAkSKwoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoVSW5oZXJpdFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDImUKFkluaGVyaXRTZXNzaW9uUmVzcG9uc2USDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAQoRUmVhZE91dHB1dFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEikKBnZlcnRleBgDIAEoCUIUukgRcg8yDV5bMC05YS16XXs0fSRIAIgBARIhCgpuZXdlcl90aGFuGAQgASgJQgi6SAVyA7ABAUgBiAEBQgkKB192ZXJ0ZXhCDQoLX25ld2VyX3RoYW4iywEKElJlYWRPdXRwdXRSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SOgoHb3V0cHV0cxgCIAMoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciJ3Cg9SZWFkVXJsc1JlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEiEKCm5ld2VyX3RoYW4YAyABKAlCCLpIBXIDsAEBSACIAQFCDQoLX25ld2VyX3RoYW4iwwEKEFJlYWRVcmxzUmVzcG9uc2USOwoHc2Vzc2lvbhgBIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uEjQKBHVybHMYAiADKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsEicKEG5leHRfcGFnZV9jdXJzb3IYAyABKAlCCLpIBXIDsAEBSACIAQFCEwoRX25leHRfcGFnZV9jdXJzb3IikQMKE1N0YXJ0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEoABCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiJjChRTdGFydFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIlIKElN0b3BTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIbCgRmb3JrGAIgASgJQgi6SAVyAxjoB0gAiAEBQgcKBV9mb3JrIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiiwEKA1VybBILCgN1cmwYASABKAkSDAoEZm9yaxgCIAEoCRIOCgZ2ZXJ0ZXgYAyABKAkSDAoEZG9uZRgEIAEoCBIrCgdjcmVhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0b2tlbhgGIAEoCRIPCgdzdG9wcGVkGAcgASgIIlIKB1Nlc3Npb24SDAoEZm9yaxgBIAEoCRI5CgZzdGF0dXMYAiABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhdHVzIi4KFFN0cmVhbVNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIkkKEUFja01lc3NhZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEhwKCm1lc3NhZ2VfaWQYAiABKAlCCLpIBXIDsAEBIhQKEkFja01lc3NhZ2VSZXNwb25zZSLrAQoVU3RyZWFtU2Vzc2lvblJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARI7CgZvdXRwdXQYAiABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAMgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBCABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UijAMKEVJ1blNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEjsKC3RyYW5zbWl0dGVyGAIgASgJQiG6SB5yHBABGGQyFl5bYS16QS1aMC05Xy1dezEsMTAwfSRIAIgBARJ+CgdzaWduYWxzGAMgAygLMkEubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJ1blNlc3Npb25SZXF1ZXN0LlNpZ25hbHNFbnRyeUIqukgnmgEkIiJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEigKD2NoYWxsZW5nZV90b2tlbhgEIAEoCUIKukgHcgUQARj0A0gBiAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyQhIKEF9jaGFsbGVuZ2VfdG9rZW4isQIKElJ1blNlc3Npb25SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESRwoHc3RhcnRlZBgCIAEoCzI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uU3RhcnRlZEgAEjsKBm91dHB1dBgDIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYBCABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgFIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSABCCQoHbWVzc2FnZSJgChFSdW5TZXNzaW9uU3RhcnRlZBINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIisKEVJ1bkluaGVyaXRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIrMCChJSdW5Jbmhlcml0UmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkkKCWluaGVyaXRlZBgCIAEoCzI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0U3RhcnRlZEgAEjsKBm91dHB1dBgDIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYBCABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgFIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSABCCQoHbWVzc2FnZSJgChFSdW5Jbmhlcml0U3RhcnRlZBINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzKsgBCgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOU1RBVFVTX1JVTk5JTkcQARISCg5TVEFUVVNfU1RPUFBFRBACEhMKD1NUQVRVU19TVE9QUElORxADEhQKEFNUQVRVU19DT01QTEVURUQQBBISCg5TVEFUVVNfRVhQSVJFRBAFEhIKDlNUQVRVU19FUlJPUkVEEAYSFQoRU1RBVFVTX0RFTEVHQVRJTkcQBxIUChBTVEFUVVNfREVMRUdBVEVEEAgyyBEKEUF1dG9tYXRpb25TZXJ2aWNlErMBCg9DcmVhdGVDaGFsbGVuZ2USOS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuQ3JlYXRlQ2hhbGxlbmdlUmVxdWVzdBo6Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZSIpgtPkkwIjOgEqIh4vdjEvYXV0b21hdGlvbnMve2lkfS9jaGFsbGVuZ2USugEKD1JlZGVlbUNoYWxsZW5nZRI5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWRlZW1DaGFsbGVuZ2VSZXF1ZXN0GjoubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlZGVlbUNoYWxsZW5nZVJlc3BvbnNlIjCC0+STAio6ASoiJS92MS9hdXRvbWF0aW9ucy97aWR9L2NoYWxsZW5nZS9yZWRlZW0SrgEKDFN0YXJ0U2Vzc2lvbhI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdGFydFNlc3Npb25SZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vc3RhcnQSogEKC1N0b3BTZXNzaW9uEjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVxdWVzdBo2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdG9wU2Vzc2lvblJlc3BvbnNlIiSC0+STAh4qHC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24StgEKDkluaGVyaXRTZXNzaW9uEjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVxdWVzdBo5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5Jbmhlcml0U2Vzc2lvblJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vaW5oZXJpdBKfAQoKR2V0U2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVzcG9uc2UiJILT5JMCHhIcL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhKmAQoKUmVhZE91dHB1dBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9vdXRwdXQSngEKCFJlYWRVcmxzEjIubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkVXJsc1Jlc3BvbnNlIimC0+STAiMSIS92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vdXJscxKxAQoNU3RyZWFtU2Vzc2lvbhI3Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVxdWVzdBo4Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdHJlYW0wARKmAQoKQWNrTWVzc2FnZRI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9hY2sSqAEKClJ1blNlc3Npb24SNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuMAESsAEKClJ1bkluaGVyaXQSNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlc3BvbnNlIjOC0+STAi06ASoiKC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuLWluaGVyaXQwARqJAcpBFmFkYXB0Lm1vY2hhYnVnYXBpcy5jb23SQW1odHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMsaHR0cHM6Ly93d3cubW9jaGFidWdhcGlzLmNvbS9hdXRoL2FkYXB0LmF1dG9tYXRpb25zLnN0YXJ0YgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_api_client, file_google_protobuf_timestamp, file_mochabugapis_adapt_graph_signal_data]);
23
+ export const file_mochabugapis_adapt_automations_v1_automations = /*@__PURE__*/ fileDesc("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIwChZDcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIqIBChdDcmVhdGVDaGFsbGVuZ2VSZXNwb25zZRINCgVjb3VudBgBIAEoDRIMCgRzaXplGAIgASgNEhIKCmRpZmZpY3VsdHkYAyABKA0SKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdG9rZW4YBSABKAkSGgoSdmVyaWZpY2F0aW9uX3Rva2VuGAYgASgJIngKFlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSJgoSdmVyaWZpY2F0aW9uX3Rva2VuGAIgASgJQgq6SAdyBRABGNAPEh4KCXNvbHV0aW9ucxgDIAMoA0ILukgIkgEFCAEQ6AciVQoXUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2USDQoFdG9rZW4YASABKAkSKwoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoVSW5oZXJpdFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDImUKFkluaGVyaXRTZXNzaW9uUmVzcG9uc2USDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAQoRUmVhZE91dHB1dFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEikKBnZlcnRleBgDIAEoCUIUukgRcg8yDV5bMC05YS16XXs0fSRIAIgBARIhCgpuZXdlcl90aGFuGAQgASgJQgi6SAVyA7ABAUgBiAEBQgkKB192ZXJ0ZXhCDQoLX25ld2VyX3RoYW4iywEKElJlYWRPdXRwdXRSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SOgoHb3V0cHV0cxgCIAMoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciJ3Cg9SZWFkVXJsc1JlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEiEKCm5ld2VyX3RoYW4YAyABKAlCCLpIBXIDsAEBSACIAQFCDQoLX25ld2VyX3RoYW4iwwEKEFJlYWRVcmxzUmVzcG9uc2USOwoHc2Vzc2lvbhgBIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uEjQKBHVybHMYAiADKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsEicKEG5leHRfcGFnZV9jdXJzb3IYAyABKAlCCLpIBXIDsAEBSACIAQFCEwoRX25leHRfcGFnZV9jdXJzb3IikQMKE1N0YXJ0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEoABCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiJjChRTdGFydFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIlIKElN0b3BTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIbCgRmb3JrGAIgASgJQgi6SAVyAxjoB0gAiAEBQgcKBV9mb3JrIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiiwEKA1VybBILCgN1cmwYASABKAkSDAoEZm9yaxgCIAEoCRIOCgZ2ZXJ0ZXgYAyABKAkSDAoEZG9uZRgEIAEoCBIrCgdjcmVhdGVkGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0b2tlbhgGIAEoCRIPCgdzdG9wcGVkGAcgASgIIlIKB1Nlc3Npb24SDAoEZm9yaxgBIAEoCRI5CgZzdGF0dXMYAiABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhdHVzIi4KFFN0cmVhbVNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIkkKEUFja01lc3NhZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEhwKCm1lc3NhZ2VfaWQYAiABKAlCCLpIBXIDsAEBIhQKEkFja01lc3NhZ2VSZXNwb25zZSISChBSZWNvbm5lY3RNZXNzYWdlIusBChVTdHJlYW1TZXNzaW9uUmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEjsKBm91dHB1dBgCIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYAyABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgEIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSABCCQoHbWVzc2FnZSKMAwoRUnVuU2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEn4KB3NpZ25hbHMYAyADKAsyQS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiKxAgoSUnVuU2Vzc2lvblJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARJHCgdzdGFydGVkGAIgASgLMjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJ1blNlc3Npb25TdGFydGVkSAASOwoGb3V0cHV0GAMgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgEIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAUgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IAEIJCgdtZXNzYWdlImAKEVJ1blNlc3Npb25TdGFydGVkEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMiKwoRUnVuSW5oZXJpdFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiswIKElJ1bkluaGVyaXRSZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESSQoJaW5oZXJpdGVkGAIgASgLMjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJ1bkluaGVyaXRTdGFydGVkSAASOwoGb3V0cHV0GAMgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgEIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAUgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IAEIJCgdtZXNzYWdlImAKEVJ1bkluaGVyaXRTdGFydGVkEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMiLQoTV2F0Y2hTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AyK0AgoUV2F0Y2hTZXNzaW9uUmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEjsKBm91dHB1dBgCIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXRIABI1CgN1cmwYAyABKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsSAASPQoHc2Vzc2lvbhgEIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uSAASSAoJcmVjb25uZWN0GAUgASgLMjMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlY29ubmVjdE1lc3NhZ2VIAEIJCgdtZXNzYWdlIogDCg9XYXRjaFJ1blJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEnwKB3NpZ25hbHMYAyADKAsyPy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hSdW5SZXF1ZXN0LlNpZ25hbHNFbnRyeUIqukgnmgEkIiJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEigKD2NoYWxsZW5nZV90b2tlbhgEIAEoCUIKukgHcgUQARj0A0gBiAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyQhIKEF9jaGFsbGVuZ2VfdG9rZW4i9wIKEFdhdGNoUnVuUmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkUKB3N0YXJ0ZWQYAiABKAsyMi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hSdW5TdGFydGVkSAASOwoGb3V0cHV0GAMgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgEIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAUgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IABJICglyZWNvbm5lY3QYBiABKAsyMy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVjb25uZWN0TWVzc2FnZUgAQgkKB21lc3NhZ2UiXgoPV2F0Y2hSdW5TdGFydGVkEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMiLQoTV2F0Y2hJbmhlcml0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AyKBAwoUV2F0Y2hJbmhlcml0UmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEksKCWluaGVyaXRlZBgCIAEoCzI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaEluaGVyaXRTdGFydGVkSAASOwoGb3V0cHV0GAMgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgEIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAUgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IABJICglyZWNvbm5lY3QYBiABKAsyMy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVjb25uZWN0TWVzc2FnZUgAQgkKB21lc3NhZ2UiYgoTV2F0Y2hJbmhlcml0U3RhcnRlZBINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzKsgBCgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOU1RBVFVTX1JVTk5JTkcQARISCg5TVEFUVVNfU1RPUFBFRBACEhMKD1NUQVRVU19TVE9QUElORxADEhQKEFNUQVRVU19DT01QTEVURUQQBBISCg5TVEFUVVNfRVhQSVJFRBAFEhIKDlNUQVRVU19FUlJPUkVEEAYSFQoRU1RBVFVTX0RFTEVHQVRJTkcQBxIUChBTVEFUVVNfREVMRUdBVEVEEAgyyRUKEUF1dG9tYXRpb25TZXJ2aWNlErMBCg9DcmVhdGVDaGFsbGVuZ2USOS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuQ3JlYXRlQ2hhbGxlbmdlUmVxdWVzdBo6Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZSIpgtPkkwIjOgEqIh4vdjEvYXV0b21hdGlvbnMve2lkfS9jaGFsbGVuZ2USugEKD1JlZGVlbUNoYWxsZW5nZRI5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWRlZW1DaGFsbGVuZ2VSZXF1ZXN0GjoubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlZGVlbUNoYWxsZW5nZVJlc3BvbnNlIjCC0+STAio6ASoiJS92MS9hdXRvbWF0aW9ucy97aWR9L2NoYWxsZW5nZS9yZWRlZW0SrgEKDFN0YXJ0U2Vzc2lvbhI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdGFydFNlc3Npb25SZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vc3RhcnQSogEKC1N0b3BTZXNzaW9uEjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVxdWVzdBo2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdG9wU2Vzc2lvblJlc3BvbnNlIiSC0+STAh4qHC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24StgEKDkluaGVyaXRTZXNzaW9uEjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVxdWVzdBo5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5Jbmhlcml0U2Vzc2lvblJlc3BvbnNlIi+C0+STAik6ASoiJC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vaW5oZXJpdBKfAQoKR2V0U2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5HZXRTZXNzaW9uUmVzcG9uc2UiJILT5JMCHhIcL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhKmAQoKUmVhZE91dHB1dBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkT3V0cHV0UmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9vdXRwdXQSngEKCFJlYWRVcmxzEjIubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWFkVXJsc1Jlc3BvbnNlIimC0+STAiMSIS92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vdXJscxKxAQoNU3RyZWFtU2Vzc2lvbhI3Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVxdWVzdBo4Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdHJlYW1TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJRIjL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdHJlYW0wARKmAQoKQWNrTWVzc2FnZRI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5BY2tNZXNzYWdlUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9hY2sSqAEKClJ1blNlc3Npb24SNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuMAESsAEKClJ1bkluaGVyaXQSNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFJlc3BvbnNlIjOC0+STAi06ASoiKC92MS9hdXRvbWF0aW9ucy97aWR9L3Nlc3Npb24vcnVuLWluaGVyaXQwARKoAQoMV2F0Y2hTZXNzaW9uEjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLldhdGNoU2Vzc2lvblJlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hTZXNzaW9uUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL2F1dG9tYXRpb25zL3tpZH0vd2F0Y2gwARKgAQoIV2F0Y2hSdW4SMi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hSdW5SZXF1ZXN0GjMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLldhdGNoUnVuUmVzcG9uc2UiKYLT5JMCIzoBKiIeL3YxL2F1dG9tYXRpb25zL3tpZH0vd2F0Y2gtcnVuMAESsAEKDFdhdGNoSW5oZXJpdBI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaEluaGVyaXRSZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLldhdGNoSW5oZXJpdFJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hdXRvbWF0aW9ucy97aWR9L3dhdGNoLWluaGVyaXQwARqJAcpBFmFkYXB0Lm1vY2hhYnVnYXBpcy5jb23SQW1odHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMsaHR0cHM6Ly93d3cubW9jaGFidWdhcGlzLmNvbS9hdXRoL2FkYXB0LmF1dG9tYXRpb25zLnN0YXJ0YgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_api_client, file_google_protobuf_timestamp, file_mochabugapis_adapt_graph_signal_data]);
24
24
  /**
25
25
  * Describes the message mochabugapis.adapt.automations.v1.CreateChallengeRequest.
26
26
  * Use `create(CreateChallengeRequestSchema)` to create a new message.
@@ -131,41 +131,86 @@ export const AckMessageRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugap
131
131
  * Use `create(AckMessageResponseSchema)` to create a new message.
132
132
  */
133
133
  export const AckMessageResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 21);
134
+ /**
135
+ * Describes the message mochabugapis.adapt.automations.v1.ReconnectMessage.
136
+ * Use `create(ReconnectMessageSchema)` to create a new message.
137
+ */
138
+ export const ReconnectMessageSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 22);
134
139
  /**
135
140
  * Describes the message mochabugapis.adapt.automations.v1.StreamSessionResponse.
136
141
  * Use `create(StreamSessionResponseSchema)` to create a new message.
137
142
  */
138
- export const StreamSessionResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 22);
143
+ export const StreamSessionResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 23);
139
144
  /**
140
145
  * Describes the message mochabugapis.adapt.automations.v1.RunSessionRequest.
141
146
  * Use `create(RunSessionRequestSchema)` to create a new message.
142
147
  */
143
- export const RunSessionRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 23);
148
+ export const RunSessionRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 24);
144
149
  /**
145
150
  * Describes the message mochabugapis.adapt.automations.v1.RunSessionResponse.
146
151
  * Use `create(RunSessionResponseSchema)` to create a new message.
147
152
  */
148
- export const RunSessionResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 24);
153
+ export const RunSessionResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 25);
149
154
  /**
150
155
  * Describes the message mochabugapis.adapt.automations.v1.RunSessionStarted.
151
156
  * Use `create(RunSessionStartedSchema)` to create a new message.
152
157
  */
153
- export const RunSessionStartedSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 25);
158
+ export const RunSessionStartedSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 26);
154
159
  /**
155
160
  * Describes the message mochabugapis.adapt.automations.v1.RunInheritRequest.
156
161
  * Use `create(RunInheritRequestSchema)` to create a new message.
157
162
  */
158
- export const RunInheritRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 26);
163
+ export const RunInheritRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 27);
159
164
  /**
160
165
  * Describes the message mochabugapis.adapt.automations.v1.RunInheritResponse.
161
166
  * Use `create(RunInheritResponseSchema)` to create a new message.
162
167
  */
163
- export const RunInheritResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 27);
168
+ export const RunInheritResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 28);
164
169
  /**
165
170
  * Describes the message mochabugapis.adapt.automations.v1.RunInheritStarted.
166
171
  * Use `create(RunInheritStartedSchema)` to create a new message.
167
172
  */
168
- export const RunInheritStartedSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 28);
173
+ export const RunInheritStartedSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 29);
174
+ /**
175
+ * Describes the message mochabugapis.adapt.automations.v1.WatchSessionRequest.
176
+ * Use `create(WatchSessionRequestSchema)` to create a new message.
177
+ */
178
+ export const WatchSessionRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 30);
179
+ /**
180
+ * Describes the message mochabugapis.adapt.automations.v1.WatchSessionResponse.
181
+ * Use `create(WatchSessionResponseSchema)` to create a new message.
182
+ */
183
+ export const WatchSessionResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 31);
184
+ /**
185
+ * Describes the message mochabugapis.adapt.automations.v1.WatchRunRequest.
186
+ * Use `create(WatchRunRequestSchema)` to create a new message.
187
+ */
188
+ export const WatchRunRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 32);
189
+ /**
190
+ * Describes the message mochabugapis.adapt.automations.v1.WatchRunResponse.
191
+ * Use `create(WatchRunResponseSchema)` to create a new message.
192
+ */
193
+ export const WatchRunResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 33);
194
+ /**
195
+ * Describes the message mochabugapis.adapt.automations.v1.WatchRunStarted.
196
+ * Use `create(WatchRunStartedSchema)` to create a new message.
197
+ */
198
+ export const WatchRunStartedSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 34);
199
+ /**
200
+ * Describes the message mochabugapis.adapt.automations.v1.WatchInheritRequest.
201
+ * Use `create(WatchInheritRequestSchema)` to create a new message.
202
+ */
203
+ export const WatchInheritRequestSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 35);
204
+ /**
205
+ * Describes the message mochabugapis.adapt.automations.v1.WatchInheritResponse.
206
+ * Use `create(WatchInheritResponseSchema)` to create a new message.
207
+ */
208
+ export const WatchInheritResponseSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 36);
209
+ /**
210
+ * Describes the message mochabugapis.adapt.automations.v1.WatchInheritStarted.
211
+ * Use `create(WatchInheritStartedSchema)` to create a new message.
212
+ */
213
+ export const WatchInheritStartedSchema = /*@__PURE__*/ messageDesc(file_mochabugapis_adapt_automations_v1_automations, 37);
169
214
  /**
170
215
  * The session enum status
171
216
  *
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { create, enumToJson } from "@bufbuild/protobuf";
2
2
  import { timestampDate } from "@bufbuild/protobuf/wkt";
3
3
  import { Code, ConnectError } from "@connectrpc/connect";
4
- import { RunInheritRequestSchema, RunSessionRequestSchema, StartSessionRequestSchema, Status, StatusSchema, } from "./genproto/mochabugapis/adapt/automations/v1/automations_pb.js";
4
+ import { StartSessionRequestSchema, Status, StatusSchema, WatchInheritRequestSchema, WatchRunRequestSchema, } from "./genproto/mochabugapis/adapt/automations/v1/automations_pb.js";
5
5
  import { SignalDataSchema } from "./genproto/mochabugapis/adapt/graph/signal_data_pb.js";
6
6
  // Re-export configuration
7
7
  export { configure, getConfig, resetConfig } from "./config.js";
@@ -106,7 +106,7 @@ export function createAdaptClient(raw, id, options) {
106
106
  const isMessageSeen = (messageId) => {
107
107
  return seenMessages.has(messageId);
108
108
  };
109
- // Process a message from any stream type (StreamSession, RunSession, RunInherit)
109
+ // Process a message from any stream type (WatchSession, WatchRun, WatchInherit)
110
110
  const processMessage = (message) => {
111
111
  const { case: type, value } = message.message;
112
112
  switch (type) {
@@ -143,6 +143,9 @@ export function createAdaptClient(raw, id, options) {
143
143
  }
144
144
  return isTerminal;
145
145
  }
146
+ case "reconnect":
147
+ log("info", "Reconnect message received");
148
+ return false;
146
149
  case "started":
147
150
  case "inherited":
148
151
  // These should only appear as the first message, which is already
@@ -161,7 +164,10 @@ export function createAdaptClient(raw, id, options) {
161
164
  // Process only non-duplicates
162
165
  const isTerminal = isDuplicate ? false : processMessage(message);
163
166
  // ACK non-terminal messages (including duplicates - server expects ACK on resend)
164
- if (!isTerminal && currentHandlers) {
167
+ // Don't ACK reconnect messages — they're not stored server-side
168
+ if (!isTerminal &&
169
+ currentHandlers &&
170
+ message.message.case !== "reconnect") {
165
171
  raw
166
172
  .ackMessage({ id, messageId: message.id }, { headers })
167
173
  .catch((e) => log("error", `ACK failed: ${message.id}`, e));
@@ -178,17 +184,12 @@ export function createAdaptClient(raw, id, options) {
178
184
  ? 0
179
185
  : Math.min(50 * Math.pow(2, reconnectAttempts - 2), 30000);
180
186
  log("info", `Reconnecting in ${delay}ms (attempt ${reconnectAttempts})`);
181
- if (delay === 0) {
187
+ reconnectTimer = setTimeout(() => {
188
+ reconnectTimer = null;
182
189
  connectToStream();
183
- }
184
- else {
185
- reconnectTimer = setTimeout(() => {
186
- reconnectTimer = null;
187
- connectToStream();
188
- }, delay);
189
- }
190
+ }, delay);
190
191
  };
191
- // Connect to StreamSession (used for subscribe and reconnection)
192
+ // Connect to WatchSession (used for subscribe and reconnection)
192
193
  const connectToStream = async () => {
193
194
  if (!currentHandlers || !storedToken)
194
195
  return;
@@ -210,15 +211,23 @@ export function createAdaptClient(raw, id, options) {
210
211
  }
211
212
  };
212
213
  try {
213
- const stream = raw.streamSession({ id }, { signal: controller.signal, headers });
214
+ const stream = raw.watchSession({ id }, { signal: controller.signal, headers });
214
215
  // Start 1-second timer - reset backoff if we stay connected
215
216
  resetTimer = setTimeout(resetBackoff, 1000);
217
+ let receivedTerminal = false;
216
218
  for await (const message of stream) {
217
219
  resetBackoff(); // Reset on first message received
218
- if (handleMessage(message, headers))
220
+ if (handleMessage(message, headers)) {
221
+ receivedTerminal = true;
219
222
  break;
223
+ }
220
224
  }
221
225
  log("info", "Stream ended normally");
226
+ // Clean close — reconnect immediately if session still active
227
+ if (!receivedTerminal && currentHandlers && storedToken) {
228
+ reconnectAttempts = 0;
229
+ scheduleReconnect();
230
+ }
222
231
  }
223
232
  catch (error) {
224
233
  // Clear timer on error (don't reset backoff if we failed quickly)
@@ -267,7 +276,7 @@ export function createAdaptClient(raw, id, options) {
267
276
  log("info", "run", { transmitter: options?.transmitter });
268
277
  if (abortController)
269
278
  await this.unsubscribe();
270
- const request = create(RunSessionRequestSchema, {
279
+ const request = create(WatchRunRequestSchema, {
271
280
  id,
272
281
  transmitter: options?.transmitter,
273
282
  signals: buildSignals(options?.signals),
@@ -288,9 +297,9 @@ export function createAdaptClient(raw, id, options) {
288
297
  resolve = res;
289
298
  reject = rej;
290
299
  });
291
- // Helper to attempt runSession with retries for pre-token failures
300
+ // Helper to attempt watchRun with retries for pre-token failures
292
301
  const attemptRunSession = async () => {
293
- const stream = raw.runSession(request, {
302
+ const stream = raw.watchRun(request, {
294
303
  signal: controller.signal,
295
304
  headers: runHeaders,
296
305
  });
@@ -311,6 +320,7 @@ export function createAdaptClient(raw, id, options) {
311
320
  try {
312
321
  // Start 1-second timer - reset backoff if we stay connected
313
322
  resetTimer = setTimeout(resetBackoff, 1000);
323
+ let receivedTerminal = false;
314
324
  for await (const message of stream) {
315
325
  resetBackoff(); // Reset on first message received
316
326
  if (!token) {
@@ -330,10 +340,16 @@ export function createAdaptClient(raw, id, options) {
330
340
  });
331
341
  continue;
332
342
  }
333
- if (handleMessage(message, authHeader(token)))
343
+ if (handleMessage(message, authHeader(token))) {
344
+ receivedTerminal = true;
334
345
  break;
346
+ }
335
347
  }
336
348
  log("info", "Stream ended normally");
349
+ if (token && !receivedTerminal && currentHandlers && storedToken) {
350
+ reconnectAttempts = 0;
351
+ scheduleReconnect();
352
+ }
337
353
  }
338
354
  catch (error) {
339
355
  // Clear timer on error
@@ -347,12 +363,12 @@ export function createAdaptClient(raw, id, options) {
347
363
  if (!token) {
348
364
  // Before token: retry retriable errors, reject non-retriable
349
365
  if (isRetriableError(error)) {
350
- // Schedule retry of runSession itself
366
+ // Schedule retry of watchRun itself
351
367
  reconnectAttempts++;
352
368
  const delay = reconnectAttempts === 1
353
369
  ? 0
354
370
  : Math.min(50 * Math.pow(2, reconnectAttempts - 2), 30000);
355
- log("info", `Retrying runSession in ${delay}ms (attempt ${reconnectAttempts})`);
371
+ log("info", `Retrying watchRun in ${delay}ms (attempt ${reconnectAttempts})`);
356
372
  if (delay === 0) {
357
373
  attemptRunSession();
358
374
  }
@@ -368,7 +384,7 @@ export function createAdaptClient(raw, id, options) {
368
384
  }
369
385
  }
370
386
  else {
371
- // After token: use standard reconnect logic (streamSession)
387
+ // After token: use standard reconnect logic (watchSession)
372
388
  if (isRetriableError(error)) {
373
389
  scheduleReconnect();
374
390
  }
@@ -398,16 +414,16 @@ export function createAdaptClient(raw, id, options) {
398
414
  abortController = controller;
399
415
  currentHandlers = handlers ?? {};
400
416
  reconnectAttempts = 0;
401
- const request = create(RunInheritRequestSchema, { id });
417
+ const request = create(WatchInheritRequestSchema, { id });
402
418
  let resolve;
403
419
  let reject;
404
420
  const sessionPromise = new Promise((res, rej) => {
405
421
  resolve = res;
406
422
  reject = rej;
407
423
  });
408
- // Helper to attempt runInherit with retries for pre-token failures
424
+ // Helper to attempt watchInherit with retries for pre-token failures
409
425
  const attemptRunInherit = async () => {
410
- const stream = raw.runInherit(request, {
426
+ const stream = raw.watchInherit(request, {
411
427
  signal: controller.signal,
412
428
  headers: authHeader(parentToken),
413
429
  });
@@ -428,6 +444,7 @@ export function createAdaptClient(raw, id, options) {
428
444
  try {
429
445
  // Start 1-second timer - reset backoff if we stay connected
430
446
  resetTimer = setTimeout(resetBackoff, 1000);
447
+ let receivedTerminal = false;
431
448
  for await (const message of stream) {
432
449
  resetBackoff(); // Reset on first message received
433
450
  if (!token) {
@@ -447,10 +464,16 @@ export function createAdaptClient(raw, id, options) {
447
464
  });
448
465
  continue;
449
466
  }
450
- if (handleMessage(message, authHeader(token)))
467
+ if (handleMessage(message, authHeader(token))) {
468
+ receivedTerminal = true;
451
469
  break;
470
+ }
452
471
  }
453
472
  log("info", "Stream ended normally");
473
+ if (token && !receivedTerminal && currentHandlers && storedToken) {
474
+ reconnectAttempts = 0;
475
+ scheduleReconnect();
476
+ }
454
477
  }
455
478
  catch (error) {
456
479
  // Clear timer on error
@@ -464,12 +487,12 @@ export function createAdaptClient(raw, id, options) {
464
487
  if (!token) {
465
488
  // Before token: retry retriable errors, reject non-retriable
466
489
  if (isRetriableError(error)) {
467
- // Schedule retry of runInherit itself
490
+ // Schedule retry of watchInherit itself
468
491
  reconnectAttempts++;
469
492
  const delay = reconnectAttempts === 1
470
493
  ? 0
471
494
  : Math.min(50 * Math.pow(2, reconnectAttempts - 2), 30000);
472
- log("info", `Retrying runInherit in ${delay}ms (attempt ${reconnectAttempts})`);
495
+ log("info", `Retrying watchInherit in ${delay}ms (attempt ${reconnectAttempts})`);
473
496
  if (delay === 0) {
474
497
  attemptRunInherit();
475
498
  }
@@ -485,7 +508,7 @@ export function createAdaptClient(raw, id, options) {
485
508
  }
486
509
  }
487
510
  else {
488
- // After token: use standard reconnect logic (streamSession)
511
+ // After token: use standard reconnect logic (watchSession)
489
512
  if (isRetriableError(error)) {
490
513
  scheduleReconnect();
491
514
  }
@@ -1142,6 +1142,27 @@ export type AckMessageResponseJson = {};
1142
1142
  export declare const AckMessageResponseSchema: GenMessage<AckMessageResponse, {
1143
1143
  jsonType: AckMessageResponseJson;
1144
1144
  }>;
1145
+ /**
1146
+ * ReconnectMessage signals the client to reconnect.
1147
+ * Sent before stream close to allow clean reconnection.
1148
+ *
1149
+ * @generated from message mochabugapis.adapt.automations.v1.ReconnectMessage
1150
+ */
1151
+ export type ReconnectMessage = Message<"mochabugapis.adapt.automations.v1.ReconnectMessage"> & {};
1152
+ /**
1153
+ * ReconnectMessage signals the client to reconnect.
1154
+ * Sent before stream close to allow clean reconnection.
1155
+ *
1156
+ * @generated from message mochabugapis.adapt.automations.v1.ReconnectMessage
1157
+ */
1158
+ export type ReconnectMessageJson = {};
1159
+ /**
1160
+ * Describes the message mochabugapis.adapt.automations.v1.ReconnectMessage.
1161
+ * Use `create(ReconnectMessageSchema)` to create a new message.
1162
+ */
1163
+ export declare const ReconnectMessageSchema: GenMessage<ReconnectMessage, {
1164
+ jsonType: ReconnectMessageJson;
1165
+ }>;
1145
1166
  /**
1146
1167
  * StreamSessionResponse wraps all possible message types sent via streaming
1147
1168
  *
@@ -1624,6 +1645,561 @@ export type RunInheritStartedJson = {
1624
1645
  export declare const RunInheritStartedSchema: GenMessage<RunInheritStarted, {
1625
1646
  jsonType: RunInheritStartedJson;
1626
1647
  }>;
1648
+ /**
1649
+ * WatchSessionRequest to start watching session messages with reconnect support
1650
+ *
1651
+ * @generated from message mochabugapis.adapt.automations.v1.WatchSessionRequest
1652
+ */
1653
+ export type WatchSessionRequest = Message<"mochabugapis.adapt.automations.v1.WatchSessionRequest"> & {
1654
+ /**
1655
+ * The automation id to watch
1656
+ *
1657
+ * @generated from field: string id = 1;
1658
+ */
1659
+ id: string;
1660
+ };
1661
+ /**
1662
+ * WatchSessionRequest to start watching session messages with reconnect support
1663
+ *
1664
+ * @generated from message mochabugapis.adapt.automations.v1.WatchSessionRequest
1665
+ */
1666
+ export type WatchSessionRequestJson = {
1667
+ /**
1668
+ * The automation id to watch
1669
+ *
1670
+ * @generated from field: string id = 1;
1671
+ */
1672
+ id?: string;
1673
+ };
1674
+ /**
1675
+ * Describes the message mochabugapis.adapt.automations.v1.WatchSessionRequest.
1676
+ * Use `create(WatchSessionRequestSchema)` to create a new message.
1677
+ */
1678
+ export declare const WatchSessionRequestSchema: GenMessage<WatchSessionRequest, {
1679
+ jsonType: WatchSessionRequestJson;
1680
+ }>;
1681
+ /**
1682
+ * WatchSessionResponse wraps all possible message types sent via watch streaming
1683
+ *
1684
+ * @generated from message mochabugapis.adapt.automations.v1.WatchSessionResponse
1685
+ */
1686
+ export type WatchSessionResponse = Message<"mochabugapis.adapt.automations.v1.WatchSessionResponse"> & {
1687
+ /**
1688
+ * A timesortable uuid for the message
1689
+ *
1690
+ * @generated from field: string id = 1;
1691
+ */
1692
+ id: string;
1693
+ /**
1694
+ * The actual message, one of the following types
1695
+ *
1696
+ * @generated from oneof mochabugapis.adapt.automations.v1.WatchSessionResponse.message
1697
+ */
1698
+ message: {
1699
+ /**
1700
+ * Output message from a vertex
1701
+ *
1702
+ * @generated from field: mochabugapis.adapt.automations.v1.Output output = 2;
1703
+ */
1704
+ value: Output;
1705
+ case: "output";
1706
+ } | {
1707
+ /**
1708
+ * URL message for browser interaction
1709
+ *
1710
+ * @generated from field: mochabugapis.adapt.automations.v1.Url url = 3;
1711
+ */
1712
+ value: Url;
1713
+ case: "url";
1714
+ } | {
1715
+ /**
1716
+ * Session status update
1717
+ *
1718
+ * @generated from field: mochabugapis.adapt.automations.v1.Session session = 4;
1719
+ */
1720
+ value: Session;
1721
+ case: "session";
1722
+ } | {
1723
+ /**
1724
+ * Reconnect message — client should reconnect after stream closes
1725
+ *
1726
+ * @generated from field: mochabugapis.adapt.automations.v1.ReconnectMessage reconnect = 5;
1727
+ */
1728
+ value: ReconnectMessage;
1729
+ case: "reconnect";
1730
+ } | {
1731
+ case: undefined;
1732
+ value?: undefined;
1733
+ };
1734
+ };
1735
+ /**
1736
+ * WatchSessionResponse wraps all possible message types sent via watch streaming
1737
+ *
1738
+ * @generated from message mochabugapis.adapt.automations.v1.WatchSessionResponse
1739
+ */
1740
+ export type WatchSessionResponseJson = {
1741
+ /**
1742
+ * A timesortable uuid for the message
1743
+ *
1744
+ * @generated from field: string id = 1;
1745
+ */
1746
+ id?: string;
1747
+ /**
1748
+ * Output message from a vertex
1749
+ *
1750
+ * @generated from field: mochabugapis.adapt.automations.v1.Output output = 2;
1751
+ */
1752
+ output?: OutputJson;
1753
+ /**
1754
+ * URL message for browser interaction
1755
+ *
1756
+ * @generated from field: mochabugapis.adapt.automations.v1.Url url = 3;
1757
+ */
1758
+ url?: UrlJson;
1759
+ /**
1760
+ * Session status update
1761
+ *
1762
+ * @generated from field: mochabugapis.adapt.automations.v1.Session session = 4;
1763
+ */
1764
+ session?: SessionJson;
1765
+ /**
1766
+ * Reconnect message — client should reconnect after stream closes
1767
+ *
1768
+ * @generated from field: mochabugapis.adapt.automations.v1.ReconnectMessage reconnect = 5;
1769
+ */
1770
+ reconnect?: ReconnectMessageJson;
1771
+ };
1772
+ /**
1773
+ * Describes the message mochabugapis.adapt.automations.v1.WatchSessionResponse.
1774
+ * Use `create(WatchSessionResponseSchema)` to create a new message.
1775
+ */
1776
+ export declare const WatchSessionResponseSchema: GenMessage<WatchSessionResponse, {
1777
+ jsonType: WatchSessionResponseJson;
1778
+ }>;
1779
+ /**
1780
+ * WatchRunRequest to start and watch a session in one request
1781
+ *
1782
+ * @generated from message mochabugapis.adapt.automations.v1.WatchRunRequest
1783
+ */
1784
+ export type WatchRunRequest = Message<"mochabugapis.adapt.automations.v1.WatchRunRequest"> & {
1785
+ /**
1786
+ * The automation id to run
1787
+ *
1788
+ * @generated from field: string id = 1;
1789
+ */
1790
+ id: string;
1791
+ /**
1792
+ * The transmitter to start from (optional, it defaults to the first one, always)
1793
+ *
1794
+ * @generated from field: optional string transmitter = 2;
1795
+ */
1796
+ transmitter?: string;
1797
+ /**
1798
+ * The signals on the transmitter you wish to start with
1799
+ *
1800
+ * @generated from field: map<string, mochabugapis.adapt.graph.SignalData> signals = 3;
1801
+ */
1802
+ signals: {
1803
+ [key: string]: SignalData;
1804
+ };
1805
+ /**
1806
+ * An optional token to redeem a challenge before starting, if the automation requires it
1807
+ *
1808
+ * @generated from field: optional string challenge_token = 4;
1809
+ */
1810
+ challengeToken?: string;
1811
+ };
1812
+ /**
1813
+ * WatchRunRequest to start and watch a session in one request
1814
+ *
1815
+ * @generated from message mochabugapis.adapt.automations.v1.WatchRunRequest
1816
+ */
1817
+ export type WatchRunRequestJson = {
1818
+ /**
1819
+ * The automation id to run
1820
+ *
1821
+ * @generated from field: string id = 1;
1822
+ */
1823
+ id?: string;
1824
+ /**
1825
+ * The transmitter to start from (optional, it defaults to the first one, always)
1826
+ *
1827
+ * @generated from field: optional string transmitter = 2;
1828
+ */
1829
+ transmitter?: string;
1830
+ /**
1831
+ * The signals on the transmitter you wish to start with
1832
+ *
1833
+ * @generated from field: map<string, mochabugapis.adapt.graph.SignalData> signals = 3;
1834
+ */
1835
+ signals?: {
1836
+ [key: string]: SignalDataJson;
1837
+ };
1838
+ /**
1839
+ * An optional token to redeem a challenge before starting, if the automation requires it
1840
+ *
1841
+ * @generated from field: optional string challenge_token = 4;
1842
+ */
1843
+ challengeToken?: string;
1844
+ };
1845
+ /**
1846
+ * Describes the message mochabugapis.adapt.automations.v1.WatchRunRequest.
1847
+ * Use `create(WatchRunRequestSchema)` to create a new message.
1848
+ */
1849
+ export declare const WatchRunRequestSchema: GenMessage<WatchRunRequest, {
1850
+ jsonType: WatchRunRequestJson;
1851
+ }>;
1852
+ /**
1853
+ * WatchRunResponse wraps all possible message types sent via watch streaming
1854
+ * The first message will always be a started message containing the session token
1855
+ *
1856
+ * @generated from message mochabugapis.adapt.automations.v1.WatchRunResponse
1857
+ */
1858
+ export type WatchRunResponse = Message<"mochabugapis.adapt.automations.v1.WatchRunResponse"> & {
1859
+ /**
1860
+ * A timesortable uuid for the message
1861
+ *
1862
+ * @generated from field: string id = 1;
1863
+ */
1864
+ id: string;
1865
+ /**
1866
+ * The actual message, one of the following types
1867
+ *
1868
+ * @generated from oneof mochabugapis.adapt.automations.v1.WatchRunResponse.message
1869
+ */
1870
+ message: {
1871
+ /**
1872
+ * Session started message (always first)
1873
+ *
1874
+ * @generated from field: mochabugapis.adapt.automations.v1.WatchRunStarted started = 2;
1875
+ */
1876
+ value: WatchRunStarted;
1877
+ case: "started";
1878
+ } | {
1879
+ /**
1880
+ * Output message from a vertex
1881
+ *
1882
+ * @generated from field: mochabugapis.adapt.automations.v1.Output output = 3;
1883
+ */
1884
+ value: Output;
1885
+ case: "output";
1886
+ } | {
1887
+ /**
1888
+ * URL message for browser interaction
1889
+ *
1890
+ * @generated from field: mochabugapis.adapt.automations.v1.Url url = 4;
1891
+ */
1892
+ value: Url;
1893
+ case: "url";
1894
+ } | {
1895
+ /**
1896
+ * Session status update
1897
+ *
1898
+ * @generated from field: mochabugapis.adapt.automations.v1.Session session = 5;
1899
+ */
1900
+ value: Session;
1901
+ case: "session";
1902
+ } | {
1903
+ /**
1904
+ * Reconnect message — client should reconnect after stream closes
1905
+ *
1906
+ * @generated from field: mochabugapis.adapt.automations.v1.ReconnectMessage reconnect = 6;
1907
+ */
1908
+ value: ReconnectMessage;
1909
+ case: "reconnect";
1910
+ } | {
1911
+ case: undefined;
1912
+ value?: undefined;
1913
+ };
1914
+ };
1915
+ /**
1916
+ * WatchRunResponse wraps all possible message types sent via watch streaming
1917
+ * The first message will always be a started message containing the session token
1918
+ *
1919
+ * @generated from message mochabugapis.adapt.automations.v1.WatchRunResponse
1920
+ */
1921
+ export type WatchRunResponseJson = {
1922
+ /**
1923
+ * A timesortable uuid for the message
1924
+ *
1925
+ * @generated from field: string id = 1;
1926
+ */
1927
+ id?: string;
1928
+ /**
1929
+ * Session started message (always first)
1930
+ *
1931
+ * @generated from field: mochabugapis.adapt.automations.v1.WatchRunStarted started = 2;
1932
+ */
1933
+ started?: WatchRunStartedJson;
1934
+ /**
1935
+ * Output message from a vertex
1936
+ *
1937
+ * @generated from field: mochabugapis.adapt.automations.v1.Output output = 3;
1938
+ */
1939
+ output?: OutputJson;
1940
+ /**
1941
+ * URL message for browser interaction
1942
+ *
1943
+ * @generated from field: mochabugapis.adapt.automations.v1.Url url = 4;
1944
+ */
1945
+ url?: UrlJson;
1946
+ /**
1947
+ * Session status update
1948
+ *
1949
+ * @generated from field: mochabugapis.adapt.automations.v1.Session session = 5;
1950
+ */
1951
+ session?: SessionJson;
1952
+ /**
1953
+ * Reconnect message — client should reconnect after stream closes
1954
+ *
1955
+ * @generated from field: mochabugapis.adapt.automations.v1.ReconnectMessage reconnect = 6;
1956
+ */
1957
+ reconnect?: ReconnectMessageJson;
1958
+ };
1959
+ /**
1960
+ * Describes the message mochabugapis.adapt.automations.v1.WatchRunResponse.
1961
+ * Use `create(WatchRunResponseSchema)` to create a new message.
1962
+ */
1963
+ export declare const WatchRunResponseSchema: GenMessage<WatchRunResponse, {
1964
+ jsonType: WatchRunResponseJson;
1965
+ }>;
1966
+ /**
1967
+ * WatchRunStarted is sent as the first message when a watch-run session starts
1968
+ *
1969
+ * @generated from message mochabugapis.adapt.automations.v1.WatchRunStarted
1970
+ */
1971
+ export type WatchRunStarted = Message<"mochabugapis.adapt.automations.v1.WatchRunStarted"> & {
1972
+ /**
1973
+ * The access token for the session
1974
+ *
1975
+ * @generated from field: string token = 1;
1976
+ */
1977
+ token: string;
1978
+ /**
1979
+ * The timestamp when the session expires, if not set, the session never expires
1980
+ *
1981
+ * @generated from field: optional google.protobuf.Timestamp expires = 2;
1982
+ */
1983
+ expires?: Timestamp;
1984
+ };
1985
+ /**
1986
+ * WatchRunStarted is sent as the first message when a watch-run session starts
1987
+ *
1988
+ * @generated from message mochabugapis.adapt.automations.v1.WatchRunStarted
1989
+ */
1990
+ export type WatchRunStartedJson = {
1991
+ /**
1992
+ * The access token for the session
1993
+ *
1994
+ * @generated from field: string token = 1;
1995
+ */
1996
+ token?: string;
1997
+ /**
1998
+ * The timestamp when the session expires, if not set, the session never expires
1999
+ *
2000
+ * @generated from field: optional google.protobuf.Timestamp expires = 2;
2001
+ */
2002
+ expires?: TimestampJson;
2003
+ };
2004
+ /**
2005
+ * Describes the message mochabugapis.adapt.automations.v1.WatchRunStarted.
2006
+ * Use `create(WatchRunStartedSchema)` to create a new message.
2007
+ */
2008
+ export declare const WatchRunStartedSchema: GenMessage<WatchRunStarted, {
2009
+ jsonType: WatchRunStartedJson;
2010
+ }>;
2011
+ /**
2012
+ * WatchInheritRequest to inherit and watch a session in one request
2013
+ *
2014
+ * @generated from message mochabugapis.adapt.automations.v1.WatchInheritRequest
2015
+ */
2016
+ export type WatchInheritRequest = Message<"mochabugapis.adapt.automations.v1.WatchInheritRequest"> & {
2017
+ /**
2018
+ * The automation id to inherit
2019
+ *
2020
+ * @generated from field: string id = 1;
2021
+ */
2022
+ id: string;
2023
+ };
2024
+ /**
2025
+ * WatchInheritRequest to inherit and watch a session in one request
2026
+ *
2027
+ * @generated from message mochabugapis.adapt.automations.v1.WatchInheritRequest
2028
+ */
2029
+ export type WatchInheritRequestJson = {
2030
+ /**
2031
+ * The automation id to inherit
2032
+ *
2033
+ * @generated from field: string id = 1;
2034
+ */
2035
+ id?: string;
2036
+ };
2037
+ /**
2038
+ * Describes the message mochabugapis.adapt.automations.v1.WatchInheritRequest.
2039
+ * Use `create(WatchInheritRequestSchema)` to create a new message.
2040
+ */
2041
+ export declare const WatchInheritRequestSchema: GenMessage<WatchInheritRequest, {
2042
+ jsonType: WatchInheritRequestJson;
2043
+ }>;
2044
+ /**
2045
+ * WatchInheritResponse wraps all possible message types sent via watch streaming
2046
+ * The first message will always be an inherited message containing the session token
2047
+ *
2048
+ * @generated from message mochabugapis.adapt.automations.v1.WatchInheritResponse
2049
+ */
2050
+ export type WatchInheritResponse = Message<"mochabugapis.adapt.automations.v1.WatchInheritResponse"> & {
2051
+ /**
2052
+ * A timesortable uuid for the message
2053
+ *
2054
+ * @generated from field: string id = 1;
2055
+ */
2056
+ id: string;
2057
+ /**
2058
+ * The actual message, one of the following types
2059
+ *
2060
+ * @generated from oneof mochabugapis.adapt.automations.v1.WatchInheritResponse.message
2061
+ */
2062
+ message: {
2063
+ /**
2064
+ * Session inherited message (always first)
2065
+ *
2066
+ * @generated from field: mochabugapis.adapt.automations.v1.WatchInheritStarted inherited = 2;
2067
+ */
2068
+ value: WatchInheritStarted;
2069
+ case: "inherited";
2070
+ } | {
2071
+ /**
2072
+ * Output message from a vertex
2073
+ *
2074
+ * @generated from field: mochabugapis.adapt.automations.v1.Output output = 3;
2075
+ */
2076
+ value: Output;
2077
+ case: "output";
2078
+ } | {
2079
+ /**
2080
+ * URL message for browser interaction
2081
+ *
2082
+ * @generated from field: mochabugapis.adapt.automations.v1.Url url = 4;
2083
+ */
2084
+ value: Url;
2085
+ case: "url";
2086
+ } | {
2087
+ /**
2088
+ * Session status update
2089
+ *
2090
+ * @generated from field: mochabugapis.adapt.automations.v1.Session session = 5;
2091
+ */
2092
+ value: Session;
2093
+ case: "session";
2094
+ } | {
2095
+ /**
2096
+ * Reconnect message — client should reconnect after stream closes
2097
+ *
2098
+ * @generated from field: mochabugapis.adapt.automations.v1.ReconnectMessage reconnect = 6;
2099
+ */
2100
+ value: ReconnectMessage;
2101
+ case: "reconnect";
2102
+ } | {
2103
+ case: undefined;
2104
+ value?: undefined;
2105
+ };
2106
+ };
2107
+ /**
2108
+ * WatchInheritResponse wraps all possible message types sent via watch streaming
2109
+ * The first message will always be an inherited message containing the session token
2110
+ *
2111
+ * @generated from message mochabugapis.adapt.automations.v1.WatchInheritResponse
2112
+ */
2113
+ export type WatchInheritResponseJson = {
2114
+ /**
2115
+ * A timesortable uuid for the message
2116
+ *
2117
+ * @generated from field: string id = 1;
2118
+ */
2119
+ id?: string;
2120
+ /**
2121
+ * Session inherited message (always first)
2122
+ *
2123
+ * @generated from field: mochabugapis.adapt.automations.v1.WatchInheritStarted inherited = 2;
2124
+ */
2125
+ inherited?: WatchInheritStartedJson;
2126
+ /**
2127
+ * Output message from a vertex
2128
+ *
2129
+ * @generated from field: mochabugapis.adapt.automations.v1.Output output = 3;
2130
+ */
2131
+ output?: OutputJson;
2132
+ /**
2133
+ * URL message for browser interaction
2134
+ *
2135
+ * @generated from field: mochabugapis.adapt.automations.v1.Url url = 4;
2136
+ */
2137
+ url?: UrlJson;
2138
+ /**
2139
+ * Session status update
2140
+ *
2141
+ * @generated from field: mochabugapis.adapt.automations.v1.Session session = 5;
2142
+ */
2143
+ session?: SessionJson;
2144
+ /**
2145
+ * Reconnect message — client should reconnect after stream closes
2146
+ *
2147
+ * @generated from field: mochabugapis.adapt.automations.v1.ReconnectMessage reconnect = 6;
2148
+ */
2149
+ reconnect?: ReconnectMessageJson;
2150
+ };
2151
+ /**
2152
+ * Describes the message mochabugapis.adapt.automations.v1.WatchInheritResponse.
2153
+ * Use `create(WatchInheritResponseSchema)` to create a new message.
2154
+ */
2155
+ export declare const WatchInheritResponseSchema: GenMessage<WatchInheritResponse, {
2156
+ jsonType: WatchInheritResponseJson;
2157
+ }>;
2158
+ /**
2159
+ * WatchInheritStarted is sent as the first message when a watch-inherit session is inherited
2160
+ *
2161
+ * @generated from message mochabugapis.adapt.automations.v1.WatchInheritStarted
2162
+ */
2163
+ export type WatchInheritStarted = Message<"mochabugapis.adapt.automations.v1.WatchInheritStarted"> & {
2164
+ /**
2165
+ * The access token for the session
2166
+ *
2167
+ * @generated from field: string token = 1;
2168
+ */
2169
+ token: string;
2170
+ /**
2171
+ * The timestamp when the session expires, if not set, the session never expires
2172
+ *
2173
+ * @generated from field: optional google.protobuf.Timestamp expires = 2;
2174
+ */
2175
+ expires?: Timestamp;
2176
+ };
2177
+ /**
2178
+ * WatchInheritStarted is sent as the first message when a watch-inherit session is inherited
2179
+ *
2180
+ * @generated from message mochabugapis.adapt.automations.v1.WatchInheritStarted
2181
+ */
2182
+ export type WatchInheritStartedJson = {
2183
+ /**
2184
+ * The access token for the session
2185
+ *
2186
+ * @generated from field: string token = 1;
2187
+ */
2188
+ token?: string;
2189
+ /**
2190
+ * The timestamp when the session expires, if not set, the session never expires
2191
+ *
2192
+ * @generated from field: optional google.protobuf.Timestamp expires = 2;
2193
+ */
2194
+ expires?: TimestampJson;
2195
+ };
2196
+ /**
2197
+ * Describes the message mochabugapis.adapt.automations.v1.WatchInheritStarted.
2198
+ * Use `create(WatchInheritStartedSchema)` to create a new message.
2199
+ */
2200
+ export declare const WatchInheritStartedSchema: GenMessage<WatchInheritStarted, {
2201
+ jsonType: WatchInheritStartedJson;
2202
+ }>;
1627
2203
  /**
1628
2204
  * The session enum status
1629
2205
  *
@@ -1786,6 +2362,7 @@ export declare const AutomationService: GenService<{
1786
2362
  output: typeof ReadUrlsResponseSchema;
1787
2363
  };
1788
2364
  /**
2365
+ * DEPRECATED: Use WatchSession instead. Remove once all clients have migrated.
1789
2366
  * Stream session messages in real-time (replaces WebSocket)
1790
2367
  *
1791
2368
  * @generated from rpc mochabugapis.adapt.automations.v1.AutomationService.StreamSession
@@ -1806,6 +2383,7 @@ export declare const AutomationService: GenService<{
1806
2383
  output: typeof AckMessageResponseSchema;
1807
2384
  };
1808
2385
  /**
2386
+ * DEPRECATED: Use WatchRun instead. Remove once all clients have migrated.
1809
2387
  * Run a session: starts the automation and streams messages until completion.
1810
2388
  * This combines StartSession and StreamSession for lower latency.
1811
2389
  * Idempotency: OPTIONAL (will become REQUIRED in a future release). Callers should
@@ -1822,6 +2400,7 @@ export declare const AutomationService: GenService<{
1822
2400
  output: typeof RunSessionResponseSchema;
1823
2401
  };
1824
2402
  /**
2403
+ * DEPRECATED: Use WatchInherit instead. Remove once all clients have migrated.
1825
2404
  * Run inherit: inherits ownership and streams messages until completion
1826
2405
  * This combines InheritSession and StreamSession for lower latency
1827
2406
  *
@@ -1832,4 +2411,37 @@ export declare const AutomationService: GenService<{
1832
2411
  input: typeof RunInheritRequestSchema;
1833
2412
  output: typeof RunInheritResponseSchema;
1834
2413
  };
2414
+ /**
2415
+ * WatchSession streams session messages with reconnect support.
2416
+ * Replaces StreamSession — sends ReconnectMessage before closing.
2417
+ *
2418
+ * @generated from rpc mochabugapis.adapt.automations.v1.AutomationService.WatchSession
2419
+ */
2420
+ watchSession: {
2421
+ methodKind: "server_streaming";
2422
+ input: typeof WatchSessionRequestSchema;
2423
+ output: typeof WatchSessionResponseSchema;
2424
+ };
2425
+ /**
2426
+ * WatchRun starts a session and streams with reconnect support.
2427
+ * Replaces RunSession — sends ReconnectMessage before closing.
2428
+ *
2429
+ * @generated from rpc mochabugapis.adapt.automations.v1.AutomationService.WatchRun
2430
+ */
2431
+ watchRun: {
2432
+ methodKind: "server_streaming";
2433
+ input: typeof WatchRunRequestSchema;
2434
+ output: typeof WatchRunResponseSchema;
2435
+ };
2436
+ /**
2437
+ * WatchInherit inherits a session and streams with reconnect support.
2438
+ * Replaces RunInherit — sends ReconnectMessage before closing.
2439
+ *
2440
+ * @generated from rpc mochabugapis.adapt.automations.v1.AutomationService.WatchInherit
2441
+ */
2442
+ watchInherit: {
2443
+ methodKind: "server_streaming";
2444
+ input: typeof WatchInheritRequestSchema;
2445
+ output: typeof WatchInheritResponseSchema;
2446
+ };
1835
2447
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mochabug/adapt-core",
3
- "version": "1.0.1-rc.1",
3
+ "version": "1.0.1-rc.3",
4
4
  "description": "Cross-platform core client library for Adapt automation platform",
5
5
  "type": "module",
6
6
  "main": "./dist/esm/index.js",
@@ -38,7 +38,7 @@
38
38
  "author": "mochabug AB",
39
39
  "license": "ISC",
40
40
  "devDependencies": {
41
- "@types/node": "^25.3.3",
41
+ "@types/node": "^25.4.0",
42
42
  "@vitest/ui": "^4.0.18",
43
43
  "typescript": "^5.9.3",
44
44
  "vitest": "^4.0.18"