jennah-sdk-ts 0.70.0 → 0.72.0

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.
package/dist/client.d.ts CHANGED
@@ -125,6 +125,11 @@ export declare const SERVICES: {
125
125
  input: typeof import("./gen/jennah/agent/v1/memory_pb.js").RemoveFormationModelRequestSchema;
126
126
  output: typeof import("./gen/jennah/agent/v1/memory_pb.js").RemoveFormationModelResponseSchema;
127
127
  };
128
+ checkFormationModel: {
129
+ methodKind: "unary";
130
+ input: typeof import("./gen/jennah/agent/v1/memory_pb.js").CheckFormationModelRequestSchema;
131
+ output: typeof import("./gen/jennah/agent/v1/memory_pb.js").CheckFormationModelResponseSchema;
132
+ };
128
133
  }>;
129
134
  readonly scopes: import("@bufbuild/protobuf/codegenv2").GenService<{
130
135
  createScope: {
@@ -3136,6 +3136,55 @@ export type RemoveFormationModelResponse = Message<"jennahapi.agent.v1.RemoveFor
3136
3136
  * Use `create(RemoveFormationModelResponseSchema)` to create a new message.
3137
3137
  */
3138
3138
  export declare const RemoveFormationModelResponseSchema: GenMessage<RemoveFormationModelResponse>;
3139
+ /**
3140
+ * Request message for the MemoryService.CheckFormationModel rpc.
3141
+ *
3142
+ * @generated from message jennahapi.agent.v1.CheckFormationModelRequest
3143
+ */
3144
+ export type CheckFormationModelRequest = Message<"jennahapi.agent.v1.CheckFormationModelRequest"> & {};
3145
+ /**
3146
+ * Describes the message jennahapi.agent.v1.CheckFormationModelRequest.
3147
+ * Use `create(CheckFormationModelRequestSchema)` to create a new message.
3148
+ */
3149
+ export declare const CheckFormationModelRequestSchema: GenMessage<CheckFormationModelRequest>;
3150
+ /**
3151
+ * Response message for the MemoryService.CheckFormationModel rpc.
3152
+ *
3153
+ * @generated from message jennahapi.agent.v1.CheckFormationModelResponse
3154
+ */
3155
+ export type CheckFormationModelResponse = Message<"jennahapi.agent.v1.CheckFormationModelResponse"> & {
3156
+ /**
3157
+ * True when the model answered the check with usable structured output.
3158
+ *
3159
+ * @generated from field: bool ok = 1;
3160
+ */
3161
+ ok: boolean;
3162
+ /**
3163
+ * The step that failed when `ok` is false: `access` (the role could not be
3164
+ * assumed), `model` (the provider refused the request or did not answer), or
3165
+ * `answer` (the model answered, but not with usable structured output).
3166
+ *
3167
+ * @generated from field: string step = 2;
3168
+ */
3169
+ step: string;
3170
+ /**
3171
+ * What failed, including the provider's own message, when `ok` is false.
3172
+ *
3173
+ * @generated from field: string message = 3;
3174
+ */
3175
+ message: string;
3176
+ /**
3177
+ * The model that was checked.
3178
+ *
3179
+ * @generated from field: jennahapi.agent.v1.FormationModel model = 4;
3180
+ */
3181
+ model?: FormationModel | undefined;
3182
+ };
3183
+ /**
3184
+ * Describes the message jennahapi.agent.v1.CheckFormationModelResponse.
3185
+ * Use `create(CheckFormationModelResponseSchema)` to create a new message.
3186
+ */
3187
+ export declare const CheckFormationModelResponseSchema: GenMessage<CheckFormationModelResponse>;
3139
3188
  /**
3140
3189
  * Direction of vector+graph fusion when a query links the two sections.
3141
3190
  *
@@ -3742,4 +3791,22 @@ export declare const MemoryService: GenService<{
3742
3791
  input: typeof RemoveFormationModelRequestSchema;
3743
3792
  output: typeof RemoveFormationModelResponseSchema;
3744
3793
  };
3794
+ /**
3795
+ * Checks the enterprise's formation model without changing it. External
3796
+ * (gateway) RPC. Makes the same check call SetFormationModel makes, against the
3797
+ * model as it is stored, through the same access formations use, and saves
3798
+ * nothing. A failed check is a successful response with `ok` false and the step
3799
+ * that failed, because the check itself ran: use it to find out why formations
3800
+ * are failing, or to confirm access works again after fixing it.
3801
+ *
3802
+ * NOT_FOUND when no formation model is set. Available on every plan. The check
3803
+ * call is billed by your model provider.
3804
+ *
3805
+ * @generated from rpc jennahapi.agent.v1.MemoryService.CheckFormationModel
3806
+ */
3807
+ checkFormationModel: {
3808
+ methodKind: "unary";
3809
+ input: typeof CheckFormationModelRequestSchema;
3810
+ output: typeof CheckFormationModelResponseSchema;
3811
+ };
3745
3812
  }>;
@@ -7,7 +7,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
7
7
  /**
8
8
  * Describes the file jennah/agent/v1/memory.proto.
9
9
  */
10
- export const file_jennah_agent_v1_memory = /*@__PURE__*/ fileDesc("ChxqZW5uYWgvYWdlbnQvdjEvbWVtb3J5LnByb3RvEhJqZW5uYWhhcGkuYWdlbnQudjEizAIKE0NvbW1pdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjEKA2xvZxgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwEjAKB3ZlY3RvcnMYAyADKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSLQoFZ3JhcGgYBCABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhXcml0ZRIcChRyZWplY3Rfb25fdHJ1bmNhdGlvbhgFIAEoCBIUCgx0YXJnZXRfc2NvcGUYBiABKAkSEAoIc2NvcGVfaWQYByABKAkSPAoNc3VwZXJzZXNzaW9ucxgIIAEoCzIlLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlc3Npb25Xcml0ZSKwAgoQRXhlY3V0aW9uTG9nU3RlcBIPCgdzdGVwX2lkGAEgASgJEhcKD3Rob3VnaHRfcHJvY2VzcxgCIAEoCRIRCgl0b29sX3VzZWQYAyABKAkSEgoKdG9vbF9pbnB1dBgEIAEoCRITCgt0b29sX291dHB1dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHNjb3BlX2lkGAcgASgJEkQKCG1ldGFkYXRhGAggAygLMjIuamVubmFoYXBpLmFnZW50LnYxLkV4ZWN1dGlvbkxvZ1N0ZXAuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilwIKC1ZlY3RvckNodW5rEhAKCGNodW5rX2lkGAEgASgJEhMKC3Jhd19jb250ZW50GAIgASgJEhEKCWVtYmVkZGluZxgDIAMoAhI/CghtZXRhZGF0YRgEIAMoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVuay5NZXRhZGF0YUVudHJ5EiwKCHZhbGlkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgppbnZhbGlkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiaAoKR3JhcGhXcml0ZRIsCgVub2RlcxgBIAMoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUSLAoFZWRnZXMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlIn8KEVN1cGVyc2Vzc2lvbldyaXRlEjMKBWVkZ2VzGAEgAygLMiQuamVubmFoYXBpLmFnZW50LnYxLkVkZ2VTdXBlcnNlc3Npb24SNQoGY2h1bmtzGAIgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLkNodW5rU3VwZXJzZXNzaW9uIloKEEVkZ2VTdXBlcnNlc3Npb24SFQoNcHJpb3JfZWRnZV9pZBgBIAEoCRIvCghuZXdfZWRnZRgCIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaEVkZ2UiXwoRQ2h1bmtTdXBlcnNlc3Npb24SFgoOcHJpb3JfY2h1bmtfaWQYASABKAkSMgoJbmV3X2NodW5rGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLlZlY3RvckNodW5rIosCCglHcmFwaE5vZGUSDwoHbm9kZV9pZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIrCgpwcm9wZXJ0aWVzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9CghtZXRhZGF0YRgFIAMoCzIrLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUuTWV0YWRhdGFFbnRyeRIRCglub2RlX3R5cGUYBiABKAkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpIDCglHcmFwaEVkZ2USDwoHZWRnZV9pZBgBIAEoCRIWCg5zb3VyY2Vfbm9kZV9pZBgCIAEoCRIWCg50YXJnZXRfbm9kZV9pZBgDIAEoCRIZChFyZWxhdGlvbnNoaXBfdHlwZRgEIAEoCRIrCgpwcm9wZXJ0aWVzGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoIbWV0YWRhdGEYCSADKAsyKy5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpcCChRDb21taXRNZW1vcnlSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJleGVjdXRpb25fbG9nX3Jvd3MYAiABKAMSEwoLdmVjdG9yX3Jvd3MYAyABKAMSFwoPZ3JhcGhfbm9kZV9yb3dzGAQgASgDEhcKD2dyYXBoX2VkZ2Vfcm93cxgFIAEoAxIbChN0cnVuY2F0ZWRfY2h1bmtfaWRzGAYgAygJEhAKCHNjb3BlX2lkGAcgASgJEhoKEmVkZ2Vfc3VwZXJzZXNzaW9ucxgIIAEoAxIbChNjaHVua19zdXBlcnNlc3Npb25zGAkgASgDIucCChJRdWVyeU1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKCHNlbWFudGljGAIgASgLMiEuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUXVlcnkSLQoFZ3JhcGgYAyABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhRdWVyeRIpCgNsb2cYBCABKAsyHC5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUXVlcnkSDAoEbGluaxgFIAEoCBI9ChBmdXNpb25fZGlyZWN0aW9uGAYgASgOMiMuamVubmFoYXBpLmFnZW50LnYxLkZ1c2lvbkRpcmVjdGlvbhIpCgVhc19vZhgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRYWRkaXRpb25hbF9zY29wZXMYCCADKAkSEAoIc2NvcGVfaWQYCSABKAkipAIKDVNlbWFudGljUXVlcnkSEQoJZW1iZWRkaW5nGAEgAygCEhIKCnF1ZXJ5X3RleHQYAiABKAkSDQoFbGltaXQYAyABKAUSMwoHZmlsdGVycxgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlchIvCgthc19vZl92YWxpZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIYXNfb2ZfdHgYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjkKDnJldHJpZXZhbF9tb2RlGAcgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLlJldHJpZXZhbE1vZGUSDgoGcmVyYW5rGAggASgIIp8CCg5NZXRhZGF0YUZpbHRlchILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSPQoIb3BlcmF0b3IYAyABKA4yKy5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIuT3BlcmF0b3IisQEKCE9wZXJhdG9yEhgKFE9QRVJBVE9SX1VOU1BFQ0lGSUVEEAASEwoPT1BFUkFUT1JfRVFVQUxTEAESFgoST1BFUkFUT1JfTEVTU19USEFOEAISHwobT1BFUkFUT1JfTEVTU19USEFOX09SX0VRVUFMEAMSGQoVT1BFUkFUT1JfR1JFQVRFUl9USEFOEAQSIgoeT1BFUkFUT1JfR1JFQVRFUl9USEFOX09SX0VRVUFMEAUi2wEKCkdyYXBoUXVlcnkSMQoFc3RhcnQYASABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlTWF0Y2gSLAoFc3RlcHMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhTdGVwEg0KBWxpbWl0GAMgASgFEi8KC2FzX29mX3ZhbGlkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghhc19vZl90eBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiigEKDkdyYXBoTm9kZU1hdGNoEg0KBWxhYmVsGAEgASgJEjMKB2ZpbHRlcnMYAiADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuUHJvcGVydHlGaWx0ZXISNAoIbWV0YWRhdGEYAyADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIixQEKCUdyYXBoU3RlcBIZChFyZWxhdGlvbnNoaXBfdHlwZRgBIAEoCRI1CglkaXJlY3Rpb24YAiABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhEaXJlY3Rpb24SMAoEbm9kZRgDIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGVNYXRjaBI0CghtZXRhZGF0YRgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlciJECg5Qcm9wZXJ0eUZpbHRlchILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUiegoITG9nUXVlcnkSDQoFbGltaXQYASABKAUSKQoFc2luY2UYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKCG1ldGFkYXRhGAMgAygLMiIuamVubmFoYXBpLmFnZW50LnYxLk1ldGFkYXRhRmlsdGVyIosCChNRdWVyeU1lbW9yeVJlc3BvbnNlEjQKCHNlbWFudGljGAEgASgLMiIuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUmVzdWx0Ei4KBWdyYXBoGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoUmVzdWx0EioKA2xvZxgDIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5Mb2dSZXN1bHQSLgoFZnVzZWQYBCABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuRnVzZWRSZXN1bHQSMgoOcmVhZF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkQKDlNlbWFudGljUmVzdWx0EjIKB21hdGNoZXMYASADKAsyIS5qZW5uYWhhcGkuYWdlbnQudjEuU2VtYW50aWNNYXRjaCK+AwoNU2VtYW50aWNNYXRjaBIQCghjaHVua19pZBgBIAEoCRITCgtyYXdfY29udGVudBgCIAEoCRIQCghkaXN0YW5jZRgDIAEoARJBCghtZXRhZGF0YRgEIAMoCzIvLmplbm5haGFwaS5hZ2VudC52MS5TZW1hbnRpY01hdGNoLk1ldGFkYXRhRW50cnkSEAoIc2NvcGVfaWQYBSABKAkSNgoIY2hhbm5lbHMYBiADKA4yJC5qZW5uYWhhcGkuYWdlbnQudjEuUmV0cmlldmFsQ2hhbm5lbBIVCg1sZXhpY2FsX3Njb3JlGAcgASgBEhEKCXJyZl9zY29yZRgIIAEoARIUCgxyZXJhbmtfc2NvcmUYCSABKAESGAoQcmVyYW5rX3RydW5jYXRlZBgKIAEoCBIsCgh2YWxpZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKC0dyYXBoUmVzdWx0EiUKBHJvd3MYASADKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkAKCUxvZ1Jlc3VsdBIzCgVzdGVwcxgBIAMoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwIjUKC0Z1c2VkUmVzdWx0EiYKBWl0ZW1zGAEgAygLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKFAgoUSW5zcGVjdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKB3ZlY3RvcnMYAiABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdFZlY3RvcnMSLwoFZ3JhcGgYAyABKAsyIC5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdEdyYXBoEisKA2xvZxgEIAEoCzIeLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TG9nEikKBWFzX29mGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghzY29wZV9pZBgGIAEoCSIzCg5JbnNwZWN0VmVjdG9ycxINCgVsaW1pdBgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJImgKDEluc3BlY3RHcmFwaBISCgpub2RlX2xpbWl0GAEgASgFEhIKCmVkZ2VfbGltaXQYAiABKAUSFwoPbm9kZV9wYWdlX3Rva2VuGAMgASgJEhcKD2VkZ2VfcGFnZV90b2tlbhgEIAEoCSJaCgpJbnNwZWN0TG9nEg0KBWxpbWl0GAEgASgFEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwYWdlX3Rva2VuGAMgASgJIswCChVJbnNwZWN0TWVtb3J5UmVzcG9uc2USOAoHdmVjdG9ycxgBIAEoCzInLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JJbnNwZWN0UmVzdWx0EjUKBWdyYXBoGAIgASgLMiYuamVubmFoYXBpLmFnZW50LnYxLkdyYXBoSW5zcGVjdFJlc3VsdBIqCgNsb2cYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUmVzdWx0EjIKDnJlYWRfdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChBuZXh0X2NodW5rX3Rva2VuGAUgASgJEhcKD25leHRfbm9kZV90b2tlbhgGIAEoCRIXCg9uZXh0X2VkZ2VfdG9rZW4YByABKAkSFgoObmV4dF9sb2dfdG9rZW4YCCABKAkiSgoTVmVjdG9ySW5zcGVjdFJlc3VsdBIzCgZjaHVua3MYASADKAsyIy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmtJbmZvIu0DCg9WZWN0b3JDaHVua0luZm8SEAoIY2h1bmtfaWQYASABKAkSEwoLcmF3X2NvbnRlbnQYAiABKAkSLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdHJ1bmNhdGVkGAQgASgISACIAQESGAoLdG9rZW5fY291bnQYBSABKANIAYgBARJDCghtZXRhZGF0YRgGIAMoCzIxLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVua0luZm8uTWV0YWRhdGFFbnRyeRIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYXNzZXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdHJ1bmNhdGVkQg4KDF90b2tlbl9jb3VudCJwChJHcmFwaEluc3BlY3RSZXN1bHQSLAoFbm9kZXMYASADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlEiwKBWVkZ2VzGAIgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoRWRnZSKPAQoUU3VwZXJzZWRlRWRnZVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEhUKDXByaW9yX2VkZ2VfaWQYAiABKAkSLwoIbmV3X2VkZ2UYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlEhAKCHNjb3BlX2lkGAQgASgJIk0KFVN1cGVyc2VkZUVkZ2VSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKUAQoVU3VwZXJzZWRlQ2h1bmtSZXF1ZXN0Eh0KEWFnZW50X2luc3RhbmNlX2lkGAEgASgJQgIYARIWCg5wcmlvcl9jaHVua19pZBgCIAEoCRIyCgluZXdfY2h1bmsYAyABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSEAoIc2NvcGVfaWQYBCABKAkiYQoWU3VwZXJzZWRlQ2h1bmtSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0cnVuY2F0ZWQYAiABKAgiRwoJVG9vbFRyYWNlEhEKCXRvb2xfdXNlZBgBIAEoCRISCgp0b29sX2lucHV0GAIgASgJEhMKC3Rvb2xfb3V0cHV0GAMgASgJIn0KEENvbnZlcnNhdGlvblR1cm4SKgoEcm9sZRgBIAEoDjIcLmplbm5haGFwaS5hZ2VudC52MS5UdXJuUm9sZRIPCgdjb250ZW50GAIgASgJEiwKBXRvb2xzGAMgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLlRvb2xUcmFjZSKiAQoRRm9ybU1lbW9yeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSMwoFdHVybnMYAiADKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuQ29udmVyc2F0aW9uVHVybhIVCg1mb3JtYXRpb25fa2V5GAMgASgJEi8KC29ic2VydmVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKwAgoPRm9ybWVkQ2FuZGlkYXRlEhQKDGNhbmRpZGF0ZV9pZBgBIAEoCRIvCgRraW5kGAIgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLkNhbmRpZGF0ZUtpbmQSDAoEdGV4dBgDIAEoCRIVCg1zb3VyY2VfZW50aXR5GAQgASgJEhkKEXJlbGF0aW9uc2hpcF90eXBlGAUgASgJEhUKDXRhcmdldF9lbnRpdHkYBiABKAkSNAoIZGVjaXNpb24YByABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5RGVjaXNpb24SEgoKbWF0Y2hlZF9pZBgIIAEoCRIYChByZWplY3Rpb25fcmVhc29uGAkgASgJEhsKE3ByZXNlcnZlc19zdHJ1Y3R1cmUYCiABKAgiOwoPUmVkYWN0aW9uUmVjb3JkEhIKCnR1cm5faW5kZXgYASABKAUSFAoMbWFza2VkX2NvdW50GAIgASgFIlgKE1N1bW1hcml6ZWRTdHJ1Y3R1cmUSEgoKdHVybl9pbmRleBgBIAEoBRITCgtkZXNjcmlwdGlvbhgCIAEoCRIYChBzdW1tYXJpemVkX2NvdW50GAMgASgFIv4DChJGb3JtTWVtb3J5UmVzcG9uc2USNAoQY29tbWl0X3RpbWVzdGFtcBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSZXhlY3V0aW9uX2xvZ19yb3dzGAIgASgDEhMKC3ZlY3Rvcl9yb3dzGAMgASgDEhcKD2dyYXBoX25vZGVfcm93cxgEIAEoAxIXCg9ncmFwaF9lZGdlX3Jvd3MYBSABKAMSGgoSZWRnZV9zdXBlcnNlc3Npb25zGAYgASgDEhsKE2NodW5rX3N1cGVyc2Vzc2lvbnMYByABKAMSNwoKY2FuZGlkYXRlcxgIIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtZWRDYW5kaWRhdGUSNwoKcmVkYWN0aW9ucxgJIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5SZWRhY3Rpb25SZWNvcmQSFQoNY2FuZGlkYXRlX2NhcBgKIAEoBRIaChJjYW5kaWRhdGVzX2Ryb3BwZWQYCyABKAUSEAoIc2NvcGVfaWQYDCABKAkSRgoVc3VtbWFyaXplZF9zdHJ1Y3R1cmVzGA0gAygLMicuamVubmFoYXBpLmFnZW50LnYxLlN1bW1hcml6ZWRTdHJ1Y3R1cmUSFwoPZm9ybWF0aW9uX3VuaXRzGA4gASgDIjAKC0VudGl0eUNsYXNzEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiPwoRUmVsYXRpb25TaWduYXR1cmUSFAoMc291cmNlX2NsYXNzGAEgASgJEhQKDHRhcmdldF9jbGFzcxgCIAEoCSJsCgxSZWxhdGlvblR5cGUSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRI5CgpzaWduYXR1cmVzGAMgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uU2lnbmF0dXJlIoUBChBNZW1vcnlWb2NhYnVsYXJ5EjcKDmVudGl0eV9jbGFzc2VzGAEgAygLMh8uamVubmFoYXBpLmFnZW50LnYxLkVudGl0eUNsYXNzEjgKDnJlbGF0aW9uX3R5cGVzGAIgAygLMiAuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uVHlwZSJsCh5EZWNsYXJlTWVtb3J5Vm9jYWJ1bGFyeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSOAoKdm9jYWJ1bGFyeRgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IlsKH0RlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2USOAoKdm9jYWJ1bGFyeRgBIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IjEKHVJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0EhAKCHNjb3BlX2lkGAEgASgJIiAKHlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIuChpHZXRNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBIQCghzY29wZV9pZBgBIAEoCSKQAQobR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlEjkKC2RlY2xhcmF0aW9uGAEgASgLMiQuamVubmFoYXBpLmFnZW50LnYxLk1lbW9yeVZvY2FidWxhcnkSNgoIcmVzb2x2ZWQYAiABKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5Vm9jYWJ1bGFyeSKTAQoaQmVkcm9ja0Zvcm1hdGlvbk1vZGVsU2V0dXASFQoNcHJpbmNpcGFsX2FybhgBIAEoCRITCgtleHRlcm5hbF9pZBgCIAEoCRIUCgxzZXNzaW9uX25hbWUYAyABKAkSGQoRcm9sZV90ZW1wbGF0ZV91cmwYBCABKAkSGAoQbGF1bmNoX3N0YWNrX3VybBgFIAEoCSI6ChlWZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwEh0KFXNlcnZpY2VfYWNjb3VudF9lbWFpbBgBIAEoCSJIChVCZWRyb2NrRm9ybWF0aW9uTW9kZWwSEAoIcm9sZV9hcm4YASABKAkSDgoGcmVnaW9uGAIgASgJEg0KBW1vZGVsGAMgASgJIkgKFFZlcnRleEZvcm1hdGlvbk1vZGVsEg8KB3Byb2plY3QYASABKAkSEAoIbG9jYXRpb24YAiABKAkSDQoFbW9kZWwYAyABKAkivAIKDkZvcm1hdGlvbk1vZGVsEjwKCHByb3ZpZGVyGAEgASgOMiouamVubmFoYXBpLmFnZW50LnYxLkZvcm1hdGlvbk1vZGVsUHJvdmlkZXISOgoHYmVkcm9jaxgCIAEoCzIpLmplbm5haGFwaS5hZ2VudC52MS5CZWRyb2NrRm9ybWF0aW9uTW9kZWwSOAoGdmVydGV4GAMgASgLMiguamVubmFoYXBpLmFnZW50LnYxLlZlcnRleEZvcm1hdGlvbk1vZGVsEhYKDnRoaW5raW5nX2xldmVsGAQgASgJEhkKEW1heF9vdXRwdXRfdG9rZW5zGAUgASgFEi8KC3VwZGF0ZV90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgp1cGRhdGVkX2J5GAcgASgJIlwKHFByZXBhcmVGb3JtYXRpb25Nb2RlbFJlcXVlc3QSPAoIcHJvdmlkZXIYASABKA4yKi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybWF0aW9uTW9kZWxQcm92aWRlciLdAQodUHJlcGFyZUZvcm1hdGlvbk1vZGVsUmVzcG9uc2USPAoIcHJvdmlkZXIYASABKA4yKi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybWF0aW9uTW9kZWxQcm92aWRlchI/CgdiZWRyb2NrGAIgASgLMi4uamVubmFoYXBpLmFnZW50LnYxLkJlZHJvY2tGb3JtYXRpb25Nb2RlbFNldHVwEj0KBnZlcnRleBgDIAEoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwIk0KGFNldEZvcm1hdGlvbk1vZGVsUmVxdWVzdBIxCgVtb2RlbBgBIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtYXRpb25Nb2RlbCJOChlTZXRGb3JtYXRpb25Nb2RlbFJlc3BvbnNlEjEKBW1vZGVsGAEgASgLMiIuamVubmFoYXBpLmFnZW50LnYxLkZvcm1hdGlvbk1vZGVsIhoKGEdldEZvcm1hdGlvbk1vZGVsUmVxdWVzdCLaAQoZR2V0Rm9ybWF0aW9uTW9kZWxSZXNwb25zZRIxCgVtb2RlbBgBIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtYXRpb25Nb2RlbBJFCg1iZWRyb2NrX3NldHVwGAIgASgLMi4uamVubmFoYXBpLmFnZW50LnYxLkJlZHJvY2tGb3JtYXRpb25Nb2RlbFNldHVwEkMKDHZlcnRleF9zZXR1cBgDIAEoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwIh0KG1JlbW92ZUZvcm1hdGlvbk1vZGVsUmVxdWVzdCIvChxSZW1vdmVGb3JtYXRpb25Nb2RlbFJlc3BvbnNlEg8KB3JlbW92ZWQYASABKAgqeAoPRnVzaW9uRGlyZWN0aW9uEiAKHEZVU0lPTl9ESVJFQ1RJT05fVU5TUEVDSUZJRUQQABIhCh1GVVNJT05fRElSRUNUSU9OX1ZFQ1RPUl9GSVJTVBABEiAKHEZVU0lPTl9ESVJFQ1RJT05fR1JBUEhfRklSU1QQAipqCg1SZXRyaWV2YWxNb2RlEh4KGlJFVFJJRVZBTF9NT0RFX1VOU1BFQ0lGSUVEEAASHgoaUkVUUklFVkFMX01PREVfVkVDVE9SX09OTFkQARIZChVSRVRSSUVWQUxfTU9ERV9IWUJSSUQQAipyChBSZXRyaWV2YWxDaGFubmVsEiEKHVJFVFJJRVZBTF9DSEFOTkVMX1VOU1BFQ0lGSUVEEAASHAoYUkVUUklFVkFMX0NIQU5ORUxfVkVDVE9SEAESHQoZUkVUUklFVkFMX0NIQU5ORUxfTEVYSUNBTBACKoYBCg5HcmFwaERpcmVjdGlvbhIfChtHUkFQSF9ESVJFQ1RJT05fVU5TUEVDSUZJRUQQABIcChhHUkFQSF9ESVJFQ1RJT05fT1VUR09JTkcQARIcChhHUkFQSF9ESVJFQ1RJT05fSU5DT01JTkcQAhIXChNHUkFQSF9ESVJFQ1RJT05fQU5ZEAMqfAoIVHVyblJvbGUSGQoVVFVSTl9ST0xFX1VOU1BFQ0lGSUVEEAASEgoOVFVSTl9ST0xFX1VTRVIQARIXChNUVVJOX1JPTEVfQVNTSVNUQU5UEAISFAoQVFVSTl9ST0xFX1NZU1RFTRADEhIKDlRVUk5fUk9MRV9UT09MEAQqaQoNQ2FuZGlkYXRlS2luZBIeChpDQU5ESURBVEVfS0lORF9VTlNQRUNJRklFRBAAEhcKE0NBTkRJREFURV9LSU5EX0ZBQ1QQARIfChtDQU5ESURBVEVfS0lORF9SRUxBVElPTlNISVAQAiqgAQoOTWVtb3J5RGVjaXNpb24SHwobTUVNT1JZX0RFQ0lTSU9OX1VOU1BFQ0lGSUVEEAASFwoTTUVNT1JZX0RFQ0lTSU9OX05FVxABEhsKF01FTU9SWV9ERUNJU0lPTl9SRVZJU0VEEAISGQoVTUVNT1JZX0RFQ0lTSU9OX0tOT1dOEAMSHAoYTUVNT1JZX0RFQ0lTSU9OX1JFSkVDVEVEEAQqjQEKFkZvcm1hdGlvbk1vZGVsUHJvdmlkZXISKAokRk9STUFUSU9OX01PREVMX1BST1ZJREVSX1VOU1BFQ0lGSUVEEAASJAogRk9STUFUSU9OX01PREVMX1BST1ZJREVSX0JFRFJPQ0sQARIjCh9GT1JNQVRJT05fTU9ERUxfUFJPVklERVJfVkVSVEVYEAIywxEKDU1lbW9yeVNlcnZpY2USuwEKDENvbW1pdE1lbW9yeRInLmplbm5haGFwaS5hZ2VudC52MS5Db21taXRNZW1vcnlSZXF1ZXN0GiguamVubmFoYXBpLmFnZW50LnYxLkNvbW1pdE1lbW9yeVJlc3BvbnNlIliC0+STAlI6ASpaKDoBKiIjL3YxL3Njb3Blcy97c2NvcGVfaWR9L21lbW9yeTpjb21taXQiIy92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6Y29tbWl0ErYBCgtRdWVyeU1lbW9yeRImLmplbm5haGFwaS5hZ2VudC52MS5RdWVyeU1lbW9yeVJlcXVlc3QaJy5qZW5uYWhhcGkuYWdlbnQudjEuUXVlcnlNZW1vcnlSZXNwb25zZSJWgtPkkwJQOgEqWic6ASoiIi92MS9zY29wZXMve3Njb3BlX2lkfS9tZW1vcnk6cXVlcnkiIi92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6cXVlcnkSwAEKDUluc3BlY3RNZW1vcnkSKC5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdE1lbW9yeVJlcXVlc3QaKS5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdE1lbW9yeVJlc3BvbnNlIlqC0+STAlQ6ASpaKToBKiIkL3YxL3Njb3Blcy97c2NvcGVfaWR9L21lbW9yeTppbnNwZWN0IiQvdjEvYWdlbnRzL3tzY29wZV9pZH0vbWVtb3J5Omluc3BlY3QSzgEKDVN1cGVyc2VkZUVkZ2USKC5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlRWRnZVJlcXVlc3QaKS5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlRWRnZVJlc3BvbnNlImiC0+STAmI6ASpaMDoBKiIrL3YxL3Njb3Blcy97c2NvcGVfaWR9L2dyYXBoL2VkZ2VzOnN1cGVyc2VkZSIrL3YxL2FnZW50cy97c2NvcGVfaWR9L2dyYXBoL2VkZ2VzOnN1cGVyc2VkZRLXAQoOU3VwZXJzZWRlQ2h1bmsSKS5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlQ2h1bmtSZXF1ZXN0GiouamVubmFoYXBpLmFnZW50LnYxLlN1cGVyc2VkZUNodW5rUmVzcG9uc2UiboLT5JMCaDoBKlozOgEqIi4vdjEvc2NvcGVzL3tzY29wZV9pZH0vdmVjdG9ycy9jaHVua3M6c3VwZXJzZWRlIi4vdjEvYWdlbnRzL3tzY29wZV9pZH0vdmVjdG9ycy9jaHVua3M6c3VwZXJzZWRlEokBCgpGb3JtTWVtb3J5EiUuamVubmFoYXBpLmFnZW50LnYxLkZvcm1NZW1vcnlSZXF1ZXN0GiYuamVubmFoYXBpLmFnZW50LnYxLkZvcm1NZW1vcnlSZXNwb25zZSIsgtPkkwImOgEqIiEvdjEvYWdlbnRzL3tzY29wZV9pZH0vbWVtb3J5OmZvcm0SpAEKF0RlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5EjIuamVubmFoYXBpLmFnZW50LnYxLkRlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBozLmplbm5haGFwaS5hZ2VudC52MS5EZWNsYXJlTWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlIiCC0+STAho6ASoaFS92MS9tZW1vcnkvdm9jYWJ1bGFyeRKeAQoWUmVtb3ZlTWVtb3J5Vm9jYWJ1bGFyeRIxLmplbm5haGFwaS5hZ2VudC52MS5SZW1vdmVNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBoyLmplbm5haGFwaS5hZ2VudC52MS5SZW1vdmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2UiHYLT5JMCFyoVL3YxL21lbW9yeS92b2NhYnVsYXJ5EpUBChNHZXRNZW1vcnlWb2NhYnVsYXJ5Ei4uamVubmFoYXBpLmFnZW50LnYxLkdldE1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0Gi8uamVubmFoYXBpLmFnZW50LnYxLkdldE1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIdgtPkkwIXEhUvdjEvbWVtb3J5L3ZvY2FidWxhcnkSpAEKFVByZXBhcmVGb3JtYXRpb25Nb2RlbBIwLmplbm5haGFwaS5hZ2VudC52MS5QcmVwYXJlRm9ybWF0aW9uTW9kZWxSZXF1ZXN0GjEuamVubmFoYXBpLmFnZW50LnYxLlByZXBhcmVGb3JtYXRpb25Nb2RlbFJlc3BvbnNlIiaC0+STAiA6ASoiGy92MS9mb3JtYXRpb24tbW9kZWw6cHJlcGFyZRKQAQoRU2V0Rm9ybWF0aW9uTW9kZWwSLC5qZW5uYWhhcGkuYWdlbnQudjEuU2V0Rm9ybWF0aW9uTW9kZWxSZXF1ZXN0Gi0uamVubmFoYXBpLmFnZW50LnYxLlNldEZvcm1hdGlvbk1vZGVsUmVzcG9uc2UiHoLT5JMCGDoBKhoTL3YxL2Zvcm1hdGlvbi1tb2RlbBKNAQoRR2V0Rm9ybWF0aW9uTW9kZWwSLC5qZW5uYWhhcGkuYWdlbnQudjEuR2V0Rm9ybWF0aW9uTW9kZWxSZXF1ZXN0Gi0uamVubmFoYXBpLmFnZW50LnYxLkdldEZvcm1hdGlvbk1vZGVsUmVzcG9uc2UiG4LT5JMCFRITL3YxL2Zvcm1hdGlvbi1tb2RlbBKWAQoUUmVtb3ZlRm9ybWF0aW9uTW9kZWwSLy5qZW5uYWhhcGkuYWdlbnQudjEuUmVtb3ZlRm9ybWF0aW9uTW9kZWxSZXF1ZXN0GjAuamVubmFoYXBpLmFnZW50LnYxLlJlbW92ZUZvcm1hdGlvbk1vZGVsUmVzcG9uc2UiG4LT5JMCFSoTL3YxL2Zvcm1hdGlvbi1tb2RlbEIpWidnaXRodWIuY29tL2FscGhhdXNsYWJzL2plbm5haC1hcGkvYWdlbnRiBnByb3RvMw", [file_google_api_annotations, file_google_protobuf_struct, file_google_protobuf_timestamp]);
10
+ export const file_jennah_agent_v1_memory = /*@__PURE__*/ fileDesc("ChxqZW5uYWgvYWdlbnQvdjEvbWVtb3J5LnByb3RvEhJqZW5uYWhhcGkuYWdlbnQudjEizAIKE0NvbW1pdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjEKA2xvZxgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwEjAKB3ZlY3RvcnMYAyADKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSLQoFZ3JhcGgYBCABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhXcml0ZRIcChRyZWplY3Rfb25fdHJ1bmNhdGlvbhgFIAEoCBIUCgx0YXJnZXRfc2NvcGUYBiABKAkSEAoIc2NvcGVfaWQYByABKAkSPAoNc3VwZXJzZXNzaW9ucxgIIAEoCzIlLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlc3Npb25Xcml0ZSKwAgoQRXhlY3V0aW9uTG9nU3RlcBIPCgdzdGVwX2lkGAEgASgJEhcKD3Rob3VnaHRfcHJvY2VzcxgCIAEoCRIRCgl0b29sX3VzZWQYAyABKAkSEgoKdG9vbF9pbnB1dBgEIAEoCRITCgt0b29sX291dHB1dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHNjb3BlX2lkGAcgASgJEkQKCG1ldGFkYXRhGAggAygLMjIuamVubmFoYXBpLmFnZW50LnYxLkV4ZWN1dGlvbkxvZ1N0ZXAuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilwIKC1ZlY3RvckNodW5rEhAKCGNodW5rX2lkGAEgASgJEhMKC3Jhd19jb250ZW50GAIgASgJEhEKCWVtYmVkZGluZxgDIAMoAhI/CghtZXRhZGF0YRgEIAMoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVuay5NZXRhZGF0YUVudHJ5EiwKCHZhbGlkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgppbnZhbGlkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiaAoKR3JhcGhXcml0ZRIsCgVub2RlcxgBIAMoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUSLAoFZWRnZXMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlIn8KEVN1cGVyc2Vzc2lvbldyaXRlEjMKBWVkZ2VzGAEgAygLMiQuamVubmFoYXBpLmFnZW50LnYxLkVkZ2VTdXBlcnNlc3Npb24SNQoGY2h1bmtzGAIgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLkNodW5rU3VwZXJzZXNzaW9uIloKEEVkZ2VTdXBlcnNlc3Npb24SFQoNcHJpb3JfZWRnZV9pZBgBIAEoCRIvCghuZXdfZWRnZRgCIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaEVkZ2UiXwoRQ2h1bmtTdXBlcnNlc3Npb24SFgoOcHJpb3JfY2h1bmtfaWQYASABKAkSMgoJbmV3X2NodW5rGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLlZlY3RvckNodW5rIosCCglHcmFwaE5vZGUSDwoHbm9kZV9pZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIrCgpwcm9wZXJ0aWVzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9CghtZXRhZGF0YRgFIAMoCzIrLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUuTWV0YWRhdGFFbnRyeRIRCglub2RlX3R5cGUYBiABKAkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpIDCglHcmFwaEVkZ2USDwoHZWRnZV9pZBgBIAEoCRIWCg5zb3VyY2Vfbm9kZV9pZBgCIAEoCRIWCg50YXJnZXRfbm9kZV9pZBgDIAEoCRIZChFyZWxhdGlvbnNoaXBfdHlwZRgEIAEoCRIrCgpwcm9wZXJ0aWVzGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoIbWV0YWRhdGEYCSADKAsyKy5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpcCChRDb21taXRNZW1vcnlSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJleGVjdXRpb25fbG9nX3Jvd3MYAiABKAMSEwoLdmVjdG9yX3Jvd3MYAyABKAMSFwoPZ3JhcGhfbm9kZV9yb3dzGAQgASgDEhcKD2dyYXBoX2VkZ2Vfcm93cxgFIAEoAxIbChN0cnVuY2F0ZWRfY2h1bmtfaWRzGAYgAygJEhAKCHNjb3BlX2lkGAcgASgJEhoKEmVkZ2Vfc3VwZXJzZXNzaW9ucxgIIAEoAxIbChNjaHVua19zdXBlcnNlc3Npb25zGAkgASgDIucCChJRdWVyeU1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKCHNlbWFudGljGAIgASgLMiEuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUXVlcnkSLQoFZ3JhcGgYAyABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhRdWVyeRIpCgNsb2cYBCABKAsyHC5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUXVlcnkSDAoEbGluaxgFIAEoCBI9ChBmdXNpb25fZGlyZWN0aW9uGAYgASgOMiMuamVubmFoYXBpLmFnZW50LnYxLkZ1c2lvbkRpcmVjdGlvbhIpCgVhc19vZhgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRYWRkaXRpb25hbF9zY29wZXMYCCADKAkSEAoIc2NvcGVfaWQYCSABKAkipAIKDVNlbWFudGljUXVlcnkSEQoJZW1iZWRkaW5nGAEgAygCEhIKCnF1ZXJ5X3RleHQYAiABKAkSDQoFbGltaXQYAyABKAUSMwoHZmlsdGVycxgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlchIvCgthc19vZl92YWxpZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIYXNfb2ZfdHgYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjkKDnJldHJpZXZhbF9tb2RlGAcgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLlJldHJpZXZhbE1vZGUSDgoGcmVyYW5rGAggASgIIp8CCg5NZXRhZGF0YUZpbHRlchILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSPQoIb3BlcmF0b3IYAyABKA4yKy5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIuT3BlcmF0b3IisQEKCE9wZXJhdG9yEhgKFE9QRVJBVE9SX1VOU1BFQ0lGSUVEEAASEwoPT1BFUkFUT1JfRVFVQUxTEAESFgoST1BFUkFUT1JfTEVTU19USEFOEAISHwobT1BFUkFUT1JfTEVTU19USEFOX09SX0VRVUFMEAMSGQoVT1BFUkFUT1JfR1JFQVRFUl9USEFOEAQSIgoeT1BFUkFUT1JfR1JFQVRFUl9USEFOX09SX0VRVUFMEAUi2wEKCkdyYXBoUXVlcnkSMQoFc3RhcnQYASABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlTWF0Y2gSLAoFc3RlcHMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhTdGVwEg0KBWxpbWl0GAMgASgFEi8KC2FzX29mX3ZhbGlkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghhc19vZl90eBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiigEKDkdyYXBoTm9kZU1hdGNoEg0KBWxhYmVsGAEgASgJEjMKB2ZpbHRlcnMYAiADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuUHJvcGVydHlGaWx0ZXISNAoIbWV0YWRhdGEYAyADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIixQEKCUdyYXBoU3RlcBIZChFyZWxhdGlvbnNoaXBfdHlwZRgBIAEoCRI1CglkaXJlY3Rpb24YAiABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhEaXJlY3Rpb24SMAoEbm9kZRgDIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGVNYXRjaBI0CghtZXRhZGF0YRgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlciJECg5Qcm9wZXJ0eUZpbHRlchILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUiegoITG9nUXVlcnkSDQoFbGltaXQYASABKAUSKQoFc2luY2UYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKCG1ldGFkYXRhGAMgAygLMiIuamVubmFoYXBpLmFnZW50LnYxLk1ldGFkYXRhRmlsdGVyIosCChNRdWVyeU1lbW9yeVJlc3BvbnNlEjQKCHNlbWFudGljGAEgASgLMiIuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUmVzdWx0Ei4KBWdyYXBoGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoUmVzdWx0EioKA2xvZxgDIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5Mb2dSZXN1bHQSLgoFZnVzZWQYBCABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuRnVzZWRSZXN1bHQSMgoOcmVhZF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkQKDlNlbWFudGljUmVzdWx0EjIKB21hdGNoZXMYASADKAsyIS5qZW5uYWhhcGkuYWdlbnQudjEuU2VtYW50aWNNYXRjaCK+AwoNU2VtYW50aWNNYXRjaBIQCghjaHVua19pZBgBIAEoCRITCgtyYXdfY29udGVudBgCIAEoCRIQCghkaXN0YW5jZRgDIAEoARJBCghtZXRhZGF0YRgEIAMoCzIvLmplbm5haGFwaS5hZ2VudC52MS5TZW1hbnRpY01hdGNoLk1ldGFkYXRhRW50cnkSEAoIc2NvcGVfaWQYBSABKAkSNgoIY2hhbm5lbHMYBiADKA4yJC5qZW5uYWhhcGkuYWdlbnQudjEuUmV0cmlldmFsQ2hhbm5lbBIVCg1sZXhpY2FsX3Njb3JlGAcgASgBEhEKCXJyZl9zY29yZRgIIAEoARIUCgxyZXJhbmtfc2NvcmUYCSABKAESGAoQcmVyYW5rX3RydW5jYXRlZBgKIAEoCBIsCgh2YWxpZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKC0dyYXBoUmVzdWx0EiUKBHJvd3MYASADKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkAKCUxvZ1Jlc3VsdBIzCgVzdGVwcxgBIAMoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwIjUKC0Z1c2VkUmVzdWx0EiYKBWl0ZW1zGAEgAygLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKFAgoUSW5zcGVjdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKB3ZlY3RvcnMYAiABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdFZlY3RvcnMSLwoFZ3JhcGgYAyABKAsyIC5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdEdyYXBoEisKA2xvZxgEIAEoCzIeLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TG9nEikKBWFzX29mGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghzY29wZV9pZBgGIAEoCSIzCg5JbnNwZWN0VmVjdG9ycxINCgVsaW1pdBgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJImgKDEluc3BlY3RHcmFwaBISCgpub2RlX2xpbWl0GAEgASgFEhIKCmVkZ2VfbGltaXQYAiABKAUSFwoPbm9kZV9wYWdlX3Rva2VuGAMgASgJEhcKD2VkZ2VfcGFnZV90b2tlbhgEIAEoCSJaCgpJbnNwZWN0TG9nEg0KBWxpbWl0GAEgASgFEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwYWdlX3Rva2VuGAMgASgJIswCChVJbnNwZWN0TWVtb3J5UmVzcG9uc2USOAoHdmVjdG9ycxgBIAEoCzInLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JJbnNwZWN0UmVzdWx0EjUKBWdyYXBoGAIgASgLMiYuamVubmFoYXBpLmFnZW50LnYxLkdyYXBoSW5zcGVjdFJlc3VsdBIqCgNsb2cYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUmVzdWx0EjIKDnJlYWRfdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChBuZXh0X2NodW5rX3Rva2VuGAUgASgJEhcKD25leHRfbm9kZV90b2tlbhgGIAEoCRIXCg9uZXh0X2VkZ2VfdG9rZW4YByABKAkSFgoObmV4dF9sb2dfdG9rZW4YCCABKAkiSgoTVmVjdG9ySW5zcGVjdFJlc3VsdBIzCgZjaHVua3MYASADKAsyIy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmtJbmZvIu0DCg9WZWN0b3JDaHVua0luZm8SEAoIY2h1bmtfaWQYASABKAkSEwoLcmF3X2NvbnRlbnQYAiABKAkSLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdHJ1bmNhdGVkGAQgASgISACIAQESGAoLdG9rZW5fY291bnQYBSABKANIAYgBARJDCghtZXRhZGF0YRgGIAMoCzIxLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVua0luZm8uTWV0YWRhdGFFbnRyeRIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYXNzZXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdHJ1bmNhdGVkQg4KDF90b2tlbl9jb3VudCJwChJHcmFwaEluc3BlY3RSZXN1bHQSLAoFbm9kZXMYASADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlEiwKBWVkZ2VzGAIgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoRWRnZSKPAQoUU3VwZXJzZWRlRWRnZVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEhUKDXByaW9yX2VkZ2VfaWQYAiABKAkSLwoIbmV3X2VkZ2UYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlEhAKCHNjb3BlX2lkGAQgASgJIk0KFVN1cGVyc2VkZUVkZ2VSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKUAQoVU3VwZXJzZWRlQ2h1bmtSZXF1ZXN0Eh0KEWFnZW50X2luc3RhbmNlX2lkGAEgASgJQgIYARIWCg5wcmlvcl9jaHVua19pZBgCIAEoCRIyCgluZXdfY2h1bmsYAyABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSEAoIc2NvcGVfaWQYBCABKAkiYQoWU3VwZXJzZWRlQ2h1bmtSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0cnVuY2F0ZWQYAiABKAgiRwoJVG9vbFRyYWNlEhEKCXRvb2xfdXNlZBgBIAEoCRISCgp0b29sX2lucHV0GAIgASgJEhMKC3Rvb2xfb3V0cHV0GAMgASgJIn0KEENvbnZlcnNhdGlvblR1cm4SKgoEcm9sZRgBIAEoDjIcLmplbm5haGFwaS5hZ2VudC52MS5UdXJuUm9sZRIPCgdjb250ZW50GAIgASgJEiwKBXRvb2xzGAMgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLlRvb2xUcmFjZSKiAQoRRm9ybU1lbW9yeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSMwoFdHVybnMYAiADKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuQ29udmVyc2F0aW9uVHVybhIVCg1mb3JtYXRpb25fa2V5GAMgASgJEi8KC29ic2VydmVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKwAgoPRm9ybWVkQ2FuZGlkYXRlEhQKDGNhbmRpZGF0ZV9pZBgBIAEoCRIvCgRraW5kGAIgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLkNhbmRpZGF0ZUtpbmQSDAoEdGV4dBgDIAEoCRIVCg1zb3VyY2VfZW50aXR5GAQgASgJEhkKEXJlbGF0aW9uc2hpcF90eXBlGAUgASgJEhUKDXRhcmdldF9lbnRpdHkYBiABKAkSNAoIZGVjaXNpb24YByABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5RGVjaXNpb24SEgoKbWF0Y2hlZF9pZBgIIAEoCRIYChByZWplY3Rpb25fcmVhc29uGAkgASgJEhsKE3ByZXNlcnZlc19zdHJ1Y3R1cmUYCiABKAgiOwoPUmVkYWN0aW9uUmVjb3JkEhIKCnR1cm5faW5kZXgYASABKAUSFAoMbWFza2VkX2NvdW50GAIgASgFIlgKE1N1bW1hcml6ZWRTdHJ1Y3R1cmUSEgoKdHVybl9pbmRleBgBIAEoBRITCgtkZXNjcmlwdGlvbhgCIAEoCRIYChBzdW1tYXJpemVkX2NvdW50GAMgASgFIv4DChJGb3JtTWVtb3J5UmVzcG9uc2USNAoQY29tbWl0X3RpbWVzdGFtcBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSZXhlY3V0aW9uX2xvZ19yb3dzGAIgASgDEhMKC3ZlY3Rvcl9yb3dzGAMgASgDEhcKD2dyYXBoX25vZGVfcm93cxgEIAEoAxIXCg9ncmFwaF9lZGdlX3Jvd3MYBSABKAMSGgoSZWRnZV9zdXBlcnNlc3Npb25zGAYgASgDEhsKE2NodW5rX3N1cGVyc2Vzc2lvbnMYByABKAMSNwoKY2FuZGlkYXRlcxgIIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtZWRDYW5kaWRhdGUSNwoKcmVkYWN0aW9ucxgJIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5SZWRhY3Rpb25SZWNvcmQSFQoNY2FuZGlkYXRlX2NhcBgKIAEoBRIaChJjYW5kaWRhdGVzX2Ryb3BwZWQYCyABKAUSEAoIc2NvcGVfaWQYDCABKAkSRgoVc3VtbWFyaXplZF9zdHJ1Y3R1cmVzGA0gAygLMicuamVubmFoYXBpLmFnZW50LnYxLlN1bW1hcml6ZWRTdHJ1Y3R1cmUSFwoPZm9ybWF0aW9uX3VuaXRzGA4gASgDIjAKC0VudGl0eUNsYXNzEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiPwoRUmVsYXRpb25TaWduYXR1cmUSFAoMc291cmNlX2NsYXNzGAEgASgJEhQKDHRhcmdldF9jbGFzcxgCIAEoCSJsCgxSZWxhdGlvblR5cGUSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRI5CgpzaWduYXR1cmVzGAMgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uU2lnbmF0dXJlIoUBChBNZW1vcnlWb2NhYnVsYXJ5EjcKDmVudGl0eV9jbGFzc2VzGAEgAygLMh8uamVubmFoYXBpLmFnZW50LnYxLkVudGl0eUNsYXNzEjgKDnJlbGF0aW9uX3R5cGVzGAIgAygLMiAuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uVHlwZSJsCh5EZWNsYXJlTWVtb3J5Vm9jYWJ1bGFyeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSOAoKdm9jYWJ1bGFyeRgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IlsKH0RlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2USOAoKdm9jYWJ1bGFyeRgBIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IjEKHVJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0EhAKCHNjb3BlX2lkGAEgASgJIiAKHlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIuChpHZXRNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBIQCghzY29wZV9pZBgBIAEoCSKQAQobR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlEjkKC2RlY2xhcmF0aW9uGAEgASgLMiQuamVubmFoYXBpLmFnZW50LnYxLk1lbW9yeVZvY2FidWxhcnkSNgoIcmVzb2x2ZWQYAiABKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5Vm9jYWJ1bGFyeSKTAQoaQmVkcm9ja0Zvcm1hdGlvbk1vZGVsU2V0dXASFQoNcHJpbmNpcGFsX2FybhgBIAEoCRITCgtleHRlcm5hbF9pZBgCIAEoCRIUCgxzZXNzaW9uX25hbWUYAyABKAkSGQoRcm9sZV90ZW1wbGF0ZV91cmwYBCABKAkSGAoQbGF1bmNoX3N0YWNrX3VybBgFIAEoCSI6ChlWZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwEh0KFXNlcnZpY2VfYWNjb3VudF9lbWFpbBgBIAEoCSJIChVCZWRyb2NrRm9ybWF0aW9uTW9kZWwSEAoIcm9sZV9hcm4YASABKAkSDgoGcmVnaW9uGAIgASgJEg0KBW1vZGVsGAMgASgJIkgKFFZlcnRleEZvcm1hdGlvbk1vZGVsEg8KB3Byb2plY3QYASABKAkSEAoIbG9jYXRpb24YAiABKAkSDQoFbW9kZWwYAyABKAkivAIKDkZvcm1hdGlvbk1vZGVsEjwKCHByb3ZpZGVyGAEgASgOMiouamVubmFoYXBpLmFnZW50LnYxLkZvcm1hdGlvbk1vZGVsUHJvdmlkZXISOgoHYmVkcm9jaxgCIAEoCzIpLmplbm5haGFwaS5hZ2VudC52MS5CZWRyb2NrRm9ybWF0aW9uTW9kZWwSOAoGdmVydGV4GAMgASgLMiguamVubmFoYXBpLmFnZW50LnYxLlZlcnRleEZvcm1hdGlvbk1vZGVsEhYKDnRoaW5raW5nX2xldmVsGAQgASgJEhkKEW1heF9vdXRwdXRfdG9rZW5zGAUgASgFEi8KC3VwZGF0ZV90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgp1cGRhdGVkX2J5GAcgASgJIlwKHFByZXBhcmVGb3JtYXRpb25Nb2RlbFJlcXVlc3QSPAoIcHJvdmlkZXIYASABKA4yKi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybWF0aW9uTW9kZWxQcm92aWRlciLdAQodUHJlcGFyZUZvcm1hdGlvbk1vZGVsUmVzcG9uc2USPAoIcHJvdmlkZXIYASABKA4yKi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybWF0aW9uTW9kZWxQcm92aWRlchI/CgdiZWRyb2NrGAIgASgLMi4uamVubmFoYXBpLmFnZW50LnYxLkJlZHJvY2tGb3JtYXRpb25Nb2RlbFNldHVwEj0KBnZlcnRleBgDIAEoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwIk0KGFNldEZvcm1hdGlvbk1vZGVsUmVxdWVzdBIxCgVtb2RlbBgBIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtYXRpb25Nb2RlbCJOChlTZXRGb3JtYXRpb25Nb2RlbFJlc3BvbnNlEjEKBW1vZGVsGAEgASgLMiIuamVubmFoYXBpLmFnZW50LnYxLkZvcm1hdGlvbk1vZGVsIhoKGEdldEZvcm1hdGlvbk1vZGVsUmVxdWVzdCLaAQoZR2V0Rm9ybWF0aW9uTW9kZWxSZXNwb25zZRIxCgVtb2RlbBgBIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtYXRpb25Nb2RlbBJFCg1iZWRyb2NrX3NldHVwGAIgASgLMi4uamVubmFoYXBpLmFnZW50LnYxLkJlZHJvY2tGb3JtYXRpb25Nb2RlbFNldHVwEkMKDHZlcnRleF9zZXR1cBgDIAEoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwIh0KG1JlbW92ZUZvcm1hdGlvbk1vZGVsUmVxdWVzdCIvChxSZW1vdmVGb3JtYXRpb25Nb2RlbFJlc3BvbnNlEg8KB3JlbW92ZWQYASABKAgiHAoaQ2hlY2tGb3JtYXRpb25Nb2RlbFJlcXVlc3QiewobQ2hlY2tGb3JtYXRpb25Nb2RlbFJlc3BvbnNlEgoKAm9rGAEgASgIEgwKBHN0ZXAYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIxCgVtb2RlbBgEIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtYXRpb25Nb2RlbCp4Cg9GdXNpb25EaXJlY3Rpb24SIAocRlVTSU9OX0RJUkVDVElPTl9VTlNQRUNJRklFRBAAEiEKHUZVU0lPTl9ESVJFQ1RJT05fVkVDVE9SX0ZJUlNUEAESIAocRlVTSU9OX0RJUkVDVElPTl9HUkFQSF9GSVJTVBACKmoKDVJldHJpZXZhbE1vZGUSHgoaUkVUUklFVkFMX01PREVfVU5TUEVDSUZJRUQQABIeChpSRVRSSUVWQUxfTU9ERV9WRUNUT1JfT05MWRABEhkKFVJFVFJJRVZBTF9NT0RFX0hZQlJJRBACKnIKEFJldHJpZXZhbENoYW5uZWwSIQodUkVUUklFVkFMX0NIQU5ORUxfVU5TUEVDSUZJRUQQABIcChhSRVRSSUVWQUxfQ0hBTk5FTF9WRUNUT1IQARIdChlSRVRSSUVWQUxfQ0hBTk5FTF9MRVhJQ0FMEAIqhgEKDkdyYXBoRGlyZWN0aW9uEh8KG0dSQVBIX0RJUkVDVElPTl9VTlNQRUNJRklFRBAAEhwKGEdSQVBIX0RJUkVDVElPTl9PVVRHT0lORxABEhwKGEdSQVBIX0RJUkVDVElPTl9JTkNPTUlORxACEhcKE0dSQVBIX0RJUkVDVElPTl9BTlkQAyp8CghUdXJuUm9sZRIZChVUVVJOX1JPTEVfVU5TUEVDSUZJRUQQABISCg5UVVJOX1JPTEVfVVNFUhABEhcKE1RVUk5fUk9MRV9BU1NJU1RBTlQQAhIUChBUVVJOX1JPTEVfU1lTVEVNEAMSEgoOVFVSTl9ST0xFX1RPT0wQBCppCg1DYW5kaWRhdGVLaW5kEh4KGkNBTkRJREFURV9LSU5EX1VOU1BFQ0lGSUVEEAASFwoTQ0FORElEQVRFX0tJTkRfRkFDVBABEh8KG0NBTkRJREFURV9LSU5EX1JFTEFUSU9OU0hJUBACKqABCg5NZW1vcnlEZWNpc2lvbhIfChtNRU1PUllfREVDSVNJT05fVU5TUEVDSUZJRUQQABIXChNNRU1PUllfREVDSVNJT05fTkVXEAESGwoXTUVNT1JZX0RFQ0lTSU9OX1JFVklTRUQQAhIZChVNRU1PUllfREVDSVNJT05fS05PV04QAxIcChhNRU1PUllfREVDSVNJT05fUkVKRUNURUQQBCqNAQoWRm9ybWF0aW9uTW9kZWxQcm92aWRlchIoCiRGT1JNQVRJT05fTU9ERUxfUFJPVklERVJfVU5TUEVDSUZJRUQQABIkCiBGT1JNQVRJT05fTU9ERUxfUFJPVklERVJfQkVEUk9DSxABEiMKH0ZPUk1BVElPTl9NT0RFTF9QUk9WSURFUl9WRVJURVgQAjLiEgoNTWVtb3J5U2VydmljZRK7AQoMQ29tbWl0TWVtb3J5EicuamVubmFoYXBpLmFnZW50LnYxLkNvbW1pdE1lbW9yeVJlcXVlc3QaKC5qZW5uYWhhcGkuYWdlbnQudjEuQ29tbWl0TWVtb3J5UmVzcG9uc2UiWILT5JMCUjoBKlooOgEqIiMvdjEvc2NvcGVzL3tzY29wZV9pZH0vbWVtb3J5OmNvbW1pdCIjL3YxL2FnZW50cy97c2NvcGVfaWR9L21lbW9yeTpjb21taXQStgEKC1F1ZXJ5TWVtb3J5EiYuamVubmFoYXBpLmFnZW50LnYxLlF1ZXJ5TWVtb3J5UmVxdWVzdBonLmplbm5haGFwaS5hZ2VudC52MS5RdWVyeU1lbW9yeVJlc3BvbnNlIlaC0+STAlA6ASpaJzoBKiIiL3YxL3Njb3Blcy97c2NvcGVfaWR9L21lbW9yeTpxdWVyeSIiL3YxL2FnZW50cy97c2NvcGVfaWR9L21lbW9yeTpxdWVyeRLAAQoNSW5zcGVjdE1lbW9yeRIoLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TWVtb3J5UmVxdWVzdBopLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TWVtb3J5UmVzcG9uc2UiWoLT5JMCVDoBKlopOgEqIiQvdjEvc2NvcGVzL3tzY29wZV9pZH0vbWVtb3J5Omluc3BlY3QiJC92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6aW5zcGVjdBLOAQoNU3VwZXJzZWRlRWRnZRIoLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlZGVFZGdlUmVxdWVzdBopLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlZGVFZGdlUmVzcG9uc2UiaILT5JMCYjoBKlowOgEqIisvdjEvc2NvcGVzL3tzY29wZV9pZH0vZ3JhcGgvZWRnZXM6c3VwZXJzZWRlIisvdjEvYWdlbnRzL3tzY29wZV9pZH0vZ3JhcGgvZWRnZXM6c3VwZXJzZWRlEtcBCg5TdXBlcnNlZGVDaHVuaxIpLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlZGVDaHVua1JlcXVlc3QaKi5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlQ2h1bmtSZXNwb25zZSJugtPkkwJoOgEqWjM6ASoiLi92MS9zY29wZXMve3Njb3BlX2lkfS92ZWN0b3JzL2NodW5rczpzdXBlcnNlZGUiLi92MS9hZ2VudHMve3Njb3BlX2lkfS92ZWN0b3JzL2NodW5rczpzdXBlcnNlZGUSiQEKCkZvcm1NZW1vcnkSJS5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybU1lbW9yeVJlcXVlc3QaJi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybU1lbW9yeVJlc3BvbnNlIiyC0+STAiY6ASoiIS92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6Zm9ybRKkAQoXRGVjbGFyZU1lbW9yeVZvY2FidWxhcnkSMi5qZW5uYWhhcGkuYWdlbnQudjEuRGVjbGFyZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0GjMuamVubmFoYXBpLmFnZW50LnYxLkRlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2UiIILT5JMCGjoBKhoVL3YxL21lbW9yeS92b2NhYnVsYXJ5Ep4BChZSZW1vdmVNZW1vcnlWb2NhYnVsYXJ5EjEuamVubmFoYXBpLmFnZW50LnYxLlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0GjIuamVubmFoYXBpLmFnZW50LnYxLlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIdgtPkkwIXKhUvdjEvbWVtb3J5L3ZvY2FidWxhcnkSlQEKE0dldE1lbW9yeVZvY2FidWxhcnkSLi5qZW5uYWhhcGkuYWdlbnQudjEuR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlcXVlc3QaLy5qZW5uYWhhcGkuYWdlbnQudjEuR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlIh2C0+STAhcSFS92MS9tZW1vcnkvdm9jYWJ1bGFyeRKkAQoVUHJlcGFyZUZvcm1hdGlvbk1vZGVsEjAuamVubmFoYXBpLmFnZW50LnYxLlByZXBhcmVGb3JtYXRpb25Nb2RlbFJlcXVlc3QaMS5qZW5uYWhhcGkuYWdlbnQudjEuUHJlcGFyZUZvcm1hdGlvbk1vZGVsUmVzcG9uc2UiJoLT5JMCIDoBKiIbL3YxL2Zvcm1hdGlvbi1tb2RlbDpwcmVwYXJlEpABChFTZXRGb3JtYXRpb25Nb2RlbBIsLmplbm5haGFwaS5hZ2VudC52MS5TZXRGb3JtYXRpb25Nb2RlbFJlcXVlc3QaLS5qZW5uYWhhcGkuYWdlbnQudjEuU2V0Rm9ybWF0aW9uTW9kZWxSZXNwb25zZSIegtPkkwIYOgEqGhMvdjEvZm9ybWF0aW9uLW1vZGVsEo0BChFHZXRGb3JtYXRpb25Nb2RlbBIsLmplbm5haGFwaS5hZ2VudC52MS5HZXRGb3JtYXRpb25Nb2RlbFJlcXVlc3QaLS5qZW5uYWhhcGkuYWdlbnQudjEuR2V0Rm9ybWF0aW9uTW9kZWxSZXNwb25zZSIbgtPkkwIVEhMvdjEvZm9ybWF0aW9uLW1vZGVsEpYBChRSZW1vdmVGb3JtYXRpb25Nb2RlbBIvLmplbm5haGFwaS5hZ2VudC52MS5SZW1vdmVGb3JtYXRpb25Nb2RlbFJlcXVlc3QaMC5qZW5uYWhhcGkuYWdlbnQudjEuUmVtb3ZlRm9ybWF0aW9uTW9kZWxSZXNwb25zZSIbgtPkkwIVKhMvdjEvZm9ybWF0aW9uLW1vZGVsEpwBChNDaGVja0Zvcm1hdGlvbk1vZGVsEi4uamVubmFoYXBpLmFnZW50LnYxLkNoZWNrRm9ybWF0aW9uTW9kZWxSZXF1ZXN0Gi8uamVubmFoYXBpLmFnZW50LnYxLkNoZWNrRm9ybWF0aW9uTW9kZWxSZXNwb25zZSIkgtPkkwIeOgEqIhkvdjEvZm9ybWF0aW9uLW1vZGVsOmNoZWNrQilaJ2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvamVubmFoLWFwaS9hZ2VudGIGcHJvdG8z", [file_google_api_annotations, file_google_protobuf_struct, file_google_protobuf_timestamp]);
11
11
  /**
12
12
  * Describes the message jennahapi.agent.v1.CommitMemoryRequest.
13
13
  * Use `create(CommitMemoryRequestSchema)` to create a new message.
@@ -392,6 +392,16 @@ export const RemoveFormationModelRequestSchema = /*@__PURE__*/ messageDesc(file_
392
392
  * Use `create(RemoveFormationModelResponseSchema)` to create a new message.
393
393
  */
394
394
  export const RemoveFormationModelResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 65);
395
+ /**
396
+ * Describes the message jennahapi.agent.v1.CheckFormationModelRequest.
397
+ * Use `create(CheckFormationModelRequestSchema)` to create a new message.
398
+ */
399
+ export const CheckFormationModelRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 66);
400
+ /**
401
+ * Describes the message jennahapi.agent.v1.CheckFormationModelResponse.
402
+ * Use `create(CheckFormationModelResponseSchema)` to create a new message.
403
+ */
404
+ export const CheckFormationModelResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 67);
395
405
  /**
396
406
  * Direction of vector+graph fusion when a query links the two sections.
397
407
  *
@@ -5,6 +5,115 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
5
5
  * Describes the file jennah/approval/v1/approval.proto.
6
6
  */
