letschatty 0.4.485__tar.gz → 0.4.487__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 (389) hide show
  1. {letschatty-0.4.485 → letschatty-0.4.487}/PKG-INFO +1 -1
  2. {letschatty-0.4.485 → letschatty-0.4.487}/pyproject.toml +1 -1
  3. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/chat.py +1 -0
  4. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/preview.py +1 -0
  5. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/media/__init__.py +1 -1
  6. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/media/media_asset.py +28 -0
  7. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/values/value_errors.py +22 -4
  8. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/custom_exceptions/custom_exceptions.py +9 -1
  9. {letschatty-0.4.485 → letschatty-0.4.487}/LICENSE +0 -0
  10. {letschatty-0.4.485 → letschatty-0.4.487}/README.md +0 -0
  11. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/__init__.py +0 -0
  12. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/__init__.py +0 -0
  13. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/ai_microservices/__init__.py +0 -0
  14. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/ai_microservices/expected_output.py +0 -0
  15. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/ai_microservices/lambda_events.py +0 -0
  16. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/ai_microservices/lambda_invokation_types.py +0 -0
  17. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/ai_microservices/n8n_ai_agents_payload.py +0 -0
  18. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/ai_microservices/openai_payloads.py +0 -0
  19. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/__init__.py +0 -0
  20. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/__init__.py +0 -0
  21. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/base.py +0 -0
  22. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/ai_agent_chat.py +0 -0
  23. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/ai_agent_escalate_event.py +0 -0
  24. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/ai_agent_execution_event.py +0 -0
  25. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/business_area.py +0 -0
  26. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/chat_based_event.py +0 -0
  27. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/chat_client.py +0 -0
  28. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/chat_context.py +0 -0
  29. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/chat_funnel.py +0 -0
  30. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/chat_reset.py +0 -0
  31. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/chat_status.py +0 -0
  32. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/contact_point.py +0 -0
  33. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/continuous_conversation.py +0 -0
  34. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/highlight.py +0 -0
  35. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/message.py +0 -0
  36. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/messages_intent_context.py +0 -0
  37. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/product_chat.py +0 -0
  38. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/quality_scoring.py +0 -0
  39. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/sale.py +0 -0
  40. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/tag_chat.py +0 -0
  41. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/chat_based_events/workflow.py +0 -0
  42. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/company_based_events/asset_events.py +0 -0
  43. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/company_based_events/company_events.py +0 -0
  44. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/company_based_events/user_events.py +0 -0
  45. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/event_type_to_classes.py +0 -0
  46. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/event_types.py +0 -0
  47. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/user_notification_intent/HOW-TO-ADD.md +0 -0
  48. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/user_notification_intent/__init__.py +0 -0
  49. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/user_notification_intent/builders.py +0 -0
  50. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/user_notification_intent/event.py +0 -0
  51. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/events/user_notification_intent/metadata.py +0 -0
  52. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/metrics/__init_.py +0 -0
  53. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/metrics/daily_contact_points.py +0 -0
  54. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/metrics/daily_new_chats.py +0 -0
  55. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/metrics/daily_sent_templates_grouped.py +0 -0
  56. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/metrics/sales_roadmap.py +0 -0
  57. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/metrics/sent_templates.py +0 -0
  58. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/smart_messages/friendly_code_for_source.py +0 -0
  59. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/smart_messages/topic.py +0 -0
  60. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/smart_messages/topic_message.py +0 -0
  61. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/__init__.py +0 -0
  62. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/coexistence_echo_source.py +0 -0
  63. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/contact_import_source.py +0 -0
  64. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/google_ad_utm_source.py +0 -0
  65. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/helpers.py +0 -0
  66. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/meta_post.py +0 -0
  67. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/other_source.py +0 -0
  68. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/pure_ad.py +0 -0
  69. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/pure_ad_utm_source.py +0 -0
  70. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/source_base.py +0 -0
  71. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/template_source.py +0 -0
  72. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/topic_default_source.py +0 -0
  73. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/utm_source.py +0 -0
  74. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/utms/pixel_attribution.py +0 -0
  75. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/utms/referer_info.py +0 -0
  76. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/utms/utm_query_params.py +0 -0
  77. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/analytics/sources/whatsapp_default_source.py +0 -0
  78. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/auth/jwt.py +0 -0
  79. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/__init__.py +0 -0
  80. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/ai_agent_component.py +0 -0
  81. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/chatty_asset_model.py +0 -0
  82. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/helpers.py +0 -0
  83. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/related_asset_usage_example.py +0 -0
  84. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/singleton.py +0 -0
  85. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/update_model_interface.py +0 -0
  86. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/base_models/validate_timestamps_and_id.py +0 -0
  87. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/cache/README.md +0 -0
  88. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/cache/__init__.py +0 -0
  89. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/cache/cache_protocol.py +0 -0
  90. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/cache/no_cache.py +0 -0
  91. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/cache/redis_cache.py +0 -0
  92. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/cache/redis_connection.py +0 -0
  93. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/channels/channel.py +0 -0
  94. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/assets_assigned_to_chat.py +0 -0
  95. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/chat_status_modifications.py +0 -0
  96. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/chat_with_assets.py +0 -0
  97. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/client.py +0 -0
  98. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/coexistence_import_sync.py +0 -0
  99. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/continuous_conversation.py +0 -0
  100. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/executive_followup.py +0 -0
  101. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/filter_parameters.py +0 -0
  102. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/flow_link_state.py +0 -0
  103. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/highlight.py +0 -0
  104. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/quality_scoring.py +0 -0
  105. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/scheduled_messages.py +0 -0
  106. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/temporary_chat.py +0 -0
  107. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/chat/time_left.py +0 -0
  108. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/CRM/business_area.py +0 -0
  109. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/CRM/funnel.py +0 -0
  110. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/__init__.py +0 -0
  111. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/__init__.py +0 -0
  112. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/cintia_execution.py +0 -0
  113. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/events/__init__.py +0 -0
  114. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/events/cintia_event_type.py +0 -0
  115. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/__init__.py +0 -0
  116. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/chat_vector.py +0 -0
  117. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/chatty_asset_embedding.py +0 -0
  118. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/chatty_trigger.py +0 -0
  119. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/cintia_feedback.py +0 -0
  120. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/cintia_trigger.py +0 -0
  121. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/lambda_trigger_events.py +0 -0
  122. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/__init__.py +0 -0
  123. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_assistant_output.py +0 -0
  124. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_audio_transcriber_output.py +0 -0
  125. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_customer_success_output.py +0 -0
  126. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_decision_output.py +0 -0
  127. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_human_capture_output.py +0 -0
  128. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_responder_output.py +0 -0
  129. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_smart_follow_output.py +0 -0
  130. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/cintia_tagger_output.py +0 -0
  131. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/CINTIA/models/outputs/executive_decision_output.py +0 -0
  132. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/__init__.py +0 -0
  133. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/ai_agent_message_draft.py +0 -0
  134. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/ai_agents_decision_output.py +0 -0
  135. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/ai_specific_instruction.py +0 -0
  136. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/chain_of_thought_in_chat.py +0 -0
  137. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/chat_example.py +0 -0
  138. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/chat_example_test.py +0 -0
  139. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent.py +0 -0
  140. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_config_for_automation.py +0 -0
  141. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_in_chat.py +0 -0
  142. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/chatty_ai_mode.py +0 -0
  143. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/context_item.py +0 -0
  144. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/cs_scenario.py +0 -0
  145. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/data_collection_config.py +0 -0
  146. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/faq.py +0 -0
  147. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/fast_answer_reference.py +0 -0
  148. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/follow_up_strategy.py +0 -0
  149. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/get_chat_with_prompt_response.py +0 -0
  150. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/instruction.py +0 -0
  151. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/knowleadge_base_components.py +0 -0
  152. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/n8n_agents_info.py +0 -0
  153. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/n8n_schema_incoming_message_output.json +0 -0
  154. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/n8n_schema_smart_follow_up_output.json +0 -0
  155. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/pre_qualify_config.py +0 -0
  156. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/ai_agents_v2/tag_reference.py +0 -0
  157. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/asset_model_registry.py +0 -0
  158. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/assignment/__init__.py +0 -0
  159. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/assignment/assignment_assets.py +0 -0
  160. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/automation.py +0 -0
  161. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/chat_assets.py +0 -0
  162. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/chatty_fast_answers/__init__.py +0 -0
  163. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/chatty_fast_answers/chatty_fast_answer.py +0 -0
  164. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/company_assets.py +0 -0
  165. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/contact_point.py +0 -0
  166. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/embeddable.py +0 -0
  167. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/filter_criteria.py +0 -0
  168. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/flow.py +0 -0
  169. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/launch/__init__.py +0 -0
  170. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/launch/launch.py +0 -0
  171. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/launch/scheduled_communication.py +0 -0
  172. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/launch/subscription.py +0 -0
  173. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/media/file.py +0 -0
  174. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/notification.py +0 -0
  175. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/product.py +0 -0
  176. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/product_parameter_embed_config.py +0 -0
  177. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/recordatorio.py +0 -0
  178. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/sale.py +0 -0
  179. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/tag.py +0 -0
  180. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/users/agent_chats_snapshot.py +0 -0
  181. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/users/permissions.py +0 -0
  182. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/users/user.py +0 -0
  183. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/users/user_asset_permission.py +0 -0
  184. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/assets/workflow_execution.py +0 -0
  185. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/company_chats_snapshot.py +0 -0
  186. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/company_messaging_settgins.py +0 -0
  187. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/conversation_topic.py +0 -0
  188. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/empresa.py +0 -0
  189. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/form_field.py +0 -0
  190. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/insight.py +0 -0
  191. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/product_sync_status.py +0 -0
  192. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/shopify/company_shopify_integration.py +0 -0
  193. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/shopify/shopify_product_sync_status.py +0 -0
  194. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/shopify/shopify_webhook_topics.py +0 -0
  195. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/sync_status_enum.py +0 -0
  196. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/tienda_nube/company_tienda_nube_integration.py +0 -0
  197. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/tienda_nube/tienda_nube_product_sync_status.py +0 -0
  198. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/integrations/tienda_nube/tienda_nube_webhook_topics.py +0 -0
  199. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/company/notifications/notification.py +0 -0
  200. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/copilot/links.py +0 -0
  201. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/data_base/README.md +0 -0
  202. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/data_base/__init__.py +0 -0
  203. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/data_base/collection_interface.py +0 -0
  204. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/data_base/mongo_connection.py +0 -0
  205. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/execution/__init__.py +0 -0
  206. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/execution/execution.py +0 -0
  207. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/execution/executor.py +0 -0
  208. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/forms/company/auth0_company_registration_form.py +0 -0
  209. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/forms/company/meta_register.py +0 -0
  210. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/__init__.py +0 -0
  211. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/__init__.py +0 -0
  212. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/audio.py +0 -0
  213. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/base/__init__.py +0 -0
  214. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/base/chatty_message_json.py +0 -0
  215. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/base/message_base.py +0 -0
  216. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/base/message_draft.py +0 -0
  217. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/button.py +0 -0
  218. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/central_notification.py +0 -0
  219. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/contact.py +0 -0
  220. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/document.py +0 -0
  221. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/image.py +0 -0
  222. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/interactive.py +0 -0
  223. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/location.py +0 -0
  224. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/reaction.py +0 -0
  225. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/__init__.py +0 -0
  226. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_audio.py +0 -0
  227. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_button.py +0 -0
  228. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_central.py +0 -0
  229. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_contacts.py +0 -0
  230. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_document.py +0 -0
  231. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_image.py +0 -0
  232. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_interactive.py +0 -0
  233. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_location.py +0 -0
  234. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_media.py +0 -0
  235. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_reaction.py +0 -0
  236. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_sticker.py +0 -0
  237. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_text.py +0 -0
  238. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_content/content_video.py +0 -0
  239. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_context/__init__.py +0 -0
  240. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_context/chatty_context.py +0 -0
  241. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_referal/__init__.py +0 -0
  242. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/schema/chatty_referal/chatty_referal.py +0 -0
  243. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/sticker.py +0 -0
  244. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/text.py +0 -0
  245. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/chatty_messages/video.py +0 -0
  246. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/__init__.py +0 -0
  247. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/chatty_template_campaign.py +0 -0
  248. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/filled_data_from_frontend.py +0 -0
  249. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/meta_template.py +0 -0
  250. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/payload_for_sending_template.py +0 -0
  251. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/raw_meta_template.py +0 -0
  252. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/recipient_of_template_campaign.py +0 -0
  253. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/message_templates/required_for_frontend_templates.py +0 -0
  254. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_base_notification_json.py +0 -0
  255. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_echo_json.py +0 -0
  256. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_error_json.py +0 -0
  257. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_history_json.py +0 -0
  258. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_inexistent_json.py +0 -0
  259. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_message_json.py +0 -0
  260. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_state_sync_json.py +0 -0
  261. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_status_json.py +0 -0
  262. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_template_webhook_json.py +0 -0
  263. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/meta_unknown_json.py +0 -0
  264. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/__init__.py +0 -0
  265. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/button_content.py +0 -0
  266. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/contacts_content.py +0 -0
  267. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/interactive_content.py +0 -0
  268. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/location_content.py +0 -0
  269. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/multimedia_content.py +0 -0
  270. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/order_content.py +0 -0
  271. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/reaction_content.py +0 -0
  272. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/system_content.py +0 -0
  273. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/content_messages/text_content.py +0 -0
  274. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/values/__init__.py +0 -0
  275. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/values/value_messages.py +0 -0
  276. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/messages/meta_message_model/schema/values/value_statuses.py +0 -0
  277. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/push_notifications/__init__.py +0 -0
  278. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/push_notifications/enums.py +0 -0
  279. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/push_notifications/user_device.py +0 -0
  280. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/__init__.py +0 -0
  281. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/custom_exceptions/__init__.py +0 -0
  282. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/definitions.py +0 -0
  283. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/CRUD_operations.py +0 -0
  284. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/__init__.py +0 -0
  285. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/channel_types.py +0 -0
  286. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/chats_actions.py +0 -0
  287. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/country.py +0 -0
  288. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/deletion_type.py +0 -0
  289. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/executor_types.py +0 -0
  290. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/identifier.py +0 -0
  291. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/message_status_types.py +0 -0
  292. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/message_types.py +0 -0
  293. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/phone_number.py +0 -0
  294. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/serializer_type.py +0 -0
  295. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/source_types.py +0 -0
  296. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/models/utils/types/typealiases.py +0 -0
  297. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/__init__.py +0 -0
  298. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/context_builder_v2.py +0 -0
  299. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/cot_follow_up_examples.py +0 -0
  300. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/followup_schema.json +0 -0
  301. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/smart_follow_up_context_builder_v2.py +0 -0
  302. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/smart_follow_up_service_v2.py +0 -0
  303. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/tool_descriptions/assign_chat_to_ai_agent_itself.json +0 -0
  304. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/tool_descriptions/human_handover.json +0 -0
  305. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_agents/tool_descriptions.py +0 -0
  306. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/ai_components_service.py +0 -0
  307. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chat/chat_extractors.py +0 -0
  308. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chat/chat_service.py +0 -0
  309. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chat/client_service.py +0 -0
  310. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chat/conversation_topics_service.py +0 -0
  311. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chat/whatsapp_apb_mode_service.py +0 -0
  312. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/__init__.py +0 -0
  313. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/asset_service.py +0 -0
  314. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/assets_collections.py +0 -0
  315. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/base_container_with_collection.py +0 -0
  316. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/__init__.py +0 -0
  317. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/ai_agent_collection.py +0 -0
  318. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/ai_agent_in_chat_collection.py +0 -0
  319. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/ai_component_collection.py +0 -0
  320. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/chain_of_thought_collection.py +0 -0
  321. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/chat_collection.py +0 -0
  322. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/contact_point_collection.py +0 -0
  323. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/fast_answer_collection.py +0 -0
  324. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/filter_criteria_collection.py +0 -0
  325. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/flow_collection.py +0 -0
  326. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/form_field_collection.py +0 -0
  327. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/media_asset_collection.py +0 -0
  328. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/product_collection.py +0 -0
  329. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/sale_collection.py +0 -0
  330. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/source_collection.py +0 -0
  331. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/tag_collection.py +0 -0
  332. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/topic_collection.py +0 -0
  333. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/collections/user_collection.py +0 -0
  334. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/documentation_diagram.png +0 -0
  335. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/example_usage.py +0 -0
  336. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/readme.md +0 -0
  337. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/__init__.py +0 -0
  338. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/ai_agent_in_chat_service.py +0 -0
  339. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/ai_agent_service.py +0 -0
  340. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/chain_of_thought_service.py +0 -0
  341. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/chat_service.py +0 -0
  342. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/contact_point_service.py +0 -0
  343. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/fast_answer_service.py +0 -0
  344. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/filter_criteria_service.py +0 -0
  345. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/flow_service.py +0 -0
  346. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/product_service.py +0 -0
  347. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/sale_service.py +0 -0
  348. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/source_service.py +0 -0
  349. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/tag_service.py +0 -0
  350. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/topic_service.py +0 -0
  351. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/chatty_assets/services/user_service.py +0 -0
  352. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/concurrent/concurrent.py +0 -0
  353. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/contact_points/contact_point_service.py +0 -0
  354. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/continuous_conversation_service/continuous_conversation_helper.py +0 -0
  355. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/events/__init__.py +0 -0
  356. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/events/events_manager.py +0 -0
  357. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/__init__.py +0 -0
  358. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/analytics/ai_agent_event_factory.py +0 -0
  359. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/analytics/contact_point_factory.py +0 -0
  360. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/analytics/events_factory.py +0 -0
  361. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/analytics/smart_messages/topics_factory.py +0 -0
  362. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/analytics/sources/helpers.py +0 -0
  363. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/analytics/sources/source_factory.py +0 -0
  364. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/chats/chat_factory.py +0 -0
  365. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/chatty_fast_answers/__init__.py +0 -0
  366. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/chatty_fast_answers/chatty_fast_answers_factory.py +0 -0
  367. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/clients/client_factory.py +0 -0
  368. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/company/__init__.py +0 -0
  369. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/company/empresa_factory.py +0 -0
  370. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/lambda_ai_orchestrartor/lambda_events_factory.py +0 -0
  371. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/__init__.py +0 -0
  372. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/central_notification_factory.py +0 -0
  373. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/chatty_message_factory.py +0 -0
  374. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/child_db_message_factory.py +0 -0
  375. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/child_request_message.py +0 -0
  376. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/from_template_hot_fix.py +0 -0
  377. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/message_templates/template_factory.py +0 -0
  378. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/messages/message_templates/test.py +0 -0
  379. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/meta_notifications/__init__.py +0 -0
  380. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/meta_notifications/meta_notification_factory.py +0 -0
  381. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/factories/product_factory.py +0 -0
  382. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/filter_criteria_service.py +0 -0
  383. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/messages_helpers/__init__.py +0 -0
  384. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/messages_helpers/get_caption_or_body_or_preview.py +0 -0
  385. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/scheduled_messages_service/scheduled_messages_helpers.py +0 -0
  386. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/template_campaigns/template_campaign_service.py +0 -0
  387. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/users/agent_service.py +0 -0
  388. {letschatty-0.4.485 → letschatty-0.4.487}/src/letschatty/services/users/user_factory.py +0 -0
  389. {letschatty-0.4.485 → letschatty-0.4.487}/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.485
