django-unicom 25.2.32.dev0__tar.gz → 25.2.32.dev2__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 (189) hide show
  1. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/PKG-INFO +1 -1
  2. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/django_unicom.egg-info/PKG-INFO +1 -1
  3. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/services/llm_handler.py +3 -3
  4. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/_version.py +2 -2
  5. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/tool_call.py +7 -9
  6. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/llm/tool_calls.py +2 -1
  7. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/.cursor/rules/match_codebase_style.mdc +0 -0
  8. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/.cursor/rules/preserve_comments_and_irrelevant_code.mdc +0 -0
  9. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/.cursor/rules/require_context_before_changes.mdc +0 -0
  10. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/Dockerfile +0 -0
  11. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/MANIFEST.in +0 -0
  12. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/Makefile +0 -0
  13. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/README.md +0 -0
  14. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/conftest.py +0 -0
  15. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/data/definitions/bots/__init__.py +0 -0
  16. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/data/definitions/tools/__init__.py +0 -0
  17. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/django_unicom.egg-info/SOURCES.txt +0 -0
  18. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/django_unicom.egg-info/dependency_links.txt +0 -0
  19. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/django_unicom.egg-info/requires.txt +0 -0
  20. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/django_unicom.egg-info/top_level.txt +0 -0
  21. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/docker-compose.yaml +0 -0
  22. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/entrypoint.sh +0 -0
  23. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/manage.py +0 -0
  24. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/pyproject.toml +0 -0
  25. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/pytest.ini +0 -0
  26. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/requirements.txt +0 -0
  27. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/send_test_buttons.py +0 -0
  28. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/setup.cfg +0 -0
  29. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/setup.py +0 -0
  30. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/test_comprehensive_buttons.py +0 -0
  31. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/test_dkim_security.py +0 -0
  32. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/tests/__init__.py +0 -0
  33. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/tests/test_email_authentication.py +0 -0
  34. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/tests/test_email_live.py +0 -0
  35. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/tests/test_email_request_processing.py +0 -0
  36. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/tests/test_telegram_live.py +0 -0
  37. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/tests/utils.py +0 -0
  38. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/__init__.py +0 -0
  39. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/admin.py +0 -0
  40. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/apps.py +0 -0
  41. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/migrations/0001_initial.py +0 -0
  42. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/migrations/0002_tool_bot_tools.py +0 -0
  43. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/migrations/0003_encryptedcredential.py +0 -0
  44. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/migrations/0004_credentialfielddefinition_and_more.py +0 -0
  45. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/migrations/0005_alter_credentialfielddefinition_key.py +0 -0
  46. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/migrations/__init__.py +0 -0
  47. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/models.py +0 -0
  48. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/services/__init__.py +0 -0
  49. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/services/credentials.py +0 -0
  50. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/services/tool_result_handler.py +0 -0
  51. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/tests.py +0 -0
  52. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/urls.py +0 -0
  53. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unibot/views.py +0 -0
  54. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/__init__.py +0 -0
  55. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/__init__.py +0 -0
  56. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/account_admin.py +0 -0
  57. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/channel_admin.py +0 -0
  58. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/chat_admin.py +0 -0
  59. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/draft_message_admin.py +0 -0
  60. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/email_inline_image_admin.py +0 -0
  61. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/filters.py +0 -0
  62. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/member_admin.py +0 -0
  63. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/message_admin.py +0 -0
  64. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/message_template_admin.py +0 -0
  65. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/admin/request_admin.py +0 -0
  66. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/apps.py +0 -0
  67. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/management/__init__.py +0 -0
  68. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/management/commands/__init__.py +0 -0
  69. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/management/commands/mail_inbox_listen.py +0 -0
  70. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/management/commands/run_as_llm_chat.py +0 -0
  71. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/management/commands/send_scheduled_messages.py +0 -0
  72. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/management/commands/start_imap_listeners.py +0 -0
  73. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0001_initial.py +0 -0
  74. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0002_emailinlineimage.py +0 -0
  75. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0003_alter_emailinlineimage_email_message.py +0 -0
  76. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0004_messagetemplateinlineimage.py +0 -0
  77. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0005_emailinlineimage_hash_and_more.py +0 -0
  78. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0006_channel_created_at_channel_created_by_and_more.py +0 -0
  79. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0007_message_imap_uid.py +0 -0
  80. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0008_add_all_members_group.py +0 -0
  81. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0009_add_tool_call_types.py +0 -0
  82. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0010_request_initial_request_request_llm_calls_count_and_more.py +0 -0
  83. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0011_toolcall_add_message_reference.py +0 -0
  84. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0012_message_response_to_tool_call_and_more.py +0 -0
  85. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0013_callbackexecution.py +0 -0
  86. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0014_rename_authorized_user_to_intended_account.py +0 -0
  87. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0015_simplify_callback_execution.py +0 -0
  88. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/0016_callbackexecution_tool_call.py +0 -0
  89. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/migrations/__init__.py +0 -0
  90. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/__init__.py +0 -0
  91. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/account.py +0 -0
  92. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/account_chat.py +0 -0
  93. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/callback_execution.py +0 -0
  94. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/channel.py +0 -0
  95. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/chat.py +0 -0
  96. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/constants.py +0 -0
  97. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/draft_message.py +0 -0
  98. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/fields.py +0 -0
  99. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/member.py +0 -0
  100. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/member_group.py +0 -0
  101. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/message.py +0 -0
  102. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/message_template.py +0 -0
  103. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/request.py +0 -0
  104. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/request_category.py +0 -0
  105. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/models/update.py +0 -0
  106. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/__init__.py +0 -0
  107. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/chat_summary.py +0 -0
  108. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/crossplatform/__init__.py +0 -0
  109. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/crossplatform/reply_to_message.py +0 -0
  110. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/crossplatform/scheduler.py +0 -0
  111. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/crossplatform/send_message.py +0 -0
  112. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/decode_base64_image.py +0 -0
  113. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/IMAP_thread_manager.py +0 -0
  114. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/__init__.py +0 -0
  115. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/email_tracking.py +0 -0
  116. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/listen_to_IMAP.py +0 -0
  117. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/quote_filter.py +0 -0
  118. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/replace_cid_images_with_base64.py +0 -0
  119. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/save_email_message.py +0 -0
  120. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/send_email_message.py +0 -0
  121. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/email/validate_email_config.py +0 -0
  122. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/get_public_origin.py +0 -0
  123. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/html_inline_images.py +0 -0
  124. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/internal/__init__.py +0 -0
  125. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/internal/generate_text_message_data.py +0 -0
  126. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/internal/save_internal_message.py +0 -0
  127. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/internal/send_internal_message.py +0 -0
  128. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/llm/README.md +0 -0
  129. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/llm/__init__.py +0 -0
  130. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/__init__.py +0 -0
  131. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/answer_callback_query.py +0 -0
  132. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/create_inline_keyboard.py +0 -0
  133. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/download_file.py +0 -0
  134. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/edit_telegram_message.py +0 -0
  135. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/escape_markdown.py +0 -0
  136. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/get_file_path.py +0 -0
  137. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/handle_telegram_callback.py +0 -0
  138. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/save_telegram_message.py +0 -0
  139. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/send_telegram_message.py +0 -0
  140. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/set_telegram_webhook.py +0 -0
  141. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/start_typing_in_telegram.py +0 -0
  142. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/telegram/stop_typing_in_telegram.py +0 -0
  143. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/whatsapp/__init__.py +0 -0
  144. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/whatsapp/get_template.py +0 -0
  145. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/whatsapp/save_whatsapp_message.py +0 -0
  146. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/whatsapp/save_whatsapp_message_status.py +0 -0
  147. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/services/whatsapp/send_whatsapp_message.py +0 -0
  148. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/signals.py +0 -0
  149. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/static/unicom/css/bootstrap_scoped.css +0 -0
  150. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/static/unicom/css/draft_message_mobile.css +0 -0
  151. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/static/unicom/js/channel_config.js +0 -0
  152. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/static/unicom/js/tinymce_ai_template.js +0 -0
  153. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/static/unicom/js/tinymce_init.js +0 -0
  154. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/chat/change_list.html +0 -0
  155. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/chat/compose.html +0 -0
  156. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/chat_history.html +0 -0
  157. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/forms/email_message_form.html +0 -0
  158. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/forms/text_message_form.html +0 -0
  159. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/includes/ai_template_modal.html +0 -0
  160. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/includes/loading_indicators.html +0 -0
  161. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/includes/message_actions_menu.html +0 -0
  162. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/admin/unicom/messagetemplate/change_form.html +0 -0
  163. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/templates/code_templates/category_processor.py +0 -0
  164. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/urls.py +0 -0
  165. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/__init__.py +0 -0
  166. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/chat_history_view.py +0 -0
  167. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/compose_view.py +0 -0
  168. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/email_tracking.py +0 -0
  169. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/inline_image.py +0 -0
  170. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/message_template.py +0 -0
  171. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/telegram_webhook.py +0 -0
  172. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom/views/whatsapp_webhook.py +0 -0
  173. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/__init__.py +0 -0
  174. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/apps.py +0 -0
  175. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/asgi.py +0 -0
  176. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/callback_handlers.py +0 -0
  177. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/__init__.py +0 -0
  178. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/bots/__init__.py +0 -0
  179. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/bots/assistant_bot.py +0 -0
  180. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/tools/__init__.py +0 -0
  181. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/tools/interactive_menu.py +0 -0
  182. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/tools/interval_alarm.py +0 -0
  183. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/tools/ip_lookup.py +0 -0
  184. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/tools/simple_timer.py +0 -0
  185. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/definitions/tools/system_info.py +0 -0
  186. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/settings.py +0 -0
  187. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/test_button_handlers.py +0 -0
  188. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/urls.py +0 -0
  189. {django_unicom-25.2.32.dev0 → django_unicom-25.2.32.dev2}/unicom_project/wsgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-unicom