7
7
  export declare const file_jennah_approval_v1_approval: GenFile;
8
+ /**
9
+ * One choice offered by a question.
10
+ *
11
+ * @generated from message jennahapi.approval.v1.QuestionChoice
12
+ */
13
+ export type QuestionChoice = Message<"jennahapi.approval.v1.QuestionChoice"> & {
14
+ /**
15
+ * Caller-chosen id, unique within the question: at most 64 characters, each a
16
+ * letter, a digit, `_`, `.`, or `-`. An answer names choices by this id.
17
+ *
18
+ * @generated from field: string id = 1;
19
+ */
20
+ id: string;
21
+ /**
22
+ * What the approver reads. Required; at most 200 characters.
23
+ *
24
+ * @generated from field: string label = 2;
25
+ */
26
+ label: string;
27
+ /**
28
+ * Optional detail shown under the label; at most 1000 characters.
29
+ *
30
+ * @generated from field: string description = 3;
31
+ */
32
+ description: string;
33
+ };
34
+ /**
35
+ * Describes the message jennahapi.approval.v1.QuestionChoice.
36
+ * Use `create(QuestionChoiceSchema)` to create a new message.
37
+ */
38
+ export declare const QuestionChoiceSchema: GenMessage<QuestionChoice>;
39
+ /**
40
+ * The shape of what a question asks. A question offers choices, free text, or
41
+ * both.
42
+ *
43
+ * @generated from message jennahapi.approval.v1.Question
44
+ */
45
+ export type Question = Message<"jennahapi.approval.v1.Question"> & {
46
+ /**
47
+ * Presented to the approver in this order, which is part of what was asked:
48
+ * the same choices in a different order are a different question. At most 10.
49
+ *
50
+ * @generated from field: repeated jennahapi.approval.v1.QuestionChoice choices = 1;
51
+ */
52
+ choices: QuestionChoice[];
53
+ /**
54
+ * When set, an answer may select more than one choice. Requires choices.
55
+ *
56
+ * @generated from field: bool multi_select = 2;
57
+ */
58
+ multiSelect: boolean;
59
+ /**
60
+ * When set, an answer may carry free text (at most 4000 characters).
61
+ *
62
+ * @generated from field: bool allow_free_text = 3;
63
+ */
64
+ allowFreeText: boolean;
65
+ };
66
+ /**
67
+ * Describes the message jennahapi.approval.v1.Question.
68
+ * Use `create(QuestionSchema)` to create a new message.
69
+ */
70
+ export declare const QuestionSchema: GenMessage<Question>;
71
+ /**
72
+ * An answer to a question.
73
+ *
74
+ * On SubmitApprovalDecisionRequest only `choice_ids` and `text` are read; the
75
+ * other fields are filled by the server on reads. An answer must name only
76
+ * offered choice ids, exactly one when the question is not multi-select and a
77
+ * choice is named, carry `text` only where the question allows free text, and
78
+ * carry at least one choice or non-empty text. Declining is
79
+ * DECISION_VALUE_REJECT, not an empty answer.
80
+ *
81
+ * Free text is written by the approver. To the agent that asked, it is
82
+ * untrusted input, like any other message from a person.
83
+ *
84
+ * @generated from message jennahapi.approval.v1.Answer
85
+ */
86
+ export type Answer = Message<"jennahapi.approval.v1.Answer"> & {
87
+ /**
88
+ * @generated from field: repeated string choice_ids = 1;
89
+ */
90
+ choiceIds: string[];
91
+ /**
92
+ * The labels of `choice_ids`, in the same order, as they were offered.
93
+ *
94
+ * @generated from field: repeated string choice_labels = 2;
95
+ */
96
+ choiceLabels: string[];
97
+ /**
98
+ * @generated from field: string text = 3;
99
+ */
100
+ text: string;
101
+ /**
102
+ * the approver who answered
103
+ *
104
+ * @generated from field: string approver_id = 4;
105
+ */
106
+ approverId: string;
107
+ /**
108
+ * @generated from field: google.protobuf.Timestamp answered_at = 5;
109
+ */
110
+ answeredAt?: Timestamp | undefined;
111
+ };
112
+ /**
113
+ * Describes the message jennahapi.approval.v1.Answer.
114
+ * Use `create(AnswerSchema)` to create a new message.
115
+ */
116
+ export declare const AnswerSchema: GenMessage<Answer>;
8
117
  /**
9
118
  * One human an approval was put to, with the delivery state of their notification.
10
119
  *
@@ -164,7 +273,8 @@ export type Approval = Message<"jennahapi.approval.v1.Approval"> & {
164
273
  quorum: Quorum;
165
274
  /**
166
275
  * How many approvals resolve this request: 1 for ANY_ONE, the approver count
167
- * for ALL. Assigned at creation and immutable thereafter. This column, not the
276
+ * for ALL, 1 (answer) for FIRST_ANSWER. Assigned at creation and immutable
277
+ * thereafter. This column, not the
168
278
  * rule name, is the sole authority on the threshold: resolution is a count
169
279
  * comparison, which is why it stays correct for a rule this client predates.
170
280
  *
@@ -172,8 +282,8 @@ export type Approval = Message<"jennahapi.approval.v1.Approval"> & {
172
282
  */