3
+ Version: 0.4.487
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.485"
3
+ version = "0.4.487"
4
4
  description = "Models and custom classes to work across the Chattyverse"
5
5
  authors = ["Axel <axel@letschatty.com>"]
6
6
  license = "MIT"
@@ -50,6 +50,7 @@ class Chat(CompanyAssetModel):
50
50
  suggested_messages: List[MessageDraft] = Field(default_factory=list)
51
51
  topics_timeline: List[TopicTimelineEntry] = Field(default_factory=list, description="Timeline of conversation topics throughout the conversation")
52
52
  active_funnel: Optional[ActiveFunnel] = Field(default=None, description="Current active funnel for this chat")
53
+ proximo_recordatorio_at: Optional[datetime] = Field(default=None, frozen=True, description="FROZEN A PROPOSITO: lo escribe SOLO el $set del recalculo, nunca un save del chat. Sin frozen, cualquier guardado de documento completo (`update` mergea {**actuales, **entrantes}) lo pisaria con el valor que tuviera en memoria ese flujo, que puede ser anterior al recalculo — el badge desapareceria sin que nadie toque un recordatorio. Vencimiento del recordatorio SIN RESOLVER mas cercano de este chat, o None si no hay ninguno. Espejo del minimo sobre la coleccion `recordatorios`, para que la bandeja pueda mostrar el badge, filtrar y ordenar sin un join contra otra coleccion. Es una FECHA y no un booleano a proposito: 'vencido' se evalua al momento de la query (`<= ahora`), asi que el que se mueve es el reloj y no el dato, y no hace falta ningun barrido que lo actualice.")
53
54
  model_config = ConfigDict(extra="ignore")
