microsoft-agents-activity 0.4.0.dev16__tar.gz → 0.5.0__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.

Potentially problematic release.


This version of microsoft-agents-activity might be problematic. Click here for more details.

Files changed (212) hide show
  1. microsoft_agents_activity-0.5.0/LICENSE +21 -0
  2. microsoft_agents_activity-0.5.0/PKG-INFO +173 -0
  3. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/__init__.py +12 -0
  4. microsoft_agents_activity-0.5.0/microsoft_agents/activity/_channel_id_field_mixin.py +96 -0
  5. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/_load_configuration.py +3 -0
  6. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/_model_utils.py +3 -0
  7. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/_type_aliases.py +3 -1
  8. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/action_types.py +3 -0
  9. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/activity.py +132 -11
  10. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/activity_event_names.py +3 -0
  11. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/activity_importance.py +3 -0
  12. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/activity_types.py +3 -0
  13. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/adaptive_card_invoke_action.py +3 -0
  14. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/adaptive_card_invoke_response.py +3 -0
  15. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/adaptive_card_invoke_value.py +3 -0
  16. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/agents_model.py +3 -0
  17. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/animation_card.py +3 -0
  18. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/attachment.py +3 -0
  19. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/attachment_data.py +3 -0
  20. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/attachment_info.py +3 -0
  21. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/attachment_layout_types.py +3 -0
  22. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/attachment_view.py +3 -0
  23. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/audio_card.py +3 -0
  24. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/basic_card.py +3 -0
  25. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/caller_id_constants.py +3 -0
  26. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/card_action.py +3 -0
  27. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/card_image.py +3 -0
  28. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/channel_account.py +3 -0
  29. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/channel_adapter_protocol.py +3 -0
  30. microsoft_agents_activity-0.5.0/microsoft_agents/activity/channel_id.py +95 -0
  31. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/channels.py +2 -2
  32. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/contact_relation_update_action_types.py +3 -0
  33. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/conversation_account.py +3 -0
  34. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/conversation_members.py +3 -0
  35. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/conversation_parameters.py +3 -0
  36. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/conversation_reference.py +12 -3
  37. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/conversation_resource_response.py +3 -0
  38. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/conversation_update_types.py +3 -0
  39. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/conversations_result.py +3 -0
  40. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/delivery_modes.py +3 -0
  41. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/end_of_conversation_codes.py +3 -0
  42. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/entity/__init__.py +7 -0
  43. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/entity/entity.py +4 -3
  44. microsoft_agents_activity-0.5.0/microsoft_agents/activity/entity/entity_types.py +14 -0
  45. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/entity/geo_coordinates.py +9 -3
  46. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/entity/mention.py +5 -2
  47. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/entity/place.py +9 -3
  48. microsoft_agents_activity-0.5.0/microsoft_agents/activity/entity/product_info.py +20 -0
  49. microsoft_agents_activity-0.5.0/microsoft_agents/activity/entity/thing.py +21 -0
  50. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/error.py +3 -0
  51. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/error_response.py +3 -0
  52. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/expected_replies.py +3 -0
  53. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/fact.py +3 -0
  54. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/hero_card.py +3 -0
  55. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/inner_http_error.py +3 -0
  56. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/installation_update_action_types.py +3 -0
  57. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/invoke_response.py +3 -0
  58. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/media_card.py +3 -0
  59. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/media_event_value.py +3 -0
  60. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/media_url.py +3 -0
  61. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/message_reaction.py +3 -0
  62. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/message_reaction_types.py +3 -0
  63. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/message_update_types.py +3 -0
  64. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/oauth_card.py +3 -0
  65. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/paged_members_result.py +3 -0
  66. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/receipt_card.py +3 -0
  67. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/receipt_item.py +3 -0
  68. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/resource_response.py +3 -0
  69. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/role_types.py +3 -0
  70. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/semantic_action.py +4 -1
  71. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/semantic_actions_states.py +3 -0
  72. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/sign_in_resource.py +3 -0
  73. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/signin_card.py +3 -0
  74. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/suggested_actions.py +3 -0
  75. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/text_format_types.py +3 -0
  76. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/text_highlight.py +3 -0
  77. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/thumbnail_card.py +3 -0
  78. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/thumbnail_url.py +3 -0
  79. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_exchange_invoke_request.py +3 -0
  80. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_exchange_invoke_response.py +3 -0
  81. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_exchange_resource.py +3 -0
  82. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_exchange_state.py +3 -0
  83. microsoft_agents_activity-0.5.0/microsoft_agents/activity/token_or_sign_in_resource_response.py +21 -0
  84. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_post_resource.py +3 -0
  85. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_request.py +3 -0
  86. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/transcript.py +3 -0
  87. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/turn_context_protocol.py +3 -0
  88. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/video_card.py +3 -0
  89. microsoft_agents_activity-0.5.0/microsoft_agents_activity.egg-info/PKG-INFO +173 -0
  90. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents_activity.egg-info/SOURCES.txt +7 -0
  91. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/pyproject.toml +10 -3
  92. microsoft_agents_activity-0.5.0/readme.md +153 -0
  93. microsoft_agents_activity-0.4.0.dev16/PKG-INFO +0 -11
  94. microsoft_agents_activity-0.4.0.dev16/microsoft_agents/activity/entity/thing.py +0 -15
  95. microsoft_agents_activity-0.4.0.dev16/microsoft_agents_activity.egg-info/PKG-INFO +0 -11
  96. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/entity/ai_entity.py +0 -0
  97. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/input_hints.py +0 -0
  98. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/sign_in_constants.py +0 -0
  99. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/__init__.py +0 -0
  100. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/app_based_link_query.py +0 -0
  101. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/batch_failed_entries_response.py +0 -0
  102. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/batch_failed_entry.py +0 -0
  103. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/batch_operation_response.py +0 -0
  104. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/batch_operation_state_response.py +0 -0
  105. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/bot_config_auth.py +0 -0
  106. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/cache_info.py +0 -0
  107. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/cancel_operation_response.py +0 -0
  108. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/channel_info.py +0 -0
  109. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/config_auth_response.py +0 -0
  110. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/config_response.py +0 -0
  111. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/config_response_base.py +0 -0
  112. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/config_task_response.py +0 -0
  113. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/conversation_list.py +0 -0
  114. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/file_consent_card.py +0 -0
  115. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/file_consent_card_response.py +0 -0
  116. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/file_download_info.py +0 -0
  117. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/file_info_card.py +0 -0
  118. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/file_upload_info.py +0 -0
  119. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_details.py +0 -0
  120. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_details_base.py +0 -0
  121. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_end_event_details.py +0 -0
  122. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_event_details.py +0 -0
  123. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_info.py +0 -0
  124. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_notification.py +0 -0
  125. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_notification_base.py +0 -0
  126. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_notification_channel_data.py +0 -0
  127. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_notification_recipient_failure_info.py +0 -0
  128. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_notification_response.py +0 -0
  129. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_participant_info.py +0 -0
  130. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_participants_event_details.py +0 -0
  131. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_stage_surface.py +0 -0
  132. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_start_event_details.py +0 -0
  133. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/meeting_tab_icon_surface.py +0 -0
  134. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload.py +0 -0
  135. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_app.py +0 -0
  136. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_attachment.py +0 -0
  137. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_body.py +0 -0
  138. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_conversation.py +0 -0
  139. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_from.py +0 -0
  140. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_mention.py +0 -0
  141. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_reaction.py +0 -0
  142. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/message_actions_payload_user.py +0 -0
  143. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_action.py +0 -0
  144. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_action_response.py +0 -0
  145. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_attachment.py +0 -0
  146. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_parameter.py +0 -0
  147. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_query.py +0 -0
  148. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_query_options.py +0 -0
  149. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_response.py +0 -0
  150. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_result.py +0 -0
  151. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/messaging_extension_suggested_action.py +0 -0
  152. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/notification_info.py +0 -0
  153. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card.py +0 -0
  154. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_action_base.py +0 -0
  155. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_action_card.py +0 -0
  156. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_action_query.py +0 -0
  157. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_date_input.py +0 -0
  158. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_fact.py +0 -0
  159. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_http_post.py +0 -0
  160. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_image.py +0 -0
  161. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_input_base.py +0 -0
  162. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_multichoice_input.py +0 -0
  163. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_multichoice_input_choice.py +0 -0
  164. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_open_uri.py +0 -0
  165. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_open_uri_target.py +0 -0
  166. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_section.py +0 -0
  167. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_text_input.py +0 -0
  168. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/o365_connector_card_view_action.py +0 -0
  169. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/on_behalf_of.py +0 -0
  170. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/read_receipt_info.py +0 -0
  171. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/signin_state_verification_query.py +0 -0
  172. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/surface.py +0 -0
  173. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_context.py +0 -0
  174. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_entity_context.py +0 -0
  175. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_request.py +0 -0
  176. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_response.py +0 -0
  177. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_response_card.py +0 -0
  178. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_response_cards.py +0 -0
  179. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_response_payload.py +0 -0
  180. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_submit.py +0 -0
  181. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_submit_data.py +0 -0
  182. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tab_suggested_actions.py +0 -0
  183. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/targeted_meeting_notification.py +0 -0
  184. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/targeted_meeting_notification_value.py +0 -0
  185. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_card_response.py +0 -0
  186. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_continue_response.py +0 -0
  187. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_message_response.py +0 -0
  188. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_request.py +0 -0
  189. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_request_context.py +0 -0
  190. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_response.py +0 -0
  191. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_response_base.py +0 -0
  192. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/task_module_task_info.py +0 -0
  193. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/team_details.py +0 -0
  194. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/team_info.py +0 -0
  195. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_batch_operation_response.py +0 -0
  196. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_channel_account.py +0 -0
  197. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_channel_data.py +0 -0
  198. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_channel_data_settings.py +0 -0
  199. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_meeting_info.py +0 -0
  200. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_meeting_member.py +0 -0
  201. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_meeting_participant.py +0 -0
  202. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_member.py +0 -0
  203. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/teams_paged_members_result.py +0 -0
  204. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/tenant_info.py +0 -0
  205. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/teams/user_meeting_details.py +0 -0
  206. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_response.py +0 -0
  207. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents/activity/token_status.py +0 -0
  208. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents_activity.egg-info/dependency_links.txt +0 -0
  209. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents_activity.egg-info/requires.txt +0 -0
  210. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/microsoft_agents_activity.egg-info/top_level.txt +0 -0
  211. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/setup.cfg +0 -0
  212. {microsoft_agents_activity-0.4.0.dev16 → microsoft_agents_activity-0.5.0}/setup.py +0 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE
