@ema.co/mcp-toolkit 2026.2.5 → 2026.2.19

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.

Potentially problematic release.


This version of @ema.co/mcp-toolkit might be problematic. Click here for more details.

Files changed (67) hide show
  1. package/.context/public/guides/ema-user-guide.md +12 -16
  2. package/.context/public/guides/mcp-tools-guide.md +203 -334
  3. package/LICENSE +29 -21
  4. package/README.md +58 -35
  5. package/dist/mcp/domain/loop-detection.js +97 -0
  6. package/dist/mcp/domain/proto-constraints.js +284 -0
  7. package/dist/mcp/domain/structural-rules.js +12 -5
  8. package/dist/mcp/domain/validation-rules.js +107 -20
  9. package/dist/mcp/domain/workflow-graph-optimizer.js +235 -0
  10. package/dist/mcp/domain/workflow-graph-transforms.js +808 -0
  11. package/dist/mcp/domain/workflow-graph.js +374 -0
  12. package/dist/mcp/domain/workflow-optimizer.js +10 -4
  13. package/dist/mcp/guidance.js +54 -31
  14. package/dist/mcp/handlers/feedback/index.js +139 -0
  15. package/dist/mcp/handlers/feedback/store.js +262 -0
  16. package/dist/mcp/handlers/persona/index.js +237 -8
  17. package/dist/mcp/handlers/persona/schema.js +27 -0
  18. package/dist/mcp/handlers/reference/index.js +6 -4
  19. package/dist/mcp/handlers/workflow/index.js +25 -28
  20. package/dist/mcp/handlers/workflow/optimize.js +73 -33
  21. package/dist/mcp/handlers/workflow/validation.js +1 -1
  22. package/dist/mcp/knowledge-types.js +7 -0
  23. package/dist/mcp/knowledge.js +146 -834
  24. package/dist/mcp/resources.js +610 -18
  25. package/dist/mcp/server.js +233 -2156
  26. package/dist/mcp/tools.js +91 -5
  27. package/dist/sdk/generated/agent-catalog.js +615 -0
  28. package/dist/sdk/generated/deprecated-actions.js +182 -96
  29. package/dist/sdk/generated/proto-fields.js +2 -1
  30. package/dist/sdk/generated/protos/service/agent_qa/v1/agent_qa_pb.js +460 -21
  31. package/dist/sdk/generated/protos/service/auth/v1/auth_pb.js +11 -1
  32. package/dist/sdk/generated/protos/service/dataingest/v1/dataingest_pb.js +173 -66
  33. package/dist/sdk/generated/protos/service/feedback/v1/feedback_pb.js +43 -1
  34. package/dist/sdk/generated/protos/service/llmservice/v1/llmservice_pb.js +26 -21
  35. package/dist/sdk/generated/protos/service/persona/v1/persona_config_pb.js +100 -89
  36. package/dist/sdk/generated/protos/service/persona/v1/persona_pb.js +126 -116
  37. package/dist/sdk/generated/protos/service/persona/v1/shared_widgets/widget_types_pb.js +33 -1
  38. package/dist/sdk/generated/protos/service/persona/v1/voicebot_widgets/widget_types_pb.js +60 -11
  39. package/dist/sdk/generated/protos/service/tenant/v1/tenant_pb.js +1 -1
  40. package/dist/sdk/generated/protos/service/user/v1/user_pb.js +1 -1
  41. package/dist/sdk/generated/protos/service/utils/v1/agent_qa_pb.js +35 -0
  42. package/dist/sdk/generated/protos/service/workflows/v1/action_registry_pb.js +1 -1
  43. package/dist/sdk/generated/protos/service/workflows/v1/action_type_pb.js +6 -1
  44. package/dist/sdk/generated/protos/service/workflows/v1/chatbot_pb.js +106 -11
  45. package/dist/sdk/generated/protos/service/workflows/v1/common_forms_pb.js +1 -1
  46. package/dist/sdk/generated/protos/service/workflows/v1/coordinator_pb.js +1 -1
  47. package/dist/sdk/generated/protos/service/workflows/v1/external_actions_pb.js +31 -1
  48. package/dist/sdk/generated/protos/service/workflows/v1/well_known_pb.js +5 -1
  49. package/dist/sdk/generated/protos/service/workflows/v1/workflow_pb.js +1 -1
  50. package/dist/sdk/generated/protos/util/tracking_metadata_pb.js +1 -1
  51. package/dist/sdk/generated/widget-catalog.js +60 -0
  52. package/docs/README.md +17 -9
  53. package/package.json +2 -2
  54. package/.context/public/guides/dashboard-operations.md +0 -286
  55. package/.context/public/guides/email-patterns.md +0 -125
  56. package/dist/mcp/domain/intent-architect.js +0 -914
  57. package/dist/mcp/domain/quality-gates.js +0 -110
  58. package/dist/mcp/domain/workflow-execution-analyzer.js +0 -412
  59. package/dist/mcp/domain/workflow-intent.js +0 -1806
  60. package/dist/mcp/domain/workflow-merge.js +0 -449
  61. package/dist/mcp/domain/workflow-tracer.js +0 -648
  62. package/dist/mcp/domain/workflow-transformer.js +0 -742
  63. package/dist/mcp/handlers/persona/intent.js +0 -141
  64. package/dist/mcp/handlers/workflow/analyze.js +0 -119
  65. package/dist/mcp/handlers/workflow/compare.js +0 -70
  66. package/dist/mcp/handlers/workflow/generate.js +0 -384
  67. package/dist/mcp/handlers-consolidated.js +0 -333
@@ -2,10 +2,12 @@
2
2
  // @generated from file service/agent_qa/v1/agent_qa.proto (package agent_qa.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
  import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
5
+ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
6
+ import { file_service_feedback_v1_feedback } from "../../feedback/v1/feedback_pb.js";
5
7
  /**
6
8
  * Describes the file service/agent_qa/v1/agent_qa.proto.
7
9
  */