173
283
  requiredApprovals: number;
174
284
  /**
175
- * Approvals recorded so far, so a partially-approved request is legible rather
176
- * than merely PENDING.
285
+ * Approvals recorded so far (answers, for a question), so a partially-approved
286
+ * request is legible rather than merely PENDING.
177
287
  *
178
288
  * @generated from field: int32 approvals_recorded = 10;
179
289
  */
@@ -195,8 +305,8 @@ export type Approval = Message<"jennahapi.approval.v1.Approval"> & {
195
305
  */
196
306
  requireAuthenticatedDecider: boolean;
197
307
  /**
198
- * Carries the outcome once terminal: APPROVED and REJECTED are the recorded
199
- * decision, EXPIRED and CANCELLED are its absence. There is no second outcome
308
+ * Carries the outcome once terminal: APPROVED, REJECTED, and ANSWERED are the
309
+ * recorded decision, EXPIRED and CANCELLED are its absence. There is no second outcome
200
310
  * field to disagree with this one.
201
311
  *
202
312
  * @generated from field: jennahapi.approval.v1.ApprovalStatus status = 13;
@@ -265,6 +375,22 @@ export type Approval = Message<"jennahapi.approval.v1.Approval"> & {
265
375
  * @generated from field: bool record_to_memory = 23;
266
376
  */
267
377
  recordToMemory: boolean;
378
+ /**
379
+ * @generated from field: jennahapi.approval.v1.ApprovalKind kind = 24;
380
+ */
381
+ kind: ApprovalKind;
382
+ /**
383
+ * What a question asks. Unset for kind APPROVAL.
384
+ *
385
+ * @generated from field: jennahapi.approval.v1.Question question = 25;
386
+ */
387
+ question?: Question | undefined;
388
+ /**
389
+ * The answer that resolved a question. Set only when `status` is ANSWERED.
390
+ *
391
+ * @generated from field: jennahapi.approval.v1.Answer answer = 26;
392
+ */
393
+ answer?: Answer | undefined;
268
394
  };