54
55
 
55
56
  @property
@@ -68,6 +68,7 @@ class ChatPreview(BaseModel):
68
68
  scheduled_message : Optional[ScheduledMessageStatus] = Field(default=None)
69
69
  tags : Optional[List[TagPreview]] = Field(default=[])
70
70
  chatty_ai_agent_in_chat_status: Optional[ChattyAiAgentStatusPreview] = Field(default=None)
71
+ proximo_recordatorio_at: Optional[datetime] = Field(default=None, description="Vencimiento del recordatorio sin resolver mas cercano del chat. El frontend compara contra su propio reloj para decidir si va badge y de que color: el backend no decide que es hoy, porque el huso que importa es el del agente.")
71
72
  @property
72
73
  def assigned_agent_id(self) -> Optional[StrObjectId]:
73
74
  if self.area_status != Area.WITH_AGENT:
@@ -1,2 +1,2 @@
1
1
  from .file import MediaFile, MediaType
2
- from .media_asset import MediaAsset, MediaAssetPreview, MediaOrigin
2
+ from .media_asset import MediaAsset, MediaAssetPreview, MediaOrigin, MetaCompatStatus
@@ -20,6 +20,18 @@ class MediaOrigin(StrEnum):
20
20
  SYSTEM = "system" # reserved (logos, avatars)