8
- export const file_service_agent_qa_v1_agent_qa = /*@__PURE__*/ fileDesc("CiJzZXJ2aWNlL2FnZW50X3FhL3YxL2FnZW50X3FhLnByb3RvEgthZ2VudF9xYS52MSLoAQoOUnVsZURlZmluaXRpb24SDAoEbmFtZRgBIAEoCRIQCghjYXRlZ29yeRgCIAEoCRIRCgl3ZWlnaHRhZ2UYAyABKAISMQoLY3JpdGljYWxpdHkYBCABKA4yHC5hZ2VudF9xYS52MS5SdWxlQ3JpdGljYWxpdHkSLQoJbWVjaGFuaXNtGAUgASgOMhouYWdlbnRfcWEudjEuUnVsZU1lY2hhbmlzbRIdChVwYXNzX2ZhaWxfaW5zdHJ1Y3Rpb24YBiABKAkSIgoabm90X2FwcGxpY2FibGVfaW5zdHJ1Y3Rpb24YByABKAkiRAoWQXV0b0xlYXJuUnVsZXNMb2dFbnRyeRIKCgJ0cxgBIAEoCRIRCglpdGVyYXRpb24YAiABKAUSCwoDbXNnGAMgASgJImEKHEF1dG9MZWFyblJ1bGVzUnVsZURlZmluaXRpb24SLwoKZGVmaW5pdGlvbhgBIAEoCzIbLmFnZW50X3FhLnYxLlJ1bGVEZWZpbml0aW9uEhAKCGFjY3VyYWN5GAIgASgCIl0KIUF1dG9MZWFyblJ1bGVzSXRlcmF0aW9uRXZhbHVhdGlvbhIYChBvdmVyYWxsX2FjY3VyYWN5GAEgASgCEh4KFml0ZXJhdGlvbl90aW1lX3NlY29uZHMYAiABKAIinQEKHUF1dG9MZWFyblJ1bGVzSXRlcmF0aW9uUmVzdWx0EkIKCmV2YWx1YXRpb24YASABKAsyLi5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc0l0ZXJhdGlvbkV2YWx1YXRpb24SOAoFcnVsZXMYAiADKAsyKS5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc1J1bGVEZWZpbml0aW9uIkcKFUF1dG9MZWFyblJ1bGVzU3VtbWFyeRIWCg5maW5hbF9hY2N1cmFjeRgBIAEoAhIWCg5iZXN0X2l0ZXJhdGlvbhgCIAEoBSLxAQoUQXV0b0xlYXJuUnVsZXNPdXRwdXQSMwoHc3VtbWFyeRgBIAEoCzIiLmFnZW50X3FhLnYxLkF1dG9MZWFyblJ1bGVzU3VtbWFyeRJFCgppdGVyYXRpb25zGAIgAygLMjEuYWdlbnRfcWEudjEuQXV0b0xlYXJuUnVsZXNPdXRwdXQuSXRlcmF0aW9uc0VudHJ5Gl0KD0l0ZXJhdGlvbnNFbnRyeRILCgNrZXkYASABKAkSOQoFdmFsdWUYAiABKAsyKi5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc0l0ZXJhdGlvblJlc3VsdDoCOAEitwIKEUF1dG9MZWFyblJ1bGVzUnVuEhIKCnBlcnNvbmFfaWQYASABKAkSNwoFc3RhdGUYAiABKA4yKC5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc1BpcGVsaW5lU3RhdGUSDQoFZXJyb3IYAyABKAkSMQoEbG9ncxgEIAMoCzIjLmFnZW50X3FhLnYxLkF1dG9MZWFyblJ1bGVzTG9nRW50cnkSMQoGb3V0cHV0GAUgASgLMiEuYWdlbnRfcWEudjEuQXV0b0xlYXJuUnVsZXNPdXRwdXQSEgoKc3RhcnRlZF9hdBgGIAEoCRIUCgxjb21wbGV0ZWRfYXQYByABKAkSHAoUY29tcGxldGVkX2l0ZXJhdGlvbnMYCCABKAUSGAoQdG90YWxfaXRlcmF0aW9ucxgJIAEoBSIlCgdSdWxlUmVmEhoKEndvcmtmbG93X3J1bGVfbmFtZRgBIAEoCSJfCgRSdWxlEiYKCHJ1bGVfcmVmGAEgASgLMhQuYWdlbnRfcWEudjEuUnVsZVJlZhIvCgpkZWZpbml0aW9uGAIgASgLMhsuYWdlbnRfcWEudjEuUnVsZURlZmluaXRpb24iMgocTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJIkwKHUxlYXJuUnVsZUluc3RydWN0aW9uc1Jlc3BvbnNlEisKA3J1bhgBIAEoCzIeLmFnZW50X3FhLnYxLkF1dG9MZWFyblJ1bGVzUnVuIjsKJUdldExlYXJuUnVsZUluc3RydWN0aW9uc1N0YXR1c1JlcXVlc3QSEgoKcGVyc29uYV9pZBgBIAEoCSJVCiZHZXRMZWFyblJ1bGVJbnN0cnVjdGlvbnNTdGF0dXNSZXNwb25zZRIrCgNydW4YASABKAsyHi5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc1J1biI1Ch9PcHRpbWl6ZVJ1bGVJbnN0cnVjdGlvbnNSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkiTwogT3B0aW1pemVSdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2USKwoDcnVuGAEgASgLMh4uYWdlbnRfcWEudjEuQXV0b0xlYXJuUnVsZXNSdW4iOQojRGlzY2FyZExlYXJuUnVsZUluc3RydWN0aW9uc1JlcXVlc3QSEgoKcGVyc29uYV9pZBgBIAEoCSI5CiREaXNjYXJkTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2USEQoJZGlzY2FyZGVkGAEgASgIIsACCh1VcHNlcnRBZ2VudEludGVyYWN0aW9uUmVxdWVzdBIPCgdmaWxlX2lkGAEgASgJEhAKCGFnZW50X2lkGAIgASgJEhMKC3Jlc291cmNlX2lkGAMgASgJEhIKCnBlcnNvbmFfaWQYBCABKAkSTAoMcmVxdWVzdF90eXBlGAUgASgOMjYuYWdlbnRfcWEudjEuVXBzZXJ0QWdlbnRJbnRlcmFjdGlvblJlcXVlc3QuUmVxdWVzdFR5cGUihAEKC1JlcXVlc3RUeXBlEhwKGFJFUVVFU1RfVFlQRV9VTlNQRUNJRklFRBAAEioKJlJFUVVFU1RfVFlQRV9JTlNFUlRfSU5URVJBQ1RJT05fUkVDT1JEEAESKwonUkVRVUVTVF9UWVBFX01BUktfSU5URVJBQ1RJT05fQVNfRkFJTEVEEAIiIAoeVXBzZXJ0QWdlbnRJbnRlcmFjdGlvblJlc3BvbnNlIrABChVUcmlnZ2VyQWdlbnRRQVJlcXVlc3QSDwoHZmlsZV9pZBgBIAEoCRIVCg10cmFuc2NyaXB0aW9uGAIgASgJEhAKCGFnZW50X2lkGAMgASgJEhMKC3Jlc291cmNlX2lkGAQgASgJEjQKD3NpbGVuY2VfbWV0cmljcxgFIAEoCzIbLmFnZW50X3FhLnYxLlNpbGVuY2VNZXRyaWNzEhIKCnBlcnNvbmFfaWQYBiABKAkibQoOU2lsZW5jZU1ldHJpY3MSFwoPYWdlbnRfdGFsa190aW1lGAEgASgCEhYKDnVzZXJfdGFsa190aW1lGAIgASgCEhAKCGRlYWRfYWlyGAMgASgCEhgKEHRvdGFsX2F1ZGlvX3RpbWUYBCABKAIiMQoWVHJpZ2dlckFnZW50UUFSZXNwb25zZRIXCg93b3JrZmxvd19ydW5faWQYASABKAkicAojQXBwcm92ZUxlYXJuUnVsZUluc3RydWN0aW9uc1JlcXVlc3QSEgoKcGVyc29uYV9pZBgBIAEoCRI1ChBydWxlX2RlZmluaXRpb25zGAIgAygLMhsuYWdlbnRfcWEudjEuUnVsZURlZmluaXRpb24iTwokQXBwcm92ZUxlYXJuUnVsZUluc3RydWN0aW9uc1Jlc3BvbnNlEicKCXJ1bGVfcmVmcxgBIAMoCzIULmFnZW50X3FhLnYxLlJ1bGVSZWYiSgoSQ3JlYXRlUnVsZXNSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSIAoFcnVsZXMYAiADKAsyES5hZ2VudF9xYS52MS5SdWxlIj4KE0NyZWF0ZVJ1bGVzUmVzcG9uc2USJwoJcnVsZV9yZWZzGAEgAygLMhQuYWdlbnRfcWEudjEuUnVsZVJlZiImChBMaXN0UnVsZXNSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkiNQoRTGlzdFJ1bGVzUmVzcG9uc2USIAoFcnVsZXMYASADKAsyES5hZ2VudF9xYS52MS5SdWxlIkoKElVwZGF0ZVJ1bGVzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEiAKBXJ1bGVzGAIgAygLMhEuYWdlbnRfcWEudjEuUnVsZSI+ChNVcGRhdGVSdWxlc1Jlc3BvbnNlEicKCXJ1bGVfcmVmcxgBIAMoCzIULmFnZW50X3FhLnYxLlJ1bGVSZWYiUQoSRGVsZXRlUnVsZXNSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSJwoJcnVsZV9yZWZzGAIgAygLMhQuYWdlbnRfcWEudjEuUnVsZVJlZiIsChNEZWxldGVSdWxlc1Jlc3BvbnNlEhUKDWRlbGV0ZWRfY291bnQYASABKAUqggIKG0F1dG9MZWFyblJ1bGVzUGlwZWxpbmVTdGF0ZRIvCitBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAASKgomQVVUT19MRUFSTl9SVUxFU19QSVBFTElORV9TVEFURV9RVUVVRUQQARIrCidBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX1JVTk5JTkcQAhItCilBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX0NPTVBMRVRFRBADEioKJkFVVE9fTEVBUk5fUlVMRVNfUElQRUxJTkVfU1RBVEVfRkFJTEVEEAQqdQoPUnVsZUNyaXRpY2FsaXR5EiAKHFJVTEVfQ1JJVElDQUxJVFlfVU5TUEVDSUZJRUQQABIdChlSVUxFX0NSSVRJQ0FMSVRZX0NSSVRJQ0FMEAESIQodUlVMRV9DUklUSUNBTElUWV9OT05fQ1JJVElDQUwQAiqtAQoNUnVsZU1lY2hhbmlzbRIeChpSVUxFX01FQ0hBTklTTV9VTlNQRUNJRklFRBAAEh0KGVJVTEVfTUVDSEFOSVNNX1RSQU5TQ1JJUFQQARIxCi1SVUxFX01FQ0hBTklTTV9UUkFOU0NSSVBUX1dJVEhfS05PV0xFREdFX0JBU0UQAhIqCiZSVUxFX01FQ0hBTklTTV9UUkFOU0NSSVBUX1dJVEhfQUNUSU9OUxADMrcJCg5BZ2VudFFBU2VydmljZRJzChZVcHNlcnRBZ2VudEludGVyYWN0aW9uEiouYWdlbnRfcWEudjEuVXBzZXJ0QWdlbnRJbnRlcmFjdGlvblJlcXVlc3QaKy5hZ2VudF9xYS52MS5VcHNlcnRBZ2VudEludGVyYWN0aW9uUmVzcG9uc2UiABJbCg5UcmlnZ2VyQWdlbnRRQRIiLmFnZW50X3FhLnYxLlRyaWdnZXJBZ2VudFFBUmVxdWVzdBojLmFnZW50X3FhLnYxLlRyaWdnZXJBZ2VudFFBUmVzcG9uc2UiABJwChVMZWFyblJ1bGVJbnN0cnVjdGlvbnMSKS5hZ2VudF9xYS52MS5MZWFyblJ1bGVJbnN0cnVjdGlvbnNSZXF1ZXN0GiouYWdlbnRfcWEudjEuTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2UiABKLAQoeR2V0TGVhcm5SdWxlSW5zdHJ1Y3Rpb25zU3RhdHVzEjIuYWdlbnRfcWEudjEuR2V0TGVhcm5SdWxlSW5zdHJ1Y3Rpb25zU3RhdHVzUmVxdWVzdBozLmFnZW50X3FhLnYxLkdldExlYXJuUnVsZUluc3RydWN0aW9uc1N0YXR1c1Jlc3BvbnNlIgASeQoYT3B0aW1pemVSdWxlSW5zdHJ1Y3Rpb25zEiwuYWdlbnRfcWEudjEuT3B0aW1pemVSdWxlSW5zdHJ1Y3Rpb25zUmVxdWVzdBotLmFnZW50X3FhLnYxLk9wdGltaXplUnVsZUluc3RydWN0aW9uc1Jlc3BvbnNlIgAShQEKHERpc2NhcmRMZWFyblJ1bGVJbnN0cnVjdGlvbnMSMC5hZ2VudF9xYS52MS5EaXNjYXJkTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVxdWVzdBoxLmFnZW50X3FhLnYxLkRpc2NhcmRMZWFyblJ1bGVJbnN0cnVjdGlvbnNSZXNwb25zZSIAEoUBChxBcHByb3ZlTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zEjAuYWdlbnRfcWEudjEuQXBwcm92ZUxlYXJuUnVsZUluc3RydWN0aW9uc1JlcXVlc3QaMS5hZ2VudF9xYS52MS5BcHByb3ZlTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2UiABJSCgtDcmVhdGVSdWxlcxIfLmFnZW50X3FhLnYxLkNyZWF0ZVJ1bGVzUmVxdWVzdBogLmFnZW50X3FhLnYxLkNyZWF0ZVJ1bGVzUmVzcG9uc2UiABJSCgtVcGRhdGVSdWxlcxIfLmFnZW50X3FhLnYxLlVwZGF0ZVJ1bGVzUmVxdWVzdBogLmFnZW50X3FhLnYxLlVwZGF0ZVJ1bGVzUmVzcG9uc2UiABJSCgtEZWxldGVSdWxlcxIfLmFnZW50X3FhLnYxLkRlbGV0ZVJ1bGVzUmVxdWVzdBogLmFnZW50X3FhLnYxLkRlbGV0ZVJ1bGVzUmVzcG9uc2UiABJMCglMaXN0UnVsZXMSHS5hZ2VudF9xYS52MS5MaXN0UnVsZXNSZXF1ZXN0Gh4uYWdlbnRfcWEudjEuTGlzdFJ1bGVzUmVzcG9uc2UiAEJDWkFnaXRodWIuY29tL0VtYS1VbmxpbWl0ZWQvcHJvdG9zL2dvL3NlcnZpY2UvYWdlbnRfcWEvdjE7YWdlbnRfcWF2MWIGcHJvdG8z");
10
+ export const file_service_agent_qa_v1_agent_qa = /*@__PURE__*/ fileDesc("CiJzZXJ2aWNlL2FnZW50X3FhL3YxL2FnZW50X3FhLnByb3RvEgthZ2VudF9xYS52MSLoAQoOUnVsZURlZmluaXRpb24SDAoEbmFtZRgBIAEoCRIQCghjYXRlZ29yeRgCIAEoCRIRCgl3ZWlnaHRhZ2UYAyABKAISMQoLY3JpdGljYWxpdHkYBCABKA4yHC5hZ2VudF9xYS52MS5SdWxlQ3JpdGljYWxpdHkSLQoJbWVjaGFuaXNtGAUgASgOMhouYWdlbnRfcWEudjEuUnVsZU1lY2hhbmlzbRIdChVwYXNzX2ZhaWxfaW5zdHJ1Y3Rpb24YBiABKAkSIgoabm90X2FwcGxpY2FibGVfaW5zdHJ1Y3Rpb24YByABKAkiRAoWQXV0b0xlYXJuUnVsZXNMb2dFbnRyeRIKCgJ0cxgBIAEoCRIRCglpdGVyYXRpb24YAiABKAUSCwoDbXNnGAMgASgJImEKHEF1dG9MZWFyblJ1bGVzUnVsZURlZmluaXRpb24SLwoKZGVmaW5pdGlvbhgBIAEoCzIbLmFnZW50X3FhLnYxLlJ1bGVEZWZpbml0aW9uEhAKCGFjY3VyYWN5GAIgASgCIl0KIUF1dG9MZWFyblJ1bGVzSXRlcmF0aW9uRXZhbHVhdGlvbhIYChBvdmVyYWxsX2FjY3VyYWN5GAEgASgCEh4KFml0ZXJhdGlvbl90aW1lX3NlY29uZHMYAiABKAIinQEKHUF1dG9MZWFyblJ1bGVzSXRlcmF0aW9uUmVzdWx0EkIKCmV2YWx1YXRpb24YASABKAsyLi5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc0l0ZXJhdGlvbkV2YWx1YXRpb24SOAoFcnVsZXMYAiADKAsyKS5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc1J1bGVEZWZpbml0aW9uIkcKFUF1dG9MZWFyblJ1bGVzU3VtbWFyeRIWCg5maW5hbF9hY2N1cmFjeRgBIAEoAhIWCg5iZXN0X2l0ZXJhdGlvbhgCIAEoBSLxAQoUQXV0b0xlYXJuUnVsZXNPdXRwdXQSMwoHc3VtbWFyeRgBIAEoCzIiLmFnZW50X3FhLnYxLkF1dG9MZWFyblJ1bGVzU3VtbWFyeRJFCgppdGVyYXRpb25zGAIgAygLMjEuYWdlbnRfcWEudjEuQXV0b0xlYXJuUnVsZXNPdXRwdXQuSXRlcmF0aW9uc0VudHJ5Gl0KD0l0ZXJhdGlvbnNFbnRyeRILCgNrZXkYASABKAkSOQoFdmFsdWUYAiABKAsyKi5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc0l0ZXJhdGlvblJlc3VsdDoCOAEitwIKEUF1dG9MZWFyblJ1bGVzUnVuEhIKCnBlcnNvbmFfaWQYASABKAkSNwoFc3RhdGUYAiABKA4yKC5hZ2VudF9xYS52MS5BdXRvTGVhcm5SdWxlc1BpcGVsaW5lU3RhdGUSDQoFZXJyb3IYAyABKAkSMQoEbG9ncxgEIAMoCzIjLmFnZW50X3FhLnYxLkF1dG9MZWFyblJ1bGVzTG9nRW50cnkSMQoGb3V0cHV0GAUgASgLMiEuYWdlbnRfcWEudjEuQXV0b0xlYXJuUnVsZXNPdXRwdXQSEgoKc3RhcnRlZF9hdBgGIAEoCRIUCgxjb21wbGV0ZWRfYXQYByABKAkSHAoUY29tcGxldGVkX2l0ZXJhdGlvbnMYCCABKAUSGAoQdG90YWxfaXRlcmF0aW9ucxgJIAEoBSIlCgdSdWxlUmVmEhoKEndvcmtmbG93X3J1bGVfbmFtZRgBIAEoCSJfCgRSdWxlEiYKCHJ1bGVfcmVmGAEgASgLMhQuYWdlbnRfcWEudjEuUnVsZVJlZhIvCgpkZWZpbml0aW9uGAIgASgLMhsuYWdlbnRfcWEudjEuUnVsZURlZmluaXRpb24iXgocTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEhgKEG9wdGltaXplX2Z1cnRoZXIYAiABKAgSEAoIaXNfcmV0cnkYAyABKAgiTAodTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2USKwoDcnVuGAEgASgLMh4uYWdlbnRfcWEudjEuQXV0b0xlYXJuUnVsZXNSdW4iOwolR2V0TGVhcm5SdWxlSW5zdHJ1Y3Rpb25zU3RhdHVzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJIlUKJkdldExlYXJuUnVsZUluc3RydWN0aW9uc1N0YXR1c1Jlc3BvbnNlEisKA3J1bhgBIAEoCzIeLmFnZW50X3FhLnYxLkF1dG9MZWFyblJ1bGVzUnVuIjgKIkdldEF1dG9MZWFybmluZ1dpZGdldFN0YXR1c1JlcXVlc3QSEgoKcGVyc29uYV9pZBgBIAEoCSJeCiNHZXRBdXRvTGVhcm5pbmdXaWRnZXRTdGF0dXNSZXNwb25zZRI3CgVzdGF0ZRgBIAEoDjIoLmFnZW50X3FhLnYxLkF1dG9MZWFyblJ1bGVzUGlwZWxpbmVTdGF0ZSI1Ch9PcHRpbWl6ZVJ1bGVJbnN0cnVjdGlvbnNSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkiTwogT3B0aW1pemVSdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2USKwoDcnVuGAEgASgLMh4uYWdlbnRfcWEudjEuQXV0b0xlYXJuUnVsZXNSdW4iOQojRGlzY2FyZExlYXJuUnVsZUluc3RydWN0aW9uc1JlcXVlc3QSEgoKcGVyc29uYV9pZBgBIAEoCSI5CiREaXNjYXJkTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2USEQoJZGlzY2FyZGVkGAEgASgIIr8DCh1VcHNlcnRBZ2VudEludGVyYWN0aW9uUmVxdWVzdBIPCgdmaWxlX2lkGAEgASgJEhAKCGFnZW50X2lkGAIgASgJEhMKC3Jlc291cmNlX2lkGAMgASgJEhIKCnBlcnNvbmFfaWQYBCABKAkSTAoMcmVxdWVzdF90eXBlGAUgASgOMjYuYWdlbnRfcWEudjEuVXBzZXJ0QWdlbnRJbnRlcmFjdGlvblJlcXVlc3QuUmVxdWVzdFR5cGUSDQoFZXJyb3IYBiABKAkSMgoOY2FsbF90aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2FnZW50X2VtYWlsGAggASgJEhQKDGFnZW50X3RlbnVyZRgJIAEoBRIPCgdjYXNlX2lkGAogASgJIoQBCgtSZXF1ZXN0VHlwZRIcChhSRVFVRVNUX1RZUEVfVU5TUEVDSUZJRUQQABIqCiZSRVFVRVNUX1RZUEVfSU5TRVJUX0lOVEVSQUNUSU9OX1JFQ09SRBABEisKJ1JFUVVFU1RfVFlQRV9NQVJLX0lOVEVSQUNUSU9OX0FTX0ZBSUxFRBACIiAKHlVwc2VydEFnZW50SW50ZXJhY3Rpb25SZXNwb25zZSKwAQoVVHJpZ2dlckFnZW50UUFSZXF1ZXN0Eg8KB2ZpbGVfaWQYASABKAkSFQoNdHJhbnNjcmlwdGlvbhgCIAEoCRIQCghhZ2VudF9pZBgDIAEoCRITCgtyZXNvdXJjZV9pZBgEIAEoCRI0Cg9zaWxlbmNlX21ldHJpY3MYBSABKAsyGy5hZ2VudF9xYS52MS5TaWxlbmNlTWV0cmljcxISCgpwZXJzb25hX2lkGAYgASgJIm0KDlNpbGVuY2VNZXRyaWNzEhcKD2FnZW50X3RhbGtfdGltZRgBIAEoAhIWCg51c2VyX3RhbGtfdGltZRgCIAEoAhIQCghkZWFkX2FpchgDIAEoAhIYChB0b3RhbF9hdWRpb190aW1lGAQgASgCIjEKFlRyaWdnZXJBZ2VudFFBUmVzcG9uc2USFwoPd29ya2Zsb3dfcnVuX2lkGAEgASgJInAKI0FwcHJvdmVMZWFyblJ1bGVJbnN0cnVjdGlvbnNSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSNQoQcnVsZV9kZWZpbml0aW9ucxgCIAMoCzIbLmFnZW50X3FhLnYxLlJ1bGVEZWZpbml0aW9uIk8KJEFwcHJvdmVMZWFyblJ1bGVJbnN0cnVjdGlvbnNSZXNwb25zZRInCglydWxlX3JlZnMYASADKAsyFC5hZ2VudF9xYS52MS5SdWxlUmVmIl8KEkNyZWF0ZVJ1bGVzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEjUKEHJ1bGVfZGVmaW5pdGlvbnMYAiADKAsyGy5hZ2VudF9xYS52MS5SdWxlRGVmaW5pdGlvbiI+ChNDcmVhdGVSdWxlc1Jlc3BvbnNlEicKCXJ1bGVfcmVmcxgBIAMoCzIULmFnZW50X3FhLnYxLlJ1bGVSZWYiJgoQTGlzdFJ1bGVzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJIjUKEUxpc3RSdWxlc1Jlc3BvbnNlEiAKBXJ1bGVzGAEgAygLMhEuYWdlbnRfcWEudjEuUnVsZSJKChJVcGRhdGVSdWxlc1JlcXVlc3QSEgoKcGVyc29uYV9pZBgBIAEoCRIgCgVydWxlcxgCIAMoCzIRLmFnZW50X3FhLnYxLlJ1bGUiPgoTVXBkYXRlUnVsZXNSZXNwb25zZRInCglydWxlX3JlZnMYASADKAsyFC5hZ2VudF9xYS52MS5SdWxlUmVmIlEKEkRlbGV0ZVJ1bGVzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEicKCXJ1bGVfcmVmcxgCIAMoCzIULmFnZW50X3FhLnYxLlJ1bGVSZWYiFQoTRGVsZXRlUnVsZXNSZXNwb25zZSLRAgoaUUFUcmFuc2NyaXB0RXZhbHVhdGlvblNvcnQSQAoFZmllbGQYASABKA4yMS5hZ2VudF9xYS52MS5RQVRyYW5zY3JpcHRFdmFsdWF0aW9uU29ydC5Tb3J0RmllbGQSQAoFb3JkZXIYAiABKA4yMS5hZ2VudF9xYS52MS5RQVRyYW5zY3JpcHRFdmFsdWF0aW9uU29ydC5Tb3J0T3JkZXIiXQoJU29ydEZpZWxkEhoKFlNPUlRfRklFTERfVU5TUEVDSUZJRUQQABIaChZTT1JUX0ZJRUxEX0NBTExfTEVOR1RIEAESGAoUU09SVF9GSUVMRF9DQUxMX0RBVEUQAiJQCglTb3J0T3JkZXISGgoWU09SVF9PUkRFUl9VTlNQRUNJRklFRBAAEhIKDlNPUlRfT1JERVJfQVNDEAESEwoPU09SVF9PUkRFUl9ERVNDEAIi+QIKHVFBVHJhbnNjcmlwdEV2YWx1YXRpb25GaWx0ZXJzEiAKGHJlc291cmNlX2lkX3NlYXJjaF9xdWVyeRgBIAEoCRIdChVhZ2VudF9pZF9zZWFyY2hfcXVlcnkYAiABKAkSLQoGc3RhdHVzGAMgASgOMh0uYWdlbnRfcWEudjEuRXZhbHVhdGlvblN0YXR1cxIaCg1xYV9zY29yZV9mcm9tGAQgASgCSACIAQESGAoLcWFfc2NvcmVfdG8YBSABKAJIAYgBARIZCgxoYXNfZmVlZGJhY2sYBiABKAhIAogBARIyCg5jYWxsX2RhdGVfZnJvbRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMY2FsbF9kYXRlX3RvGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIQCg5fcWFfc2NvcmVfZnJvbUIOCgxfcWFfc2NvcmVfdG9CDwoNX2hhc19mZWVkYmFjayLUAQohR2V0UUFUcmFuc2NyaXB0RXZhbHVhdGlvbnNSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSOwoHZmlsdGVycxgCIAEoCzIqLmFnZW50X3FhLnYxLlFBVHJhbnNjcmlwdEV2YWx1YXRpb25GaWx0ZXJzEjUKBHNvcnQYAyABKAsyJy5hZ2VudF9xYS52MS5RQVRyYW5zY3JpcHRFdmFsdWF0aW9uU29ydBINCgVsaW1pdBgEIAEoDRIYChBwYWdpbmF0aW9uX3Rva2VuGAUgASgJIooCCh1RQVRyYW5zY3JpcHRFdmFsdWF0aW9uU3VtbWFyeRIXCg93b3JrZmxvd19ydW5faWQYASABKAkSDwoHZmlsZV9pZBgCIAEoCRITCgtyZXNvdXJjZV9pZBgDIAEoCRIQCghhZ2VudF9pZBgEIAEoCRIQCghkdXJhdGlvbhgFIAEoAhItCgZzdGF0dXMYBiABKA4yHS5hZ2VudF9xYS52MS5FdmFsdWF0aW9uU3RhdHVzEhAKCHFhX3Njb3JlGAcgASgCEi0KCWNhbGxfZGF0ZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoOZmVlZGJhY2tfY291bnQYCSABKAUipgEKIkdldFFBVHJhbnNjcmlwdEV2YWx1YXRpb25zUmVzcG9uc2USOQoFaXRlbXMYASADKAsyKi5hZ2VudF9xYS52MS5RQVRyYW5zY3JpcHRFdmFsdWF0aW9uU3VtbWFyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSFwoPcHJldl9wYWdlX3Rva2VuGAMgASgJEhMKC3RvdGFsX2NvdW50GAQgASgFIlYKJ0dldFFBVHJhbnNjcmlwdEV2YWx1YXRpb25EZXRhaWxzUmVxdWVzdBIXCg93b3JrZmxvd19ydW5faWQYASABKAkSEgoKcGVyc29uYV9pZBgCIAEoCSKCAwoWUnVsZUV2YWx1YXRpb25GZWVkYmFjaxIKCgJpZBgHIAEoCRInCgR0eXBlGAEgASgOMhkuZmVlZGJhY2sudjEuRmVlZGJhY2tUeXBlEg8KB2NvbnRlbnQYAiABKAkSEwoLcmV2aWV3ZXJfaWQYAyABKAkSFgoOcmV2aWV3ZXJfZW1haWwYBCABKAkSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLcmVzb3VyY2VfaWQYCCABKAkSFwoPd29ya2Zsb3dfcnVuX2lkGAkgASgJEisKBnN0YXR1cxgKIAEoDjIbLmZlZWRiYWNrLnYxLkZlZWRiYWNrU3RhdHVzEiEKFGFkbWluX3Jldmlld2VyX2VtYWlsGAsgASgJSACIAQFCFwoVX2FkbWluX3Jldmlld2VyX2VtYWlsIrACCg5SdWxlRXZhbHVhdGlvbhIKCgJpZBgJIAEoCRIRCglydWxlX25hbWUYASABKAkSFQoNcnVsZV9jYXRlZ29yeRgCIAEoCRIdChVwYXNzX2ZhaWxfaW5zdHJ1Y3Rpb24YAyABKAkSIgoabm90X2FwcGxpY2FibGVfaW5zdHJ1Y3Rpb24YBCABKAkSMQoGcmVzdWx0GAUgASgOMiEuYWdlbnRfcWEudjEuUnVsZUV2YWx1YXRpb25SZXN1bHQSEQoJcmF0aW9uYWxlGAYgASgJEhQKCHZlcmJhdGltGAcgASgJQgIYARI2CglmZWVkYmFja3MYCCADKAsyIy5hZ2VudF9xYS52MS5SdWxlRXZhbHVhdGlvbkZlZWRiYWNrEhEKCXZlcmJhdGltcxgKIAMoCSJYCh9RQVRyYW5zY3JpcHRFdmFsdWF0aW9uU2NvcmVjYXJkEjUKEHJ1bGVfZXZhbHVhdGlvbnMYASADKAsyGy5hZ2VudF9xYS52MS5SdWxlRXZhbHVhdGlvbiLeAQoTUUFUcmFuc2NyaXB0TWVzc2FnZRIPCgdtZXNzYWdlGAEgASgJEjoKBHJvbGUYAiABKA4yLC5hZ2VudF9xYS52MS5RQVRyYW5zY3JpcHRNZXNzYWdlLk1lc3NhZ2VSb2xlEg0KBXN0YXJ0GAMgASgCEgsKA2VuZBgEIAEoAiJaCgtNZXNzYWdlUm9sZRIcChhNRVNTQUdFX1JPTEVfVU5TUEVDSUZJRUQQABIVChFNRVNTQUdFX1JPTEVfVVNFUhABEhYKEk1FU1NBR0VfUk9MRV9BR0VOVBACOgIYASJOChRRQVRyYW5zY3JpcHRNZXNzYWdlcxIyCghtZXNzYWdlcxgBIAMoCzIgLmFnZW50X3FhLnYxLlFBVHJhbnNjcmlwdE1lc3NhZ2U6AhgBIocBChJQZXJmb3JtYW5jZUluc2lnaHQSEQoFdGl0bGUYAiABKAlCAhgBEhMKB2luc2lnaHQYAyABKAlCAhgBEhAKCGNhdGVnb3J5GAEgASgJEg4KBmRyaXZlchgEIAEoCRIVCg1qdXN0aWZpY2F0aW9uGAUgASgJEhAKCHZlcmJhdGltGAYgASgJIqYDCihHZXRRQVRyYW5zY3JpcHRFdmFsdWF0aW9uRGV0YWlsc1Jlc3BvbnNlEhMKC3Jlc291cmNlX2lkGAEgASgJEhAKCGFnZW50X2lkGAIgASgJEi0KBnN0YXR1cxgDIAEoDjIdLmFnZW50X3FhLnYxLkV2YWx1YXRpb25TdGF0dXMSEAoIcWFfc2NvcmUYBCABKAISLQoJY2FsbF9kYXRlGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/CglzY29yZWNhcmQYBiABKAsyLC5hZ2VudF9xYS52MS5RQVRyYW5zY3JpcHRFdmFsdWF0aW9uU2NvcmVjYXJkEjkKCnRyYW5zY3JpcHQYByABKAsyIS5hZ2VudF9xYS52MS5RQVRyYW5zY3JpcHRNZXNzYWdlc0ICGAESMgoJc3RyZW5ndGhzGAggAygLMh8uYWdlbnRfcWEudjEuUGVyZm9ybWFuY2VJbnNpZ2h0EjMKCndlYWtuZXNzZXMYCSADKAsyHy5hZ2VudF9xYS52MS5QZXJmb3JtYW5jZUluc2lnaHQilwEKJkNyZWF0ZUZlZWRiYWNrRm9yUnVsZUV2YWx1YXRpb25SZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSFgoOcnVsZV9yZXN1bHRfaWQYAiABKAkSMAoNZmVlZGJhY2tfdHlwZRgDIAEoDjIZLmZlZWRiYWNrLnYxLkZlZWRiYWNrVHlwZRIPCgdjb250ZW50GAQgASgJImAKJ0NyZWF0ZUZlZWRiYWNrRm9yUnVsZUV2YWx1YXRpb25SZXNwb25zZRI1CghmZWVkYmFjaxgBIAEoCzIjLmFnZW50X3FhLnYxLlJ1bGVFdmFsdWF0aW9uRmVlZGJhY2siSQoiR2V0QXBwcm92ZWRGZWVkYmFja3NGb3JSdWxlUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEg8KB3J1bGVfaWQYAiABKAkiXQojR2V0QXBwcm92ZWRGZWVkYmFja3NGb3JSdWxlUmVzcG9uc2USNgoJZmVlZGJhY2tzGAEgAygLMiMuYWdlbnRfcWEudjEuUnVsZUV2YWx1YXRpb25GZWVkYmFjayJBChZBcHByb3ZlRmVlZGJhY2tSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSEwoLZmVlZGJhY2tfaWQYAiABKAkiGQoXQXBwcm92ZUZlZWRiYWNrUmVzcG9uc2UiQAoVSWdub3JlRmVlZGJhY2tSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSEwoLZmVlZGJhY2tfaWQYAiABKAkiGAoWSWdub3JlRmVlZGJhY2tSZXNwb25zZSKDAQoVVXBkYXRlRmVlZGJhY2tSZXF1ZXN0EhIKCnBlcnNvbmFfaWQYASABKAkSEwoLZmVlZGJhY2tfaWQYAiABKAkSMAoNZmVlZGJhY2tfdHlwZRgDIAEoDjIZLmZlZWRiYWNrLnYxLkZlZWRiYWNrVHlwZRIPCgdjb250ZW50GAQgASgJIk8KFlVwZGF0ZUZlZWRiYWNrUmVzcG9uc2USNQoIZmVlZGJhY2sYASABKAsyIy5hZ2VudF9xYS52MS5SdWxlRXZhbHVhdGlvbkZlZWRiYWNrIkAKFURlbGV0ZUZlZWRiYWNrUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEhMKC2ZlZWRiYWNrX2lkGAIgASgJIhgKFkRlbGV0ZUZlZWRiYWNrUmVzcG9uc2UilAEKGEdldFVuaXF1ZUFnZW50SWRzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEjIKDmNhbGxfZGF0ZV9mcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxjYWxsX2RhdGVfdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIi4KGUdldFVuaXF1ZUFnZW50SWRzUmVzcG9uc2USEQoJYWdlbnRfaWRzGAEgAygJIlYKCkluc2lnaHRSb3cSDgoGZHJpdmVyGAEgASgJEhAKCGNhdGVnb3J5GAIgASgJEhEKCXZlcmJhdGltcxgDIAMoCRITCgt0b3RhbF9jb3VudBgEIAEoBSK5AQoTTGlzdEluc2lnaHRzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEhEKCWFnZW50X2lkcxgCIAMoCRIyCg5jYWxsX2RhdGVfZnJvbRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMY2FsbF9kYXRlX3RvGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1tYXhfdmVyYmF0aW1zGAUgASgFIvIBChRMaXN0SW5zaWdodHNSZXNwb25zZRJTChBpbnNpZ2h0c19ieV90eXBlGAEgAygLMjUuYWdlbnRfcWEudjEuTGlzdEluc2lnaHRzUmVzcG9uc2UuSW5zaWdodHNCeVR5cGVFbnRyeUICGAESMwoPaW5zaWdodHNfZ3JvdXBzGAIgAygLMhouYWdlbnRfcWEudjEuSW5zaWdodHNHcm91cBpQChNJbnNpZ2h0c0J5VHlwZUVudHJ5EgsKA2tleRgBIAEoCRIoCgV2YWx1ZRgCIAEoCzIZLmFnZW50X3FhLnYxLkluc2lnaHRzTGlzdDoCOAEiZAoNSW5zaWdodHNHcm91cBImCgR0eXBlGAEgASgOMhguYWdlbnRfcWEudjEuSW5zaWdodFR5cGUSKwoIaW5zaWdodHMYAiABKAsyGS5hZ2VudF9xYS52MS5JbnNpZ2h0c0xpc3QiNgoMSW5zaWdodHNMaXN0EiYKBWl0ZW1zGAEgAygLMhcuYWdlbnRfcWEudjEuSW5zaWdodFJvdyL6AQoZTGlzdEluc2lnaHREZXRhaWxzUmVxdWVzdBISCgpwZXJzb25hX2lkGAEgASgJEi4KDGluc2lnaHRfdHlwZRgCIAEoDjIYLmFnZW50X3FhLnYxLkluc2lnaHRUeXBlEhEKCWFnZW50X2lkcxgDIAMoCRIyCg5jYWxsX2RhdGVfZnJvbRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMY2FsbF9kYXRlX3RvGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZkcml2ZXIYBiABKAkSEAoIY2F0ZWdvcnkYByABKAkicgoOSW5zaWdodERldGFpbHMSFwoPd29ya2Zsb3dfcnVuX2lkGAEgASgJEhAKCGFnZW50X2lkGAIgASgJEgwKBHVjaWQYAyABKAkSEAoIdmVyYmF0aW0YBCABKAkSFQoNanVzdGlmaWNhdGlvbhgFIAEoCSJZChpMaXN0SW5zaWdodERldGFpbHNSZXNwb25zZRIPCgdzdW1tYXJ5GAEgASgJEioKBWl0ZW1zGAIgAygLMhsuYWdlbnRfcWEudjEuSW5zaWdodERldGFpbHMqywQKG0F1dG9MZWFyblJ1bGVzUGlwZWxpbmVTdGF0ZRIvCitBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAASKgomQVVUT19MRUFSTl9SVUxFU19QSVBFTElORV9TVEFURV9RVUVVRUQQARIrCidBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX1JVTk5JTkcQAhItCilBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX0NPTVBMRVRFRBADEioKJkFVVE9fTEVBUk5fUlVMRVNfUElQRUxJTkVfU1RBVEVfRkFJTEVEEAQSOgo2QVVUT19MRUFSTl9SVUxFU19QSVBFTElORV9TVEFURV9JTklUSUFMX01PREVfQ09NUExFVEVEEAcSNgoyQVVUT19MRUFSTl9SVUxFU19QSVBFTElORV9TVEFURV9BQ0NVUkFDWV9DT05WRVJHRUQQCBI3CjNBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX0lOSVRJQUxfTU9ERV9GQUlMRUQQCRI7CjdBVVRPX0xFQVJOX1JVTEVTX1BJUEVMSU5FX1NUQVRFX09QVElNSVpFX0ZVUlRIRVJfRkFJTEVEEAoSLworQVVUT19MRUFSTl9SVUxFU19QSVBFTElORV9TVEFURV9ET0NTX1VQTE9BRBAFEiwKKEFVVE9fTEVBUk5fUlVMRVNfUElQRUxJTkVfU1RBVEVfQVBQUk9WRUQQBip1Cg9SdWxlQ3JpdGljYWxpdHkSIAocUlVMRV9DUklUSUNBTElUWV9VTlNQRUNJRklFRBAAEh0KGVJVTEVfQ1JJVElDQUxJVFlfQ1JJVElDQUwQARIhCh1SVUxFX0NSSVRJQ0FMSVRZX05PTl9DUklUSUNBTBACKq0BCg1SdWxlTWVjaGFuaXNtEh4KGlJVTEVfTUVDSEFOSVNNX1VOU1BFQ0lGSUVEEAASHQoZUlVMRV9NRUNIQU5JU01fVFJBTlNDUklQVBABEjEKLVJVTEVfTUVDSEFOSVNNX1RSQU5TQ1JJUFRfV0lUSF9LTk9XTEVER0VfQkFTRRACEioKJlJVTEVfTUVDSEFOSVNNX1RSQU5TQ1JJUFRfV0lUSF9BQ1RJT05TEAMqlwEKEEV2YWx1YXRpb25TdGF0dXMSIQodRVZBTFVBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIhCh1FVkFMVUFUSU9OX1NUQVRVU19JTl9QUk9HUkVTUxABEh8KG0VWQUxVQVRJT05fU1RBVFVTX0NPTVBMRVRFRBACEhwKGEVWQUxVQVRJT05fU1RBVFVTX0ZBSUxFRBADKq8BChRSdWxlRXZhbHVhdGlvblJlc3VsdBImCiJSVUxFX0VWQUxVQVRJT05fUkVTVUxUX1VOU1BFQ0lGSUVEEAASIQodUlVMRV9FVkFMVUFUSU9OX1JFU1VMVF9QQVNTRUQQARIhCh1SVUxFX0VWQUxVQVRJT05fUkVTVUxUX0ZBSUxFRBACEikKJVJVTEVfRVZBTFVBVElPTl9SRVNVTFRfTk9UX0FQUExJQ0FCTEUQAyrEAQoLSW5zaWdodFR5cGUSHAoYSU5TSUdIVF9UWVBFX1VOU1BFQ0lGSUVEEAASGgoWSU5TSUdIVF9UWVBFX1NUUkVOR1RIUxABEhsKF0lOU0lHSFRfVFlQRV9XRUFLTkVTU0VTEAISHQoZSU5TSUdIVF9UWVBFX1BST0RVQ1RfQlVHUxADEiEKHUlOU0lHSFRfVFlQRV9QUk9EVUNUX0ZFRURCQUNLEAQSHAoYSU5TSUdIVF9UWVBFX0NPTVBFVElUT1JTEAUyhBQKDkFnZW50UUFTZXJ2aWNlEnMKFlVwc2VydEFnZW50SW50ZXJhY3Rpb24SKi5hZ2VudF9xYS52MS5VcHNlcnRBZ2VudEludGVyYWN0aW9uUmVxdWVzdBorLmFnZW50X3FhLnYxLlVwc2VydEFnZW50SW50ZXJhY3Rpb25SZXNwb25zZSIAElsKDlRyaWdnZXJBZ2VudFFBEiIuYWdlbnRfcWEudjEuVHJpZ2dlckFnZW50UUFSZXF1ZXN0GiMuYWdlbnRfcWEudjEuVHJpZ2dlckFnZW50UUFSZXNwb25zZSIAEnAKFUxlYXJuUnVsZUluc3RydWN0aW9ucxIpLmFnZW50X3FhLnYxLkxlYXJuUnVsZUluc3RydWN0aW9uc1JlcXVlc3QaKi5hZ2VudF9xYS52MS5MZWFyblJ1bGVJbnN0cnVjdGlvbnNSZXNwb25zZSIAEosBCh5HZXRMZWFyblJ1bGVJbnN0cnVjdGlvbnNTdGF0dXMSMi5hZ2VudF9xYS52MS5HZXRMZWFyblJ1bGVJbnN0cnVjdGlvbnNTdGF0dXNSZXF1ZXN0GjMuYWdlbnRfcWEudjEuR2V0TGVhcm5SdWxlSW5zdHJ1Y3Rpb25zU3RhdHVzUmVzcG9uc2UiABKCAQobR2V0QXV0b0xlYXJuaW5nV2lkZ2V0U3RhdHVzEi8uYWdlbnRfcWEudjEuR2V0QXV0b0xlYXJuaW5nV2lkZ2V0U3RhdHVzUmVxdWVzdBowLmFnZW50X3FhLnYxLkdldEF1dG9MZWFybmluZ1dpZGdldFN0YXR1c1Jlc3BvbnNlIgASeQoYT3B0aW1pemVSdWxlSW5zdHJ1Y3Rpb25zEiwuYWdlbnRfcWEudjEuT3B0aW1pemVSdWxlSW5zdHJ1Y3Rpb25zUmVxdWVzdBotLmFnZW50X3FhLnYxLk9wdGltaXplUnVsZUluc3RydWN0aW9uc1Jlc3BvbnNlIgAShQEKHERpc2NhcmRMZWFyblJ1bGVJbnN0cnVjdGlvbnMSMC5hZ2VudF9xYS52MS5EaXNjYXJkTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVxdWVzdBoxLmFnZW50X3FhLnYxLkRpc2NhcmRMZWFyblJ1bGVJbnN0cnVjdGlvbnNSZXNwb25zZSIAEoUBChxBcHByb3ZlTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zEjAuYWdlbnRfcWEudjEuQXBwcm92ZUxlYXJuUnVsZUluc3RydWN0aW9uc1JlcXVlc3QaMS5hZ2VudF9xYS52MS5BcHByb3ZlTGVhcm5SdWxlSW5zdHJ1Y3Rpb25zUmVzcG9uc2UiABJSCgtDcmVhdGVSdWxlcxIfLmFnZW50X3FhLnYxLkNyZWF0ZVJ1bGVzUmVxdWVzdBogLmFnZW50X3FhLnYxLkNyZWF0ZVJ1bGVzUmVzcG9uc2UiABJSCgtVcGRhdGVSdWxlcxIfLmFnZW50X3FhLnYxLlVwZGF0ZVJ1bGVzUmVxdWVzdBogLmFnZW50X3FhLnYxLlVwZGF0ZVJ1bGVzUmVzcG9uc2UiABJSCgtEZWxldGVSdWxlcxIfLmFnZW50X3FhLnYxLkRlbGV0ZVJ1bGVzUmVxdWVzdBogLmFnZW50X3FhLnYxLkRlbGV0ZVJ1bGVzUmVzcG9uc2UiABJMCglMaXN0UnVsZXMSHS5hZ2VudF9xYS52MS5MaXN0UnVsZXNSZXF1ZXN0Gh4uYWdlbnRfcWEudjEuTGlzdFJ1bGVzUmVzcG9uc2UiABJ/ChpHZXRRQVRyYW5zY3JpcHRFdmFsdWF0aW9ucxIuLmFnZW50X3FhLnYxLkdldFFBVHJhbnNjcmlwdEV2YWx1YXRpb25zUmVxdWVzdBovLmFnZW50X3FhLnYxLkdldFFBVHJhbnNjcmlwdEV2YWx1YXRpb25zUmVzcG9uc2UiABKRAQogR2V0UUFUcmFuc2NyaXB0RXZhbHVhdGlvbkRldGFpbHMSNC5hZ2VudF9xYS52MS5HZXRRQVRyYW5zY3JpcHRFdmFsdWF0aW9uRGV0YWlsc1JlcXVlc3QaNS5hZ2VudF9xYS52MS5HZXRRQVRyYW5zY3JpcHRFdmFsdWF0aW9uRGV0YWlsc1Jlc3BvbnNlIgASjgEKH0NyZWF0ZUZlZWRiYWNrRm9yUnVsZUV2YWx1YXRpb24SMy5hZ2VudF9xYS52MS5DcmVhdGVGZWVkYmFja0ZvclJ1bGVFdmFsdWF0aW9uUmVxdWVzdBo0LmFnZW50X3FhLnYxLkNyZWF0ZUZlZWRiYWNrRm9yUnVsZUV2YWx1YXRpb25SZXNwb25zZSIAEoIBChtHZXRBcHByb3ZlZEZlZWRiYWNrc0ZvclJ1bGUSLy5hZ2VudF9xYS52MS5HZXRBcHByb3ZlZEZlZWRiYWNrc0ZvclJ1bGVSZXF1ZXN0GjAuYWdlbnRfcWEudjEuR2V0QXBwcm92ZWRGZWVkYmFja3NGb3JSdWxlUmVzcG9uc2UiABJeCg9BcHByb3ZlRmVlZGJhY2sSIy5hZ2VudF9xYS52MS5BcHByb3ZlRmVlZGJhY2tSZXF1ZXN0GiQuYWdlbnRfcWEudjEuQXBwcm92ZUZlZWRiYWNrUmVzcG9uc2UiABJbCg5JZ25vcmVGZWVkYmFjaxIiLmFnZW50X3FhLnYxLklnbm9yZUZlZWRiYWNrUmVxdWVzdBojLmFnZW50X3FhLnYxLklnbm9yZUZlZWRiYWNrUmVzcG9uc2UiABJbCg5VcGRhdGVGZWVkYmFjaxIiLmFnZW50X3FhLnYxLlVwZGF0ZUZlZWRiYWNrUmVxdWVzdBojLmFnZW50X3FhLnYxLlVwZGF0ZUZlZWRiYWNrUmVzcG9uc2UiABJbCg5EZWxldGVGZWVkYmFjaxIiLmFnZW50X3FhLnYxLkRlbGV0ZUZlZWRiYWNrUmVxdWVzdBojLmFnZW50X3FhLnYxLkRlbGV0ZUZlZWRiYWNrUmVzcG9uc2UiABJVCgxMaXN0SW5zaWdodHMSIC5hZ2VudF9xYS52MS5MaXN0SW5zaWdodHNSZXF1ZXN0GiEuYWdlbnRfcWEudjEuTGlzdEluc2lnaHRzUmVzcG9uc2UiABJnChJMaXN0SW5zaWdodERldGFpbHMSJi5hZ2VudF9xYS52MS5MaXN0SW5zaWdodERldGFpbHNSZXF1ZXN0GicuYWdlbnRfcWEudjEuTGlzdEluc2lnaHREZXRhaWxzUmVzcG9uc2UiABJkChFHZXRVbmlxdWVBZ2VudElkcxIlLmFnZW50X3FhLnYxLkdldFVuaXF1ZUFnZW50SWRzUmVxdWVzdBomLmFnZW50X3FhLnYxLkdldFVuaXF1ZUFnZW50SWRzUmVzcG9uc2UiAEJDWkFnaXRodWIuY29tL0VtYS1VbmxpbWl0ZWQvcHJvdG9zL2dvL3NlcnZpY2UvYWdlbnRfcWEvdjE7YWdlbnRfcWF2MWIGcHJvdG8z", [file_google_protobuf_timestamp, file_service_feedback_v1_feedback]);
9
11
  /**
10
12
  * Describes the message agent_qa.v1.RuleDefinition.
11
13
  * Use `create(RuleDefinitionSchema)` to create a new message.
@@ -76,31 +78,41 @@ export const GetLearnRuleInstructionsStatusRequestSchema = /*@__PURE__*/ message
76
78
  * Use `create(GetLearnRuleInstructionsStatusResponseSchema)` to create a new message.