3
- Version: 25.2.32.dev0
3
+ Version: 25.2.32.dev2
4
4
  Summary: Unified communication layer for Django (Telegram, WhatsApp, Email)
5
5
  Home-page: https://github.com/meena-erian/unicom
6
6
  Author: Meena (Menas) Erian
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-unicom
3
- Version: 25.2.32.dev0
3
+ Version: 25.2.32.dev2
4
4
  Summary: Unified communication layer for Django (Telegram, WhatsApp, Email)
5
5
  Home-page: https://github.com/meena-erian/unicom
6
6
  Author: Meena (Menas) Erian
@@ -256,11 +256,11 @@ def run_llm_handler(
256
256
  # Execute tool with tool_call in context
257
257
  result = tool_map_with_context[fname](**fargs)
258
258
 
259
- # If tool returns None, it handles its own response - mark as IN_PROGRESS
259
+ # If tool returns None, it handles its own response - mark as ACTIVE
260
260
  if result is None:
261
- tool_call_instance.start_processing()
261
+ tool_call_instance.mark_active()
262
262
  if debug:
263
- print(f"[DEBUG] {fname} returned None - tool will handle response later (marked IN_PROGRESS)")
263
+ print(f"[DEBUG] {fname} returned None - tool is now ACTIVE and waiting for async response")
264
264
  continue
265
265
 
266
266
  # Handle file results (existing code)
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '25.2.32.dev0'
32
- __version_tuple__ = version_tuple = (25, 2, 32, 'dev0')
31
+ __version__ = version = '25.2.32.dev2'
32
+ __version_tuple__ = version_tuple = (25, 2, 32, 'dev2')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -106,11 +106,12 @@ class ToolCall(models.Model):
106
106
 
107
107
  Behavior:
108
108
  - For PENDING status: Marks as COMPLETED, creates child request if final
109
+ - For IN_PROGRESS status: Marks as COMPLETED, creates child request if final
109
110
  - For ACTIVE status: Logs response but keeps ACTIVE, no child request
110
111
  - For other statuses: Raises ValueError
111
112
  """
112
113
  # Validate current status
113
- if self.status not in ['PENDING', 'ACTIVE']:
114
+ if self.status not in ['PENDING', 'IN_PROGRESS', 'ACTIVE']:
114
115
  raise ValueError(f"Cannot respond to tool call with status: {self.status}")
115
116
 
116
117
  # Create tool response message for LLM context - reply to the tool call message
@@ -119,15 +120,12 @@ class ToolCall(models.Model):
119
120
  )
120
121
 
121
122
  # Handle response based on current status
122
- if self.status == 'ACTIVE':
123
- # Periodic response - just log, don't change status or create child
124
- return tool_response_msg, None
125
-
126
- # PENDING status - mark as completed and check for final response
127
123
  with transaction.atomic():
128
- self.status = 'COMPLETED'
129
- self.completed_at = timezone.now()
130
- self.save(update_fields=['status', 'completed_at'])
124
+ # Only mark as completed if not ACTIVE (ACTIVE stays active for reusable buttons)
125
+ if self.status != 'ACTIVE':
126
+ self.status = 'COMPLETED'
127
+ self.completed_at = timezone.now()
128
+ self.save(update_fields=['status', 'completed_at'])
131
129
 
132
130
  # Check if this is the final response (all PENDING tool calls now COMPLETED)
133
131
  pending_calls = self.request.tool_calls.filter(status='PENDING').count()
@@ -104,8 +104,9 @@ def save_tool_response(chat, call_id, result, tool_name, user=None, reply_to_mes
104
104
  result_summary = result_summary[:97] + "..."
105
105
 
106
106
  # Create the tool response message
107
+ timestamp = int(timezone.now().timestamp() * 1000)
107
108
  message = Message.objects.create(
108
- id=f"tool_response_{chat.id}_{call_id}",
109
+ id=f"tool_response_{chat.id}_{call_id}_{timestamp}",
109
110
  channel=chat.channel,
110
111
  platform=chat.platform,
111
112
  sender=system_account,