microsoft-agents-hosting-core 0.9.0.dev11__tar.gz → 0.10.0.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/PKG-INFO +11 -2
  2. microsoft_agents_hosting_core-0.10.0.dev1/VERSION.txt +1 -0
  3. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/telemetry/constants.py +2 -2
  4. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/telemetry/spans.py +2 -0
  5. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/telemetry/constants.py +4 -4
  6. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/client/connector_client.py +15 -15
  7. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/telemetry/constants.py +10 -10
  8. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/telemetry/user_token_client_spans.py +5 -8
  9. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/http/_http_adapter_base.py +5 -4
  10. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/state/agent_state.py +5 -1
  11. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/telemetry/spans.py +8 -6
  12. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/adapter/constants.py +1 -0
  13. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/adapter/spans.py +25 -0
  14. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/attributes.py +2 -1
  15. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/core/_agents_telemetry.py +4 -23
  16. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/turn_context/constants.py +1 -1
  17. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/turn_context/spans.py +3 -3
  18. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/turn_context.py +38 -35
  19. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents_hosting_core.egg-info/PKG-INFO +11 -2
  20. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents_hosting_core.egg-info/requires.txt +1 -1
  21. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/readme.md +9 -0
  22. microsoft_agents_hosting_core-0.9.0.dev11/VERSION.txt +0 -1
  23. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/LICENSE +0 -0
  24. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/MANIFEST.in +0 -0
  25. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/__init__.py +0 -0
  26. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/_oauth/__init__.py +0 -0
  27. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/_oauth/_flow_state.py +0 -0
  28. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/_oauth/_flow_storage_client.py +0 -0
  29. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/_oauth/_oauth_flow.py +0 -0
  30. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/activity_handler.py +0 -0
  31. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/agent.py +0 -0
  32. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/__init__.py +0 -0
  33. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/_routes/__init__.py +0 -0
  34. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/_routes/_route.py +0 -0
  35. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/_routes/_route_list.py +0 -0
  36. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/_routes/route_rank.py +0 -0
  37. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/_type_defs.py +0 -0
  38. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/agent_application.py +0 -0
  39. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/app_error.py +0 -0
  40. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/app_options.py +0 -0
  41. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/input_file.py +0 -0
  42. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/__init__.py +0 -0
  43. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/_handlers/__init__.py +0 -0
  44. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/_handlers/_authorization_handler.py +0 -0
  45. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/_handlers/_user_authorization.py +0 -0
  46. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/_handlers/agentic_user_authorization.py +0 -0
  47. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/_handlers/connector_user_authorization.py +0 -0
  48. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/_sign_in_response.py +0 -0
  49. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/_sign_in_state.py +0 -0
  50. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/auth_handler.py +0 -0
  51. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/authorization.py +0 -0
  52. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/telemetry/__init__.py +0 -0
  53. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/oauth/telemetry/spans.py +0 -0
  54. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/proactive/__init__.py +0 -0
  55. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/proactive/conversation.py +0 -0
  56. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/proactive/conversation_builder.py +0 -0
  57. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/proactive/conversation_reference_builder.py +0 -0
  58. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/proactive/create_conversation_options.py +0 -0
  59. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/proactive/proactive.py +0 -0
  60. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/proactive/proactive_options.py +0 -0
  61. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/query.py +0 -0
  62. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/state/__init__.py +0 -0
  63. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/state/conversation_state.py +0 -0
  64. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/state/state.py +0 -0
  65. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/state/temp_state.py +0 -0
  66. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/state/turn_state.py +0 -0
  67. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/streaming/__init__.py +0 -0
  68. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/streaming/citation.py +0 -0
  69. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/streaming/citation_util.py +0 -0
  70. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/streaming/streaming_response.py +0 -0
  71. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/telemetry/__init__.py +0 -0
  72. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/telemetry/constants.py +0 -0
  73. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/telemetry/metrics.py +0 -0
  74. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/app/typing_indicator.py +0 -0
  75. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/__init__.py +0 -0
  76. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/access_token_provider_base.py +0 -0
  77. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/agent_auth_configuration.py +0 -0
  78. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/anonymous_token_provider.py +0 -0
  79. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/auth_types.py +0 -0
  80. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/authentication_constants.py +0 -0
  81. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/claims_identity.py +0 -0
  82. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/connections.py +0 -0
  83. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/jwt_token_validator.py +0 -0
  84. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/telemetry/__init__.py +0 -0
  85. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/telemetry/metrics.py +0 -0
  86. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/authorization/telemetry/spans.py +0 -0
  87. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/card_factory.py +0 -0
  88. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/channel_adapter.py +0 -0
  89. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/channel_api_handler_protocol.py +0 -0
  90. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/channel_service_adapter.py +0 -0
  91. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/channel_service_client_factory_base.py +0 -0
  92. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/__init__.py +0 -0
  93. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/agent_conversation_reference.py +0 -0
  94. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/channel_factory_protocol.py +0 -0
  95. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/channel_host_protocol.py +0 -0
  96. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/channel_info_protocol.py +0 -0
  97. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/channel_protocol.py +0 -0
  98. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/channels_configuration.py +0 -0
  99. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/configuration_channel_host.py +0 -0
  100. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/conversation_constants.py +0 -0
  101. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/conversation_id_factory.py +0 -0
  102. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/conversation_id_factory_options.py +0 -0
  103. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/conversation_id_factory_protocol.py +0 -0
  104. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/http_agent_channel.py +0 -0
  105. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/client/http_agent_channel_factory.py +0 -0
  106. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/__init__.py +0 -0
  107. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/agent_sign_in_base.py +0 -0
  108. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/attachments_base.py +0 -0
  109. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/client/__init__.py +0 -0
  110. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/client/user_token_client.py +0 -0
  111. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/connector_client_base.py +0 -0
  112. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/conversations_base.py +0 -0
  113. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/get_product_info.py +0 -0
  114. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/mcs/__init__.py +0 -0
  115. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/mcs/mcs_connector_client.py +0 -0
  116. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/teams/__init__.py +0 -0
  117. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/teams/teams_connector_client.py +0 -0
  118. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/telemetry/__init__.py +0 -0
  119. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/telemetry/_request_span_wrapper.py +0 -0
  120. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/telemetry/connector_spans.py +0 -0
  121. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/telemetry/metrics.py +0 -0
  122. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/user_token_base.py +0 -0
  123. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/connector/user_token_client_base.py +0 -0
  124. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/errors/__init__.py +0 -0
  125. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/errors/error_resources.py +0 -0
  126. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/http/__init__.py +0 -0
  127. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/http/_channel_service_routes.py +0 -0
  128. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/http/_http_request_protocol.py +0 -0
  129. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/http/_http_response.py +0 -0
  130. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/message_factory.py +0 -0
  131. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/middleware_set.py +0 -0
  132. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/rest_channel_service_client_factory.py +0 -0
  133. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/state/__init__.py +0 -0
  134. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/state/state_property_accessor.py +0 -0
  135. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/state/user_state.py +0 -0
  136. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/__init__.py +0 -0
  137. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/_type_aliases.py +0 -0
  138. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/error_handling.py +0 -0
  139. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/memory_storage.py +0 -0
  140. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/storage.py +0 -0
  141. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/store_item.py +0 -0
  142. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/telemetry/__init__.py +0 -0
  143. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/telemetry/constants.py +0 -0
  144. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/telemetry/metrics.py +0 -0
  145. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/transcript_file_store.py +0 -0
  146. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/transcript_info.py +0 -0
  147. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/transcript_logger.py +0 -0
  148. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/transcript_memory_store.py +0 -0
  149. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/storage/transcript_store.py +0 -0
  150. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/__init__.py +0 -0
  151. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/adapter/__init__.py +0 -0
  152. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/adapter/metrics.py +0 -0
  153. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/core/__init__.py +0 -0
  154. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/core/base_span_wrapper.py +0 -0
  155. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/core/resource.py +0 -0
  156. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/core/simple_span_wrapper.py +0 -0
  157. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/core/type_defs.py +0 -0
  158. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/turn_context/__init__.py +0 -0
  159. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents/hosting/core/telemetry/utils.py +0 -0
  160. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents_hosting_core.egg-info/SOURCES.txt +0 -0
  161. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents_hosting_core.egg-info/dependency_links.txt +0 -0
  162. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/microsoft_agents_hosting_core.egg-info/top_level.txt +0 -0
  163. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/pyproject.toml +0 -0
  164. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/setup.cfg +0 -0
  165. {microsoft_agents_hosting_core-0.9.0.dev11 → microsoft_agents_hosting_core-0.10.0.dev1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agents-hosting-core
3
- Version: 0.9.0.dev11
3
+ Version: 0.10.0.dev1
4
4
  Summary: Core library for Microsoft Agents
5
5
  Author: Microsoft Corporation
6
6
  License-Expression: MIT
@@ -15,7 +15,7 @@ Classifier: Operating System :: OS Independent
15
15
  Requires-Python: >=3.10
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Requires-Dist: microsoft-agents-activity==0.9.0.dev11
18
+ Requires-Dist: microsoft-agents-activity==0.10.0.dev1
19
19
  Requires-Dist: pyjwt>=2.10.1
20
20
  Requires-Dist: isodate>=0.6.1
21
21
  Requires-Dist: azure-core>=1.30.0
@@ -43,6 +43,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
43
43
  <th style="width:20%">Date</th>
44
44
  <th style="width:60%">Release Notes</th>
45
45
  </tr>
46
+ <tr>
47
+ <td>0.9.0</td>
48
+ <td>2026-04-15</td>
49
+ <td>
50
+ <a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v090">
51
+ 0.9.0 Release Notes
52
+ </a>
53
+ </td>
54
+ </tr>
46
55
  <tr>
47
56
  <td>0.8.0</td>
48
57
  <td>2026-02-23</td>
@@ -0,0 +1 @@
1
+ 0.10.0.dev1
@@ -3,5 +3,5 @@
3
3
 
4
4
  AGENTIC_TOKEN = "agents.authorization.agentic_token"
5
5
  AZURE_BOT_TOKEN = "agents.authorization.azure_bot_token"
6
- AZURE_BOT_SIGN_OUT = "agents.authorization.azure_bot_sign_out"
7
- AZURE_BOT_SIGN_IN = "agents.authorization.azure_bot_sign_in"
6
+ AZURE_BOT_SIGN_OUT = "agents.authorization.azure_bot_signout"
7
+ AZURE_BOT_SIGN_IN = "agents.authorization.azure_bot_signin"
@@ -35,12 +35,14 @@ class AppOnTurn(SimpleSpanWrapper):
35
35
  attributes.CONVERSATION_ID: get_conversation_id(
36
36
  self._turn_context.activity
37
37
  ),
38
+ attributes.SUCCESS: error is None,
38
39
  }