77
79
  */
78
80
  export const GetLearnRuleInstructionsStatusResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 13);
81
+ /**
82
+ * Describes the message agent_qa.v1.GetAutoLearningWidgetStatusRequest.
83
+ * Use `create(GetAutoLearningWidgetStatusRequestSchema)` to create a new message.
84
+ */
85
+ export const GetAutoLearningWidgetStatusRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 14);
86
+ /**
87
+ * Describes the message agent_qa.v1.GetAutoLearningWidgetStatusResponse.
88
+ * Use `create(GetAutoLearningWidgetStatusResponseSchema)` to create a new message.
89
+ */
90
+ export const GetAutoLearningWidgetStatusResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 15);
79
91
  /**
80
92
  * Describes the message agent_qa.v1.OptimizeRuleInstructionsRequest.
81
93
  * Use `create(OptimizeRuleInstructionsRequestSchema)` to create a new message.
82
94
  */
83
- export const OptimizeRuleInstructionsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 14);
95
+ export const OptimizeRuleInstructionsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 16);
84
96
  /**
85
97
  * Describes the message agent_qa.v1.OptimizeRuleInstructionsResponse.
86
98
  * Use `create(OptimizeRuleInstructionsResponseSchema)` to create a new message.
87
99
  */
88
- export const OptimizeRuleInstructionsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 15);
100
+ export const OptimizeRuleInstructionsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 17);
89
101
  /**
90
102
  * Describes the message agent_qa.v1.DiscardLearnRuleInstructionsRequest.
91
103
  * Use `create(DiscardLearnRuleInstructionsRequestSchema)` to create a new message.
92
104
  */
