letschatty 0.4.328__tar.gz → 0.4.336__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. {letschatty-0.4.328 → letschatty-0.4.336}/PKG-INFO +1 -1
  2. {letschatty-0.4.328 → letschatty-0.4.336}/pyproject.toml +1 -1
  3. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/ai_microservices/lambda_events.py +17 -4
  4. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_in_chat.py +6 -34
  5. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_mode.py +2 -2
  6. letschatty-0.4.336/src/letschatty/models/company/assets/ai_agents_v2/statuses.py +33 -0
  7. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/chat_assets.py +9 -0
  8. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/form_field.py +9 -2
  9. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chat/chat_service.py +8 -1
  10. {letschatty-0.4.328 → letschatty-0.4.336}/LICENSE +0 -0
  11. {letschatty-0.4.328 → letschatty-0.4.336}/README.md +0 -0
  12. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/__init__.py +0 -0
  13. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/__init__.py +0 -0
  14. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/ai_microservices/__init__.py +0 -0
  15. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/ai_microservices/expected_output.py +0 -0
  16. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/ai_microservices/lambda_invokation_types.py +0 -0
  17. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/ai_microservices/n8n_ai_agents_payload.py +0 -0
  18. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/ai_microservices/openai_payloads.py +0 -0
  19. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/__init__.py +0 -0
  20. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/__init__.py +0 -0
  21. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/base.py +0 -0
  22. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/ai_agent_chat.py +0 -0
  23. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/ai_agent_execution_event.py +0 -0
  24. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/business_area.py +0 -0
  25. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/chat_based_event.py +0 -0
  26. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/chat_context.py +0 -0
  27. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/chat_funnel.py +0 -0
  28. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/chat_status.py +0 -0
  29. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/contact_point.py +0 -0
  30. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/continuous_conversation.py +0 -0
  31. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/highlight.py +0 -0
  32. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/message.py +0 -0
  33. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/messages_intent_context.py +0 -0
  34. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/product_chat.py +0 -0
  35. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/quality_scoring.py +0 -0
  36. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/sale.py +0 -0
  37. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/tag_chat.py +0 -0
  38. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/chat_based_events/workflow.py +0 -0
  39. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/company_based_events/asset_events.py +0 -0
  40. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/company_based_events/company_events.py +0 -0
  41. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/company_based_events/user_events.py +0 -0
  42. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/event_type_to_classes.py +0 -0
  43. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/events/event_types.py +0 -0
  44. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/metrics/__init_.py +0 -0
  45. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/metrics/daily_contact_points.py +0 -0
  46. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/metrics/daily_new_chats.py +0 -0
  47. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/metrics/daily_sent_templates_grouped.py +0 -0
  48. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/metrics/sales_roadmap.py +0 -0
  49. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/metrics/sent_templates.py +0 -0
  50. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/smart_messages/friendly_code_for_source.py +0 -0
  51. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/smart_messages/topic.py +0 -0
  52. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/smart_messages/topic_message.py +0 -0
  53. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/__init__.py +0 -0
  54. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/google_ad_utm_source.py +0 -0
  55. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/helpers.py +0 -0
  56. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/other_source.py +0 -0
  57. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/pure_ad.py +0 -0
  58. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/pure_ad_utm_source.py +0 -0
  59. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/source_base.py +0 -0
  60. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/template_source.py +0 -0
  61. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/topic_default_source.py +0 -0
  62. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/utm_source.py +0 -0
  63. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/utms/referer_info.py +0 -0
  64. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/utms/utm_query_params.py +0 -0
  65. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/analytics/sources/whatsapp_default_source.py +0 -0
  66. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/auth/jwt.py +0 -0
  67. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/__init__.py +0 -0
  68. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/ai_agent_component.py +0 -0
  69. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/chatty_asset_model.py +0 -0
  70. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/helpers.py +0 -0
  71. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/related_asset_usage_example.py +0 -0
  72. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/singleton.py +0 -0
  73. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/update_model_interface.py +0 -0
  74. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/base_models/validate_timestamps_and_id.py +0 -0
  75. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/channels/channel.py +0 -0
  76. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/assets_assigned_to_chat.py +0 -0
  77. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/chat.py +0 -0
  78. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/chat_status_modifications.py +0 -0
  79. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/chat_with_assets.py +0 -0
  80. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/client.py +0 -0
  81. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/continuous_conversation.py +0 -0
  82. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/filter_parameters.py +0 -0
  83. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/flow_link_state.py +0 -0
  84. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/highlight.py +0 -0
  85. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/preview.py +0 -0
  86. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/quality_scoring.py +0 -0
  87. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/scheduled_messages.py +0 -0
  88. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/temporary_chat.py +0 -0
  89. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/chat/time_left.py +0 -0
  90. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/CRM/business_area.py +0 -0
  91. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/CRM/funnel.py +0 -0
  92. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/__init__.py +0 -0
  93. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/__init__.py +0 -0
  94. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/ai_agent_message_draft.py +0 -0
  95. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/ai_agents_decision_output.py +0 -0
  96. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/chain_of_thought_in_chat.py +0 -0
  97. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/chat_example.py +0 -0
  98. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/chat_example_test.py +0 -0
  99. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent.py +0 -0
  100. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_config_for_automation.py +0 -0
  101. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/context_item.py +0 -0
  102. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/faq.py +0 -0
  103. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/follow_up_strategy.py +0 -0
  104. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/get_chat_with_prompt_response.py +0 -0
  105. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/knowleadge_base_components.py +0 -0
  106. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/n8n_agents_info.py +0 -0
  107. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/n8n_schema_incoming_message_output.json +0 -0
  108. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/n8n_schema_smart_follow_up_output.json +0 -0
  109. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/ai_agents_v2/pre_qualify_config.py +0 -0
  110. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/assignment/__init__.py +0 -0
  111. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/assignment/assignment_assets.py +0 -0
  112. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/automation.py +0 -0
  113. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/chatty_fast_answers/__init__.py +0 -0
  114. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/chatty_fast_answers/chatty_fast_answer.py +0 -0
  115. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/company_assets.py +0 -0
  116. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/contact_point.py +0 -0
  117. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/filter_criteria.py +0 -0
  118. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/flow.py +0 -0
  119. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/launch/__init__.py +0 -0
  120. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/launch/launch.py +0 -0
  121. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/launch/scheduled_communication.py +0 -0
  122. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/launch/subscription.py +0 -0
  123. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/media/__init__.py +0 -0
  124. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/media/file.py +0 -0
  125. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/product.py +0 -0
  126. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/sale.py +0 -0
  127. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/tag.py +0 -0
  128. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/users/agent_chats_snapshot.py +0 -0
  129. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/users/user.py +0 -0
  130. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/users/user_asset_permission.py +0 -0
  131. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/assets/workflow_execution.py +0 -0
  132. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/company_chats_snapshot.py +0 -0
  133. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/company_messaging_settgins.py +0 -0
  134. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/conversation_topic.py +0 -0
  135. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/empresa.py +0 -0
  136. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/insight.py +0 -0
  137. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/company/notifications/notification.py +0 -0
  138. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/copilot/links.py +0 -0
  139. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/data_base/__init__.py +0 -0
  140. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/data_base/collection_interface.py +0 -0
  141. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/data_base/mongo_connection.py +0 -0
  142. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/execution/__init__.py +0 -0
  143. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/execution/execution.py +0 -0
  144. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/execution/executor.py +0 -0
  145. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/forms/company/auth0_company_registration_form.py +0 -0
  146. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/forms/company/meta_register.py +0 -0
  147. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/__init__.py +0 -0
  148. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/__init__.py +0 -0
  149. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/audio.py +0 -0
  150. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/base/__init__.py +0 -0
  151. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/base/chatty_message_json.py +0 -0
  152. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/base/message_base.py +0 -0
  153. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/base/message_draft.py +0 -0
  154. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/button.py +0 -0
  155. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/central_notification.py +0 -0
  156. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/contact.py +0 -0
  157. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/document.py +0 -0
  158. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/image.py +0 -0
  159. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/interactive.py +0 -0
  160. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/location.py +0 -0
  161. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/reaction.py +0 -0
  162. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/__init__.py +0 -0
  163. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_audio.py +0 -0
  164. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_button.py +0 -0
  165. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_central.py +0 -0
  166. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_contacts.py +0 -0
  167. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_document.py +0 -0
  168. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_image.py +0 -0
  169. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_interactive.py +0 -0
  170. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_location.py +0 -0
  171. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_media.py +0 -0
  172. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_reaction.py +0 -0
  173. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_sticker.py +0 -0
  174. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_text.py +0 -0
  175. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_video.py +0 -0
  176. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_context/__init__.py +0 -0
  177. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_context/chatty_context.py +0 -0
  178. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_referal/__init__.py +0 -0
  179. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/schema/chatty_referal/chatty_referal.py +0 -0
  180. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/sticker.py +0 -0
  181. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/text.py +0 -0
  182. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/chatty_messages/video.py +0 -0
  183. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/message_templates/__init__.py +0 -0
  184. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/message_templates/chatty_template_campaign.py +0 -0
  185. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/message_templates/filled_data_from_frontend.py +0 -0
  186. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/message_templates/payload_for_sending_template.py +0 -0
  187. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/message_templates/raw_meta_template.py +0 -0
  188. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/message_templates/recipient_of_template_campaign.py +0 -0
  189. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/message_templates/required_for_frontend_templates.py +0 -0
  190. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/meta_base_notification_json.py +0 -0
  191. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/meta_error_json.py +0 -0
  192. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/meta_inexistent_json.py +0 -0
  193. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/meta_message_json.py +0 -0
  194. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/meta_status_json.py +0 -0
  195. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/meta_unknown_json.py +0 -0
  196. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/__init__.py +0 -0
  197. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/button_content.py +0 -0
  198. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/contacts_content.py +0 -0
  199. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/interactive_content.py +0 -0
  200. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/location_content.py +0 -0
  201. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/multimedia_content.py +0 -0
  202. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/order_content.py +0 -0
  203. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/reaction_content.py +0 -0
  204. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/system_content.py +0 -0
  205. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/content_messages/text_content.py +0 -0
  206. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/values/__init__.py +0 -0
  207. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/values/value_errors.py +0 -0
  208. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/values/value_messages.py +0 -0
  209. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/messages/meta_message_model/schema/values/value_statuses.py +0 -0
  210. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/__init__.py +0 -0
  211. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/custom_exceptions/__init__.py +0 -0
  212. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/custom_exceptions/custom_exceptions.py +0 -0
  213. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/definitions.py +0 -0
  214. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/CRUD_operations.py +0 -0
  215. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/__init__.py +0 -0
  216. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/channel_types.py +0 -0
  217. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/chats_actions.py +0 -0
  218. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/country.py +0 -0
  219. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/deletion_type.py +0 -0
  220. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/executor_types.py +0 -0
  221. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/identifier.py +0 -0
  222. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/message_status_types.py +0 -0
  223. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/message_types.py +0 -0
  224. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/phone_number.py +0 -0
  225. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/serializer_type.py +0 -0
  226. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/source_types.py +0 -0
  227. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/models/utils/types/typealiases.py +0 -0
  228. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/__init__.py +0 -0
  229. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/context_builder_v2.py +0 -0
  230. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/cot_follow_up_examples.py +0 -0
  231. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/followup_schema.json +0 -0
  232. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/smart_follow_up_context_builder_v2.py +0 -0
  233. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/smart_follow_up_service_v2.py +0 -0
  234. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/tool_descriptions/assign_chat_to_ai_agent_itself.json +0 -0
  235. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/tool_descriptions/human_handover.json +0 -0
  236. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_agents/tool_descriptions.py +0 -0
  237. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/ai_components_service.py +0 -0
  238. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chat/chat_extractors.py +0 -0
  239. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chat/client_service.py +0 -0
  240. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chat/conversation_topics_service.py +0 -0
  241. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/__init__.py +0 -0
  242. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/asset_service.py +0 -0
  243. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/assets_collections.py +0 -0
  244. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/base_container.py +0 -0
  245. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/base_container_with_collection.py +0 -0
  246. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/__init__.py +0 -0
  247. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/ai_agent_collection.py +0 -0
  248. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/ai_agent_in_chat_collection.py +0 -0
  249. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/ai_component_collection.py +0 -0
  250. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/chain_of_thought_collection.py +0 -0
  251. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/chat_collection.py +0 -0
  252. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/contact_point_collection.py +0 -0
  253. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/fast_answer_collection.py +0 -0
  254. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/filter_criteria_collection.py +0 -0
  255. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/flow_collection.py +0 -0
  256. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/product_collection.py +0 -0
  257. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/sale_collection.py +0 -0
  258. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/source_collection.py +0 -0
  259. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/tag_collection.py +0 -0
  260. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/topic_collection.py +0 -0
  261. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/collections/user_collection.py +0 -0
  262. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/documentation_diagram.png +0 -0
  263. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/example_usage.py +0 -0
  264. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/readme.md +0 -0
  265. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/__init__.py +0 -0
  266. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/ai_agent_in_chat_service.py +0 -0
  267. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/ai_agent_service.py +0 -0
  268. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/chain_of_thought_service.py +0 -0
  269. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/chat_service.py +0 -0
  270. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/contact_point_service.py +0 -0
  271. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/fast_answer_service.py +0 -0
  272. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/filter_criteria_service.py +0 -0
  273. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/flow_service.py +0 -0
  274. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/product_service.py +0 -0
  275. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/sale_service.py +0 -0
  276. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/source_service.py +0 -0
  277. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/tag_service.py +0 -0
  278. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/topic_service.py +0 -0
  279. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/chatty_assets/services/user_service.py +0 -0
  280. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/concurrent/concurrent.py +0 -0
  281. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/contact_points/contact_point_service.py +0 -0
  282. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/continuous_conversation_service/continuous_conversation_helper.py +0 -0
  283. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/events/__init__.py +0 -0
  284. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/events/events_manager.py +0 -0
  285. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/__init__.py +0 -0
  286. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/analytics/ai_agent_event_factory.py +0 -0
  287. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/analytics/contact_point_factory.py +0 -0
  288. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/analytics/events_factory.py +0 -0
  289. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/analytics/smart_messages/topics_factory.py +0 -0
  290. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/analytics/sources/helpers.py +0 -0
  291. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/analytics/sources/source_factory.py +0 -0
  292. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/chats/chat_factory.py +0 -0
  293. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/chatty_fast_answers/__init__.py +0 -0
  294. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/chatty_fast_answers/chatty_fast_answers_factory.py +0 -0
  295. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/clients/client_factory.py +0 -0
  296. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/company/__init__.py +0 -0
  297. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/company/empresa_factory.py +0 -0
  298. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/lambda_ai_orchestrartor/lambda_events_factory.py +0 -0
  299. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/__init__.py +0 -0
  300. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/central_notification_factory.py +0 -0
  301. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/chatty_message_factory.py +0 -0
  302. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/child_db_message_factory.py +0 -0
  303. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/child_request_message.py +0 -0
  304. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/from_template_hot_fix.py +0 -0
  305. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/message_templates/template_factory.py +0 -0
  306. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/messages/message_templates/test.py +0 -0
  307. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/meta_notifications/__init__.py +0 -0
  308. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/meta_notifications/meta_notification_factory.py +0 -0
  309. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/factories/product_factory.py +0 -0
  310. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/filter_criteria_service.py +0 -0
  311. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/messages_helpers/__init__.py +0 -0
  312. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/messages_helpers/get_caption_or_body_or_preview.py +0 -0
  313. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/scheduled_messages_service/scheduled_messages_helpers.py +0 -0
  314. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/template_campaigns/template_campaign_service.py +0 -0
  315. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/users/agent_service.py +0 -0
  316. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/users/user_factory.py +0 -0
  317. {letschatty-0.4.328 → letschatty-0.4.336}/src/letschatty/services/validators/analytics_validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: letschatty