269
395
  /**
270
396
  * Describes the message jennahapi.approval.v1.Approval.
@@ -333,6 +459,12 @@ export type ApprovalDecision = Message<"jennahapi.approval.v1.ApprovalDecision">
333
459
  * @generated from field: string seen_digest = 10;
334
460
  */
335
461
  seenDigest: string;
462
+ /**
463
+ * The answer, when `decision` is DECISION_VALUE_ANSWER.
464
+ *
465
+ * @generated from field: jennahapi.approval.v1.Answer answer = 11;
466
+ */
467
+ answer?: Answer | undefined;
336
468
  };
337
469
  /**
338
470
  * Describes the message jennahapi.approval.v1.ApprovalDecision.
@@ -417,14 +549,15 @@ export type CreateApprovalRequest = Message<"jennahapi.approval.v1.CreateApprova
417
549
  */
418
550
  approvers: ApproverSpec[];
419
551
  /**
420
- * required; an unrecognized rule is refused, not defaulted
552
+ * Required for an approval; an unrecognized rule is refused, not defaulted. A
553
+ * question may leave it unset, which selects QUORUM_FIRST_ANSWER.
421
554
  *
422
555
  * @generated from field: jennahapi.approval.v1.Quorum quorum = 7;
423
556
  */
424
557
  quorum: Quorum;
