microsoft-agents-activity 1.1.0.dev9__tar.gz → 1.2.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.
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/PKG-INFO +29 -1
- microsoft_agents_activity-1.2.0/VERSION.txt +1 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/__init__.py +4 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/activity.py +140 -93
- microsoft_agents_activity-1.2.0/microsoft_agents/activity/config/_coercion.py +99 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/config/_configure_logging.py +40 -3
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/conversation_reference.py +2 -6
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/__init__.py +3 -0
- microsoft_agents_activity-1.2.0/microsoft_agents/activity/entity/activity_treatment.py +27 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/entity_types.py +1 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_channel_account.py +6 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_exchange_state.py +2 -2
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents_activity.egg-info/PKG-INFO +29 -1
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents_activity.egg-info/SOURCES.txt +2 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/readme.md +28 -0
- microsoft_agents_activity-1.1.0.dev9/VERSION.txt +0 -1
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/LICENSE +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/MANIFEST.in +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/_channel_id_field_mixin.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/_model_utils.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/_type_aliases.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/_utils/__init__.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/_utils/_deferred_string.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/action_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/activity_event_names.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/activity_importance.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/activity_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/adaptive_card_invoke_action.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/adaptive_card_invoke_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/adaptive_card_invoke_value.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/agents_model.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/animation_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/attachment.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/attachment_data.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/attachment_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/attachment_layout_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/attachment_view.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/audio_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/basic_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/caller_id_constants.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/card_action.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/card_image.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/channel_account.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/channel_adapter_protocol.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/channel_id.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/channels.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/config/__init__.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/config/_load_configuration.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/contact_relation_update_action_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/conversation_account.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/conversation_members.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/conversation_parameters.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/conversation_resource_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/conversation_update_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/conversations_result.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/delivery_modes.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/end_of_conversation_codes.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/_schema_mixin.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/ai_entity.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/entity.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/geo_coordinates.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/mention.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/place.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/product_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/stream_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/entity/thing.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/error.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/error_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/errors/__init__.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/errors/error_message.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/errors/error_resources.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/expected_replies.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/fact.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/hero_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/inner_http_error.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/input_hints.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/installation_update_action_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/invoke_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/media_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/media_event_value.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/media_url.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/message_reaction.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/message_reaction_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/message_update_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/oauth_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/paged_members_result.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/receipt_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/receipt_item.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/resource_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/role_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/semantic_action.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/semantic_actions_states.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/sign_in_constants.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/sign_in_resource.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/signin_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/suggested_actions.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/__init__.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/app_based_link_query.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/batch_failed_entries_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/batch_failed_entry.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/batch_operation_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/batch_operation_state_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/bot_config_auth.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/cache_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/cancel_operation_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/channel_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/config_auth_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/config_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/config_response_base.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/config_task_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/conversation_list.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/file_consent_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/file_consent_card_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/file_download_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/file_info_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/file_upload_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_details.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_details_base.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_end_event_details.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_event_details.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_notification.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_notification_base.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_notification_channel_data.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_notification_recipient_failure_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_notification_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_participant_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_participants_event_details.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_stage_surface.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_start_event_details.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/meeting_tab_icon_surface.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_app.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_attachment.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_body.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_conversation.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_from.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_mention.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_reaction.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/message_actions_payload_user.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_action.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_action_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_attachment.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_parameter.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_query.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_query_options.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_result.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/messaging_extension_suggested_action.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/notification_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_action_base.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_action_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_action_query.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_date_input.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_fact.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_http_post.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_image.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_input_base.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_multichoice_input.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_multichoice_input_choice.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_open_uri.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_open_uri_target.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_section.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_text_input.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/o365_connector_card_view_action.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/on_behalf_of.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/read_receipt_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/signin_state_verification_query.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/surface.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_context.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_entity_context.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_request.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_response_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_response_cards.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_response_payload.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_submit.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_submit_data.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tab_suggested_actions.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/targeted_meeting_notification.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/targeted_meeting_notification_value.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_card_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_continue_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_message_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_request.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_request_context.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_response_base.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/task_module_task_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/team_details.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/team_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_batch_operation_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_channel_data.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_channel_data_settings.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_meeting_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_meeting_member.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_meeting_participant.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_member.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/teams_paged_members_result.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/tenant_info.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/teams/user_meeting_details.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/text_format_types.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/text_highlight.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/thumbnail_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/thumbnail_url.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_exchange_invoke_request.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_exchange_invoke_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_exchange_resource.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_or_sign_in_resource_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_post_resource.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_request.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_response.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/token_status.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/transcript.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/turn_context_protocol.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents/activity/video_card.py +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents_activity.egg-info/dependency_links.txt +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents_activity.egg-info/requires.txt +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/microsoft_agents_activity.egg-info/top_level.txt +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/pyproject.toml +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/setup.cfg +0 -0
- {microsoft_agents_activity-1.1.0.dev9 → microsoft_agents_activity-1.2.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: microsoft-agents-activity
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A protocol library for Microsoft Agents
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License-Expression: MIT
|
|
@@ -35,6 +35,24 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
|
|
|
35
35
|
<th style="width:20%">Date</th>
|
|
36
36
|
<th style="width:60%">Release Notes</th>
|
|
37
37
|
</tr>
|
|
38
|
+
<tr>
|
|
39
|
+
<td>1.2.0</td>
|
|
40
|
+
<td>2026-07-17</td>
|
|
41
|
+
<td>
|
|
42
|
+
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v120">
|
|
43
|
+
1.2.0 Release Notes
|
|
44
|
+
</a>
|
|
45
|
+
</td>
|
|
46
|
+
</tr>
|
|
47
|
+
<tr>
|
|
48
|
+
<td>1.1.0</td>
|
|
49
|
+
<td>2026-06-19</td>
|
|
50
|
+
<td>
|
|
51
|
+
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v110">
|
|
52
|
+
1.1.0 Release Notes
|
|
53
|
+
</a>
|
|
54
|
+
</td>
|
|
55
|
+
</tr>
|
|
38
56
|
<tr>
|
|
39
57
|
<td>1.0.0</td>
|
|
40
58
|
<td>2026-05-22</td>
|
|
@@ -44,6 +62,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
|
|
|
44
62
|
</a>
|
|
45
63
|
</td>
|
|
46
64
|
</tr>
|
|
65
|
+
<tr>
|
|
66
|
+
<td>0.9.1</td>
|
|
67
|
+
<td>2026-05-04</td>
|
|
68
|
+
<td>
|
|
69
|
+
<a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v091">
|
|
70
|
+
0.9.1 Release Notes
|
|
71
|
+
</a>
|
|
72
|
+
</td>
|
|
73
|
+
</tr>
|
|
47
74
|
<tr>
|
|
48
75
|
<td>0.9.0</td>
|
|
49
76
|
<td>2026-04-15</td>
|
|
@@ -110,6 +137,7 @@ We offer the following PyPI packages to create conversational experiences based
|
|
|
110
137
|
| `microsoft-agents-hosting-core` | [](https://pypi.org/project/microsoft-agents-hosting-core/) | Core library for Microsoft Agents hosting. |
|
|
111
138
|
| `microsoft-agents-hosting-aiohttp` | [](https://pypi.org/project/microsoft-agents-hosting-aiohttp/) | Configures aiohttp to run the Agent. |
|
|
112
139
|
| `microsoft-agents-hosting-teams` | [](https://pypi.org/project/microsoft-agents-hosting-teams/) | Provides classes to host an Agent for Teams. |
|
|
140
|
+
| `microsoft-agents-hosting-dialogs` | [](https://pypi.org/project/microsoft-agents-hosting-dialogs/) | Dialog system with waterfall dialogs, prompts, and multi-turn conversation management. |
|
|
113
141
|
| `microsoft-agents-storage-blob` | [](https://pypi.org/project/microsoft-agents-storage-blob/) | Extension to use Azure Blob as storage. |
|
|
114
142
|
| `microsoft-agents-storage-cosmos` | [](https://pypi.org/project/microsoft-agents-storage-cosmos/) | Extension to use CosmosDB as storage. |
|
|
115
143
|
| `microsoft-agents-authentication-msal` | [](https://pypi.org/project/microsoft-agents-authentication-msal/) | MSAL-based authentication for Microsoft Agents. |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.2.0
|
|
@@ -45,6 +45,8 @@ from .entity import (
|
|
|
45
45
|
ProductInfo,
|
|
46
46
|
Thing,
|
|
47
47
|
StreamInfo,
|
|
48
|
+
ActivityTreatment,
|
|
49
|
+
ActivityTreatmentTypes,
|
|
48
50
|
)
|
|
49
51
|
from .error import Error
|
|
50
52
|
from .error_response import ErrorResponse
|
|
@@ -199,5 +201,7 @@ __all__ = [
|
|
|
199
201
|
"load_configuration_from_env",
|
|
200
202
|
"ChannelAdapterProtocol",
|
|
201
203
|
"TurnContextProtocol",
|
|
204
|
+
"ActivityTreatment",
|
|
205
|
+
"ActivityTreatmentTypes",
|
|
202
206
|
"TokenOrSignInResourceResponse",
|
|
203
207
|
]
|
|
@@ -6,7 +6,8 @@ from __future__ import annotations
|
|
|
6
6
|
import logging
|
|
7
7
|
from copy import copy
|
|
8
8
|
from datetime import datetime, timezone
|
|
9
|
-
from typing import Optional, Any
|
|
9
|
+
from typing import Optional, Any, cast, Annotated, TypeVar
|
|
10
|
+
from typing_extensions import Self
|
|
10
11
|
|
|
11
12
|
from pydantic import (
|
|
12
13
|
Field,
|
|
@@ -48,6 +49,8 @@ from microsoft_agents.activity.errors import activity_errors
|
|
|
48
49
|
|
|
49
50
|
logger = logging.getLogger(__name__)
|
|
50
51
|
|
|
52
|
+
_EntityT = TypeVar("_EntityT", bound=Entity)
|
|
53
|
+
|
|
51
54
|
|
|
52
55
|
# TODO: A2A Agent 2 is responding with None as id, had to mark it as optional (investigate)
|
|
53
56
|
class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
@@ -157,7 +160,7 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
157
160
|
local_timestamp: datetime = None
|
|
158
161
|
local_timezone: NonEmptyString = None
|
|
159
162
|
service_url: NonEmptyString = None
|
|
160
|
-
from_property: ChannelAccount
|
|
163
|
+
from_property: Annotated[ChannelAccount, Field(alias="from")] = None
|
|
161
164
|
conversation: ConversationAccount = None
|
|
162
165
|
recipient: ChannelAccount = None
|
|
163
166
|
text_format: NonEmptyString = None
|
|
@@ -509,33 +512,36 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
509
512
|
.. remarks::
|
|
510
513
|
The new activity sets up routing information based on this activity.
|
|
511
514
|
"""
|
|
512
|
-
return
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
515
|
+
return cast(
|
|
516
|
+
Self,
|
|
517
|
+
pick_model(
|
|
518
|
+
self.__class__,
|
|
519
|
+
type=ActivityTypes.message,
|
|
520
|
+
timestamp=datetime.now(timezone.utc),
|
|
521
|
+
from_property=SkipNone(
|
|
522
|
+
ChannelAccount.pick_properties(self.recipient, ["id", "name"])
|
|
523
|
+
),
|
|
524
|
+
recipient=SkipNone(
|
|
525
|
+
ChannelAccount.pick_properties(self.from_property, ["id", "name"])
|
|
526
|
+
),
|
|
527
|
+
reply_to_id=(
|
|
528
|
+
SkipNone(self.id)
|
|
529
|
+
if self.type != ActivityTypes.conversation_update
|
|
530
|
+
or self.channel_id not in ["directline", "webchat"]
|
|
531
|
+
else None
|
|
532
|
+
),
|
|
533
|
+
service_url=self.service_url,
|
|
534
|
+
channel_id=self.channel_id,
|
|
535
|
+
conversation=SkipNone(
|
|
536
|
+
ConversationAccount.pick_properties(
|
|
537
|
+
self.conversation, ["is_group", "id", "name"]
|
|
538
|
+
)
|
|
539
|
+
),
|
|
540
|
+
text=text if text else "",
|
|
541
|
+
locale=locale if locale else SkipNone(self.locale),
|
|
542
|
+
attachments=[],
|
|
543
|
+
entities=[],
|
|
521
544
|
),
|
|
522
|
-
reply_to_id=(
|
|
523
|
-
SkipNone(self.id)
|
|
524
|
-
if type != ActivityTypes.conversation_update
|
|
525
|
-
or self.channel_id not in ["directline", "webchat"]
|
|
526
|
-
else None
|
|
527
|
-
),
|
|
528
|
-
service_url=self.service_url,
|
|
529
|
-
channel_id=self.channel_id,
|
|
530
|
-
conversation=SkipNone(
|
|
531
|
-
ConversationAccount.pick_properties(
|
|
532
|
-
self.conversation, ["is_group", "id", "name"]
|
|
533
|
-
)
|
|
534
|
-
),
|
|
535
|
-
text=text if text else "",
|
|
536
|
-
locale=locale if locale else SkipNone(self.locale),
|
|
537
|
-
attachments=[],
|
|
538
|
-
entities=[],
|
|
539
545
|
)
|
|
540
546
|
|
|
541
547
|
def create_trace(
|
|
@@ -558,33 +564,36 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
558
564
|
if not value_type and value:
|
|
559
565
|
value_type = type(value).__name__
|
|
560
566
|
|
|
561
|
-
return
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
567
|
+
return cast(
|
|
568
|
+
Self,
|
|
569
|
+
pick_model(
|
|
570
|
+
self.__class__,
|
|
571
|
+
type=ActivityTypes.trace,
|
|
572
|
+
timestamp=datetime.now(timezone.utc),
|
|
573
|
+
from_property=SkipNone(
|
|
574
|
+
ChannelAccount.pick_properties(self.recipient, ["id", "name"])
|
|
575
|
+
),
|
|
576
|
+
recipient=SkipNone(
|
|
577
|
+
ChannelAccount.pick_properties(self.from_property, ["id", "name"])
|
|
578
|
+
),
|
|
579
|
+
reply_to_id=(
|
|
580
|
+
SkipNone(self.id) # preserve unset
|
|
581
|
+
if self.type != ActivityTypes.conversation_update
|
|
582
|
+
or self.channel_id not in ["directline", "webchat"]
|
|
583
|
+
else None
|
|
584
|
+
),
|
|
585
|
+
service_url=self.service_url,
|
|
586
|
+
channel_id=self.channel_id,
|
|
587
|
+
conversation=SkipNone(
|
|
588
|
+
ConversationAccount.pick_properties(
|
|
589
|
+
self.conversation, ["is_group", "id", "name"]
|
|
590
|
+
)
|
|
591
|
+
),
|
|
592
|
+
name=SkipNone(name),
|
|
593
|
+
label=SkipNone(label),
|
|
594
|
+
value_type=SkipNone(value_type),
|
|
595
|
+
value=SkipNone(value),
|
|
576
596
|
),
|
|
577
|
-
service_url=self.service_url,
|
|
578
|
-
channel_id=self.channel_id,
|
|
579
|
-
conversation=SkipNone(
|
|
580
|
-
ConversationAccount.pick_properties(
|
|
581
|
-
self.conversation, ["is_group", "id", "name"]
|
|
582
|
-
)
|
|
583
|
-
),
|
|
584
|
-
name=SkipNone(name),
|
|
585
|
-
label=SkipNone(label),
|
|
586
|
-
value_type=SkipNone(value_type),
|
|
587
|
-
value=SkipNone(value),
|
|
588
597
|
).as_trace_activity()
|
|
589
598
|
|
|
590
599
|
@staticmethod
|
|
@@ -593,7 +602,7 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
593
602
|
value: object = None,
|
|
594
603
|
value_type: str | None = None,
|
|
595
604
|
label: str | None = None,
|
|
596
|
-
):
|
|
605
|
+
) -> Activity:
|
|
597
606
|
"""
|
|
598
607
|
Creates an instance of the :class:`microsoft_agents.activity.Activity` class as a TraceActivity object.
|
|
599
608
|
|
|
@@ -607,13 +616,16 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
607
616
|
if not value_type and value:
|
|
608
617
|
value_type = type(value).__name__
|
|
609
618
|
|
|
610
|
-
return
|
|
619
|
+
return cast(
|
|
611
620
|
Activity,
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
621
|
+
pick_model(
|
|
622
|
+
Activity,
|
|
623
|
+
type=ActivityTypes.trace,
|
|
624
|
+
name=name,
|
|
625
|
+
label=SkipNone(label),
|
|
626
|
+
value_type=SkipNone(value_type),
|
|
627
|
+
value=SkipNone(value),
|
|
628
|
+
),
|
|
617
629
|
)
|
|
618
630
|
|
|
619
631
|
@staticmethod
|
|
@@ -636,33 +648,71 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
636
648
|
Composite values are split only on the first ``:``.
|
|
637
649
|
:returns: A conversation reference for the conversation that contains this activity.
|
|
638
650
|
"""
|
|
639
|
-
return
|
|
651
|
+
return cast(
|
|
640
652
|
ConversationReference,
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
653
|
+
pick_model(
|
|
654
|
+
ConversationReference,
|
|
655
|
+
activity_id=(
|
|
656
|
+
SkipNone(self.id)
|
|
657
|
+
if self.type != ActivityTypes.conversation_update
|
|
658
|
+
or self.channel_id not in ["directline", "webchat"]
|
|
659
|
+
else None
|
|
660
|
+
),
|
|
661
|
+
user=copy(self.from_property),
|
|
662
|
+
agent=copy(self.recipient),
|
|
663
|
+
conversation=copy(self.conversation),
|
|
664
|
+
channel_id=(
|
|
665
|
+
self.channel_id.split(":", 1)[0]
|
|
666
|
+
if force_base_channel and self.channel_id is not None
|
|
667
|
+
else self.channel_id
|
|
668
|
+
),
|
|
669
|
+
locale=self.locale,
|
|
670
|
+
service_url=self.service_url,
|
|
646
671
|
),
|
|
647
|
-
user=copy(self.from_property),
|
|
648
|
-
agent=copy(self.recipient),
|
|
649
|
-
conversation=copy(self.conversation),
|
|
650
|
-
channel_id=(
|
|
651
|
-
self.channel_id.split(":", 1)[0]
|
|
652
|
-
if force_base_channel and self.channel_id is not None
|
|
653
|
-
else self.channel_id
|
|
654
|
-
),
|
|
655
|
-
locale=self.locale,
|
|
656
|
-
service_url=self.service_url,
|
|
657
672
|
)
|
|
658
673
|
|
|
674
|
+
@staticmethod
|
|
675
|
+
def _convert_entity(raw_entity: Entity, entity_cls: type[_EntityT]) -> _EntityT:
|
|
676
|
+
"""
|
|
677
|
+
Converts an entity to a specific entity type.
|
|
678
|
+
|
|
679
|
+
:param raw_entity: The entity to convert.
|
|
680
|
+
:param entity_cls: The class of the entity type to convert to.
|
|
681
|
+
:return: The converted entity of the specified type.
|
|
682
|
+
"""
|
|
683
|
+
if isinstance(raw_entity, entity_cls):
|
|
684
|
+
return raw_entity
|
|
685
|
+
return entity_cls.model_validate(raw_entity.model_dump())
|
|
686
|
+
|
|
687
|
+
@staticmethod
|
|
688
|
+
def _convert_entity_list(
|
|
689
|
+
raw_entities: list[Entity], entity_cls: type[_EntityT]
|
|
690
|
+
) -> list[_EntityT]:
|
|
691
|
+
"""
|
|
692
|
+
Converts a list of entities to a list of a specific entity type.
|
|
693
|
+
|
|
694
|
+
:param raw_entities: The list of entities to convert.
|
|
695
|
+
:param entity_cls: The class of the entity type to convert to.
|
|
696
|
+
:return: The list of converted entities of the specified type.
|
|
697
|
+
"""
|
|
698
|
+
|
|
699
|
+
entities: list[_EntityT] = []
|
|
700
|
+
for e in raw_entities:
|
|
701
|
+
entities.append(Activity._convert_entity(e, entity_cls))
|
|
702
|
+
return entities
|
|
703
|
+
|
|
659
704
|
def get_product_info_entity(self) -> Optional[ProductInfo]:
|
|
660
705
|
if not self.entities:
|
|
661
706
|
return None
|
|
662
707
|
target = EntityTypes.PRODUCT_INFO.lower()
|
|
663
708
|
# validated entities can be Entity, and that prevents us from
|
|
664
709
|
# making assumptions about the casing of the 'type' attribute
|
|
665
|
-
|
|
710
|
+
raw_product_info = next(
|
|
711
|
+
filter(lambda e: e.type.lower() == target, self.entities), None
|
|
712
|
+
)
|
|
713
|
+
if raw_product_info is None:
|
|
714
|
+
return None
|
|
715
|
+
return Activity._convert_entity(raw_product_info, ProductInfo)
|
|
666
716
|
|
|
667
717
|
def get_mentions(self) -> list[Mention]:
|
|
668
718
|
"""
|
|
@@ -676,7 +726,11 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
676
726
|
"""
|
|
677
727
|
if not self.entities:
|
|
678
728
|
return []
|
|
679
|
-
|
|
729
|
+
raw_mentions = [
|
|
730
|
+
x for x in self.entities if x.type.lower() == EntityTypes.MENTION
|
|
731
|
+
]
|
|
732
|
+
|
|
733
|
+
return Activity._convert_entity_list(raw_mentions, Mention)
|
|
680
734
|
|
|
681
735
|
def get_reply_conversation_reference(
|
|
682
736
|
self, reply: ResourceResponse
|
|
@@ -739,21 +793,14 @@ class Activity(AgentsModel, _ChannelIdFieldMixin):
|
|
|
739
793
|
if self.type is None:
|
|
740
794
|
return False
|
|
741
795
|
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
796
|
+
type_value = str(getattr(self.type, "value", self.type)).lower()
|
|
797
|
+
activity_type_value = str(
|
|
798
|
+
getattr(activity_type, "value", activity_type)
|
|
799
|
+
).lower()
|
|
746
800
|
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
if not result:
|
|
751
|
-
result = (
|
|
752
|
-
len(type_attribute) > len(activity_type)
|
|
753
|
-
and type_attribute[len(activity_type)] == "/"
|
|
754
|
-
)
|
|
755
|
-
|
|
756
|
-
return result
|
|
801
|
+
return type_value == activity_type_value or type_value.startswith(
|
|
802
|
+
f"{activity_type_value}/"
|
|
803
|
+
)
|
|
757
804
|
|
|
758
805
|
def add_ai_metadata(
|
|
759
806
|
self,
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
"""Coercion helpers for values loaded from environment configuration.
|
|
5
|
+
|
|
6
|
+
:func:`load_configuration_from_env` keeps every value as the raw string (or a
|
|
7
|
+
nested ``dict``) read from the environment. Consumers that expect a bool, int or
|
|
8
|
+
float must coerce explicitly: a naive ``bool("false")`` is ``True`` and would
|
|
9
|
+
silently invert a flag, and ``int("5") + 1`` style math fails on values that may
|
|
10
|
+
legitimately arrive as strings. These helpers centralize that coercion so every
|
|
11
|
+
config consumer parses env values the same, fail-safe way.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import Any
|
|
17
|
+
|
|
18
|
+
_TRUTHY = ("1", "true")
|
|
19
|
+
_FALSY = ("0", "false")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def coerce_bool(value: Any, default: bool | None = None, name: str = "value") -> bool:
|
|
23
|
+
"""Coerce a config value (possibly an env string) to a bool.
|
|
24
|
+
|
|
25
|
+
Environment variables always arrive as strings, so ``bool("false")`` would
|
|
26
|
+
be ``True``. Recognized truthy spellings are ``1/true`` and falsy spellings
|
|
27
|
+
are ``0/false`` (case-insensitive).
|
|
28
|
+
|
|
29
|
+
An empty/whitespace-only string or ``None`` is treated as *unset* (not as an
|
|
30
|
+
explicit ``false``). For unset and unrecognized values: if ``default`` is
|
|
31
|
+
provided it is returned, otherwise a ``ValueError`` is raised naming the
|
|
32
|
+
offending setting -- mirroring :func:`coerce_int` and :func:`coerce_float`.
|
|
33
|
+
"""
|
|
34
|
+
if isinstance(value, bool):
|
|
35
|
+
return value
|
|
36
|
+
if isinstance(value, (int, float)):
|
|
37
|
+
return bool(value)
|
|
38
|
+
if value is not None:
|
|
39
|
+
text = str(value).strip().lower()
|
|
40
|
+
if text in _TRUTHY:
|
|
41
|
+
return True
|
|
42
|
+
if text in _FALSY:
|
|
43
|
+
return False
|
|
44
|
+
if text:
|
|
45
|
+
if default is not None:
|
|
46
|
+
return default
|
|
47
|
+
raise ValueError(f"Invalid boolean for {name}: {value!r}")
|
|
48
|
+
# Unset (None or empty/whitespace-only string).
|
|
49
|
+
if default is not None:
|
|
50
|
+
return default
|
|
51
|
+
raise ValueError(f"Invalid boolean for {name}: {value!r}")
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def coerce_int(value: Any, default: int, name: str = "value") -> int:
|
|
55
|
+
"""Coerce a config value (possibly an env string) to an int.
|
|
56
|
+
|
|
57
|
+
Empty/``None`` values fall back to ``default``. Bools are treated as unset
|
|
58
|
+
(a stray ``True``/``False`` is not a meaningful count). Numeric strings such
|
|
59
|
+
as ``"5"`` or ``"5.0"`` are accepted; anything else raises ``ValueError``
|
|
60
|
+
naming the offending setting.
|
|
61
|
+
"""
|
|
62
|
+
if value is None:
|
|
63
|
+
return default
|
|
64
|
+
if isinstance(value, bool):
|
|
65
|
+
return default
|
|
66
|
+
if isinstance(value, int):
|
|
67
|
+
return value
|
|
68
|
+
text = str(value).strip()
|
|
69
|
+
if not text:
|
|
70
|
+
return default
|
|
71
|
+
try:
|
|
72
|
+
return int(text, 10)
|
|
73
|
+
except ValueError:
|
|
74
|
+
try:
|
|
75
|
+
return int(float(text))
|
|
76
|
+
except ValueError as ex:
|
|
77
|
+
raise ValueError(f"Invalid integer for {name}: {value!r}") from ex
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def coerce_float(value: Any, default: float, name: str = "value") -> float:
|
|
81
|
+
"""Coerce a config value (possibly an env string) to a float.
|
|
82
|
+
|
|
83
|
+
Empty/``None`` values fall back to ``default``. Bools are treated as unset.
|
|
84
|
+
Anything that is not parseable as a float raises ``ValueError`` naming the
|
|
85
|
+
offending setting.
|
|
86
|
+
"""
|
|
87
|
+
if value is None:
|
|
88
|
+
return default
|
|
89
|
+
if isinstance(value, bool):
|
|
90
|
+
return default
|
|
91
|
+
if isinstance(value, (int, float)):
|
|
92
|
+
return float(value)
|
|
93
|
+
text = str(value).strip()
|
|
94
|
+
if not text:
|
|
95
|
+
return default
|
|
96
|
+
try:
|
|
97
|
+
return float(text)
|
|
98
|
+
except ValueError as ex:
|
|
99
|
+
raise ValueError(f"Invalid number for {name}: {value!r}") from ex
|
|
@@ -20,6 +20,44 @@ _NAME_TO_LEVEL = {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
class ColorFormatter(logging.Formatter):
|
|
24
|
+
"""Logging formatter that can add ANSI color based on severity."""
|
|
25
|
+
|
|
26
|
+
MAGENTA = "\033[1;35m"
|
|
27
|
+
RED = "\033[1;31m"
|
|
28
|
+
YELLOW = "\033[1;33m"
|
|
29
|
+
GREEN = "\033[1;32m"
|
|
30
|
+
BLUE = "\033[1;34m"
|
|
31
|
+
RESET = "\033[0m"
|
|
32
|
+
|
|
33
|
+
FMT = (
|
|
34
|
+
"%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def __init__(
|
|
38
|
+
self,
|
|
39
|
+
use_colors: bool = True,
|
|
40
|
+
) -> None:
|
|
41
|
+
super().__init__(fmt=self.FMT)
|
|
42
|
+
self._plain_formatter = logging.Formatter(fmt=self.FMT)
|
|
43
|
+
if not use_colors:
|
|
44
|
+
self._formatters: dict[int, logging.Formatter] = {}
|
|
45
|
+
return
|
|
46
|
+
self._formatters = {
|
|
47
|
+
logging.CRITICAL: logging.Formatter(
|
|
48
|
+
f"{self.MAGENTA}{self.FMT}{self.RESET}"
|
|
49
|
+
),
|
|
50
|
+
logging.ERROR: logging.Formatter(f"{self.RED}{self.FMT}{self.RESET}"),
|
|
51
|
+
logging.WARNING: logging.Formatter(f"{self.YELLOW}{self.FMT}{self.RESET}"),
|
|
52
|
+
logging.INFO: logging.Formatter(f"{self.GREEN}{self.FMT}{self.RESET}"),
|
|
53
|
+
logging.DEBUG: logging.Formatter(f"{self.BLUE}{self.FMT}{self.RESET}"),
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
def format(self, record: logging.LogRecord) -> str:
|
|
57
|
+
formatter = self._formatters.get(record.levelno)
|
|
58
|
+
return (formatter or self._plain_formatter).format(record)
|
|
59
|
+
|
|
60
|
+
|
|
23
61
|
def _configure_logging(logging_config: dict):
|
|
24
62
|
"""Configures logging based on the provided logging configuration dictionary.
|
|
25
63
|
|
|
@@ -31,9 +69,7 @@ def _configure_logging(logging_config: dict):
|
|
|
31
69
|
|
|
32
70
|
console_handler = logging.StreamHandler()
|
|
33
71
|
console_handler.setFormatter(
|
|
34
|
-
|
|
35
|
-
"%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)"
|
|
36
|
-
)
|
|
72
|
+
ColorFormatter(use_colors=console_handler.stream.isatty())
|
|
37
73
|
)
|
|
38
74
|
|
|
39
75
|
for key in log_levels:
|
|
@@ -50,6 +86,7 @@ def _configure_logging(logging_config: dict):
|
|
|
50
86
|
else:
|
|
51
87
|
logger = logging.getLogger(namespace)
|
|
52
88
|
|
|
89
|
+
logger.propagate = False # Prevent log messages from being propagated
|
|
53
90
|
logger.handlers.clear() # Remove existing handlers to prevent duplicates
|
|
54
91
|
logger.addHandler(console_handler)
|
|
55
92
|
logger.setLevel(level)
|
|
@@ -4,22 +4,18 @@
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
6
|
from uuid import uuid4 as uuid
|
|
7
|
-
from typing import Optional
|
|
8
|
-
import logging
|
|
7
|
+
from typing import Optional, Annotated
|
|
9
8
|
|
|
10
9
|
from pydantic import Field
|
|
11
10
|
|
|
12
11
|
from .channel_account import ChannelAccount
|
|
13
12
|
from ._channel_id_field_mixin import _ChannelIdFieldMixin
|
|
14
|
-
from .channel_id import ChannelId
|
|
15
13
|
from .conversation_account import ConversationAccount
|
|
16
14
|
from .agents_model import AgentsModel
|
|
17
15
|
from ._type_aliases import NonEmptyString
|
|
18
16
|
from .activity_types import ActivityTypes
|
|
19
17
|
from .activity_event_names import ActivityEventNames
|
|
20
18
|
|
|
21
|
-
logger = logging.getLogger(__name__)
|
|
22
|
-
|
|
23
19
|
|
|
24
20
|
class ConversationReference(AgentsModel, _ChannelIdFieldMixin):
|
|
25
21
|
"""An object relating to a particular point in a conversation.
|
|
@@ -48,7 +44,7 @@ class ConversationReference(AgentsModel, _ChannelIdFieldMixin):
|
|
|
48
44
|
# optionals here are due to webchat
|
|
49
45
|
activity_id: Optional[NonEmptyString] = None
|
|
50
46
|
user: Optional[ChannelAccount] = None
|
|
51
|
-
agent: ChannelAccount
|
|
47
|
+
agent: Annotated[ChannelAccount, Field(alias="bot")] = None
|
|
52
48
|
conversation: ConversationAccount
|
|
53
49
|
locale: Optional[NonEmptyString] = None
|
|
54
50
|
service_url: NonEmptyString = None
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
2
|
# Licensed under the MIT License.
|
|
3
3
|
|
|
4
|
+
from .activity_treatment import ActivityTreatment, ActivityTreatmentTypes
|
|
4
5
|
from .mention import Mention
|
|
5
6
|
from .entity import Entity
|
|
6
7
|
from .entity_types import EntityTypes
|
|
@@ -35,4 +36,6 @@ __all__ = [
|
|
|
35
36
|
"Place",
|
|
36
37
|
"ProductInfo",
|
|
37
38
|
"Thing",
|
|
39
|
+
"ActivityTreatment",
|
|
40
|
+
"ActivityTreatmentTypes",
|
|
38
41
|
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
from enum import Enum
|
|
5
|
+
from typing import Literal
|
|
6
|
+
|
|
7
|
+
from .entity import Entity
|
|
8
|
+
from .entity_types import EntityTypes
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ActivityTreatmentTypes(str, Enum):
|
|
12
|
+
"""Well-known enumeration of activity treatment types."""
|
|
13
|
+
|
|
14
|
+
TARGETED = "targeted"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ActivityTreatment(Entity):
|
|
18
|
+
"""Activity treatment information (entity type: "activityTreatment").
|
|
19
|
+
|
|
20
|
+
:param treatment: The type of treatment
|
|
21
|
+
:type treatment: ~microsoft_agents.activity.ActivityTreatmentTypes
|
|
22
|
+
:param type: Type of this entity (RFC 3987 IRI)
|
|
23
|
+
:type type: str
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
type: Literal[EntityTypes.ACTIVITY_TREATMENT] = EntityTypes.ACTIVITY_TREATMENT
|
|
27
|
+
treatment: ActivityTreatmentTypes
|
|
@@ -11,6 +11,10 @@ class TeamsChannelAccount(AgentsModel):
|
|
|
11
11
|
|
|
12
12
|
:param id: Channel id for the user or bot on this channel (Example: ``joe@smith.com``, or ``@joesmith`` or ``123456``)
|
|
13
13
|
:type id: str
|
|
14
|
+
:param aad_object_id: Azure Active Directory object id for the user.
|
|
15
|
+
:type aad_object_id: str
|
|
16
|
+
:param role: Role of the user in the channel.
|
|
17
|
+
:type role: str
|
|
14
18
|
:param name: Display friendly name
|
|
15
19
|
:type name: str
|
|
16
20
|
:param given_name: Given name part of the user name.
|
|
@@ -30,6 +34,8 @@ class TeamsChannelAccount(AgentsModel):
|
|
|
30
34
|
model_config = ConfigDict(extra="allow")
|
|
31
35
|
|
|
32
36
|
id: str = None
|
|
37
|
+
aad_object_id: str = None
|
|
38
|
+
role: str = None
|
|
33
39
|
name: str = None
|
|
34
40
|
given_name: str = None
|
|
35
41
|
surname: str = None
|