93
- export const DiscardLearnRuleInstructionsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 16);
105
+ export const DiscardLearnRuleInstructionsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 18);
94
106
  /**
95
107
  * Describes the message agent_qa.v1.DiscardLearnRuleInstructionsResponse.
96
108
  * Use `create(DiscardLearnRuleInstructionsResponseSchema)` to create a new message.
97
109
  */
98
- export const DiscardLearnRuleInstructionsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 17);
110
+ export const DiscardLearnRuleInstructionsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 19);
99
111
  /**
100
112
  * Describes the message agent_qa.v1.UpsertAgentInteractionRequest.
101
113
  * Use `create(UpsertAgentInteractionRequestSchema)` to create a new message.
102
114
  */
103
- export const UpsertAgentInteractionRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 18);
115
+ export const UpsertAgentInteractionRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 20);
104
116
  /**
105
117
  * @generated from enum agent_qa.v1.UpsertAgentInteractionRequest.RequestType
106
118
  */
@@ -127,78 +139,331 @@ export var UpsertAgentInteractionRequest_RequestType;
127
139
  /**
128
140
  * Describes the enum agent_qa.v1.UpsertAgentInteractionRequest.RequestType.
129
141
  */
130
- export const UpsertAgentInteractionRequest_RequestTypeSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 18, 0);
142
+ export const UpsertAgentInteractionRequest_RequestTypeSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 20, 0);
131
143
  /**
132
144
  * Describes the message agent_qa.v1.UpsertAgentInteractionResponse.
133
145
  * Use `create(UpsertAgentInteractionResponseSchema)` to create a new message.
134
146
  */