39
40
  if error is None:
40
41
  metrics.turn_count.add(1, attributes=attrs)
41
42
  metrics.turn_duration.record(duration, attributes=attrs)
42
43
  else:
43
44
  metrics.turn_error_count.add(1, attributes=attrs)
45
+ metrics.turn_duration.record(duration, attributes=attrs)
44
46
 
45
47
  def _get_attributes(self) -> AttributeMap:
46
48
  return {
@@ -3,10 +3,10 @@
3
3
 
4
4
  # Spans
5
5
 
6
- SPAN_GET_ACCESS_TOKEN = "agents.auth.getAccessToken"
7
- SPAN_ACQUIRE_TOKEN_ON_BEHALF_OF = "agents.auth.acquireTokenOnBehalfOf"
8
- SPAN_GET_AGENTIC_INSTANCE_TOKEN = "agents.auth.getAgenticInstanceToken"
9
- SPAN_GET_AGENTIC_USER_TOKEN = "agents.auth.getAgenticUserToken"
6
+ SPAN_GET_ACCESS_TOKEN = "agents.authentication.get_access_token"
7
+ SPAN_ACQUIRE_TOKEN_ON_BEHALF_OF = "agents.authentication.acquire_token_on_behalf_of"
8
+ SPAN_GET_AGENTIC_INSTANCE_TOKEN = "agents.authentication.get_agentic_instance_token"
9
+ SPAN_GET_AGENTIC_USER_TOKEN = "agents.authentication.get_agentic_user_token"
10
10
 
11
11
  # Metrics
12
12
 
@@ -333,21 +333,21 @@ class ConversationsOperations(ConversationsBase):
333
333
  conversation_id = self._normalize_conversation_id(conversation_id)
334
334
  url = f"v3/conversations/{conversation_id}/activities/{activity_id}"
335
335
 
336
- logger.info(
337
- "Updating activity: %s in conversation: %s. Activity type is %s",
338
- activity_id,
339
- conversation_id,
340
- body.type,
341
- )
342
- async with self.client.put(
343
- url,
344
- json=body.model_dump(by_alias=True, exclude_unset=True),
345
- ) as response:
346
- if response.status >= 300:
347
- logger.error(
348
- "Error updating activity: %s", response.status, stack_info=True
349
- )
350
- response.raise_for_status()
336
+ logger.info(
337
+ "Updating activity: %s in conversation: %s. Activity type is %s",
338
+ activity_id,
339
+ conversation_id,
340
+ body.type,
341
+ )
342
+ async with self.client.put(
343
+ url,
344
+ json=body.model_dump(by_alias=True, exclude_unset=True),
345
+ ) as response:
346
+ if response.status >= 300:
347
+ logger.error(
348
+ "Error updating activity: %s", response.status, stack_info=True
349
+ )
350
+ response.raise_for_status()
351
351
 
352
352
  data = await response.json()
353
353
  return ResourceResponse.model_validate(data)
@@ -1,16 +1,16 @@
1
1
  # Copyright (c) Microsoft Corporation. All rights reserved.
2
2
  # Licensed under the MIT License.
3
3
 
4
- SPAN_REPLY_TO_ACTIVITY = "agents.connector.replyToActivity"
5
- SPAN_SEND_TO_CONVERSATION = "agents.connector.sendToConversation"
6
- SPAN_UPDATE_ACTIVITY = "agents.connector.updateActivity"
7
- SPAN_DELETE_ACTIVITY = "agents.connector.deleteActivity"
8
- SPAN_CREATE_CONVERSATION = "agents.connector.createConversation"
9
- SPAN_GET_CONVERSATIONS = "agents.connector.getConversations"
10
- SPAN_GET_CONVERSATION_MEMBERS = "agents.connector.getConversationMembers"
11
- SPAN_UPLOAD_ATTACHMENT = "agents.connector.uploadAttachment"
12
- SPAN_GET_ATTACHMENT = "agents.connector.getAttachment"
13
- SPAN_GET_ATTACHMENT_INFO = "agents.connector.getAttachmentInfo"
4
+ SPAN_REPLY_TO_ACTIVITY = "agents.connector.reply_to_activity"
5
+ SPAN_SEND_TO_CONVERSATION = "agents.connector.send_to_conversation"
6
+ SPAN_UPDATE_ACTIVITY = "agents.connector.update_activity"
7
+ SPAN_DELETE_ACTIVITY = "agents.connector.delete_activity"
8
+ SPAN_CREATE_CONVERSATION = "agents.connector.create_conversation"
9
+ SPAN_GET_CONVERSATIONS = "agents.connector.get_conversations"
10
+ SPAN_GET_CONVERSATION_MEMBERS = "agents.connector.get_conversation_members"
11
+ SPAN_UPLOAD_ATTACHMENT = "agents.connector.upload_attachment"
12
+ SPAN_GET_ATTACHMENT = "agents.connector.get_attachment"
13
+ SPAN_GET_ATTACHMENT_INFO = "agents.connector.get_attachment_info"
14
14
 
15
15
  SPAN_GET_USER_TOKEN = "agents.user_token_client.get_user_token"
16
16
  SPAN_SIGN_OUT = "agents.user_token_client.sign_out"
@@ -38,14 +38,11 @@ class _UserTokenClientSpanWrapper(_RequestSpanWrapper):
38
38
 
39
39
  NOTE: a dict is the annotated return type to allow child classes to add additional attributes.
40
40
  """
41
- attr_dict = {}
42
- if self._connection_name is not None:
43
- attr_dict[attributes.CONNECTION_NAME] = self._connection_name
44
- if self._user_id is not None:
45
- attr_dict[attributes.USER_ID] = self._user_id
46
- if self._channel_id is not None:
47
- attr_dict[attributes.ACTIVITY_CHANNEL_ID] = self._channel_id
48
- return attr_dict
41
+ return {
42
+ attributes.CONNECTION_NAME: self._connection_name,
43
+ attributes.USER_ID: self._user_id,
44
+ attributes.ACTIVITY_CHANNEL_ID: self._channel_id,
45
+ }
49
46
 
50
47
 
51
48
  class GetUserToken(_UserTokenClientSpanWrapper):
@@ -126,10 +126,11 @@ class HttpAdapterBase(ChannelServiceAdapter, ABC):
126
126
  activity.type == "invoke"
127
127
  or activity.delivery_mode == DeliveryModes.expect_replies
128
128
  ):
129
- # Invoke and ExpectReplies cannot be performed async
130
- return HttpResponseFactory.json(
131
- invoke_response.body, invoke_response.status
132
- )
129
+ with spans.AdapterWriteResponse(activity):
130
+ # Invoke and ExpectReplies cannot be performed async
131
+ return HttpResponseFactory.json(
132
+ invoke_response.body, invoke_response.status
133
+ )
133
134
 
134
135
  return HttpResponseFactory.accepted()
135
136
 
@@ -219,7 +219,11 @@ class AgentState:
219
219
 
220
220
  if not value and default_value_factory is not None:
221
221
  # If the value is None and a factory is provided, call the factory to get a default value
222
- return default_value_factory()
222
+ default = default_value_factory()
223
+ # Store the default value in the cache so modifications to it are tracked
224
+ if self._cached_state is not None:
225
+ self._cached_state.state[property_name] = default
226
+ return default
223
227
 
224
228
  if target_cls and value:
225
229
  # Attempt to deserialize the value if it is not None
@@ -15,9 +15,10 @@ from . import metrics, constants
15
15
  class _StorageSpanWrapper(SimpleSpanWrapper):
16
16
  """Base SpanWrapper for spans related to storage operations. This is meant to be a base class for spans related to storage operations, such as retrieving or saving state, and can be used to share common functionality and attributes related to storage operations."""
17
17
 
18
- def __init__(self, span_name: str, *, key_count: int):
18
+ def __init__(self, span_name: str, operation_name: str, *, key_count: int):
19
19
  """Initializes the _StorageSpanWrapper span."""
20
20
  super().__init__(span_name)
21
+ self._operation_name = operation_name
21
22
  self._key_count = key_count
22
23
 
23
24
  def _callback(self, span: Span, duration: float, error: Exception | None) -> None:
@@ -25,13 +26,13 @@ class _StorageSpanWrapper(SimpleSpanWrapper):
25
26
  metrics.storage_operation_duration.record(
26
27
  duration,
27
28
  attributes={
28
- attributes.STORAGE_OPERATION: self._span_name,
29
+ attributes.STORAGE_OPERATION: self._operation_name,
29
30
  },
30
31
  )
31
32
  metrics.storage_operation_total.add(
32
33
  1,
33
34
  attributes={
34
- attributes.STORAGE_OPERATION: self._span_name,
35
+ attributes.STORAGE_OPERATION: self._operation_name,
35
36
  },
36
37
  )
37
38
 
@@ -42,6 +43,7 @@ class _StorageSpanWrapper(SimpleSpanWrapper):
42
43
  """
43
44
  return {
44
45
  attributes.KEY_COUNT: self._key_count,
46
+ attributes.STORAGE_OPERATION: self._operation_name,
45
47
  }
46
48
 
47
49
 
@@ -50,7 +52,7 @@ class StorageRead(_StorageSpanWrapper):
50
52
 
51
53
  def __init__(self, key_count: int):
52
54
  """Initializes the StorageRead span."""
53
- super().__init__(constants.SPAN_STORAGE_READ, key_count=key_count)
55
+ super().__init__(constants.SPAN_STORAGE_READ, "read", key_count=key_count)
54
56
 
55
57
 
56
58
  class StorageWrite(_StorageSpanWrapper):
@@ -58,7 +60,7 @@ class StorageWrite(_StorageSpanWrapper):
58
60
 
59
61
  def __init__(self, key_count: int):
60
62
  """Initializes the StorageWrite span."""
61
- super().__init__(constants.SPAN_STORAGE_WRITE, key_count=key_count)
63
+ super().__init__(constants.SPAN_STORAGE_WRITE, "write", key_count=key_count)
62
64
 
63
65
 
64
66
  class StorageDelete(_StorageSpanWrapper):
@@ -66,4 +68,4 @@ class StorageDelete(_StorageSpanWrapper):
66
68
 
67
69
  def __init__(self, key_count: int):
68
70
  """Initializes the StorageDelete span."""
69
- super().__init__(constants.SPAN_STORAGE_DELETE, key_count=key_count)
71
+ super().__init__(constants.SPAN_STORAGE_DELETE, "delete", key_count=key_count)
@@ -8,6 +8,7 @@ SPAN_DELETE_ACTIVITY = "agents.adapter.delete_activity"
8
8
  SPAN_CONTINUE_CONVERSATION = "agents.adapter.continue_conversation"
9
9
  SPAN_CREATE_CONNECTOR_CLIENT = "agents.adapter.create_connector_client"
10
10
  SPAN_CREATE_USER_TOKEN_CLIENT = "agents.adapter.create_user_token_client"
11
+ SPAN_WRITE_RESPONSE = "agents.adapter.write_response"
11
12
 
12
13
  METRIC_ADAPTER_PROCESS_DURATION = "agents.adapter.process.duration"
13
14
 
@@ -196,3 +196,28 @@ class AdapterCreateConnectorClient(SimpleSpanWrapper):
196
196
  attributes.AUTH_SCOPES: format_scopes(self._scopes),
197
197
  attributes.IS_AGENTIC: self._is_agentic_request,
198
198
  }