21
21
 
22
22
 
23
+ class MetaCompatStatus(StrEnum):
24
+ """Whether this asset is known to satisfy Meta's media constraints.
25
+
26
+ Only videos are ever normalized, so this stays None for every other type — and
27
+ for every row written before the normalizer shipped. None means "not checked",
28
+ NOT "incompatible": the send path re-probes anything that isn't OK.
29
+ """
30
+ OK = "ok" # probed and compliant (either natively or after normalization)
31
+ OPTIMIZING = "optimizing" # handed off to the video-normalizer lambda; not sendable yet
32
+ FAILED = "failed" # normalization could not produce a compliant file
33
+
34
+
23
35
  class MediaAssetPreview(ChattyAssetPreview):
24
36
  type: MediaType
25
37
  url: str
@@ -28,6 +40,8 @@ class MediaAssetPreview(ChattyAssetPreview):
28
40
  is_starred: bool = False
29
41
  width: Optional[int] = None
30
42
  height: Optional[int] = None
43
+ # The picker needs this to grey out a video that is still being normalized.
44
+ meta_compat: Optional["MetaCompatStatus"] = None
31
45
 
32
46
  @classmethod
33
47
  def get_projection(cls) -> dict[str, Any]:
@@ -39,6 +53,7 @@ class MediaAssetPreview(ChattyAssetPreview):
39
53
  "is_starred": 1,