135
- export const UpsertAgentInteractionResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 19);
147
+ export const UpsertAgentInteractionResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 21);
136
148
  /**
137
149
  * Describes the message agent_qa.v1.TriggerAgentQARequest.
138
150
  * Use `create(TriggerAgentQARequestSchema)` to create a new message.
139
151
  */
140
- export const TriggerAgentQARequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 20);
152
+ export const TriggerAgentQARequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 22);
141
153
  /**
142
154
  * Describes the message agent_qa.v1.SilenceMetrics.
143
155
  * Use `create(SilenceMetricsSchema)` to create a new message.
144
156
  */
145
- export const SilenceMetricsSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 21);
157
+ export const SilenceMetricsSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 23);
146
158
  /**
147
159
  * Describes the message agent_qa.v1.TriggerAgentQAResponse.
148
160
  * Use `create(TriggerAgentQAResponseSchema)` to create a new message.
149
161
  */
150
- export const TriggerAgentQAResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 22);
162
+ export const TriggerAgentQAResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 24);
151
163
  /**
152
164
  * Describes the message agent_qa.v1.ApproveLearnRuleInstructionsRequest.
153
165
  * Use `create(ApproveLearnRuleInstructionsRequestSchema)` to create a new message.
154
166
  */
155
- export const ApproveLearnRuleInstructionsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 23);
167
+ export const ApproveLearnRuleInstructionsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 25);
156
168
  /**
157
169
  * Describes the message agent_qa.v1.ApproveLearnRuleInstructionsResponse.
158
170
  * Use `create(ApproveLearnRuleInstructionsResponseSchema)` to create a new message.
159
171
  */