3
- Version: 0.4.328
3
+ Version: 0.4.336
4
4
  Summary: Models and custom classes to work across the Chattyverse
5
5
  License: MIT
6
6
  Author: Axel
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "letschatty"
3
- version = "0.4.328" # Or whichever is your latest version
3
+ version = "0.4.336" # Or whichever is your latest version
4
4
  description = "Models and custom classes to work across the Chattyverse"
5
5
  authors = ["Axel <axel@letschatty.com>"]
6
6
  license = "MIT"
@@ -93,10 +93,23 @@ class SmartTaggingCallbackEvent(LambdaAiEvent):
93
93
  callback_metadata: SmartTaggingCallbackMetadata
94
94
 
95
95
  @model_validator(mode="before")
96
- def validate_data(cls, data):
97
- if isinstance(data, dict) and "data" in data and "chain_of_thought" in data["data"]:
98
- data["data"]["chain_of_thought"]["chatty_ai_agent_id"] = "000000000000000000000000"
99
- return data
96
+ def normalize_data(cls, values):
97
+ if not isinstance(values, dict):
98
+ return values
99
+
100
+ data = values.get("data")
101
+ if isinstance(data, str):
102
+ import json
103
+ try:
104
+ data = json.loads(data)
105
+ values["data"] = data
106
+ except (json.JSONDecodeError, TypeError):
107
+ return values
108
+
109
+ if isinstance(data, dict) and "chain_of_thought" in data:
110
+ data["chain_of_thought"]["chatty_ai_agent_id"] = "000000000000000000000000"
111
+
112
+ return values
100
113
 