@@ -0,0 +1,173 @@
1
+ Metadata-Version: 2.4
2
+ Name: microsoft-agents-activity
3
+ Version: 0.5.0
4
+ Summary: A protocol library for Microsoft Agents
5
+ Author: Microsoft Corporation
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/microsoft/Agents
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: Operating System :: OS Independent
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: pydantic>=2.10.4
19
+ Dynamic: license-file
20
+
21
+ # Microsoft Agents Activity
22
+
23
+ [![PyPI version](https://img.shields.io/pypi/v/microsoft-agents-activity)](https://pypi.org/project/microsoft-agents-activity/)
24
+
25
+ Core types and schemas for building conversational AI agents that work across Microsoft 365 platforms like Teams, Copilot Studio, and Webchat.
26
+
27
+ # What is this?
28
+
29
+ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehensive framework for building enterprise-grade conversational AI agents. The SDK enables developers to create intelligent agents that work across multiple platforms including Microsoft Teams, M365 Copilot, Copilot Studio, and web chat, with support for third-party integrations like Slack, Facebook Messenger, and Twilio.
30
+
31
+ ## Release Notes
32
+ <table style="width:100%">
33
+ <tr>
34
+ <th style="width:20%">Version</th>
35
+ <th style="width:20%">Date</th>
36
+ <th style="width:60%">Release Notes</th>
37
+ </tr>
38
+ <tr>
39
+ <td>0.5.0</td>
40
+ <td>2025-10-22</td>
41
+ <td>
42
+ <a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md">
43
+ 0.5.0 Release Notes
44
+ </a>
45
+ </td>
46
+ </tr>
47
+ </table>
48
+
49
+ ## Packages Overview
50
+
51
+ We offer the following PyPI packages to create conversational experiences based on Agents:
52
+
53
+ | Package Name | PyPI Version | Description |
54
+ |--------------|-------------|-------------|
55
+ | `microsoft-agents-activity` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-activity)](https://pypi.org/project/microsoft-agents-activity/) | Types and validators implementing the Activity protocol spec. |
56
+ | `microsoft-agents-hosting-core` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-hosting-core)](https://pypi.org/project/microsoft-agents-hosting-core/) | Core library for Microsoft Agents hosting. |
57
+ | `microsoft-agents-hosting-aiohttp` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-hosting-aiohttp)](https://pypi.org/project/microsoft-agents-hosting-aiohttp/) | Configures aiohttp to run the Agent. |
58
+ | `microsoft-agents-hosting-teams` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-hosting-teams)](https://pypi.org/project/microsoft-agents-hosting-teams/) | Provides classes to host an Agent for Teams. |
59
+ | `microsoft-agents-storage-blob` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-storage-blob)](https://pypi.org/project/microsoft-agents-storage-blob/) | Extension to use Azure Blob as storage. |
60
+ | `microsoft-agents-storage-cosmos` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-storage-cosmos)](https://pypi.org/project/microsoft-agents-storage-cosmos/) | Extension to use CosmosDB as storage. |
61
+ | `microsoft-agents-authentication-msal` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-authentication-msal)](https://pypi.org/project/microsoft-agents-authentication-msal/) | MSAL-based authentication for Microsoft Agents. |
62
+
63
+ Additionally we provide a Copilot Studio Client, to interact with Agents created in CopilotStudio:
64
+
65
+ | Package Name | PyPI Version | Description |
66
+ |--------------|-------------|-------------|
67
+ | `microsoft-agents-copilotstudio-client` | [![PyPI](https://img.shields.io/pypi/v/microsoft-agents-copilotstudio-client)](https://pypi.org/project/microsoft-agents-copilotstudio-client/) | Direct to Engine client to interact with Agents created in CopilotStudio |
68
+
69
+ ## Architecture
70
+
71
+ The SDK follows a modular architecture:
72
+ - **Activity Layer**: Protocol definitions for cross-platform messaging
73
+ - **Hosting Layer**: Core agent lifecycle, middleware, and web hosting
74
+ - **Storage Layer**: Persistent state management with Azure backends
75
+ - **Authentication Layer**: Secure identity and token management
76
+ - **Integration Layer**: Platform-specific adapters (Teams, Copilot Studio)
77
+
78
+ ## Installation
79
+
80
+ ```bash
81
+ pip install microsoft-agents-activity
82
+ ```
83
+
84
+ ## Quick Start
85
+ Code below taken from the [Quick Start](https://github.com/microsoft/Agents/tree/main/samples/python/quickstart) sample.
86
+ ```python
87
+ @AGENT_APP.conversation_update("membersAdded")
88
+ async def on_members_added(context: TurnContext, _state: TurnState):
89
+ await context.send_activity(
90
+ "Welcome to the empty agent! "
91
+ "This agent is designed to be a starting point for your own agent development."
92
+ )
93
+ return True
94
+
95
+
96
+ @AGENT_APP.message(re.compile(r"^hello$"))
97
+ async def on_hello(context: TurnContext, _state: TurnState):
98
+ await context.send_activity("Hello!")
99
+
100
+
101
+ @AGENT_APP.activity("message")
102
+ async def on_message(context: TurnContext, _state: TurnState):
103
+ await context.send_activity(f"you said: {context.activity.text}")
104
+ ```
105
+
106
+ ## Common Use Cases
107
+
108
+ ### Rich Messages with Cards
109
+ Code below taken from the [Cards](https://github.com/microsoft/Agents/tree/main/samples/python/cards) sample.
110
+
111
+
112
+ ```python
113
+ @staticmethod
114
+ async def send_animation_card(context: TurnContext):
115
+ card = CardFactory.animation_card(
116
+ AnimationCard(
117
+ title="Microsoft Agents Framework",
118
+ image=ThumbnailUrl(
119
+ url="https://i.giphy.com/Ki55RUbOV5njy.gif", alt="Cute Robot"
120
+ ),
121
+ media=[MediaUrl(url="https://i.giphy.com/Ki55RUbOV5njy.gif")],
122
+ subtitle="Animation Card",
123
+ text="This is an example of an animation card using a gif.",
124
+ aspect="16:9",
125
+ duration="PT2M",
126
+ )
127
+ )
128
+ await CardMessages.send_activity(context, card)
129
+
130
+ @staticmethod
131
+ async def send_activity(context: TurnContext, card: Attachment):
132
+ activity = Activity(type=ActivityTypes.message, attachments=[card])
133
+ await context.send_activity(activity)
134
+ ```
135
+
136
+ ## Activity Types
137
+
138
+ The library supports different types of communication:
139
+
140
+ - **Message** - Regular chat messages with text, cards, attachments
141
+ - **Typing** - Show typing indicators
142
+ - **ConversationUpdate** - People joining/leaving chats
143
+ - **Event** - Custom events and notifications
144
+ - **Invoke** - Direct function calls
145
+ - **EndOfConversation** - End chat sessions
146
+
147
+ ## Key Features
148
+
149
+ ✅ **Type-safe** - Built with Pydantic for automatic validation
150
+ ✅ **Rich content** - Support for cards, images, videos, and interactive elements
151
+ ✅ **Teams ready** - Full Microsoft Teams integration
152
+ ✅ **Cross-platform** - Works across all Microsoft 365 chat platforms
153
+ ✅ **Migration friendly** - Easy upgrade from Bot Framework
154
+
155
+ # Quick Links
156
+
157
+ - 📦 [All SDK Packages on PyPI](https://pypi.org/search/?q=microsoft-agents)
158
+ - 📖 [Complete Documentation](https://aka.ms/agents)
159
+ - 💡 [Python Samples Repository](https://github.com/microsoft/Agents/tree/main/samples/python)
160
+ - 🐛 [Report Issues](https://github.com/microsoft/Agents-for-python/issues)
161
+
162
+ # Sample Applications
163
+ Explore working examples in the [Python samples repository](https://github.com/microsoft/Agents/tree/main/samples/python):
164
+
165
+ |Name|Description|README|
166
+ |----|----|----|
167
+ |Quickstart|Simplest agent|[Quickstart](https://github.com/microsoft/Agents/blob/main/samples/python/quickstart/README.md)|
168
+ |Auto Sign In|Simple OAuth agent using Graph and GitHub|[auto-signin](https://github.com/microsoft/Agents/blob/main/samples/python/auto-signin/README.md)|
169
+ |OBO Authorization|OBO flow to access a Copilot Studio Agent|[obo-authorization](https://github.com/microsoft/Agents/blob/main/samples/python/obo-authorization/README.md)|
170
+ |Semantic Kernel Integration|A weather agent built with Semantic Kernel|[semantic-kernel-multiturn](https://github.com/microsoft/Agents/blob/main/samples/python/semantic-kernel-multiturn/README.md)|
171
+ |Streaming Agent|Streams OpenAI responses|[azure-ai-streaming](https://github.com/microsoft/Agents/blob/main/samples/python/azureai-streaming/README.md)|
172
+ |Copilot Studio Client|Console app to consume a Copilot Studio Agent|[copilotstudio-client](https://github.com/microsoft/Agents/blob/main/samples/python/copilotstudio-client/README.md)|
173
+ |Cards Agent|Agent that uses rich cards to enhance conversation design |[cards](https://github.com/microsoft/Agents/blob/main/samples/python/cards/README.md)|
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from .agents_model import AgentsModel
2
5
  from .action_types import ActionTypes
3
6
  from .activity import Activity
@@ -17,6 +20,8 @@ from .card_action import CardAction
17
20
  from .card_image import CardImage
18
21
  from .channels import Channels
19
22
  from .channel_account import ChannelAccount
23
+ from ._channel_id_field_mixin import _ChannelIdFieldMixin
24
+ from .channel_id import ChannelId
20
25
  from .conversation_account import ConversationAccount
21
26
  from .conversation_members import ConversationMembers
22
27
  from .conversation_parameters import ConversationParameters
@@ -26,6 +31,7 @@ from .conversations_result import ConversationsResult
26
31
  from .expected_replies import ExpectedReplies
27
32
  from .entity import (
28
33
  Entity,
34
+ EntityTypes,
29
35
  AIEntity,
30
36
  ClientCitation,
31
37
  ClientCitationAppearance,
@@ -36,6 +42,7 @@ from .entity import (
36
42
  SensitivityPattern,
37
43
  GeoCoordinates,
38
44
  Place,
45
+ ProductInfo,
39
46
  Thing,
40
47
  )
41
48
  from .error import Error
@@ -62,6 +69,7 @@ from .thumbnail_url import ThumbnailUrl
62
69
  from .token_exchange_invoke_request import TokenExchangeInvokeRequest
63
70
  from .token_exchange_invoke_response import TokenExchangeInvokeResponse
64
71
  from .token_exchange_state import TokenExchangeState
72
+ from .token_or_sign_in_resource_response import TokenOrSignInResourceResponse
65
73
  from .token_request import TokenRequest
66
74
  from .token_response import TokenResponse
67
75
  from .token_status import TokenStatus
@@ -114,6 +122,8 @@ __all__ = [
114
122
  "CardImage",
115
123
  "Channels",
116
124
  "ChannelAccount",
125
+ "ChannelId",
126
+ "_ChannelIdFieldMixin",
117
127
  "ConversationAccount",
118
128
  "ConversationMembers",
119
129
  "ConversationParameters",
@@ -144,6 +154,7 @@ __all__ = [
144
154
  "OAuthCard",
145
155
  "PagedMembersResult",
146
156
  "Place",
157
+ "ProductInfo",
147
158
  "ReceiptCard",
148
159
  "ReceiptItem",
149
160
  "ResourceResponse",
@@ -185,4 +196,5 @@ __all__ = [
185
196
  "load_configuration_from_env",
186
197
  "ChannelAdapterProtocol",
187
198
  "TurnContextProtocol",
199
+ "TokenOrSignInResourceResponse",
188
200
  ]
@@ -0,0 +1,96 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
4
+ from __future__ import annotations
5
+
6
+ import logging
7
+ from typing import Optional, Any
8
+
9
+ from pydantic import (
10
+ ModelWrapValidatorHandler,
11
+ SerializerFunctionWrapHandler,
12
+ computed_field,
13
+ model_validator,
14
+ model_serializer,
15
+ )
16
+
17
+ from .channel_id import ChannelId
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ # can be generalized in the future, if needed
23
+ class _ChannelIdFieldMixin:
24
+ """A mixin to add a computed field channel_id of type ChannelId to a Pydantic model."""
25
+
26
+ _channel_id: Optional[ChannelId] = None
27
+
28
+ # required to define the setter below
29
+ @computed_field(return_type=Optional[ChannelId], alias="channelId")
30
+ @property
31
+ def channel_id(self) -> Optional[ChannelId]:
32
+ """Gets the _channel_id field"""
33
+ return self._channel_id
34
+
35
+ # necessary for backward compatibility
36
+ # previously, channel_id was directly assigned with strings
37
+ @channel_id.setter
38
+ def channel_id(self, value: Any):
39
+ """Sets the channel_id after validating it as a ChannelId model."""
40
+ if isinstance(value, ChannelId):
41
+ self._channel_id = value
42
+ elif isinstance(value, str):
43
+ self._channel_id = ChannelId(value)
44
+ else:
45
+ raise ValueError(
46
+ f"Invalid type for channel_id: {type(value)}. "
47
+ "Expected ChannelId or str."
48
+ )
49
+
50
+ def _set_validated_channel_id(self, data: Any) -> None:
51
+ """Sets the channel_id after validating it as a ChannelId model."""
52
+ if "channelId" in data:
53
+ self.channel_id = data["channelId"]
54
+ elif "channel_id" in data:
55
+ self.channel_id = data["channel_id"]
56
+
57
+ @model_validator(mode="wrap")
58
+ @classmethod
59
+ def _validate_channel_id(
60
+ cls, data: Any, handler: ModelWrapValidatorHandler
61
+ ) -> _ChannelIdFieldMixin:
62
+ """Validate the _channel_id field after model initialization.
63
+
64
+ :return: The model instance itself.
65
+ """
66
+ try:
67
+ model = handler(data)
68
+ model._set_validated_channel_id(data)
69
+ return model
70
+ except Exception:
71
+ logging.error("Model %s failed to validate with data %s", cls, data)
72
+ raise
73
+
74
+ def _remove_serialized_unset_channel_id(
75
+ self, serialized: dict[str, object]
76
+ ) -> None:
77
+ """Remove the _channel_id field if it is not set."""
78
+ if not self._channel_id:
79
+ if "channelId" in serialized:
80
+ del serialized["channelId"]
81
+ elif "channel_id" in serialized:
82
+ del serialized["channel_id"]
83
+
84
+ @model_serializer(mode="wrap")
85
+ def _serialize_channel_id(
86
+ self, handler: SerializerFunctionWrapHandler
87
+ ) -> dict[str, object]:
88
+ """Serialize the model using Pydantic's standard serialization.
89
+
90
+ :param handler: The serialization handler provided by Pydantic.
91
+ :return: A dictionary representing the serialized model.
92
+ """
93
+ serialized = handler(self)
94
+ if self: # serialization can be called with None
95
+ self._remove_serialized_unset_channel_id(serialized)
96
+ return serialized
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from typing import Any
2
5
 
3
6
 
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from abc import ABC
2
5
  from typing import Any, Callable
3
6
 
@@ -1,5 +1,7 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from typing import Annotated
2
5
  from pydantic import StringConstraints
3
6
 
4
-
5
7
  NonEmptyString = Annotated[str, StringConstraints(min_length=1)]
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from enum import Enum
2
5
 
3
6
 
@@ -1,7 +1,24 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
4
+ from __future__ import annotations
5
+
6
+ import logging
1
7
  from copy import copy
2
8
  from datetime import datetime, timezone
3
- from typing import Optional
4
- from pydantic import Field, SerializeAsAny
9
+ from typing import Optional, Any
10
+
11
+ from pydantic import (
12
+ Field,
13
+ SerializeAsAny,
14
+ model_serializer,
15
+ model_validator,
16
+ SerializerFunctionWrapHandler,
17
+ ModelWrapValidatorHandler,
18
+ computed_field,
19
+ ValidationError,
20
+ )
21
+
5
22
  from .activity_types import ActivityTypes
6
23
  from .channel_account import ChannelAccount
7
24
  from .conversation_account import ConversationAccount
@@ -11,9 +28,11 @@ from .suggested_actions import SuggestedActions
11
28
  from .attachment import Attachment
12
29
  from .entity import (
13
30
  Entity,
31
+ EntityTypes,
14
32
  Mention,
15
33
  AIEntity,
16
34
  ClientCitation,
35
+ ProductInfo,
17
36
  SensitivityUsageInfo,
18
37
  )
19
38
  from .conversation_reference import ConversationReference
@@ -21,12 +40,16 @@ from .text_highlight import TextHighlight
21
40
  from .semantic_action import SemanticAction
22
41
  from .agents_model import AgentsModel
23
42
  from .role_types import RoleTypes
43
+ from ._channel_id_field_mixin import _ChannelIdFieldMixin
44
+ from .channel_id import ChannelId
24
45
  from ._model_utils import pick_model, SkipNone
25
46
  from ._type_aliases import NonEmptyString
26
47
 
48
+ logger = logging.getLogger(__name__)
49
+
27
50
 
28
51
  # TODO: A2A Agent 2 is responding with None as id, had to mark it as optional (investigate)
29
- class Activity(AgentsModel):
52
+ class Activity(AgentsModel, _ChannelIdFieldMixin):
30
53
  """An Activity is the basic communication type for the protocol.
31
54
 
32
55
  :param type: Contains the activity type. Possible values include:
@@ -47,8 +70,8 @@ class Activity(AgentsModel):
47
70
  :type local_timezone: str
48
71
  :param service_url: Contains the URL that specifies the channel's service endpoint. Set by the channel.
49
72
  :type service_url: str
50
- :param channel_id: Contains an ID that uniquely identifies the channel. Set by the channel.
51
- :type channel_id: str
73
+ :param channel_id: Contains an ID that uniquely identifies the channel (and possibly the sub-channel). Set by the channel.
74
+ :type channel_id: ~microsoft_agents.activity.ChannelId
52
75
  :param from_property: Identifies the sender of the message.
53
76
  :type from_property: ~microsoft_agents.activity.ChannelAccount
54
77
  :param conversation: Identifies the conversation to which the activity belongs.
@@ -133,7 +156,6 @@ class Activity(AgentsModel):
133
156
  local_timestamp: datetime = None
134
157
  local_timezone: NonEmptyString = None
135
158
  service_url: NonEmptyString = None
136
- channel_id: NonEmptyString = None
137
159
  from_property: ChannelAccount = Field(None, alias="from")
138
160
  conversation: ConversationAccount = None
139
161
  recipient: ChannelAccount = None
@@ -170,6 +192,99 @@ class Activity(AgentsModel):
170
192
  semantic_action: SemanticAction = None
171
193
  caller_id: NonEmptyString = None
172
194
 
195
+ @model_validator(mode="wrap")
196
+ @classmethod
197
+ def _validate_channel_id(
198
+ cls, data: Any, handler: ModelWrapValidatorHandler[Activity]
199
+ ) -> Activity:
200
+ """Validate the Activity, ensuring consistency between channel_id.sub_channel and productInfo entity.
201
+
202
+ :param data: The input data to validate.
203
+ :param handler: The validation handler provided by Pydantic.
204
+ :return: The validated Activity instance.
205
+ """
206
+ try:
207
+ # run Pydantic's standard validation first
208
+ activity = handler(data)
209
+
210
+ # needed to assign to a computed field
211
+ # needed because we override the mixin validator
212
+ activity._set_validated_channel_id(data)
213
+
214
+ # sync sub_channel with productInfo entity
215
+ product_info = activity.get_product_info_entity()
216
+ if product_info and activity.channel_id:
217
+ if (
218
+ activity.channel_id.sub_channel
219
+ and activity.channel_id.sub_channel != product_info.id
220
+ ):
221
+ raise Exception(
222
+ "Conflict between channel_id.sub_channel and productInfo entity"
223
+ )
224
+ activity.channel_id = ChannelId(
225
+ channel=activity.channel_id.channel,
226
+ sub_channel=product_info.id,
227
+ )
228
+
229
+ return activity
230
+ except ValidationError as exc:
231
+ logger.error("Validation error for Activity: %s", exc, exc_info=True)
232
+ raise
233
+
234
+ @model_serializer(mode="wrap")
235
+ def _serialize_sub_channel_data(
236
+ self, handler: SerializerFunctionWrapHandler
237
+ ) -> dict[str, object]:
238
+ """Serialize the Activity, ensuring consistency between channel_id.sub_channel and productInfo entity.
239
+
240
+ :param handler: The serialization handler provided by Pydantic.
241
+ :return: A dictionary representing the serialized Activity.
242
+ """
243
+
244
+ # run Pydantic's standard serialization first
245
+ serialized = handler(self)
246
+ if not self: # serialization can be called with None
247
+ return serialized
248
+
249
+ # find the ProductInfo entity
250
+ product_info = None
251
+ for i, entity in enumerate(serialized.get("entities") or []):
252
+ if entity.get("type", "") == EntityTypes.PRODUCT_INFO:
253
+ product_info = entity
254
+ break
255
+
256
+ # self.channel_id is the source of truth for serialization
257
+ if self.channel_id and self.channel_id.sub_channel:
258
+ if product_info and product_info.get("id") != self.channel_id.sub_channel:
259
+ raise Exception(
260
+ "Conflict between channel_id.sub_channel and productInfo entity"
261
+ )
262
+ elif not product_info:
263
+ if not serialized.get("entities"):
264
+ serialized["entities"] = []
265
+ serialized["entities"].append(
266
+ {
267
+ "type": EntityTypes.PRODUCT_INFO,
268
+ "id": self.channel_id.sub_channel,
269
+ }
270
+ )
271
+
272
+ # simply serialized channelId value in Activity and relatesTo
273
+ if "channelId" in serialized:
274
+ serialized["channelId"] = self.channel_id.channel
275
+ elif "channel_id" in serialized:
276
+ serialized["channel_id"] = self.channel_id.channel
277
+
278
+ elif product_info: # remove productInfo entity if sub_channel is not set
279
+ del serialized["entities"][i]
280
+ if not serialized["entities"]: # after removal above, list may be empty
281
+ del serialized["entities"]
282
+
283
+ # necessary due to computed_field serialization
284
+ self._remove_serialized_unset_channel_id(serialized)
285
+
286
+ return serialized
287
+
173
288
  def apply_conversation_reference(
174
289
  self, reference: ConversationReference, is_incoming: bool = False
175
290
  ):
@@ -429,7 +544,6 @@ class Activity(AgentsModel):
429
544
  def create_trace(
430
545
  self, name: str, value: object = None, value_type: str = None, label: str = None
431
546
  ):
432
- # robrandao: TODO -> needs to handle Nones like create_reply
433
547
  """
434
548
  Creates a new trace activity based on this activity.
435
549
 
@@ -476,7 +590,6 @@ class Activity(AgentsModel):
476
590
  def create_trace_activity(
477
591
  name: str, value: object = None, value_type: str = None, label: str = None
478
592
  ):
479
- # robrandao: TODO -> SkipNone
480
593
  """
481
594
  Creates an instance of the :class:`Activity` class as a TraceActivity object.
482
595
 
@@ -530,6 +643,14 @@ class Activity(AgentsModel):
530
643
  service_url=self.service_url,
531
644
  )
532
645
 
646
+ def get_product_info_entity(self) -> Optional[ProductInfo]:
647
+ if not self.entities:
648
+ return None
649
+ target = EntityTypes.PRODUCT_INFO.lower()
650
+ # validated entities can be Entity, and that prevents us from
651
+ # making assumptions about the casing of the 'type' attribute
652
+ return next(filter(lambda e: e.type.lower() == target, self.entities), None)
653
+
533
654
  def get_mentions(self) -> list[Mention]:
534
655
  """
535
656
  Resolves the mentions from the entities of this activity.
@@ -542,7 +663,7 @@ class Activity(AgentsModel):
542
663
  """
543
664
  if not self.entities:
544
665
  return []
545
- return [x for x in self.entities if x.type.lower() == "mention"]
666
+ return [x for x in self.entities if x.type.lower() == EntityTypes.MENTION]
546
667
 
547
668
  def get_reply_conversation_reference(
548
669
  self, reply: ResourceResponse
@@ -663,7 +784,7 @@ class Activity(AgentsModel):
663
784
  return self.recipient.agentic_app_id
664
785
 
665
786
  def get_agentic_user(self) -> Optional[str]:
666
- """Gets the agentic user (UPN) from the context if it's an agentic request."""
787
+ """Gets the agentic user (agenticUserId) from the context if it's an agentic request."""
667
788
  if not self.is_agentic_request() or not self.recipient:
668
789
  return None
669
- return self.recipient.id
790
+ return self.recipient.agentic_user_id
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from enum import Enum
2
5
 
3
6
 
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from enum import Enum
2
5
 
3
6
 
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from enum import Enum
2
5
 
3
6
 
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from .agents_model import AgentsModel
2
5
  from ._type_aliases import NonEmptyString
3
6
 
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from .agents_model import AgentsModel
2
5
  from ._type_aliases import NonEmptyString
3
6
 
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from .adaptive_card_invoke_action import AdaptiveCardInvokeAction
2
5
  from .token_exchange_invoke_request import TokenExchangeInvokeRequest
3
6
  from .agents_model import AgentsModel
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from __future__ import annotations
2
5
 
3
6
  from pydantic import BaseModel, ConfigDict
@@ -1,3 +1,6 @@
1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+
1
4
  from .thumbnail_url import ThumbnailUrl
2
5
  from .media_url import MediaUrl
3
6
  from .card_action import CardAction