199
+
200
+
201
+ class AdapterWriteResponse(SimpleSpanWrapper):
202
+ """Span for writing an InvokeResponse in the adapter. This captures the handling of expectReplies, invoke, and streaming"""
203
+
204
+ def __init__(self, activity: Activity):
205
+ """Initializes the AdapterWriteResponse span."""
206
+ super().__init__(constants.SPAN_WRITE_RESPONSE)
207
+ self._activity = activity
208
+
209
+ def _callback(self, span: Span, duration: float, error: Exception | None) -> None:
210
+ metrics.activities_sent.add(
211
+ 1,
212
+ attributes={
213
+ attributes.ACTIVITY_TYPE: self._activity.type,
214
+ attributes.ACTIVITY_CHANNEL_ID: self._activity.channel_id
215
+ or attributes.UNKNOWN,
216
+ },
217
+ )
218
+
219
+ def _get_attributes(self) -> AttributeMap:
220
+ """Returns a dictionary of attributes to set on the span when it is started. This includes attributes related to the activities being sent."""
221
+ return {
222
+ attributes.CONVERSATION_ID: get_conversation_id(self._activity),
223
+ }
@@ -26,7 +26,7 @@ CONVERSATION_ID = "activity.conversation.id"
26
26
  HTTP_METHOD = "http.method"