101
114
  class ChatData(BaseModel):
102
115
  chat_id: StrObjectId
@@ -7,15 +7,16 @@ independently without loading entire chat documents.
7
7
  """
8
8
 
9
9
  from letschatty.models.analytics.events.base import EventType
10
+ from enum import StrEnum
10
11
  from pydantic import BaseModel, Field, field_validator, ConfigDict
11
12
  from datetime import datetime
12
13
  from zoneinfo import ZoneInfo
13
14
  from typing import Optional, ClassVar, List, Dict, Any
14
- from enum import StrEnum
15
15
  from letschatty.models.base_models.chatty_asset_model import CompanyAssetModel, ChattyAssetPreview
16
16
  from letschatty.models.utils.types.identifier import StrObjectId
17
17
  from .chain_of_thought_in_chat import ChainOfThoughtInChatTrigger
18
18
  from .chatty_ai_mode import ChattyAIMode
19
+ from .statuses import DataCollectionStatus, PreQualifyStatus
19
20
  import logging
20
21
 
21
22
  logger = logging.getLogger(__name__)
@@ -45,38 +46,6 @@ class HumanInterventionReason(StrEnum):
45
46
  SOMETHING_WENT_WRONG = "something_went_wrong"
46
47
 
47
48
 
48
- class DataCollectionStatus(StrEnum):
49
- """
50
- Status of data collection for the AI agent in this chat.
51
- Only tracks field collection, not qualification status.
52
-
53
- - COLLECTING: Still collecting data from the user
54
- - MANDATORY_COMPLETED: All mandatory fields have been collected
55
- - ALL_COMPLETED: All fields (mandatory + optional) have been collected
56
- - CANCELLED: Data collection was cancelled
57
- """
58
- COLLECTING = "collecting"
59
- MANDATORY_COMPLETED = "mandatory_completed"
60
- ALL_COMPLETED = "all_completed"
61
- CANCELLED = "cancelled"
62
-
63
-
64
- class PreQualifyStatus(StrEnum):
65
- """
66
- Status of pre-qualification for the AI agent in this chat.
67
- Separate from data collection - tracks qualification evaluation.
68
-
69
- - PENDING: Waiting for data collection to complete
70
- - EVALUATING: Data collected, evaluating acceptance criteria
71
- - QUALIFIED: User met acceptance criteria
72
- - UNQUALIFIED: User did NOT meet acceptance criteria
73
- """
74
- PENDING = "pending"
75
- EVALUATING = "evaluating"
76
- QUALIFIED = "qualified"
77
- UNQUALIFIED = "unqualified"
78
-
79
-
80
49
  class HumanIntervention(BaseModel):
81
50
  """