160
- export const ApproveLearnRuleInstructionsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 24);
172
+ export const ApproveLearnRuleInstructionsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 26);
161
173
  /**
162
174
  * Describes the message agent_qa.v1.CreateRulesRequest.
163
175
  * Use `create(CreateRulesRequestSchema)` to create a new message.
164
176
  */
165
- export const CreateRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 25);
177
+ export const CreateRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 27);
166
178
  /**
167
179
  * Describes the message agent_qa.v1.CreateRulesResponse.
168
180
  * Use `create(CreateRulesResponseSchema)` to create a new message.
169
181
  */
170
- export const CreateRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 26);
182
+ export const CreateRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 28);
171
183
  /**
172
184
  * Describes the message agent_qa.v1.ListRulesRequest.
173
185
  * Use `create(ListRulesRequestSchema)` to create a new message.
174
186
  */
175
- export const ListRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 27);
187
+ export const ListRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 29);
176
188
  /**
177
189
  * Describes the message agent_qa.v1.ListRulesResponse.
178
190
  * Use `create(ListRulesResponseSchema)` to create a new message.
179
191
  */
180
- export const ListRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 28);
192
+ export const ListRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 30);
181
193
  /**
182
194
  * Describes the message agent_qa.v1.UpdateRulesRequest.
183
195
  * Use `create(UpdateRulesRequestSchema)` to create a new message.
184
196
  */
185
- export const UpdateRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 29);
197
+ export const UpdateRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 31);
186
198
  /**
187
199
  * Describes the message agent_qa.v1.UpdateRulesResponse.
188
200
  * Use `create(UpdateRulesResponseSchema)` to create a new message.
189
201
  */
190
- export const UpdateRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 30);
202
+ export const UpdateRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 32);
191
203
  /**
192
204
  * Describes the message agent_qa.v1.DeleteRulesRequest.
193
205
  * Use `create(DeleteRulesRequestSchema)` to create a new message.
194
206
  */
195
- export const DeleteRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 31);
207
+ export const DeleteRulesRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 33);
196
208
  /**
197
209
  * Describes the message agent_qa.v1.DeleteRulesResponse.
198
210
  * Use `create(DeleteRulesResponseSchema)` to create a new message.
199
211
  */