27
27
  HTTP_STATUS_CODE = "http.status_code"
28
28
 
29
- IS_AGENTIC = "is_agentic_request"
29
+ IS_AGENTIC = "activity.is_agentic_request"
30
30
 
31
31
  KEY_COUNT = "storage.keys.count"
32
32
 
@@ -39,6 +39,7 @@ ROUTE_MATCHED = "route.matched"
39
39
 
40
40
  SERVICE_URL = "service_url"
41
41
  STORAGE_OPERATION = "storage.operation"
42
+ SUCCESS = "success"
42
43
 
43
44
  TOKEN_SERVICE_ENDPOINT = "agents.token_service.endpoint"
44
45
 
@@ -40,27 +40,6 @@ class _AgentsTelemetry:
40
40
  """Returns the OpenTelemetry meter instance for recording metrics"""
41
41
  return self._meter
42
42
 
43
- def _extract_attributes_from_context(
44
- self, turn_context: TurnContextProtocol
45
- ) -> dict:
46
- """Helper method to extract common attributes from the TurnContext for span and metric recording"""
47
-
48
- # This can be expanded to extract common attributes for spans and metrics from the context
49
- attributes = {}
50
- attributes["activity.type"] = turn_context.activity.type
51
- attributes["agent.is_agentic"] = turn_context.activity.is_agentic_request()
52
- if turn_context.activity.from_property:
53
- attributes["from.id"] = turn_context.activity.from_property.id
54
- if turn_context.activity.recipient:
55
- attributes["recipient.id"] = turn_context.activity.recipient.id
56
- if turn_context.activity.conversation:
57
- attributes["conversation.id"] = turn_context.activity.conversation.id
58
- attributes["channel_id"] = turn_context.activity.channel_id
59
- attributes["message.text.length"] = (
60
- len(turn_context.activity.text) if turn_context.activity.text else 0
61
- )
62
- return attributes
63
-
64
43
  @contextmanager