82
51
  Reason for human intervention
@@ -123,6 +92,10 @@ class ChattyAIAgentInChat(CompanyAssetModel):
123
92
  default=None,
124
93
  description="If the trigger is a user message, this will be the id of the incoming message"
125
94
  )
95
+ last_reset_message_id: Optional[str] = Field(
96
+ default=None,
97
+ description="Last reset control trigger message id handled for this chat"
98
+ )
126
99
 
127
100
  # Assignment metadata
128
101
  assigned_at: datetime = Field(default_factory=lambda: datetime.now(ZoneInfo("UTC")))
@@ -352,4 +325,3 @@ class ChattyAIAgentInChat(CompanyAssetModel):
352
325
  """Cancel data collection"""
353
326
  self.data_collection_status = DataCollectionStatus.CANCELLED
354
327
  self.updated_at = datetime.now(ZoneInfo("UTC"))
355
-
@@ -16,7 +16,7 @@ class ChattyAIMode(StrEnum):
16
16
  return {
17
17
  cls.AUTONOMOUS: "El agente de IA tendrá la autonomía de conversar en tiempo real con el usuario, respetando sus instrucciones y las reglas establecidas.",
18
18
  cls.SUGGESTIONS: "El agente de IA sugerirá sólo hará sugerencias de respuestas y seguimientos, pero no enviará mensajes ni interactuará de forma directa con el usuario.",
19
- cls.COPILOT: "El agente de IA hará sugerencias de respuestas y seguimientos, y responderá de forma directa únicamente aquellas preguntas especificadas en el contexto del agente, en la sección de preguntas frecuentes (FAQ).",
19
+ cls.COPILOT: "El agente de IA responderá automáticamente cuando tenga alta confianza y la consulta esté dentro del alcance; si no, sugerirá o escalará para revisión humana.",
20
20
  cls.OFF: "El agente de IA estará inactivo. No responderá al usuario ni hará sugerencias."
21
21
  }[mode]