425
558
  /**
426
559
  * Optional. When set it MUST equal the value derived from `quorum` (1 for
427
- * ANY_ONE, len(approvers) for ALL); a mismatch is refused with a typed error
560
+ * ANY_ONE, len(approvers) for ALL, 1 for FIRST_ANSWER); a mismatch is refused with a typed error
428
561
  * rather than silently corrected, so a caller that sets it is never quietly
429
562
  * given a threshold it did not ask for. Leave it unset and the server derives
430
563
  * it.
@@ -472,6 +605,22 @@ export type CreateApprovalRequest = Message<"jennahapi.approval.v1.CreateApprova
472
605
  * @generated from field: bool record_to_memory = 15;
473
606
  */
474
607
  recordToMemory: boolean;
608
+ /**
609
+ * Unset means APPROVAL_KIND_APPROVAL. An unrecognized kind is refused, not
610
+ * defaulted. A question takes only `quorum` QUORUM_FIRST_ANSWER and
611
+ * `on_expire` ON_EXPIRE_EXPIRE; leaving either unset selects it, and any other
612
+ * value is refused.
613
+ *
614
+ * @generated from field: jennahapi.approval.v1.ApprovalKind kind = 16;
615
+ */
616
+ kind: ApprovalKind;
617
+ /**
618
+ * Required for kind QUESTION, refused on kind APPROVAL. Part of the content a
619
+ * `request_key` replay is compared against.
620
+ *
621
+ * @generated from field: jennahapi.approval.v1.Question question = 17;
622
+ */
623
+ question?: Question | undefined;
475
624
  };
476
625
  /**
477
626
  * Describes the message jennahapi.approval.v1.CreateApprovalRequest.
@@ -847,6 +996,22 @@ export type DescribeApprovalByTokenResponse = Message<"jennahapi.approval.v1.Des
847
996
  * @generated from field: string rendered_digest = 14;
848
997
  */
849
998
  renderedDigest: string;
999
+ /**
1000
+ * @generated from field: jennahapi.approval.v1.ApprovalKind kind = 15;
1001
+ */
1002
+ kind: ApprovalKind;
1003
+ /**
1004
+ * What a question asks, covered by `rendered_digest`. Unset for kind APPROVAL.
1005
+ *
1006
+ * @generated from field: jennahapi.approval.v1.Question question = 16;
1007
+ */
1008
+ question?: Question | undefined;
1009
+ /**
1010
+ * The recorded answer, when `status` is ANSWERED.
1011
+ *
1012
+ * @generated from field: jennahapi.approval.v1.Answer answer = 17;
1013
+ */
1014
+ answer?: Answer | undefined;
850
1015
  };
851
1016
  /**
852
1017
  * Describes the message jennahapi.approval.v1.DescribeApprovalByTokenResponse.
@@ -891,6 +1056,13 @@ export type SubmitApprovalDecisionRequest = Message<"jennahapi.approval.v1.Submi
891
1056
  * @generated from field: string seen_digest = 5;
892
1057
  */
893
1058
  seenDigest: string;
1059
+ /**
1060
+ * Required when `decision` is DECISION_VALUE_ANSWER, refused otherwise. An
1061
+ * answer that does not fit the question is refused without spending the token.
1062
+ *
1063
+ * @generated from field: jennahapi.approval.v1.Answer answer = 6;
1064
+ */
1065
+ answer?: Answer | undefined;
894
1066
  };
895
1067
  /**
896
1068
  * Describes the message jennahapi.approval.v1.SubmitApprovalDecisionRequest.
@@ -1085,15 +1257,59 @@ export declare enum Quorum {
1085
1257
  *
1086
1258
  * @generated from enum value: QUORUM_ALL = 2;
1087
1259
  */
1088
- ALL = 2
1260
+ ALL = 2,
1261
+ /**
1262
+ * The rule of a question (APPROVAL_KIND_QUESTION), and the only rule a question
1263
+ * accepts: the first recorded answer is terminal as ANSWERED. Persists a
1264
+ * required count of 1. Refused on an approval of kind APPROVAL.
1265
+ *
1266
+ * @generated from enum value: QUORUM_FIRST_ANSWER = 3;
1267
+ */
1268
+ FIRST_ANSWER = 3
1089
1269
  }
1090
1270
  /**
1091
1271
  * Describes the enum jennahapi.approval.v1.Quorum.
1092
1272
  */
1093
1273
  export declare const QuorumSchema: GenEnum<Quorum>;
1094
1274
  /**
1095
- * Lifecycle of an approval. PENDING is the only non-terminal value; the other
1096
- * four never change once reached, for any reason, through any operation.
1275
+ * Whether an approval asks "may I?" or "which?".
1276
+ *
1277
+ * Fixed at creation. As with Quorum, a client MUST NOT infer a kind by
1278
+ * exclusion: a kind added later arrives at an older client as
1279
+ * APPROVAL_KIND_UNSPECIFIED.
1280
+ *
1281
+ * @generated from enum jennahapi.approval.v1.ApprovalKind
1282
+ */
1283
+ export declare enum ApprovalKind {
1284
+ /**
1285
+ * On a creation request, means APPROVAL_KIND_APPROVAL. On a read, the kind is
1286
+ * unknown to this client's proto version.
1287
+ *
1288
+ * @generated from enum value: APPROVAL_KIND_UNSPECIFIED = 0;
1289
+ */
1290
+ UNSPECIFIED = 0,
1291
+ /**
1292
+ * Approve or reject. Every approval created before kinds existed is this kind.
1293
+ *
1294
+ * @generated from enum value: APPROVAL_KIND_APPROVAL = 1;
1295
+ */
1296
+ APPROVAL = 1,
1297
+ /**
1298
+ * A question with choices, free text, or both, answered with
1299
+ * DECISION_VALUE_ANSWER or declined with DECISION_VALUE_REJECT. Takes only
1300
+ * QUORUM_FIRST_ANSWER and ON_EXPIRE_EXPIRE.
1301
+ *
1302
+ * @generated from enum value: APPROVAL_KIND_QUESTION = 2;
1303
+ */
1304
+ QUESTION = 2
1305
+ }
1306
+ /**
1307
+ * Describes the enum jennahapi.approval.v1.ApprovalKind.
1308
+ */
1309
+ export declare const ApprovalKindSchema: GenEnum<ApprovalKind>;
1310
+ /**
1311
+ * Lifecycle of an approval. PENDING is the only non-terminal value; the others
1312
+ * never change once reached, for any reason, through any operation.
1097
1313
  *
1098
1314
  * @generated from enum jennahapi.approval.v1.ApprovalStatus
1099
1315
  */