65
44
  def start_as_current_span(
66
45
  self,
@@ -74,7 +53,9 @@ class _AgentsTelemetry:
74
53
  :return: An iterator that yields the started span, which will be ended when the context manager exits
75
54
  """
76
55
 
77
- with self._tracer.start_as_current_span(span_name) as span:
56
+ with self._tracer.start_as_current_span(
57
+ span_name, record_exception=False, set_status_on_exception=False
58
+ ) as span:
78
59
 
79
60
  start = time.time()
80
61
  exception: Exception | None = None
@@ -92,7 +73,6 @@ class _AgentsTelemetry:
92
73
  duration = (end - start) * 1000 # milliseconds
93
74
 
94
75
  if success:
95
- span.add_event(f"{span_name} completed", {"duration_ms": duration})
96
76
  span.set_status(trace.Status(trace.StatusCode.OK))
97
77
  if callback:
98
78
  callback(span, duration, None)
@@ -101,6 +81,7 @@ class _AgentsTelemetry:
101
81
  callback(span, duration, exception)
102
82
 
103
83
  span.set_status(trace.Status(trace.StatusCode.ERROR))
84
+ span.record_exception(exception)
104
85
 
105
86
 
106
87
  agents_telemetry = _AgentsTelemetry()
@@ -1,4 +1,4 @@
1
1
  # Copyright (c) Microsoft Corporation. All rights reserved.
2
2
  # Licensed under the MIT License.
3
3
 
4
- SPAN_TURN_SEND_ACTIVITY = "agents.turn.send_activity"
4
+ SPAN_TURN_SEND_ACTIVITIES = "agents.turn.send_activities"
@@ -13,11 +13,11 @@ from microsoft_agents.hosting.core.telemetry import (
13
13
  from . import constants
14
14
 
15
15
 
16
- class TurnContextSendActivity(SimpleSpanWrapper):
17
- """Span wrapper for sending an activity within a turn context."""
16
+ class TurnContextSendActivities(SimpleSpanWrapper):
17
+ """Span wrapper for sending activities within a turn context."""
18
18
 
19
19
  def __init__(self, turn_context: TurnContextProtocol):
20
- super().__init__(constants.SPAN_TURN_SEND_ACTIVITY)
20
+ super().__init__(constants.SPAN_TURN_SEND_ACTIVITIES)
21
21
  self._turn_context = turn_context
22
22
 
23
23
  def _get_attributes(self) -> AttributeMap:
@@ -20,6 +20,7 @@ from microsoft_agents.activity import (
20
20
  )
21
21
  from microsoft_agents.activity.entity.entity_types import EntityTypes
22
22
  from microsoft_agents.hosting.core.authorization.claims_identity import ClaimsIdentity
23
+ import microsoft_agents.hosting.core.telemetry.turn_context.spans as spans
23
24
 
24
25
 
25
26
  class TurnContext(TurnContextProtocol):
@@ -211,50 +212,52 @@ class TurnContext(TurnContextProtocol):
211
212
  # TODO: Check activity serialization
212
213
  ref = self.activity.get_conversation_reference()
213
214
 
214
- def activity_validator(activity: Activity) -> Activity:
215
- if not getattr(activity, "type", None):
216
- activity.type = ActivityTypes.message
217
- if activity.type != ActivityTypes.trace:
215
+ with spans.TurnContextSendActivities(self):
216
+
217
+ def activity_validator(activity: Activity) -> Activity:
218
+ if not getattr(activity, "type", None):
219
+ activity.type = ActivityTypes.message
220
+ if activity.type != ActivityTypes.trace:
221
+ nonlocal sent_non_trace_activity
222
+ sent_non_trace_activity = True
223
+ if not activity.input_hint:
224
+ activity.input_hint = "acceptingInput"
225
+ activity.id = None
226
+ return activity
227
+
228
+ output = [
229
+ activity_validator(
230
+ TurnContext.apply_conversation_reference(deepcopy(act), ref)
231
+ )
232
+ for act in activities
233
+ ]
234
+
235
+ # send activities through adapter
236
+ async def logic():
218
237
  nonlocal sent_non_trace_activity
219
- sent_non_trace_activity = True
220
- if not activity.input_hint:
221
- activity.input_hint = "acceptingInput"
222
- activity.id = None
223
- return activity
224
-
225
- output = [
226
- activity_validator(
227
- TurnContext.apply_conversation_reference(deepcopy(act), ref)
228
- )
229
- for act in activities
230
- ]
231
238
 
232
- # send activities through adapter
233
- async def logic():
234
- nonlocal sent_non_trace_activity
239
+ if self.activity.delivery_mode == DeliveryModes.expect_replies:
240
+ responses = []
241
+ for activity in output:
242
+ self.buffered_reply_activities.append(activity)
243
+ # Ensure the TurnState has the InvokeResponseKey, since this activity
244
+ # is not being sent through the adapter, where it would be added to TurnState.
245
+ if activity.type == ActivityTypes.invoke_response:
246
+ self.turn_state[TurnContext._INVOKE_RESPONSE_KEY] = activity
235
247
 
236
- if self.activity.delivery_mode == DeliveryModes.expect_replies:
237
- responses = []
238
- for activity in output:
239
- self.buffered_reply_activities.append(activity)
240
- # Ensure the TurnState has the InvokeResponseKey, since this activity
241
- # is not being sent through the adapter, where it would be added to TurnState.
242
- if activity.type == ActivityTypes.invoke_response:
243
- self.turn_state[TurnContext._INVOKE_RESPONSE_KEY] = activity
248
+ responses.append(ResourceResponse())
244
249
 
245
- responses.append(ResourceResponse())
250
+ if sent_non_trace_activity:
251
+ self.responded = True
246
252
 
253
+ return responses
254
+
255
+ responses = await self.adapter.send_activities(self, output)
247
256
  if sent_non_trace_activity:
248
257
  self.responded = True
249
-
250
258
  return responses
251
259
 
252
- responses = await self.adapter.send_activities(self, output)
253
- if sent_non_trace_activity:
254
- self.responded = True
255
- return responses
256
-
257
- return await self._emit(self._on_send_activities, output, logic())
260
+ return await self._emit(self._on_send_activities, output, logic())
258
261
 
259
262
  async def update_activity(self, activity: Activity):
260
263
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agents-hosting-core
3
- Version: 0.9.0.dev11
3
+ Version: 0.10.0.dev1
4
4
  Summary: Core library for Microsoft Agents
5
5
  Author: Microsoft Corporation
6
6
  License-Expression: MIT
@@ -15,7 +15,7 @@ Classifier: Operating System :: OS Independent
15
15
  Requires-Python: >=3.10
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Requires-Dist: microsoft-agents-activity==0.9.0.dev11
18
+ Requires-Dist: microsoft-agents-activity==0.10.0.dev1
19
19
  Requires-Dist: pyjwt>=2.10.1
20
20
  Requires-Dist: isodate>=0.6.1
21
21
  Requires-Dist: azure-core>=1.30.0
@@ -43,6 +43,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
43
43
  <th style="width:20%">Date</th>
44
44
  <th style="width:60%">Release Notes</th>
45
45
  </tr>
46
+ <tr>
47
+ <td>0.9.0</td>
48
+ <td>2026-04-15</td>
49
+ <td>
50
+ <a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v090">
51
+ 0.9.0 Release Notes
52
+ </a>
53
+ </td>
54
+ </tr>
46
55
  <tr>
47
56
  <td>0.8.0</td>
48
57
  <td>2026-02-23</td>
@@ -1,4 +1,4 @@
1
- microsoft-agents-activity==0.9.0.dev11
1
+ microsoft-agents-activity==0.10.0.dev1
2
2
  pyjwt>=2.10.1
3
3
  isodate>=0.6.1
4
4
  azure-core>=1.30.0
@@ -16,6 +16,15 @@ This library is part of the **Microsoft 365 Agents SDK for Python** - a comprehe
16
16
  <th style="width:20%">Date</th>
17
17
  <th style="width:60%">Release Notes</th>
18
18
  </tr>
19
+ <tr>
20
+ <td>0.9.0</td>
21
+ <td>2026-04-15</td>
22
+ <td>
23
+ <a href="https://github.com/microsoft/Agents-for-python/blob/main/changelog.md#microsoft-365-agents-sdk-for-python---release-notes-v090">
24
+ 0.9.0 Release Notes
25
+ </a>
26
+ </td>
27
+ </tr>
19
28
  <tr>
20
29
  <td>0.8.0</td>
21
30
  <td>2026-02-23</td>
@@ -1 +0,0 @@
1
- 0.9.0.dev11