22
22
 
@@ -26,7 +26,7 @@ class ChattyAIMode(StrEnum):
26
26
  mode_description = {
27
27
  cls.AUTONOMOUS: "Only answer based on the context and rules provided. Do not improvise or make up information. If you can't handle the question, escalate to a human.",
28
28
  cls.SUGGESTIONS: "You're only going to be making suggestions, all your messages will be reviewd by a human and you should add the reasoning to your chain of thought. If the user message is not worth answering, you can use the 'skip' action in your output. If the user message is worth answering, you NEED to use the 'suggest' action in your output. ",
29
- cls.COPILOT: "You're in a COPILOT mode, so you'll be making suggestions on general inquires, and answer only questions specified in the FAQ section. So, for answers which you're creating based on the context, you'll be making a suggestions, and need to add the 'suggestion' subtype in each message. When asked about a question included in the FAQ, you're allowed to adapt the answer to the user's question, but you're not allowed to improvise or make up information, and you'll set the 'text' subtype in the messages.",
29
+ cls.COPILOT: "You're in COPILOT mode. Use your confidence to decide the action: send when the request is within scope and you are confident, suggest when you're unsure or a human touch is needed (complex negotiation, frustration, high-value, or missing info), and escalate if it's required by control triggers. Always include a confidence score (0-100).",
30
30
  cls.OFF: ""
31
31
  }[mode]