@@ -1111,6 +1327,8 @@ export declare enum ApprovalStatus {
1111
1327
  */
1112
1328
  APPROVED = 2,
1113
1329
  /**
1330
+ * Rejected by an approver. For a question, an approver declined to answer.
1331
+ *
1114
1332
  * @generated from enum value: APPROVAL_STATUS_REJECTED = 3;
1115
1333
  */
1116
1334
  REJECTED = 3,
@@ -1125,7 +1343,14 @@ export declare enum ApprovalStatus {
1125
1343
  *
1126
1344
  * @generated from enum value: APPROVAL_STATUS_CANCELLED = 5;
1127
1345
  */
1128
- CANCELLED = 5
1346
+ CANCELLED = 5,
1347
+ /**
1348
+ * A question that received its answer. Only a question reaches this status,
1349
+ * and the answer is carried on the approval (Approval.answer).
1350
+ *
1351
+ * @generated from enum value: APPROVAL_STATUS_ANSWERED = 6;
1352
+ */
1353
+ ANSWERED = 6
1129
1354
  }
1130
1355
  /**
1131
1356
  * Describes the enum jennahapi.approval.v1.ApprovalStatus.
@@ -1140,7 +1365,8 @@ export declare const ApprovalStatusSchema: GenEnum<ApprovalStatus>;
1140
1365
  */
1141
1366
  export declare enum OnExpire {
1142
1367
  /**
1143
- * Treated as ON_EXPIRE_DENY.
1368
+ * Treated as ON_EXPIRE_DENY for an approval, and as ON_EXPIRE_EXPIRE for a
1369
+ * question.
1144
1370
  *
1145
1371
  * @generated from enum value: ON_EXPIRE_UNSPECIFIED = 0;
1146
1372
  */
@@ -1240,11 +1466,20 @@ export declare enum DecisionValue {
1240
1466
  APPROVE = 1,
1241
1467
  /**
1242
1468
  * Terminal immediately under EVERY quorum rule: one refusal ends the request
1243
- * however many approvals preceded it.
1469
+ * however many approvals preceded it. On a question, the approver declined to
1470
+ * answer.
1244
1471
  *
1245
1472
  * @generated from enum value: DECISION_VALUE_REJECT = 2;
1246
1473
  */
1247
- REJECT = 2
1474
+ REJECT = 2,
1475
+ /**
1476
+ * An answer to a question, carried in `answer`. Accepted only on a question;
1477
+ * DECISION_VALUE_APPROVE is refused on a question and this value is refused on
1478
+ * an approval.
1479
+ *
1480
+ * @generated from enum value: DECISION_VALUE_ANSWER = 3;
1481
+ */
1482
+ ANSWER = 3
1248
1483
  }
1249
1484
  /**
1250
1485
  * Describes the enum jennahapi.approval.v1.DecisionValue.
@@ -7,142 +7,157 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
7
7
  /**
8
8
  * Describes the file jennah/approval/v1/approval.proto.
9
9
  */
10
- export const file_jennah_approval_v1_approval = /*@__PURE__*/ fileDesc("CiFqZW5uYWgvYXBwcm92YWwvdjEvYXBwcm92YWwucHJvdG8SFWplbm5haGFwaS5hcHByb3ZhbC52MSLJAgoIQXBwcm92ZXISEwoLYXBwcm92ZXJfaWQYASABKAkSDQoFZW1haWwYAiABKAkSDwoHdXNlcl9pZBgDIAEoCRITCgtpc19leHRlcm5hbBgEIAEoCBI3CgdjaGFubmVsGAUgASgOMiYuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmVyQ2hhbm5lbBI8Cg5kZWxpdmVyeV9zdGF0ZRgGIAEoDjIkLmplbm5haGFwaS5hcHByb3ZhbC52MS5EZWxpdmVyeVN0YXRlEhkKEWRlbGl2ZXJ5X2F0dGVtcHRzGAcgASgFEhsKE2xhc3RfZGVsaXZlcnlfZXJyb3IYCCABKAkSMwoPbGFzdF9hdHRlbXB0X2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdkZWNpZGVkGAogASgIIlYKDEFwcHJvdmVyU3BlYxINCgVlbWFpbBgBIAEoCRI3CgdjaGFubmVsGAIgASgOMiYuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmVyQ2hhbm5lbCKLBgoIQXBwcm92YWwSFQoNZW50ZXJwcmlzZV9pZBgBIAEoCRITCgthcHByb3ZhbF9pZBgCIAEoCRIQCghhZ2VudF9pZBgDIAEoCRITCgtyZXF1ZXN0X2tleRgEIAEoCRINCgV0aXRsZRgFIAEoCRIPCgdzdW1tYXJ5GAYgASgJEigKB3BheWxvYWQYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ei0KBnF1b3J1bRgIIAEoDjIdLmplbm5haGFwaS5hcHByb3ZhbC52MS5RdW9ydW0SGgoScmVxdWlyZWRfYXBwcm92YWxzGAkgASgFEhoKEmFwcHJvdmFsc19yZWNvcmRlZBgKIAEoBRIhChlyZXF1aXJlX2Rpc3RpbmN0X2FwcHJvdmVyGAsgASgIEiUKHXJlcXVpcmVfYXV0aGVudGljYXRlZF9kZWNpZGVyGAwgASgIEjUKBnN0YXR1cxgNIAEoDjIlLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbFN0YXR1cxIuCgpkZWNpZGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJjcmVhdGVkX2J5X3VzZXJfaWQYDyABKAkSGQoRY3JlYXRlZF9ieV9rZXlfaWQYECABKAkSLgoKY3JlYXRlZF9hdBgRIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgSIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoJb25fZXhwaXJlGBMgASgOMh8uamVubmFoYXBpLmFwcHJvdmFsLnYxLk9uRXhwaXJlEhUKDW5vdGlmeV9ydW5faWQYFCABKAkSGgoSbm90aWZ5X3NpZ25hbF9uYW1lGBUgASgJEjIKCWFwcHJvdmVycxgWIAMoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZlchIYChByZWNvcmRfdG9fbWVtb3J5GBcgASgIIpsCChBBcHByb3ZhbERlY2lzaW9uEhMKC2RlY2lzaW9uX2lkGAEgASgJEhMKC2FwcHJvdmVyX2lkGAIgASgJEjYKCGRlY2lzaW9uGAMgASgOMiQuamVubmFoYXBpLmFwcHJvdmFsLnYxLkRlY2lzaW9uVmFsdWUSDwoHY29tbWVudBgEIAEoCRIuCgpkZWNpZGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1hY3Rvcl91c2VyX2lkGAYgASgJEhEKCXZpYV90b2tlbhgHIAEoCBIRCglzb3VyY2VfaXAYCCABKAkSEgoKdXNlcl9hZ2VudBgJIAEoCRITCgtzZWVuX2RpZ2VzdBgKIAEoCSK3AQoWQXBwcm92ZXJBbGxvd2xpc3RFbnRyeRIQCghlbnRyeV9pZBgBIAEoCRIyCgRraW5kGAIgASgOMiQuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFsbG93bGlzdEtpbmQSDQoFdmFsdWUYAyABKAkSGAoQYWRkZWRfYnlfdXNlcl9pZBgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLrAwoVQ3JlYXRlQXBwcm92YWxSZXF1ZXN0EhMKC3JlcXVlc3Rfa2V5GAEgASgJEhAKCGFnZW50X2lkGAIgASgJEg0KBXRpdGxlGAMgASgJEg8KB3N1bW1hcnkYBCABKAkSKAoHcGF5bG9hZBgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNgoJYXBwcm92ZXJzGAYgAygLMiMuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmVyU3BlYxItCgZxdW9ydW0YByABKA4yHS5qZW5uYWhhcGkuYXBwcm92YWwudjEuUXVvcnVtEhoKEnJlcXVpcmVkX2FwcHJvdmFscxgIIAEoBRIhChlyZXF1aXJlX2Rpc3RpbmN0X2FwcHJvdmVyGAkgASgIEiUKHXJlcXVpcmVfYXV0aGVudGljYXRlZF9kZWNpZGVyGAogASgIEhMKC3R0bF9zZWNvbmRzGAsgASgFEjIKCW9uX2V4cGlyZRgMIAEoDjIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5PbkV4cGlyZRIVCg1ub3RpZnlfcnVuX2lkGA0gASgJEhoKEm5vdGlmeV9zaWduYWxfbmFtZRgOIAEoCRIYChByZWNvcmRfdG9fbWVtb3J5GA8gASgIImQKFkNyZWF0ZUFwcHJvdmFsUmVzcG9uc2USMQoIYXBwcm92YWwYASABKAsyHy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWwSFwoPYWxyZWFkeV9leGlzdGVkGAIgASgIIikKEkdldEFwcHJvdmFsUmVxdWVzdBITCgthcHByb3ZhbF9pZBgBIAEoCSKEAQoTR2V0QXBwcm92YWxSZXNwb25zZRIxCghhcHByb3ZhbBgBIAEoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbBI6CglkZWNpc2lvbnMYAiADKAsyJy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWxEZWNpc2lvbiKgAQoUTGlzdEFwcHJvdmFsc1JlcXVlc3QSEQoJcGFnZV9zaXplGAEgASgFEhIKCnBhZ2VfdG9rZW4YAiABKAkSNQoGc3RhdHVzGAMgASgOMiUuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmFsU3RhdHVzEhAKCGFnZW50X2lkGAQgASgJEhgKEG9ubHlfYXdhaXRpbmdfbWUYBSABKAgiZAoVTGlzdEFwcHJvdmFsc1Jlc3BvbnNlEjIKCWFwcHJvdmFscxgBIAMoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkiLAoVQ2FuY2VsQXBwcm92YWxSZXF1ZXN0EhMKC2FwcHJvdmFsX2lkGAEgASgJIksKFkNhbmNlbEFwcHJvdmFsUmVzcG9uc2USMQoIYXBwcm92YWwYASABKAsyHy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWwiQwoTV2FpdEFwcHJvdmFsUmVxdWVzdBITCgthcHByb3ZhbF9pZBgBIAEoCRIXCg90aW1lb3V0X3NlY29uZHMYAiABKAUiXAoUV2FpdEFwcHJvdmFsUmVzcG9uc2USMQoIYXBwcm92YWwYASABKAsyHy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWwSEQoJdGltZWRfb3V0GAIgASgIIk0KIVJlc2VuZEFwcHJvdmFsTm90aWZpY2F0aW9uUmVxdWVzdBITCgthcHByb3ZhbF9pZBgBIAEoCRITCgthcHByb3Zlcl9pZBgCIAEoCSJYCiJSZXNlbmRBcHByb3ZhbE5vdGlmaWNhdGlvblJlc3BvbnNlEjIKCWFwcHJvdmVycxgBIAMoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZlciIvCh5EZXNjcmliZUFwcHJvdmFsQnlUb2tlblJlcXVlc3QSDQoFdG9rZW4YASABKAki0wMKH0Rlc2NyaWJlQXBwcm92YWxCeVRva2VuUmVzcG9uc2USEwoLYXBwcm92YWxfaWQYASABKAkSFwoPZW50ZXJwcmlzZV9uYW1lGAIgASgJEg0KBXRpdGxlGAMgASgJEg8KB3N1bW1hcnkYBCABKAkSKAoHcGF5bG9hZBgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoOYXBwcm92ZXJfZW1haWwYBiABKAkSNQoGc3RhdHVzGAcgASgOMiUuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmFsU3RhdHVzEhoKEnJlcXVpcmVkX2FwcHJvdmFscxgIIAEoBRIaChJhcHByb3ZhbHNfcmVjb3JkZWQYCSABKAUSLgoKZXhwaXJlc19hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZGVjaWRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJZGVjaWRhYmxlGAwgASgIEiUKHXJlcXVpcmVfYXV0aGVudGljYXRlZF9kZWNpZGVyGA0gASgIEhcKD3JlbmRlcmVkX2RpZ2VzdBgOIAEoCSKhAQodU3VibWl0QXBwcm92YWxEZWNpc2lvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSEwoLYXBwcm92YWxfaWQYAiABKAkSNgoIZGVjaXNpb24YAyABKA4yJC5qZW5uYWhhcGkuYXBwcm92YWwudjEuRGVjaXNpb25WYWx1ZRIPCgdjb21tZW50GAQgASgJEhMKC3NlZW5fZGlnZXN0GAUgASgJIvoBCh5TdWJtaXRBcHByb3ZhbERlY2lzaW9uUmVzcG9uc2USNQoGc3RhdHVzGAEgASgOMiUuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmFsU3RhdHVzEhoKEnJlcXVpcmVkX2FwcHJvdmFscxgCIAEoBRIaChJhcHByb3ZhbHNfcmVjb3JkZWQYAyABKAUSLgoKZGVjaWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOQoIZGVjaXNpb24YBSABKAsyJy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWxEZWNpc2lvbiI9ChRMaXN0QXBwcm92ZXJzUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCSJwChVMaXN0QXBwcm92ZXJzUmVzcG9uc2USPgoHZW50cmllcxgBIAMoCzItLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZlckFsbG93bGlzdEVudHJ5EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSJXChJBZGRBcHByb3ZlclJlcXVlc3QSMgoEa2luZBgBIAEoDjIkLmplbm5haGFwaS5hcHByb3ZhbC52MS5BbGxvd2xpc3RLaW5kEg0KBXZhbHVlGAIgASgJIlMKE0FkZEFwcHJvdmVyUmVzcG9uc2USPAoFZW50cnkYASABKAsyLS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92ZXJBbGxvd2xpc3RFbnRyeSIpChVSZW1vdmVBcHByb3ZlclJlcXVlc3QSEAoIZW50cnlfaWQYASABKAkiGAoWUmVtb3ZlQXBwcm92ZXJSZXNwb25zZSpECgZRdW9ydW0SFgoSUVVPUlVNX1VOU1BFQ0lGSUVEEAASEgoOUVVPUlVNX0FOWV9PTkUQARIOCgpRVU9SVU1fQUxMEAIqxgEKDkFwcHJvdmFsU3RhdHVzEh8KG0FQUFJPVkFMX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF0FQUFJPVkFMX1NUQVRVU19QRU5ESU5HEAESHAoYQVBQUk9WQUxfU1RBVFVTX0FQUFJPVkVEEAISHAoYQVBQUk9WQUxfU1RBVFVTX1JFSkVDVEVEEAMSGwoXQVBQUk9WQUxfU1RBVFVTX0VYUElSRUQQBBIdChlBUFBST1ZBTF9TVEFUVVNfQ0FOQ0VMTEVEEAUqTwoIT25FeHBpcmUSGQoVT05fRVhQSVJFX1VOU1BFQ0lGSUVEEAASEgoOT05fRVhQSVJFX0RFTlkQARIUChBPTl9FWFBJUkVfRVhQSVJFEAIqhAEKDURlbGl2ZXJ5U3RhdGUSHgoaREVMSVZFUllfU1RBVEVfVU5TUEVDSUZJRUQQABIaChZERUxJVkVSWV9TVEFURV9QRU5ESU5HEAESHAoYREVMSVZFUllfU1RBVEVfREVMSVZFUkVEEAISGQoVREVMSVZFUllfU1RBVEVfRkFJTEVEEAMqTwoPQXBwcm92ZXJDaGFubmVsEiAKHEFQUFJPVkVSX0NIQU5ORUxfVU5TUEVDSUZJRUQQABIaChZBUFBST1ZFUl9DSEFOTkVMX0VNQUlMEAEqZgoNRGVjaXNpb25WYWx1ZRIeChpERUNJU0lPTl9WQUxVRV9VTlNQRUNJRklFRBAAEhoKFkRFQ0lTSU9OX1ZBTFVFX0FQUFJPVkUQARIZChVERUNJU0lPTl9WQUxVRV9SRUpFQ1QQAipkCg1BbGxvd2xpc3RLaW5kEh4KGkFMTE9XTElTVF9LSU5EX1VOU1BFQ0lGSUVEEAASGAoUQUxMT1dMSVNUX0tJTkRfRU1BSUwQARIZChVBTExPV0xJU1RfS0lORF9ET01BSU4QAjKRDQoPQXBwcm92YWxTZXJ2aWNlEocBCg5DcmVhdGVBcHByb3ZhbBIsLmplbm5haGFwaS5hcHByb3ZhbC52MS5DcmVhdGVBcHByb3ZhbFJlcXVlc3QaLS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQ3JlYXRlQXBwcm92YWxSZXNwb25zZSIYgtPkkwISOgEqIg0vdjEvYXBwcm92YWxzEokBCgtHZXRBcHByb3ZhbBIpLmplbm5haGFwaS5hcHByb3ZhbC52MS5HZXRBcHByb3ZhbFJlcXVlc3QaKi5qZW5uYWhhcGkuYXBwcm92YWwudjEuR2V0QXBwcm92YWxSZXNwb25zZSIjgtPkkwIdEhsvdjEvYXBwcm92YWxzL3thcHByb3ZhbF9pZH0SgQEKDUxpc3RBcHByb3ZhbHMSKy5qZW5uYWhhcGkuYXBwcm92YWwudjEuTGlzdEFwcHJvdmFsc1JlcXVlc3QaLC5qZW5uYWhhcGkuYXBwcm92YWwudjEuTGlzdEFwcHJvdmFsc1Jlc3BvbnNlIhWC0+STAg8SDS92MS9hcHByb3ZhbHMSnAEKDkNhbmNlbEFwcHJvdmFsEiwuamVubmFoYXBpLmFwcHJvdmFsLnYxLkNhbmNlbEFwcHJvdmFsUmVxdWVzdBotLmplbm5haGFwaS5hcHByb3ZhbC52MS5DYW5jZWxBcHByb3ZhbFJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hcHByb3ZhbHMve2FwcHJvdmFsX2lkfTpjYW5jZWwSlAEKDFdhaXRBcHByb3ZhbBIqLmplbm5haGFwaS5hcHByb3ZhbC52MS5XYWl0QXBwcm92YWxSZXF1ZXN0GisuamVubmFoYXBpLmFwcHJvdmFsLnYxLldhaXRBcHByb3ZhbFJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9hcHByb3ZhbHMve2FwcHJvdmFsX2lkfTp3YWl0EsABChpSZXNlbmRBcHByb3ZhbE5vdGlmaWNhdGlvbhI4Lmplbm5haGFwaS5hcHByb3ZhbC52MS5SZXNlbmRBcHByb3ZhbE5vdGlmaWNhdGlvblJlcXVlc3QaOS5qZW5uYWhhcGkuYXBwcm92YWwudjEuUmVzZW5kQXBwcm92YWxOb3RpZmljYXRpb25SZXNwb25zZSItgtPkkwInOgEqIiIvdjEvYXBwcm92YWxzL3thcHByb3ZhbF9pZH06cmVzZW5kEqsBChdEZXNjcmliZUFwcHJvdmFsQnlUb2tlbhI1Lmplbm5haGFwaS5hcHByb3ZhbC52MS5EZXNjcmliZUFwcHJvdmFsQnlUb2tlblJlcXVlc3QaNi5qZW5uYWhhcGkuYXBwcm92YWwudjEuRGVzY3JpYmVBcHByb3ZhbEJ5VG9rZW5SZXNwb25zZSIhgtPkkwIbOgEqIhYvdjEvYXBwcm92YWxzOmRlc2NyaWJlEqYBChZTdWJtaXRBcHByb3ZhbERlY2lzaW9uEjQuamVubmFoYXBpLmFwcHJvdmFsLnYxLlN1Ym1pdEFwcHJvdmFsRGVjaXNpb25SZXF1ZXN0GjUuamVubmFoYXBpLmFwcHJvdmFsLnYxLlN1Ym1pdEFwcHJvdmFsRGVjaXNpb25SZXNwb25zZSIfgtPkkwIZOgEqIhQvdjEvYXBwcm92YWxzOmRlY2lkZRKBAQoNTGlzdEFwcHJvdmVycxIrLmplbm5haGFwaS5hcHByb3ZhbC52MS5MaXN0QXBwcm92ZXJzUmVxdWVzdBosLmplbm5haGFwaS5hcHByb3ZhbC52MS5MaXN0QXBwcm92ZXJzUmVzcG9uc2UiFYLT5JMCDxINL3YxL2FwcHJvdmVycxJ+CgtBZGRBcHByb3ZlchIpLmplbm5haGFwaS5hcHByb3ZhbC52MS5BZGRBcHByb3ZlclJlcXVlc3QaKi5qZW5uYWhhcGkuYXBwcm92YWwudjEuQWRkQXBwcm92ZXJSZXNwb25zZSIYgtPkkwISOgEqIg0vdjEvYXBwcm92ZXJzEo8BCg5SZW1vdmVBcHByb3ZlchIsLmplbm5haGFwaS5hcHByb3ZhbC52MS5SZW1vdmVBcHByb3ZlclJlcXVlc3QaLS5qZW5uYWhhcGkuYXBwcm92YWwudjEuUmVtb3ZlQXBwcm92ZXJSZXNwb25zZSIggtPkkwIaKhgvdjEvYXBwcm92ZXJzL3tlbnRyeV9pZH1CLFoqZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9qZW5uYWgtYXBpL2FwcHJvdmFsYgZwcm90bzM", [file_google_api_annotations, file_google_protobuf_struct, file_google_protobuf_timestamp]);
10
+ export const file_jennah_approval_v1_approval = /*@__PURE__*/ fileDesc("CiFqZW5uYWgvYXBwcm92YWwvdjEvYXBwcm92YWwucHJvdG8SFWplbm5haGFwaS5hcHByb3ZhbC52MSJACg5RdWVzdGlvbkNob2ljZRIKCgJpZBgBIAEoCRINCgVsYWJlbBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCSJxCghRdWVzdGlvbhI2CgdjaG9pY2VzGAEgAygLMiUuamVubmFoYXBpLmFwcHJvdmFsLnYxLlF1ZXN0aW9uQ2hvaWNlEhQKDG11bHRpX3NlbGVjdBgCIAEoCBIXCg9hbGxvd19mcmVlX3RleHQYAyABKAgihwEKBkFuc3dlchISCgpjaG9pY2VfaWRzGAEgAygJEhUKDWNob2ljZV9sYWJlbHMYAiADKAkSDAoEdGV4dBgDIAEoCRITCgthcHByb3Zlcl9pZBgEIAEoCRIvCgthbnN3ZXJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiyQIKCEFwcHJvdmVyEhMKC2FwcHJvdmVyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSEwoLaXNfZXh0ZXJuYWwYBCABKAgSNwoHY2hhbm5lbBgFIAEoDjImLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZlckNoYW5uZWwSPAoOZGVsaXZlcnlfc3RhdGUYBiABKA4yJC5qZW5uYWhhcGkuYXBwcm92YWwudjEuRGVsaXZlcnlTdGF0ZRIZChFkZWxpdmVyeV9hdHRlbXB0cxgHIAEoBRIbChNsYXN0X2RlbGl2ZXJ5X2Vycm9yGAggASgJEjMKD2xhc3RfYXR0ZW1wdF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHZGVjaWRlZBgKIAEoCCJWCgxBcHByb3ZlclNwZWMSDQoFZW1haWwYASABKAkSNwoHY2hhbm5lbBgCIAEoDjImLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZlckNoYW5uZWwioAcKCEFwcHJvdmFsEhUKDWVudGVycHJpc2VfaWQYASABKAkSEwoLYXBwcm92YWxfaWQYAiABKAkSEAoIYWdlbnRfaWQYAyABKAkSEwoLcmVxdWVzdF9rZXkYBCABKAkSDQoFdGl0bGUYBSABKAkSDwoHc3VtbWFyeRgGIAEoCRIoCgdwYXlsb2FkGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBItCgZxdW9ydW0YCCABKA4yHS5qZW5uYWhhcGkuYXBwcm92YWwudjEuUXVvcnVtEhoKEnJlcXVpcmVkX2FwcHJvdmFscxgJIAEoBRIaChJhcHByb3ZhbHNfcmVjb3JkZWQYCiABKAUSIQoZcmVxdWlyZV9kaXN0aW5jdF9hcHByb3ZlchgLIAEoCBIlCh1yZXF1aXJlX2F1dGhlbnRpY2F0ZWRfZGVjaWRlchgMIAEoCBI1CgZzdGF0dXMYDSABKA4yJS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWxTdGF0dXMSLgoKZGVjaWRlZF9hdBgOIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSY3JlYXRlZF9ieV91c2VyX2lkGA8gASgJEhkKEWNyZWF0ZWRfYnlfa2V5X2lkGBAgASgJEi4KCmNyZWF0ZWRfYXQYESABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYEiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKCW9uX2V4cGlyZRgTIAEoDjIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5PbkV4cGlyZRIVCg1ub3RpZnlfcnVuX2lkGBQgASgJEhoKEm5vdGlmeV9zaWduYWxfbmFtZRgVIAEoCRIyCglhcHByb3ZlcnMYFiADKAsyHy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92ZXISGAoQcmVjb3JkX3RvX21lbW9yeRgXIAEoCBIxCgRraW5kGBggASgOMiMuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmFsS2luZBIxCghxdWVzdGlvbhgZIAEoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5RdWVzdGlvbhItCgZhbnN3ZXIYGiABKAsyHS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQW5zd2VyIsoCChBBcHByb3ZhbERlY2lzaW9uEhMKC2RlY2lzaW9uX2lkGAEgASgJEhMKC2FwcHJvdmVyX2lkGAIgASgJEjYKCGRlY2lzaW9uGAMgASgOMiQuamVubmFoYXBpLmFwcHJvdmFsLnYxLkRlY2lzaW9uVmFsdWUSDwoHY29tbWVudBgEIAEoCRIuCgpkZWNpZGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1hY3Rvcl91c2VyX2lkGAYgASgJEhEKCXZpYV90b2tlbhgHIAEoCBIRCglzb3VyY2VfaXAYCCABKAkSEgoKdXNlcl9hZ2VudBgJIAEoCRITCgtzZWVuX2RpZ2VzdBgKIAEoCRItCgZhbnN3ZXIYCyABKAsyHS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQW5zd2VyIrcBChZBcHByb3ZlckFsbG93bGlzdEVudHJ5EhAKCGVudHJ5X2lkGAEgASgJEjIKBGtpbmQYAiABKA4yJC5qZW5uYWhhcGkuYXBwcm92YWwudjEuQWxsb3dsaXN0S2luZBINCgV2YWx1ZRgDIAEoCRIYChBhZGRlZF9ieV91c2VyX2lkGAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wItEEChVDcmVhdGVBcHByb3ZhbFJlcXVlc3QSEwoLcmVxdWVzdF9rZXkYASABKAkSEAoIYWdlbnRfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSDwoHc3VtbWFyeRgEIAEoCRIoCgdwYXlsb2FkGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI2CglhcHByb3ZlcnMYBiADKAsyIy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92ZXJTcGVjEi0KBnF1b3J1bRgHIAEoDjIdLmplbm5haGFwaS5hcHByb3ZhbC52MS5RdW9ydW0SGgoScmVxdWlyZWRfYXBwcm92YWxzGAggASgFEiEKGXJlcXVpcmVfZGlzdGluY3RfYXBwcm92ZXIYCSABKAgSJQodcmVxdWlyZV9hdXRoZW50aWNhdGVkX2RlY2lkZXIYCiABKAgSEwoLdHRsX3NlY29uZHMYCyABKAUSMgoJb25fZXhwaXJlGAwgASgOMh8uamVubmFoYXBpLmFwcHJvdmFsLnYxLk9uRXhwaXJlEhUKDW5vdGlmeV9ydW5faWQYDSABKAkSGgoSbm90aWZ5X3NpZ25hbF9uYW1lGA4gASgJEhgKEHJlY29yZF90b19tZW1vcnkYDyABKAgSMQoEa2luZBgQIAEoDjIjLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbEtpbmQSMQoIcXVlc3Rpb24YESABKAsyHy5qZW5uYWhhcGkuYXBwcm92YWwudjEuUXVlc3Rpb24iZAoWQ3JlYXRlQXBwcm92YWxSZXNwb25zZRIxCghhcHByb3ZhbBgBIAEoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbBIXCg9hbHJlYWR5X2V4aXN0ZWQYAiABKAgiKQoSR2V0QXBwcm92YWxSZXF1ZXN0EhMKC2FwcHJvdmFsX2lkGAEgASgJIoQBChNHZXRBcHByb3ZhbFJlc3BvbnNlEjEKCGFwcHJvdmFsGAEgASgLMh8uamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmFsEjoKCWRlY2lzaW9ucxgCIAMoCzInLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbERlY2lzaW9uIqABChRMaXN0QXBwcm92YWxzUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCRI1CgZzdGF0dXMYAyABKA4yJS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWxTdGF0dXMSEAoIYWdlbnRfaWQYBCABKAkSGAoQb25seV9hd2FpdGluZ19tZRgFIAEoCCJkChVMaXN0QXBwcm92YWxzUmVzcG9uc2USMgoJYXBwcm92YWxzGAEgAygLMh8uamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmFsEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSIsChVDYW5jZWxBcHByb3ZhbFJlcXVlc3QSEwoLYXBwcm92YWxfaWQYASABKAkiSwoWQ2FuY2VsQXBwcm92YWxSZXNwb25zZRIxCghhcHByb3ZhbBgBIAEoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbCJDChNXYWl0QXBwcm92YWxSZXF1ZXN0EhMKC2FwcHJvdmFsX2lkGAEgASgJEhcKD3RpbWVvdXRfc2Vjb25kcxgCIAEoBSJcChRXYWl0QXBwcm92YWxSZXNwb25zZRIxCghhcHByb3ZhbBgBIAEoCzIfLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZhbBIRCgl0aW1lZF9vdXQYAiABKAgiTQohUmVzZW5kQXBwcm92YWxOb3RpZmljYXRpb25SZXF1ZXN0EhMKC2FwcHJvdmFsX2lkGAEgASgJEhMKC2FwcHJvdmVyX2lkGAIgASgJIlgKIlJlc2VuZEFwcHJvdmFsTm90aWZpY2F0aW9uUmVzcG9uc2USMgoJYXBwcm92ZXJzGAEgAygLMh8uamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmVyIi8KHkRlc2NyaWJlQXBwcm92YWxCeVRva2VuUmVxdWVzdBINCgV0b2tlbhgBIAEoCSLoBAofRGVzY3JpYmVBcHByb3ZhbEJ5VG9rZW5SZXNwb25zZRITCgthcHByb3ZhbF9pZBgBIAEoCRIXCg9lbnRlcnByaXNlX25hbWUYAiABKAkSDQoFdGl0bGUYAyABKAkSDwoHc3VtbWFyeRgEIAEoCRIoCgdwYXlsb2FkGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIWCg5hcHByb3Zlcl9lbWFpbBgGIAEoCRI1CgZzdGF0dXMYByABKA4yJS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWxTdGF0dXMSGgoScmVxdWlyZWRfYXBwcm92YWxzGAggASgFEhoKEmFwcHJvdmFsc19yZWNvcmRlZBgJIAEoBRIuCgpleHBpcmVzX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpkZWNpZGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCglkZWNpZGFibGUYDCABKAgSJQodcmVxdWlyZV9hdXRoZW50aWNhdGVkX2RlY2lkZXIYDSABKAgSFwoPcmVuZGVyZWRfZGlnZXN0GA4gASgJEjEKBGtpbmQYDyABKA4yIy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWxLaW5kEjEKCHF1ZXN0aW9uGBAgASgLMh8uamVubmFoYXBpLmFwcHJvdmFsLnYxLlF1ZXN0aW9uEi0KBmFuc3dlchgRIAEoCzIdLmplbm5haGFwaS5hcHByb3ZhbC52MS5BbnN3ZXIi0AEKHVN1Ym1pdEFwcHJvdmFsRGVjaXNpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhMKC2FwcHJvdmFsX2lkGAIgASgJEjYKCGRlY2lzaW9uGAMgASgOMiQuamVubmFoYXBpLmFwcHJvdmFsLnYxLkRlY2lzaW9uVmFsdWUSDwoHY29tbWVudBgEIAEoCRITCgtzZWVuX2RpZ2VzdBgFIAEoCRItCgZhbnN3ZXIYBiABKAsyHS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQW5zd2VyIvoBCh5TdWJtaXRBcHByb3ZhbERlY2lzaW9uUmVzcG9uc2USNQoGc3RhdHVzGAEgASgOMiUuamVubmFoYXBpLmFwcHJvdmFsLnYxLkFwcHJvdmFsU3RhdHVzEhoKEnJlcXVpcmVkX2FwcHJvdmFscxgCIAEoBRIaChJhcHByb3ZhbHNfcmVjb3JkZWQYAyABKAUSLgoKZGVjaWRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOQoIZGVjaXNpb24YBSABKAsyJy5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92YWxEZWNpc2lvbiI9ChRMaXN0QXBwcm92ZXJzUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCSJwChVMaXN0QXBwcm92ZXJzUmVzcG9uc2USPgoHZW50cmllcxgBIAMoCzItLmplbm5haGFwaS5hcHByb3ZhbC52MS5BcHByb3ZlckFsbG93bGlzdEVudHJ5EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSJXChJBZGRBcHByb3ZlclJlcXVlc3QSMgoEa2luZBgBIAEoDjIkLmplbm5haGFwaS5hcHByb3ZhbC52MS5BbGxvd2xpc3RLaW5kEg0KBXZhbHVlGAIgASgJIlMKE0FkZEFwcHJvdmVyUmVzcG9uc2USPAoFZW50cnkYASABKAsyLS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQXBwcm92ZXJBbGxvd2xpc3RFbnRyeSIpChVSZW1vdmVBcHByb3ZlclJlcXVlc3QSEAoIZW50cnlfaWQYASABKAkiGAoWUmVtb3ZlQXBwcm92ZXJSZXNwb25zZSpdCgZRdW9ydW0SFgoSUVVPUlVNX1VOU1BFQ0lGSUVEEAASEgoOUVVPUlVNX0FOWV9PTkUQARIOCgpRVU9SVU1fQUxMEAISFwoTUVVPUlVNX0ZJUlNUX0FOU1dFUhADKmUKDEFwcHJvdmFsS2luZBIdChlBUFBST1ZBTF9LSU5EX1VOU1BFQ0lGSUVEEAASGgoWQVBQUk9WQUxfS0lORF9BUFBST1ZBTBABEhoKFkFQUFJPVkFMX0tJTkRfUVVFU1RJT04QAirkAQoOQXBwcm92YWxTdGF0dXMSHwobQVBQUk9WQUxfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXQVBQUk9WQUxfU1RBVFVTX1BFTkRJTkcQARIcChhBUFBST1ZBTF9TVEFUVVNfQVBQUk9WRUQQAhIcChhBUFBST1ZBTF9TVEFUVVNfUkVKRUNURUQQAxIbChdBUFBST1ZBTF9TVEFUVVNfRVhQSVJFRBAEEh0KGUFQUFJPVkFMX1NUQVRVU19DQU5DRUxMRUQQBRIcChhBUFBST1ZBTF9TVEFUVVNfQU5TV0VSRUQQBipPCghPbkV4cGlyZRIZChVPTl9FWFBJUkVfVU5TUEVDSUZJRUQQABISCg5PTl9FWFBJUkVfREVOWRABEhQKEE9OX0VYUElSRV9FWFBJUkUQAiqEAQoNRGVsaXZlcnlTdGF0ZRIeChpERUxJVkVSWV9TVEFURV9VTlNQRUNJRklFRBAAEhoKFkRFTElWRVJZX1NUQVRFX1BFTkRJTkcQARIcChhERUxJVkVSWV9TVEFURV9ERUxJVkVSRUQQAhIZChVERUxJVkVSWV9TVEFURV9GQUlMRUQQAypPCg9BcHByb3ZlckNoYW5uZWwSIAocQVBQUk9WRVJfQ0hBTk5FTF9VTlNQRUNJRklFRBAAEhoKFkFQUFJPVkVSX0NIQU5ORUxfRU1BSUwQASqBAQoNRGVjaXNpb25WYWx1ZRIeChpERUNJU0lPTl9WQUxVRV9VTlNQRUNJRklFRBAAEhoKFkRFQ0lTSU9OX1ZBTFVFX0FQUFJPVkUQARIZChVERUNJU0lPTl9WQUxVRV9SRUpFQ1QQAhIZChVERUNJU0lPTl9WQUxVRV9BTlNXRVIQAypkCg1BbGxvd2xpc3RLaW5kEh4KGkFMTE9XTElTVF9LSU5EX1VOU1BFQ0lGSUVEEAASGAoUQUxMT1dMSVNUX0tJTkRfRU1BSUwQARIZChVBTExPV0xJU1RfS0lORF9ET01BSU4QAjKRDQoPQXBwcm92YWxTZXJ2aWNlEocBCg5DcmVhdGVBcHByb3ZhbBIsLmplbm5haGFwaS5hcHByb3ZhbC52MS5DcmVhdGVBcHByb3ZhbFJlcXVlc3QaLS5qZW5uYWhhcGkuYXBwcm92YWwudjEuQ3JlYXRlQXBwcm92YWxSZXNwb25zZSIYgtPkkwISOgEqIg0vdjEvYXBwcm92YWxzEokBCgtHZXRBcHByb3ZhbBIpLmplbm5haGFwaS5hcHByb3ZhbC52MS5HZXRBcHByb3ZhbFJlcXVlc3QaKi5qZW5uYWhhcGkuYXBwcm92YWwudjEuR2V0QXBwcm92YWxSZXNwb25zZSIjgtPkkwIdEhsvdjEvYXBwcm92YWxzL3thcHByb3ZhbF9pZH0SgQEKDUxpc3RBcHByb3ZhbHMSKy5qZW5uYWhhcGkuYXBwcm92YWwudjEuTGlzdEFwcHJvdmFsc1JlcXVlc3QaLC5qZW5uYWhhcGkuYXBwcm92YWwudjEuTGlzdEFwcHJvdmFsc1Jlc3BvbnNlIhWC0+STAg8SDS92MS9hcHByb3ZhbHMSnAEKDkNhbmNlbEFwcHJvdmFsEiwuamVubmFoYXBpLmFwcHJvdmFsLnYxLkNhbmNlbEFwcHJvdmFsUmVxdWVzdBotLmplbm5haGFwaS5hcHByb3ZhbC52MS5DYW5jZWxBcHByb3ZhbFJlc3BvbnNlIi2C0+STAic6ASoiIi92MS9hcHByb3ZhbHMve2FwcHJvdmFsX2lkfTpjYW5jZWwSlAEKDFdhaXRBcHByb3ZhbBIqLmplbm5haGFwaS5hcHByb3ZhbC52MS5XYWl0QXBwcm92YWxSZXF1ZXN0GisuamVubmFoYXBpLmFwcHJvdmFsLnYxLldhaXRBcHByb3ZhbFJlc3BvbnNlIiuC0+STAiU6ASoiIC92MS9hcHByb3ZhbHMve2FwcHJvdmFsX2lkfTp3YWl0EsABChpSZXNlbmRBcHByb3ZhbE5vdGlmaWNhdGlvbhI4Lmplbm5haGFwaS5hcHByb3ZhbC52MS5SZXNlbmRBcHByb3ZhbE5vdGlmaWNhdGlvblJlcXVlc3QaOS5qZW5uYWhhcGkuYXBwcm92YWwudjEuUmVzZW5kQXBwcm92YWxOb3RpZmljYXRpb25SZXNwb25zZSItgtPkkwInOgEqIiIvdjEvYXBwcm92YWxzL3thcHByb3ZhbF9pZH06cmVzZW5kEqsBChdEZXNjcmliZUFwcHJvdmFsQnlUb2tlbhI1Lmplbm5haGFwaS5hcHByb3ZhbC52MS5EZXNjcmliZUFwcHJvdmFsQnlUb2tlblJlcXVlc3QaNi5qZW5uYWhhcGkuYXBwcm92YWwudjEuRGVzY3JpYmVBcHByb3ZhbEJ5VG9rZW5SZXNwb25zZSIhgtPkkwIbOgEqIhYvdjEvYXBwcm92YWxzOmRlc2NyaWJlEqYBChZTdWJtaXRBcHByb3ZhbERlY2lzaW9uEjQuamVubmFoYXBpLmFwcHJvdmFsLnYxLlN1Ym1pdEFwcHJvdmFsRGVjaXNpb25SZXF1ZXN0GjUuamVubmFoYXBpLmFwcHJvdmFsLnYxLlN1Ym1pdEFwcHJvdmFsRGVjaXNpb25SZXNwb25zZSIfgtPkkwIZOgEqIhQvdjEvYXBwcm92YWxzOmRlY2lkZRKBAQoNTGlzdEFwcHJvdmVycxIrLmplbm5haGFwaS5hcHByb3ZhbC52MS5MaXN0QXBwcm92ZXJzUmVxdWVzdBosLmplbm5haGFwaS5hcHByb3ZhbC52MS5MaXN0QXBwcm92ZXJzUmVzcG9uc2UiFYLT5JMCDxINL3YxL2FwcHJvdmVycxJ+CgtBZGRBcHByb3ZlchIpLmplbm5haGFwaS5hcHByb3ZhbC52MS5BZGRBcHByb3ZlclJlcXVlc3QaKi5qZW5uYWhhcGkuYXBwcm92YWwudjEuQWRkQXBwcm92ZXJSZXNwb25zZSIYgtPkkwISOgEqIg0vdjEvYXBwcm92ZXJzEo8BCg5SZW1vdmVBcHByb3ZlchIsLmplbm5haGFwaS5hcHByb3ZhbC52MS5SZW1vdmVBcHByb3ZlclJlcXVlc3QaLS5qZW5uYWhhcGkuYXBwcm92YWwudjEuUmVtb3ZlQXBwcm92ZXJSZXNwb25zZSIggtPkkwIaKhgvdjEvYXBwcm92ZXJzL3tlbnRyeV9pZH1CLFoqZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9qZW5uYWgtYXBpL2FwcHJvdmFsYgZwcm90bzM", [file_google_api_annotations, file_google_protobuf_struct, file_google_protobuf_timestamp]);
11
+ /**
12
+ * Describes the message jennahapi.approval.v1.QuestionChoice.
13
+ * Use `create(QuestionChoiceSchema)` to create a new message.
14
+ */
15
+ export const QuestionChoiceSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 0);
16
+ /**
17
+ * Describes the message jennahapi.approval.v1.Question.
18
+ * Use `create(QuestionSchema)` to create a new message.
19
+ */
20
+ export const QuestionSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 1);
21
+ /**
22
+ * Describes the message jennahapi.approval.v1.Answer.
23
+ * Use `create(AnswerSchema)` to create a new message.
24
+ */
25
+ export const AnswerSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 2);
11
26
  /**
12
27
  * Describes the message jennahapi.approval.v1.Approver.
13
28
  * Use `create(ApproverSchema)` to create a new message.
14
29
  */