40
54
  "width": 1,
41
55
  "height": 1,
56
+ "meta_compat": 1,
42
57
  }
43
58
 
44
59
  @classmethod
@@ -57,6 +72,7 @@ class MediaAssetPreview(ChattyAssetPreview):
57
72
  is_starred=asset.is_starred,
58
73
  width=asset.width,
59
74
  height=asset.height,
75
+ meta_compat=asset.meta_compat,
60
76
  )
61
77
 
62
78
 
@@ -83,6 +99,18 @@ class MediaAsset(CompanyAssetModel):
83
99
  height: Optional[int] = None
84
100
  duration_ms: Optional[int] = None
85
101
 
102
+ # Meta compatibility — videos only (see MetaCompatStatus). None on every other
103
+ # type and on every row predating the normalizer.
104
+ meta_compat: Optional[MetaCompatStatus] = None
105
+ meta_compat_started_at: Optional[datetime] = Field(
106
+ default=None,
107
+ description=(
108
+ "When OPTIMIZING was stamped. The lambda can die without ever calling back, "
109
+ "so readers treat a row stuck here past the lambda timeout as FAILED rather "
110
+ "than waiting forever."
111
+ ),
112
+ )
113
+
86
114
  # provenance
87
115
  origin: MediaOrigin = MediaOrigin.UPLOADED