32
32
  return intro + "\n\n" + mode_description
@@ -0,0 +1,33 @@
1
+ from enum import StrEnum
2
+
3
+
4
+ class DataCollectionStatus(StrEnum):
5
+ """
6
+ Status of data collection for the AI agent in this chat.
7
+ Only tracks field collection, not qualification status.
8
+
9
+ - COLLECTING: Still collecting data from the user
10
+ - MANDATORY_COMPLETED: All mandatory fields have been collected
11
+ - ALL_COMPLETED: All fields (mandatory + optional) have been collected
12
+ - CANCELLED: Data collection was cancelled
13
+ """
14
+ COLLECTING = "collecting"
15
+ MANDATORY_COMPLETED = "mandatory_completed"
16
+ ALL_COMPLETED = "all_completed"
17
+ CANCELLED = "cancelled"
18
+
19
+
20
+ class PreQualifyStatus(StrEnum):
21
+ """
22
+ Status of pre-qualification for the AI agent in this chat.
23
+ Separate from data collection - tracks qualification evaluation.
24
+
25
+ - PENDING: Waiting for data collection to complete
26
+ - EVALUATING: Data collected, evaluating acceptance criteria
27
+ - QUALIFIED: User met acceptance criteria
28
+ - UNQUALIFIED: User did NOT meet acceptance criteria
29
+ """
30
+ PENDING = "pending"
31
+ EVALUATING = "evaluating"
32
+ QUALIFIED = "qualified"
33
+ UNQUALIFIED = "unqualified"
@@ -4,6 +4,7 @@ from enum import StrEnum
4
4
  from pydantic_core.core_schema import str_schema