15
- export const ApproverSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 0);
30
+ export const ApproverSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 3);
16
31
  /**
17
32
  * Describes the message jennahapi.approval.v1.ApproverSpec.
18
33
  * Use `create(ApproverSpecSchema)` to create a new message.
19
34
  */
20
- export const ApproverSpecSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 1);
35
+ export const ApproverSpecSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 4);
21
36
  /**
22
37
  * Describes the message jennahapi.approval.v1.Approval.
23
38
  * Use `create(ApprovalSchema)` to create a new message.
24
39
  */
25
- export const ApprovalSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 2);
40
+ export const ApprovalSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 5);
26
41
  /**
27
42
  * Describes the message jennahapi.approval.v1.ApprovalDecision.
28
43
  * Use `create(ApprovalDecisionSchema)` to create a new message.
29
44
  */
30
- export const ApprovalDecisionSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 3);
45
+ export const ApprovalDecisionSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 6);
31
46
  /**
32
47
  * Describes the message jennahapi.approval.v1.ApproverAllowlistEntry.
33
48
  * Use `create(ApproverAllowlistEntrySchema)` to create a new message.
34
49
  */
35
- export const ApproverAllowlistEntrySchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 4);
50
+ export const ApproverAllowlistEntrySchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 7);
36
51
  /**
37
52
  * Describes the message jennahapi.approval.v1.CreateApprovalRequest.
38
53
  * Use `create(CreateApprovalRequestSchema)` to create a new message.
39
54
  */