88
116
  uploaded_by: Optional[str] = Field(default=None, description="user_id of uploader/promoter; None for seeded rows")
@@ -52,6 +52,11 @@ def get_error_details(code: int) -> Optional[Dict[str, str]]:
52
52
  FRIENDLY_AGENT_TEXT_ES: Dict[int, str] = {
53
53
  131047: "El cliente no escribió en las últimas 24 hs. Enviá una plantilla para retomar la conversación.",
54
54
  131051: "Tipo de mensaje no soportado para este envío.",
55
+ # Media (/media endpoint). Without these two, EVERY media rejection — bad codec,
56
+ # oversized, corrupt — collapsed into the generic _FRIENDLY_DEFAULT, which is why
57
+ # video failures were misdiagnosed as a size problem for months.
58
+ 131052: "WhatsApp no pudo descargar el archivo. Volvé a subirlo.",
59
+ 131053: "WhatsApp rechazó el archivo por su formato. Los videos tienen que ser MP4 con video H.264 y audio AAC.",
55
60
  131026: "El número no puede recibir mensajes de WhatsApp.",
56
61
  131021: "No se puede enviar un mensaje a este número.",
57
62
  131049: "WhatsApp no entregó el mensaje por políticas de Meta.",
@@ -68,6 +73,10 @@ FRIENDLY_AGENT_TEXT_ES: Dict[int, str] = {
68
73
  }
69
74
 
70
75
  _FRIENDLY_DEFAULT = "No se pudo enviar el mensaje."
76
+ _FRIENDLY_MEDIA_REJECTED = (
77
+ "WhatsApp rechazó el archivo. Los videos tienen que ser MP4 con video H.264 y audio AAC, "
78
+ "y pesar menos de 16 MB."
79
+ )
71
80
  _FRIENDLY_AUTH = "La conexión con WhatsApp expiró. Reconectá la cuenta."
72
81
  _FRIENDLY_TRANSIENT = "Error temporal de WhatsApp. Se reintentó sin éxito, probá de nuevo en unos minutos."
73
82
  _FRIENDLY_4XX = "WhatsApp rechazó el mensaje."
@@ -75,15 +84,24 @@ _FRIENDLY_4XX = "WhatsApp rechazó el mensaje."
75
84
 
76
85
  def friendly_failure_reason(*, meta_code: Optional[int] = None,
77
86
  http_status: Optional[int] = None,
78
- transient: bool = False) -> str:
87
+ transient: bool = False,
88
+ media_upload: bool = False,
89
+ meta_message: Optional[str] = None) -> str:
79
90
  """Map a failed outbound send to a short, agent-facing Spanish reason.
80
91
 
81
- Precedence: a known Meta error code wins; then HTTP 401 (auth/expired token);
82
- then transient/5xx; then any other 4xx; else a generic fallback. Pure function,
83
- no side effects — safe to call anywhere and trivial to unit-test.
92
+ Precedence: a known Meta error code wins; then a refused media upload; then HTTP 401
93
+ (auth/expired token); then transient/5xx; then any other 4xx; else a generic fallback.
94
+ Pure function, no side effects — safe to call anywhere and trivial to unit-test.
84
95
  """