5
5
 
6
6
  from letschatty.models.company.assets.ai_agents_v2.chain_of_thought_in_chat import ChainOfThoughtInChatTrigger
7
+ from letschatty.models.company.assets.ai_agents_v2.statuses import DataCollectionStatus, PreQualifyStatus
7
8
  from ...utils.types.identifier import StrObjectId
8
9
  from datetime import datetime
9
10
  from zoneinfo import ZoneInfo
@@ -75,6 +76,14 @@ class ChattyAIAgentAssignedToChat(AssignedAssetToChat):
75
76
  mode: ChattyAIMode = Field(default=ChattyAIMode.OFF)
76
77
  requires_human_intervention: bool = Field(default=False)
77
78
  is_processing: bool = Field(default=False)
79
+ data_collection_status: Optional[DataCollectionStatus] = Field(
80
+ default=None,
81
+ description="Status of data collection for pre-qualification"
82
+ )
83
+ pre_qualify_status: Optional[PreQualifyStatus] = Field(
84
+ default=None,
85
+ description="Status of pre-qualification"
86
+ )
78
87
  last_call_started_at: Optional[datetime] = Field(default=None, description="The timestamp of the get chat with prompt (the moment n8n started processing the call)")
79
88
  trigger_timestamp: Optional[datetime] = Field(default=None, description="The timestamp of the trigger that started the call, if it's a manual trigger, it will be the timestamp of the manual trigger, if it's a follow up, it will be the timestamp of the follow up, if it's a user message, it will be the timestamp of the user message")
80
89
  last_call_cot_id: Optional[StrObjectId] = Field(default=None)
@@ -1,4 +1,4 @@
1
- from pydantic import BaseModel, Field, field_validator
1
+ from pydantic import BaseModel, Field, field_validator, ConfigDict
2
2
  from typing import Optional, Any, ClassVar, List
3
3
  from letschatty.models.base_models.chatty_asset_model import CompanyAssetModel, ChattyAssetPreview
4
4
  import re
@@ -212,7 +212,11 @@ class CollectedData(BaseModel):
212
212
  name: Optional[str] = Field(default=None, description="Customer's name")
213
213
  email: Optional[str] = Field(default=None, description="Customer's email address")
214
214
  phone: Optional[str] = Field(default=None, description="Customer's phone number")
215
- document_id: Optional[str] = Field(default=None, description="Customer's DNI/ID number")
215
+ document_id: Optional[str] = Field(
216
+ default=None,
217
+ alias="dni",
218
+ description="Customer's DNI/ID number"
219
+ )
216
220
 
217
221
  # Generic key-value store for any other collected fields
218
222
  additional_fields: dict[str, Any] = Field(
@@ -220,6 +224,9 @@ class CollectedData(BaseModel):
220
224
  description="Additional collected fields as key-value pairs"
221
225
  )
222
226
 
227
+ model_config = ConfigDict(
228
+ populate_by_name=True
229
+ )
223
230
 
224
231
  @classmethod
225
232
  def example(cls) -> dict:
@@ -849,6 +849,13 @@ class ChatService:
849
849
  chat.client.email = collected_data.email
850
850
  updated_fields.append("email")
851
851
 
852
+ if collected_data.phone:
853
+ if chat.client.lead_form_data is None:
854
+ chat.client.lead_form_data = {}
855
+ if chat.client.lead_form_data.get("phone") != collected_data.phone:
856
+ chat.client.lead_form_data["phone"] = collected_data.phone
857
+ updated_fields.append("phone")
858
+
852
859
  if collected_data.document_id and chat.client.document_id != collected_data.document_id:
853
860
  chat.client.document_id = collected_data.document_id
854
861
  updated_fields.append("document_id")
@@ -873,4 +880,4 @@ class ChatService:
873
880
  context=ChattyContext(chain_of_thought_id=execution_context.chain_of_thought_id)
874
881
  )
875
882
 
876
- return chat.client.lead_form_data
883
+ return chat.client.lead_form_data
File without changes
File without changes