40
- export const CreateApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 5);
55
+ export const CreateApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 8);
41
56
  /**
42
57
  * Describes the message jennahapi.approval.v1.CreateApprovalResponse.
43
58
  * Use `create(CreateApprovalResponseSchema)` to create a new message.
44
59
  */
45
- export const CreateApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 6);
60
+ export const CreateApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 9);
46
61
  /**
47
62
  * Describes the message jennahapi.approval.v1.GetApprovalRequest.
48
63
  * Use `create(GetApprovalRequestSchema)` to create a new message.
49
64
  */
50
- export const GetApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 7);
65
+ export const GetApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 10);
51
66
  /**
52
67
  * Describes the message jennahapi.approval.v1.GetApprovalResponse.
53
68
  * Use `create(GetApprovalResponseSchema)` to create a new message.
54
69
  */
55
- export const GetApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 8);
70
+ export const GetApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 11);
56
71
  /**
57
72
  * Describes the message jennahapi.approval.v1.ListApprovalsRequest.
58
73
  * Use `create(ListApprovalsRequestSchema)` to create a new message.
59
74
  */
60
- export const ListApprovalsRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 9);
75
+ export const ListApprovalsRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 12);
61
76
  /**
62
77
  * Describes the message jennahapi.approval.v1.ListApprovalsResponse.
63
78
  * Use `create(ListApprovalsResponseSchema)` to create a new message.
64
79
  */
65
- export const ListApprovalsResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 10);
80
+ export const ListApprovalsResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 13);
66
81
  /**
67
82
  * Describes the message jennahapi.approval.v1.CancelApprovalRequest.
68
83
  * Use `create(CancelApprovalRequestSchema)` to create a new message.
69
84
  */
70
- export const CancelApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 11);
85
+ export const CancelApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 14);
71
86
  /**
72
87
  * Describes the message jennahapi.approval.v1.CancelApprovalResponse.
73
88
  * Use `create(CancelApprovalResponseSchema)` to create a new message.
74
89
  */
75
- export const CancelApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 12);
90
+ export const CancelApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 15);
76
91
  /**
77
92
  * Describes the message jennahapi.approval.v1.WaitApprovalRequest.
78
93
  * Use `create(WaitApprovalRequestSchema)` to create a new message.
79
94
  */
80
- export const WaitApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 13);
95
+ export const WaitApprovalRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 16);
81
96
  /**
82
97
  * Describes the message jennahapi.approval.v1.WaitApprovalResponse.
83
98
  * Use `create(WaitApprovalResponseSchema)` to create a new message.
84
99
  */
85
- export const WaitApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 14);
100
+ export const WaitApprovalResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 17);
86
101
  /**
87
102
  * Describes the message jennahapi.approval.v1.ResendApprovalNotificationRequest.
88
103
  * Use `create(ResendApprovalNotificationRequestSchema)` to create a new message.
89
104
  */
90
- export const ResendApprovalNotificationRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 15);
105
+ export const ResendApprovalNotificationRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 18);
91
106
  /**
92
107
  * Describes the message jennahapi.approval.v1.ResendApprovalNotificationResponse.
93
108
  * Use `create(ResendApprovalNotificationResponseSchema)` to create a new message.
94
109
  */
95
- export const ResendApprovalNotificationResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 16);
110
+ export const ResendApprovalNotificationResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 19);
96
111
  /**
97
112
  * Describes the message jennahapi.approval.v1.DescribeApprovalByTokenRequest.
98
113
  * Use `create(DescribeApprovalByTokenRequestSchema)` to create a new message.
99
114
  */
100
- export const DescribeApprovalByTokenRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 17);
115
+ export const DescribeApprovalByTokenRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 20);
101
116
  /**
102
117
  * Describes the message jennahapi.approval.v1.DescribeApprovalByTokenResponse.
103
118
  * Use `create(DescribeApprovalByTokenResponseSchema)` to create a new message.
104
119
  */
105
- export const DescribeApprovalByTokenResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 18);
120
+ export const DescribeApprovalByTokenResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 21);
106
121
  /**
107
122
  * Describes the message jennahapi.approval.v1.SubmitApprovalDecisionRequest.
108
123
  * Use `create(SubmitApprovalDecisionRequestSchema)` to create a new message.
109
124
  */
110
- export const SubmitApprovalDecisionRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 19);
125
+ export const SubmitApprovalDecisionRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 22);
111
126
  /**
112
127
  * Describes the message jennahapi.approval.v1.SubmitApprovalDecisionResponse.
113
128
  * Use `create(SubmitApprovalDecisionResponseSchema)` to create a new message.
114
129
  */
115
- export const SubmitApprovalDecisionResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 20);
130
+ export const SubmitApprovalDecisionResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 23);
116
131
  /**
117
132
  * Describes the message jennahapi.approval.v1.ListApproversRequest.
118
133
  * Use `create(ListApproversRequestSchema)` to create a new message.
119
134
  */
120
- export const ListApproversRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 21);
135
+ export const ListApproversRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 24);
121
136
  /**
122
137
  * Describes the message jennahapi.approval.v1.ListApproversResponse.
123
138
  * Use `create(ListApproversResponseSchema)` to create a new message.
124
139
  */
125
- export const ListApproversResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 22);
140
+ export const ListApproversResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 25);
126
141
  /**
127
142
  * Describes the message jennahapi.approval.v1.AddApproverRequest.
128
143
  * Use `create(AddApproverRequestSchema)` to create a new message.
129
144
  */
130
- export const AddApproverRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 23);
145
+ export const AddApproverRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 26);
131
146
  /**
132
147
  * Describes the message jennahapi.approval.v1.AddApproverResponse.
133
148
  * Use `create(AddApproverResponseSchema)` to create a new message.
134
149
  */
135
- export const AddApproverResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 24);
150
+ export const AddApproverResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 27);
136
151
  /**
137
152
  * Describes the message jennahapi.approval.v1.RemoveApproverRequest.
138
153
  * Use `create(RemoveApproverRequestSchema)` to create a new message.
139
154
  */
140
- export const RemoveApproverRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 25);
155
+ export const RemoveApproverRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 28);
141
156
  /**
142
157
  * Describes the message jennahapi.approval.v1.RemoveApproverResponse.
143
158
  * Use `create(RemoveApproverResponseSchema)` to create a new message.
144
159
  */
145
- export const RemoveApproverResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 26);
160
+ export const RemoveApproverResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_approval_v1_approval, 29);
146
161
  /**
147
162
  * How many approvals an approval needs.
148
163
  *
@@ -177,14 +192,59 @@ export var Quorum;
177
192
  * @generated from enum value: QUORUM_ALL = 2;
178
193
  */
179
194
  Quorum[Quorum["ALL"] = 2] = "ALL";
195
+ /**
196
+ * The rule of a question (APPROVAL_KIND_QUESTION), and the only rule a question
197
+ * accepts: the first recorded answer is terminal as ANSWERED. Persists a
198
+ * required count of 1. Refused on an approval of kind APPROVAL.
199
+ *
200
+ * @generated from enum value: QUORUM_FIRST_ANSWER = 3;
201
+ */
202
+ Quorum[Quorum["FIRST_ANSWER"] = 3] = "FIRST_ANSWER";
180
203
  })(Quorum || (Quorum = {}));
181
204
  /**
182
205
  * Describes the enum jennahapi.approval.v1.Quorum.
183
206
  */
184
207
  export const QuorumSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 0);
185
208
  /**
186
- * Lifecycle of an approval. PENDING is the only non-terminal value; the other
187
- * four never change once reached, for any reason, through any operation.
209
+ * Whether an approval asks "may I?" or "which?".
210
+ *
211
+ * Fixed at creation. As with Quorum, a client MUST NOT infer a kind by
212
+ * exclusion: a kind added later arrives at an older client as
213
+ * APPROVAL_KIND_UNSPECIFIED.
214
+ *
215
+ * @generated from enum jennahapi.approval.v1.ApprovalKind
216
+ */
217
+ export var ApprovalKind;
218
+ (function (ApprovalKind) {
219
+ /**
220
+ * On a creation request, means APPROVAL_KIND_APPROVAL. On a read, the kind is
221
+ * unknown to this client's proto version.
222
+ *
223
+ * @generated from enum value: APPROVAL_KIND_UNSPECIFIED = 0;
224
+ */
225
+ ApprovalKind[ApprovalKind["UNSPECIFIED"] = 0] = "UNSPECIFIED";
226
+ /**
227
+ * Approve or reject. Every approval created before kinds existed is this kind.
228
+ *
229
+ * @generated from enum value: APPROVAL_KIND_APPROVAL = 1;
230
+ */
231
+ ApprovalKind[ApprovalKind["APPROVAL"] = 1] = "APPROVAL";
232
+ /**
233
+ * A question with choices, free text, or both, answered with
234
+ * DECISION_VALUE_ANSWER or declined with DECISION_VALUE_REJECT. Takes only
235
+ * QUORUM_FIRST_ANSWER and ON_EXPIRE_EXPIRE.
236
+ *
237
+ * @generated from enum value: APPROVAL_KIND_QUESTION = 2;
238
+ */
239
+ ApprovalKind[ApprovalKind["QUESTION"] = 2] = "QUESTION";
240
+ })(ApprovalKind || (ApprovalKind = {}));
241
+ /**
242
+ * Describes the enum jennahapi.approval.v1.ApprovalKind.
243
+ */
244
+ export const ApprovalKindSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 1);
245
+ /**
246
+ * Lifecycle of an approval. PENDING is the only non-terminal value; the others
247
+ * never change once reached, for any reason, through any operation.
188
248
  *
189
249
  * @generated from enum jennahapi.approval.v1.ApprovalStatus
190
250
  */
@@ -203,6 +263,8 @@ export var ApprovalStatus;
203
263
  */
204
264
  ApprovalStatus[ApprovalStatus["APPROVED"] = 2] = "APPROVED";
205
265
  /**
266
+ * Rejected by an approver. For a question, an approver declined to answer.
267
+ *
206
268
  * @generated from enum value: APPROVAL_STATUS_REJECTED = 3;
207
269
  */
208
270
  ApprovalStatus[ApprovalStatus["REJECTED"] = 3] = "REJECTED";
@@ -218,11 +280,18 @@ export var ApprovalStatus;
218
280
  * @generated from enum value: APPROVAL_STATUS_CANCELLED = 5;
219
281
  */
220
282
  ApprovalStatus[ApprovalStatus["CANCELLED"] = 5] = "CANCELLED";
283
+ /**
284
+ * A question that received its answer. Only a question reaches this status,
285
+ * and the answer is carried on the approval (Approval.answer).
286
+ *
287
+ * @generated from enum value: APPROVAL_STATUS_ANSWERED = 6;
288
+ */
289
+ ApprovalStatus[ApprovalStatus["ANSWERED"] = 6] = "ANSWERED";
221
290
  })(ApprovalStatus || (ApprovalStatus = {}));
222
291
  /**
223
292
  * Describes the enum jennahapi.approval.v1.ApprovalStatus.
224
293
  */
225
- export const ApprovalStatusSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 1);
294
+ export const ApprovalStatusSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 2);
226
295
  /**
227
296
  * What an undecided approval becomes at its deadline.
228
297
  *
@@ -233,7 +302,8 @@ export const ApprovalStatusSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_
233
302
  export var OnExpire;
234
303
  (function (OnExpire) {
235
304
  /**
236
- * Treated as ON_EXPIRE_DENY.
305
+ * Treated as ON_EXPIRE_DENY for an approval, and as ON_EXPIRE_EXPIRE for a
306
+ * question.
237
307
  *
238
308
  * @generated from enum value: ON_EXPIRE_UNSPECIFIED = 0;
239
309
  */
@@ -256,7 +326,7 @@ export var OnExpire;
256
326
  /**
257
327
  * Describes the enum jennahapi.approval.v1.OnExpire.
258
328
  */
259
- export const OnExpireSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 2);
329
+ export const OnExpireSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 3);
260
330
  /**
261
331
  * Where an approver's notification is in its delivery lifecycle. This exists so
262
332
  * that "the human has not responded" is distinguishable from "the human was never
@@ -297,7 +367,7 @@ export var DeliveryState;
297
367
  /**
298
368
  * Describes the enum jennahapi.approval.v1.DeliveryState.
299
369
  */
300
- export const DeliveryStateSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 3);
370
+ export const DeliveryStateSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 4);
301
371
  /**
302
372
  * The channel an approver is notified over. Only email ships; the field exists so
303
373
  * that adding a channel later is a new value rather than a new message.
@@ -318,7 +388,7 @@ export var ApproverChannel;
318
388
  /**
319
389
  * Describes the enum jennahapi.approval.v1.ApproverChannel.
320
390
  */
321
- export const ApproverChannelSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 4);
391
+ export const ApproverChannelSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 5);
322
392
  /**
323
393
  * The decision an approver renders.
324
394
  *
@@ -336,16 +406,25 @@ export var DecisionValue;
336
406
  DecisionValue[DecisionValue["APPROVE"] = 1] = "APPROVE";
337
407
  /**
338
408
  * Terminal immediately under EVERY quorum rule: one refusal ends the request
339
- * however many approvals preceded it.
409
+ * however many approvals preceded it. On a question, the approver declined to
410
+ * answer.
340
411
  *
341
412
  * @generated from enum value: DECISION_VALUE_REJECT = 2;
342
413
  */
343
414
  DecisionValue[DecisionValue["REJECT"] = 2] = "REJECT";
415
+ /**
416
+ * An answer to a question, carried in `answer`. Accepted only on a question;
417
+ * DECISION_VALUE_APPROVE is refused on a question and this value is refused on
418
+ * an approval.
419
+ *
420
+ * @generated from enum value: DECISION_VALUE_ANSWER = 3;
421
+ */
422
+ DecisionValue[DecisionValue["ANSWER"] = 3] = "ANSWER";
344
423
  })(DecisionValue || (DecisionValue = {}));
345
424
  /**
346
425
  * Describes the enum jennahapi.approval.v1.DecisionValue.
347
426
  */
348
- export const DecisionValueSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 5);
427
+ export const DecisionValueSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 6);
349
428
  /**
350
429
  * What an approver-allowlist entry matches.
351
430
  *
@@ -374,7 +453,7 @@ export var AllowlistKind;
374
453
  /**
375
454
  * Describes the enum jennahapi.approval.v1.AllowlistKind.
376
455
  */
377
- export const AllowlistKindSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 6);
456
+ export const AllowlistKindSchema = /*@__PURE__*/ enumDesc(file_jennah_approval_v1_approval, 7);
378
457
  /**
379
458
  * ApprovalService puts a decision to a named human and records the answer.
380
459
  *
@@ -187,10 +187,11 @@ export type GetBillingStateResponse = Message<"jennahapi.billing.v1.GetBillingSt
187
187
  */
188
188
  overageBillable: boolean;
189
189
  /**
190
- * Formations in the window that ran on the enterprise's own formation model
191
- * (see MemoryService.SetFormationModel). They consume no formation units and
192
- * are not in `formation_units_used`, because the enterprise pays its model
193
- * provider for them directly; they are counted here so they stay visible.
190
+ * Formations in the window that were sent to the enterprise's own formation
191
+ * model (see MemoryService.SetFormationModel), including any that failed there.
192
+ * They consume no formation units and are not in `formation_units_used`,
193
+ * because the enterprise pays its model provider for them directly; they are
194
+ * counted here so they stay visible.
194
195
  *
195
196
  * @generated from field: int64 byo_formations = 13;
196
197
  */
package/dist/retry.js CHANGED
@@ -96,6 +96,8 @@ export const NEVER_REPLAY = new Set([
96
96
  MEMORY + "PrepareFormationModel",
97
97
  MEMORY + "SetFormationModel",
98
98
  MEMORY + "RemoveFormationModel",
99
+ // Checking makes a real call to the enterprise's own model, which it pays for.
100
+ MEMORY + "CheckFormationModel",
99
101
  // A long poll that reports a pending approval as success.
100
102
  APPROVAL + "WaitApproval",
101
103
  // Each sends mail, records a decision, or ends an approval.
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "0.70.0";
2
- export declare const sourceCommit = "33a4f5de21aa530d769e5075e55a2e07e4cdd282";
1
+ export declare const version = "0.72.0";
2
+ export declare const sourceCommit = "413c6229425a3773b5522054f454fb98529fd0bb";
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Written by jennah-api release/typescript/assemble.sh; not committed.
2
- export const version = "0.70.0";
3
- export const sourceCommit = "33a4f5de21aa530d769e5075e55a2e07e4cdd282";
2
+ export const version = "0.72.0";
3
+ export const sourceCommit = "413c6229425a3773b5522054f454fb98529fd0bb";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jennah-sdk-ts",
3
- "version": "0.70.0",
3
+ "version": "0.72.0",
4
4
  "description": "TypeScript SDK for Jennah, the memory and context platform for AI agents",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/alphauslabs/jennah-sdk-ts#readme",