200
- export const DeleteRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 32);
212
+ export const DeleteRulesResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 34);
213
+ /**
214
+ * Describes the message agent_qa.v1.QATranscriptEvaluationSort.
215
+ * Use `create(QATranscriptEvaluationSortSchema)` to create a new message.
216
+ */
217
+ export const QATranscriptEvaluationSortSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 35);
201
218
  /**
219
+ * Fields available for sorting evaluations
220
+ *
221
+ * @generated from enum agent_qa.v1.QATranscriptEvaluationSort.SortField
222
+ */
223
+ export var QATranscriptEvaluationSort_SortField;
224
+ (function (QATranscriptEvaluationSort_SortField) {
225
+ /**
226
+ * @generated from enum value: SORT_FIELD_UNSPECIFIED = 0;
227
+ */
228
+ QATranscriptEvaluationSort_SortField[QATranscriptEvaluationSort_SortField["UNSPECIFIED"] = 0] = "UNSPECIFIED";
229
+ /**
230
+ * @generated from enum value: SORT_FIELD_CALL_LENGTH = 1;
231
+ */
232
+ QATranscriptEvaluationSort_SortField[QATranscriptEvaluationSort_SortField["CALL_LENGTH"] = 1] = "CALL_LENGTH";
233
+ /**
234
+ * @generated from enum value: SORT_FIELD_CALL_DATE = 2;
235
+ */
236
+ QATranscriptEvaluationSort_SortField[QATranscriptEvaluationSort_SortField["CALL_DATE"] = 2] = "CALL_DATE";
237
+ })(QATranscriptEvaluationSort_SortField || (QATranscriptEvaluationSort_SortField = {}));
238
+ /**
239
+ * Describes the enum agent_qa.v1.QATranscriptEvaluationSort.SortField.
240
+ */
241
+ export const QATranscriptEvaluationSort_SortFieldSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 35, 0);
242
+ /**
243
+ * Sort order for evaluations
244
+ *
245
+ * @generated from enum agent_qa.v1.QATranscriptEvaluationSort.SortOrder
246
+ */
247
+ export var QATranscriptEvaluationSort_SortOrder;
248
+ (function (QATranscriptEvaluationSort_SortOrder) {
249
+ /**
250
+ * @generated from enum value: SORT_ORDER_UNSPECIFIED = 0;
251
+ */
252
+ QATranscriptEvaluationSort_SortOrder[QATranscriptEvaluationSort_SortOrder["UNSPECIFIED"] = 0] = "UNSPECIFIED";
253
+ /**
254
+ * @generated from enum value: SORT_ORDER_ASC = 1;
255
+ */
256
+ QATranscriptEvaluationSort_SortOrder[QATranscriptEvaluationSort_SortOrder["ASC"] = 1] = "ASC";
257
+ /**
258
+ * @generated from enum value: SORT_ORDER_DESC = 2;
259
+ */
260
+ QATranscriptEvaluationSort_SortOrder[QATranscriptEvaluationSort_SortOrder["DESC"] = 2] = "DESC";
261
+ })(QATranscriptEvaluationSort_SortOrder || (QATranscriptEvaluationSort_SortOrder = {}));
262
+ /**
263
+ * Describes the enum agent_qa.v1.QATranscriptEvaluationSort.SortOrder.
264
+ */
265
+ export const QATranscriptEvaluationSort_SortOrderSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 35, 1);
266
+ /**
267
+ * Describes the message agent_qa.v1.QATranscriptEvaluationFilters.
268
+ * Use `create(QATranscriptEvaluationFiltersSchema)` to create a new message.
269
+ */
270
+ export const QATranscriptEvaluationFiltersSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 36);
271
+ /**
272
+ * Describes the message agent_qa.v1.GetQATranscriptEvaluationsRequest.
273
+ * Use `create(GetQATranscriptEvaluationsRequestSchema)` to create a new message.
274
+ */
275
+ export const GetQATranscriptEvaluationsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 37);
276
+ /**
277
+ * Describes the message agent_qa.v1.QATranscriptEvaluationSummary.
278
+ * Use `create(QATranscriptEvaluationSummarySchema)` to create a new message.
279
+ */
280
+ export const QATranscriptEvaluationSummarySchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 38);
281
+ /**
282
+ * Describes the message agent_qa.v1.GetQATranscriptEvaluationsResponse.
283
+ * Use `create(GetQATranscriptEvaluationsResponseSchema)` to create a new message.
284
+ */
285
+ export const GetQATranscriptEvaluationsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 39);
286
+ /**
287
+ * Describes the message agent_qa.v1.GetQATranscriptEvaluationDetailsRequest.
288
+ * Use `create(GetQATranscriptEvaluationDetailsRequestSchema)` to create a new message.
289
+ */
290
+ export const GetQATranscriptEvaluationDetailsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 40);
291
+ /**
292
+ * Describes the message agent_qa.v1.RuleEvaluationFeedback.
293
+ * Use `create(RuleEvaluationFeedbackSchema)` to create a new message.
294
+ */
295
+ export const RuleEvaluationFeedbackSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 41);
296
+ /**
297
+ * Describes the message agent_qa.v1.RuleEvaluation.
298
+ * Use `create(RuleEvaluationSchema)` to create a new message.
299
+ */
300
+ export const RuleEvaluationSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 42);
301
+ /**
302
+ * Describes the message agent_qa.v1.QATranscriptEvaluationScorecard.
303
+ * Use `create(QATranscriptEvaluationScorecardSchema)` to create a new message.
304
+ */
305
+ export const QATranscriptEvaluationScorecardSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 43);
306
+ /**
307
+ * Describes the message agent_qa.v1.QATranscriptMessage.
308
+ * Use `create(QATranscriptMessageSchema)` to create a new message.
309
+ * @deprecated
310
+ */
311
+ export const QATranscriptMessageSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 44);
312
+ /**
313
+ * @generated from enum agent_qa.v1.QATranscriptMessage.MessageRole
314
+ * @deprecated
315
+ */
316
+ export var QATranscriptMessage_MessageRole;
317
+ (function (QATranscriptMessage_MessageRole) {
318
+ /**
319
+ * @generated from enum value: MESSAGE_ROLE_UNSPECIFIED = 0;
320
+ */
321
+ QATranscriptMessage_MessageRole[QATranscriptMessage_MessageRole["UNSPECIFIED"] = 0] = "UNSPECIFIED";
322
+ /**
323
+ * @generated from enum value: MESSAGE_ROLE_USER = 1;
324
+ */
325
+ QATranscriptMessage_MessageRole[QATranscriptMessage_MessageRole["USER"] = 1] = "USER";
326
+ /**
327
+ * @generated from enum value: MESSAGE_ROLE_AGENT = 2;
328
+ */
329
+ QATranscriptMessage_MessageRole[QATranscriptMessage_MessageRole["AGENT"] = 2] = "AGENT";
330
+ })(QATranscriptMessage_MessageRole || (QATranscriptMessage_MessageRole = {}));
331
+ /**
332
+ * Describes the enum agent_qa.v1.QATranscriptMessage.MessageRole.
333
+ * @deprecated
334
+ */
335
+ export const QATranscriptMessage_MessageRoleSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 44, 0);
336
+ /**
337
+ * Describes the message agent_qa.v1.QATranscriptMessages.
338
+ * Use `create(QATranscriptMessagesSchema)` to create a new message.
339
+ * @deprecated
340
+ */
341
+ export const QATranscriptMessagesSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 45);
342
+ /**
343
+ * Describes the message agent_qa.v1.PerformanceInsight.
344
+ * Use `create(PerformanceInsightSchema)` to create a new message.
345
+ */
346
+ export const PerformanceInsightSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 46);
347
+ /**
348
+ * Describes the message agent_qa.v1.GetQATranscriptEvaluationDetailsResponse.
349
+ * Use `create(GetQATranscriptEvaluationDetailsResponseSchema)` to create a new message.
350
+ */
351
+ export const GetQATranscriptEvaluationDetailsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 47);
352
+ /**
353
+ * Describes the message agent_qa.v1.CreateFeedbackForRuleEvaluationRequest.
354
+ * Use `create(CreateFeedbackForRuleEvaluationRequestSchema)` to create a new message.
355
+ */
356
+ export const CreateFeedbackForRuleEvaluationRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 48);
357
+ /**
358
+ * Describes the message agent_qa.v1.CreateFeedbackForRuleEvaluationResponse.
359
+ * Use `create(CreateFeedbackForRuleEvaluationResponseSchema)` to create a new message.
360
+ */
361
+ export const CreateFeedbackForRuleEvaluationResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 49);
362
+ /**
363
+ * Describes the message agent_qa.v1.GetApprovedFeedbacksForRuleRequest.
364
+ * Use `create(GetApprovedFeedbacksForRuleRequestSchema)` to create a new message.
365
+ */
366
+ export const GetApprovedFeedbacksForRuleRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 50);
367
+ /**
368
+ * Describes the message agent_qa.v1.GetApprovedFeedbacksForRuleResponse.
369
+ * Use `create(GetApprovedFeedbacksForRuleResponseSchema)` to create a new message.
370
+ */
371
+ export const GetApprovedFeedbacksForRuleResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 51);
372
+ /**
373
+ * Describes the message agent_qa.v1.ApproveFeedbackRequest.
374
+ * Use `create(ApproveFeedbackRequestSchema)` to create a new message.
375
+ */
376
+ export const ApproveFeedbackRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 52);
377
+ /**
378
+ * Describes the message agent_qa.v1.ApproveFeedbackResponse.
379
+ * Use `create(ApproveFeedbackResponseSchema)` to create a new message.
380
+ */
381
+ export const ApproveFeedbackResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 53);
382
+ /**
383
+ * Describes the message agent_qa.v1.IgnoreFeedbackRequest.
384
+ * Use `create(IgnoreFeedbackRequestSchema)` to create a new message.
385
+ */
386
+ export const IgnoreFeedbackRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 54);
387
+ /**
388
+ * Describes the message agent_qa.v1.IgnoreFeedbackResponse.
389
+ * Use `create(IgnoreFeedbackResponseSchema)` to create a new message.
390
+ */
391
+ export const IgnoreFeedbackResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 55);
392
+ /**
393
+ * Describes the message agent_qa.v1.UpdateFeedbackRequest.
394
+ * Use `create(UpdateFeedbackRequestSchema)` to create a new message.
395
+ */
396
+ export const UpdateFeedbackRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 56);
397
+ /**
398
+ * Describes the message agent_qa.v1.UpdateFeedbackResponse.
399
+ * Use `create(UpdateFeedbackResponseSchema)` to create a new message.
400
+ */
401
+ export const UpdateFeedbackResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 57);
402
+ /**
403
+ * Describes the message agent_qa.v1.DeleteFeedbackRequest.
404
+ * Use `create(DeleteFeedbackRequestSchema)` to create a new message.
405
+ */
406
+ export const DeleteFeedbackRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 58);
407
+ /**
408
+ * Describes the message agent_qa.v1.DeleteFeedbackResponse.
409
+ * Use `create(DeleteFeedbackResponseSchema)` to create a new message.
410
+ */
411
+ export const DeleteFeedbackResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 59);
412
+ /**
413
+ * Describes the message agent_qa.v1.GetUniqueAgentIdsRequest.
414
+ * Use `create(GetUniqueAgentIdsRequestSchema)` to create a new message.
415
+ */
416
+ export const GetUniqueAgentIdsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 60);
417
+ /**
418
+ * Describes the message agent_qa.v1.GetUniqueAgentIdsResponse.
419
+ * Use `create(GetUniqueAgentIdsResponseSchema)` to create a new message.
420
+ */
421
+ export const GetUniqueAgentIdsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 61);
422
+ /**
423
+ * Describes the message agent_qa.v1.InsightRow.
424
+ * Use `create(InsightRowSchema)` to create a new message.
425
+ */
426
+ export const InsightRowSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 62);
427
+ /**
428
+ * Describes the message agent_qa.v1.ListInsightsRequest.
429
+ * Use `create(ListInsightsRequestSchema)` to create a new message.
430
+ */
431
+ export const ListInsightsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 63);
432
+ /**
433
+ * Describes the message agent_qa.v1.ListInsightsResponse.
434
+ * Use `create(ListInsightsResponseSchema)` to create a new message.
435
+ */
436
+ export const ListInsightsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 64);
437
+ /**
438
+ * Describes the message agent_qa.v1.InsightsGroup.
439
+ * Use `create(InsightsGroupSchema)` to create a new message.
440
+ */
441
+ export const InsightsGroupSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 65);
442
+ /**
443
+ * Describes the message agent_qa.v1.InsightsList.
444
+ * Use `create(InsightsListSchema)` to create a new message.
445
+ */
446
+ export const InsightsListSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 66);
447
+ /**
448
+ * Describes the message agent_qa.v1.ListInsightDetailsRequest.
449
+ * Use `create(ListInsightDetailsRequestSchema)` to create a new message.
450
+ */
451
+ export const ListInsightDetailsRequestSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 67);
452
+ /**
453
+ * Describes the message agent_qa.v1.InsightDetails.
454
+ * Use `create(InsightDetailsSchema)` to create a new message.
455
+ */
456
+ export const InsightDetailsSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 68);
457
+ /**
458
+ * Describes the message agent_qa.v1.ListInsightDetailsResponse.
459
+ * Use `create(ListInsightDetailsResponseSchema)` to create a new message.
460
+ */
461
+ export const ListInsightDetailsResponseSchema = /*@__PURE__*/ messageDesc(file_service_agent_qa_v1_agent_qa, 69);
462
+ /**
463
+ * The enums below represent the state of the underlying pipeline (AutoLearnRulesPipelineState)
464
+ * as tracked by BE and surfaced to the UI. They’re now a durable "source of truth" instead of FE WidgetState.
465
+ * We now store the widget status persistently in the DB and provide it via `GetAutoLearningWidgetStatus` RPC
466
+ *
202
467
  * @generated from enum agent_qa.v1.AutoLearnRulesPipelineState
203
468
  */