85
96
  if meta_code is not None and meta_code in FRIENDLY_AGENT_TEXT_ES:
86
97
  return FRIENDLY_AGENT_TEXT_ES[meta_code]
98
+ if media_upload:
99
+ # A file Meta refused. It answers /media with generic codes far more often than
100
+ # the documented 131052/131053, so keying only on the code would drop the agent
101
+ # back to "WhatsApp rechazó el mensaje." — which is exactly the blind spot that
102
+ # made video failures unreadable. Say it was the file, and quote Meta verbatim.
103
+ base = _FRIENDLY_MEDIA_REJECTED
104
+ return f"{base} (WhatsApp: {meta_message})" if meta_message else base
87
105
  if http_status == 401 or meta_code == 190:
88
106
  return _FRIENDLY_AUTH
89
107
  if transient or (http_status is not None and 500 <= http_status < 600):
@@ -52,13 +52,21 @@ class UnauthorizedOrigin(CustomException):
52
52
  super().__init__(message, status_code=status_code, **context_data)
53
53
 
54
54
  class WhatsAppAPIError(CustomException):
55
- def __init__(self, message="WhatsApp API error", status_code=400, meta_code: Optional[int] = None, transient: bool = False, **context_data):
55
+ def __init__(self, message="WhatsApp API error", status_code=400, meta_code: Optional[int] = None, transient: bool = False, media_upload: bool = False, meta_message: Optional[str] = None, **context_data):
56
56
  super().__init__(message, status_code=status_code, **context_data)
57
57
  # meta_code: Meta's numeric error code parsed from the response body (when present).
58
58
  # transient: True for retryable transport failures (clean 5xx). Both default-safe so
59
59
  # existing call sites that don't pass them keep working.
60
60
  self.meta_code = meta_code
61
61
  self.transient = transient
62
+ # media_upload: the failure came from POST /media (the file itself was refused),
63
+ # not from POST /messages. Meta answers those with generic codes (100 "Invalid
64
+ # parameter") much more often than the 131052/131053 the async webhook uses, so
65
+ # the code alone cannot tell an agent the FILE was the problem — this flag can.
66
+ self.media_upload = media_upload
67
+ # meta_message: Meta's own explanation, kept verbatim. friendly_failure_reason
68
+ # only maps known codes, so without this the specific text was always discarded.
69
+ self.meta_message = meta_message
62
70
 
63
71
  class WhatsAppPayloadValidationError(Exception):
64
72
  def __init__(self, message="WhatsApp payload validation error", status_code=400, **context_data):
File without changes
File without changes