204
469
  export var AutoLearnRulesPipelineState;
@@ -212,10 +477,22 @@ export var AutoLearnRulesPipelineState;
212
477
  */
213
478
  AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["QUEUED"] = 1] = "QUEUED";
214
479
  /**
480
+ * POLLING WHEN IN THIS STATE BEHAVIOR
481
+ * The UI uses a polling API to track the Auto-Learn pipeline state in real-time.
482
+ * While this state is `AUTO_LEARN_RULES_PIPELINE_STATE_RUNNING`, the UI polls the backend to fetch
483
+ * the current `AutoLearnRulesPipelineState` to show progress
484
+ * Polling rpc: `GetAutoLearningWidgetStatus`
485
+ *
215
486
  * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_RUNNING = 2;
216
487
  */
217
488
  AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["RUNNING"] = 2] = "RUNNING";
218
489
  /**
490
+ * We are mapping AUTO_LEARN_RULES_PIPELINE_STATE_INITIAL_MODE_COMPLETED to
491
+ * AUTO_LEARN_RULES_PIPELINE_STATE_COMPLETED; And AUTO_LEARN_RULES_PIPELINE_STATE_INITIAL_MODE_FAILED to
492
+ * AUTO_LEARN_RULES_PIPELINE_STATE_FAILED;
493
+ * This is a temporary mapping to avoid breaking changes.
494
+ * Currently fine, but need to remove this in the future.
495
+ *
219
496
  * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_COMPLETED = 3;
220
497
  */
221
498
  AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["COMPLETED"] = 3] = "COMPLETED";
@@ -223,6 +500,63 @@ export var AutoLearnRulesPipelineState;
223
500
  * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_FAILED = 4;
224
501
  */
225
502
  AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["FAILED"] = 4] = "FAILED";
503
+ /**
504
+ * The Auto-Learn Rules Pipeline has completed the initial mode of the pipeline.
505
+ * The widget will transition to the AUTO_LEARN_RULES_PIPELINE_STATE_COMPLETED state.
506
+ * For now we will map this to AUTO_LEARN_RULES_PIPELINE_STATE_COMPLETED.
507
+ *
508
+ * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_INITIAL_MODE_COMPLETED = 7;
509
+ */
510
+ AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["INITIAL_MODE_COMPLETED"] = 7] = "INITIAL_MODE_COMPLETED";
511
+ /**
512
+ * Whenever the pipeline is running, either in initial mode or optimize further mode,
513
+ * the widget will transition to the AUTO_LEARN_RULES_PIPELINE_STATE_RUNNING state.
514
+ * Once the pipeline is completed because the accuracy has converged, the widget will transition to the
515
+ * AUTO_LEARN_RULES_PIPELINE_STATE_ACCURACY_CONVERGED state.
516
+ *
517
+ * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_ACCURACY_CONVERGED = 8;
518
+ */
519
+ AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["ACCURACY_CONVERGED"] = 8] = "ACCURACY_CONVERGED";
520
+ /**
521
+ * The Auto-Learn Rules Pipeline is failed either in initial mode.
522
+ * The widget will transition to the AUTO_LEARN_RULES_PIPELINE_STATE_INITIAL_MODE_FAILED state.
523
+ * For now we will map this to AUTO_LEARN_RULES_PIPELINE_STATE_FAILED.
524
+ *
525
+ * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_INITIAL_MODE_FAILED = 9;
526
+ */
527
+ AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["INITIAL_MODE_FAILED"] = 9] = "INITIAL_MODE_FAILED";
528
+ /**
529
+ * The Auto-Learn Rules Pipeline has failed in the optimize further process.
530
+ * The widget will transition to the AUTO_LEARN_RULES_PIPELINE_STATE_OPTIMIZE_FURTHER_FAILED state.
531
+ *
532
+ * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_OPTIMIZE_FURTHER_FAILED = 10;
533
+ */
534
+ AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["OPTIMIZE_FURTHER_FAILED"] = 10] = "OPTIMIZE_FURTHER_FAILED";
535
+ /**
536
+ * The user is in the document upload phase.
537
+ * Users can upload as many documents as needed (CSV rules files, golden data files, etc.).
538
+ * The widget remains in this state until the user triggers the pipeline.
539
+ * UI should show the upload interface and "Start Generation" action.
540
+ *
541
+ * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_DOCS_UPLOAD = 5;
542
+ */
543
+ AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["DOCS_UPLOAD"] = 5] = "DOCS_UPLOAD";
544
+ /**
545
+ * The user has explicitly approved the generated rules by clicking the "Approve" action.
546
+ *
547
+ * This is a user-driven transition, NOT an automatic one from pipeline completion.
548
+ *
549
+ * EXPECTED BEHAVIOR WHEN ENTERING THIS STATUS:
550
+ * - The UI makes a gRPC call to fetch the complete set of approved rules.
551
+ * - The UI displays the finalized rule list.
552
+ * - CRUD operations on rules are now enabled (add, edit, delete rules).
553
+ *
554
+ * This status persists even after edits—once approved, the widget stays in this state
555
+ * unless reset by a new upload flow.
556
+ *
557
+ * @generated from enum value: AUTO_LEARN_RULES_PIPELINE_STATE_APPROVED = 6;
558
+ */
559
+ AutoLearnRulesPipelineState[AutoLearnRulesPipelineState["APPROVED"] = 6] = "APPROVED";
226
560
  })(AutoLearnRulesPipelineState || (AutoLearnRulesPipelineState = {}));
227
561
  /**
228
562
  * Describes the enum agent_qa.v1.AutoLearnRulesPipelineState.
@@ -276,6 +610,111 @@ export var RuleMechanism;
276
610
  * Describes the enum agent_qa.v1.RuleMechanism.
277
611
  */
278
612
  export const RuleMechanismSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 2);
613
+ /**
614
+ * @generated from enum agent_qa.v1.EvaluationStatus
615
+ */
616
+ export var EvaluationStatus;
617
+ (function (EvaluationStatus) {
618
+ /**
619
+ * @generated from enum value: EVALUATION_STATUS_UNSPECIFIED = 0;
620
+ */
621
+ EvaluationStatus[EvaluationStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED";
622
+ /**
623
+ * @generated from enum value: EVALUATION_STATUS_IN_PROGRESS = 1;
624
+ */
625
+ EvaluationStatus[EvaluationStatus["IN_PROGRESS"] = 1] = "IN_PROGRESS";
626
+ /**
627
+ * @generated from enum value: EVALUATION_STATUS_COMPLETED = 2;
628
+ */
629
+ EvaluationStatus[EvaluationStatus["COMPLETED"] = 2] = "COMPLETED";
630
+ /**
631
+ * @generated from enum value: EVALUATION_STATUS_FAILED = 3;
632
+ */
633
+ EvaluationStatus[EvaluationStatus["FAILED"] = 3] = "FAILED";
634
+ })(EvaluationStatus || (EvaluationStatus = {}));
635
+ /**
636
+ * Describes the enum agent_qa.v1.EvaluationStatus.
637
+ */
638
+ export const EvaluationStatusSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 3);
639
+ /**
640
+ * @generated from enum agent_qa.v1.RuleEvaluationResult
641
+ */
642
+ export var RuleEvaluationResult;
643
+ (function (RuleEvaluationResult) {
644
+ /**
645
+ * @generated from enum value: RULE_EVALUATION_RESULT_UNSPECIFIED = 0;
646
+ */
647
+ RuleEvaluationResult[RuleEvaluationResult["UNSPECIFIED"] = 0] = "UNSPECIFIED";
648
+ /**
649
+ * @generated from enum value: RULE_EVALUATION_RESULT_PASSED = 1;
650
+ */
651
+ RuleEvaluationResult[RuleEvaluationResult["PASSED"] = 1] = "PASSED";
652
+ /**
653
+ * @generated from enum value: RULE_EVALUATION_RESULT_FAILED = 2;
654
+ */
655
+ RuleEvaluationResult[RuleEvaluationResult["FAILED"] = 2] = "FAILED";
656
+ /**
657
+ * @generated from enum value: RULE_EVALUATION_RESULT_NOT_APPLICABLE = 3;
658
+ */
659
+ RuleEvaluationResult[RuleEvaluationResult["NOT_APPLICABLE"] = 3] = "NOT_APPLICABLE";
660
+ })(RuleEvaluationResult || (RuleEvaluationResult = {}));
661
+ /**
662
+ * Describes the enum agent_qa.v1.RuleEvaluationResult.
663
+ */
664
+ export const RuleEvaluationResultSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 4);
665
+ /**
666
+ * InsightType identifies which category of insights is being requested.
667
+ *
668
+ * Agent performance types:
669
+ * - INSIGHT_TYPE_STRENGTHS: Positive agent behaviors
670
+ * - INSIGHT_TYPE_WEAKNESSES: Areas for improvement
671
+ *
672
+ * Product insights types:
673
+ * - INSIGHT_TYPE_PRODUCT_BUGS: Reported product issues
674
+ * - INSIGHT_TYPE_PRODUCT_FEEDBACK: Product improvement suggestions
675
+ *
676
+ * Competitor insights:
677
+ * - INSIGHT_TYPE_COMPETITORS: Competitor insight
678
+ *
679
+ * @generated from enum agent_qa.v1.InsightType
680
+ */
681
+ export var InsightType;
682
+ (function (InsightType) {
683
+ /**
684
+ * @generated from enum value: INSIGHT_TYPE_UNSPECIFIED = 0;
685
+ */
686
+ InsightType[InsightType["UNSPECIFIED"] = 0] = "UNSPECIFIED";
687
+ /**
688
+ * Agent performance
689
+ *
690
+ * @generated from enum value: INSIGHT_TYPE_STRENGTHS = 1;
691
+ */
692
+ InsightType[InsightType["STRENGTHS"] = 1] = "STRENGTHS";
693
+ /**
694
+ * @generated from enum value: INSIGHT_TYPE_WEAKNESSES = 2;
695
+ */
696
+ InsightType[InsightType["WEAKNESSES"] = 2] = "WEAKNESSES";
697
+ /**
698
+ * Product insights
699
+ *
700
+ * @generated from enum value: INSIGHT_TYPE_PRODUCT_BUGS = 3;
701
+ */
702
+ InsightType[InsightType["PRODUCT_BUGS"] = 3] = "PRODUCT_BUGS";
703
+ /**
704
+ * @generated from enum value: INSIGHT_TYPE_PRODUCT_FEEDBACK = 4;
705
+ */
706
+ InsightType[InsightType["PRODUCT_FEEDBACK"] = 4] = "PRODUCT_FEEDBACK";
707
+ /**
708
+ * Competitor insights
709
+ *
710
+ * @generated from enum value: INSIGHT_TYPE_COMPETITORS = 5;
711
+ */
712
+ InsightType[InsightType["COMPETITORS"] = 5] = "COMPETITORS";
713
+ })(InsightType || (InsightType = {}));
714
+ /**
715
+ * Describes the enum agent_qa.v1.InsightType.
716
+ */
717
+ export const InsightTypeSchema = /*@__PURE__*/ enumDesc(file_service_agent_qa_v1_agent_qa, 5);
279
718
  /**
280
719
  * AgentQAService provides agent quality assurance functionality
281
720
  *