microsoft-agents-hosting-core 0.6.0.dev11__tar.gz → 0.6.0.dev16__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 (108) hide show
  1. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/PKG-INFO +2 -2
  2. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/agent_application.py +3 -3
  3. microsoft_agents_hosting_core-0.6.0.dev16/microsoft_agents/hosting/core/app/typing_indicator.py +81 -0
  4. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/errors/__init__.py +2 -1
  5. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/errors/error_resources.py +1 -1
  6. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents_hosting_core.egg-info/PKG-INFO +2 -2
  7. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents_hosting_core.egg-info/SOURCES.txt +0 -1
  8. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents_hosting_core.egg-info/requires.txt +1 -1
  9. microsoft_agents_hosting_core-0.6.0.dev11/microsoft_agents/hosting/core/app/typing_indicator.py +0 -78
  10. microsoft_agents_hosting_core-0.6.0.dev11/microsoft_agents/hosting/core/errors/error_message.py +0 -64
  11. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/LICENSE +0 -0
  12. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/__init__.py +0 -0
  13. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/_oauth/__init__.py +0 -0
  14. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/_oauth/_flow_state.py +0 -0
  15. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/_oauth/_flow_storage_client.py +0 -0
  16. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/_oauth/_oauth_flow.py +0 -0
  17. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/activity_handler.py +0 -0
  18. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/agent.py +0 -0
  19. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/__init__.py +0 -0
  20. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/_routes/__init__.py +0 -0
  21. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/_routes/_route.py +0 -0
  22. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/_routes/_route_list.py +0 -0
  23. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/_routes/route_rank.py +0 -0
  24. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/_type_defs.py +0 -0
  25. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/app_error.py +0 -0
  26. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/app_options.py +0 -0
  27. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/input_file.py +0 -0
  28. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/__init__.py +0 -0
  29. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/_handlers/__init__.py +0 -0
  30. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/_handlers/_authorization_handler.py +0 -0
  31. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/_handlers/_user_authorization.py +0 -0
  32. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/_handlers/agentic_user_authorization.py +0 -0
  33. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/_sign_in_response.py +0 -0
  34. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/_sign_in_state.py +0 -0
  35. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/auth_handler.py +0 -0
  36. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/oauth/authorization.py +0 -0
  37. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/query.py +0 -0
  38. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/state/__init__.py +0 -0
  39. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/state/conversation_state.py +0 -0
  40. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/state/state.py +0 -0
  41. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/state/temp_state.py +0 -0
  42. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/app/state/turn_state.py +0 -0
  43. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/__init__.py +0 -0
  44. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/access_token_provider_base.py +0 -0
  45. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/agent_auth_configuration.py +0 -0
  46. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/anonymous_token_provider.py +0 -0
  47. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/auth_types.py +0 -0
  48. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/authentication_constants.py +0 -0
  49. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/claims_identity.py +0 -0
  50. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/connections.py +0 -0
  51. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/authorization/jwt_token_validator.py +0 -0
  52. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/card_factory.py +0 -0
  53. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/channel_adapter.py +0 -0
  54. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/channel_api_handler_protocol.py +0 -0
  55. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/channel_service_adapter.py +0 -0
  56. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/channel_service_client_factory_base.py +0 -0
  57. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/__init__.py +0 -0
  58. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/agent_conversation_reference.py +0 -0
  59. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/channel_factory_protocol.py +0 -0
  60. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/channel_host_protocol.py +0 -0
  61. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/channel_info_protocol.py +0 -0
  62. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/channel_protocol.py +0 -0
  63. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/channels_configuration.py +0 -0
  64. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/configuration_channel_host.py +0 -0
  65. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/conversation_constants.py +0 -0
  66. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/conversation_id_factory.py +0 -0
  67. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/conversation_id_factory_options.py +0 -0
  68. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/conversation_id_factory_protocol.py +0 -0
  69. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/http_agent_channel.py +0 -0
  70. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/client/http_agent_channel_factory.py +0 -0
  71. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/__init__.py +0 -0
  72. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/agent_sign_in_base.py +0 -0
  73. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/attachments_base.py +0 -0
  74. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/client/__init__.py +0 -0
  75. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/client/connector_client.py +0 -0
  76. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/client/user_token_client.py +0 -0
  77. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/connector_client_base.py +0 -0
  78. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/conversations_base.py +0 -0
  79. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/get_product_info.py +0 -0
  80. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/teams/__init__.py +0 -0
  81. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/teams/teams_connector_client.py +0 -0
  82. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/user_token_base.py +0 -0
  83. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/connector/user_token_client_base.py +0 -0
  84. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/message_factory.py +0 -0
  85. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/middleware_set.py +0 -0
  86. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/rest_channel_service_client_factory.py +0 -0
  87. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/state/__init__.py +0 -0
  88. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/state/agent_state.py +0 -0
  89. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/state/state_property_accessor.py +0 -0
  90. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/state/user_state.py +0 -0
  91. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/__init__.py +0 -0
  92. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/_type_aliases.py +0 -0
  93. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/error_handling.py +0 -0
  94. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/memory_storage.py +0 -0
  95. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/storage.py +0 -0
  96. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/store_item.py +0 -0
  97. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/transcript_file_store.py +0 -0
  98. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/transcript_info.py +0 -0
  99. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/transcript_logger.py +0 -0
  100. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/transcript_memory_store.py +0 -0
  101. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/storage/transcript_store.py +0 -0
  102. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents/hosting/core/turn_context.py +0 -0
  103. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents_hosting_core.egg-info/dependency_links.txt +0 -0
  104. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/microsoft_agents_hosting_core.egg-info/top_level.txt +0 -0
  105. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/pyproject.toml +0 -0
  106. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/readme.md +0 -0
  107. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/setup.cfg +0 -0
  108. {microsoft_agents_hosting_core-0.6.0.dev11 → microsoft_agents_hosting_core-0.6.0.dev16}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agents-hosting-core
3
- Version: 0.6.0.dev11
3
+ Version: 0.6.0.dev16
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.6.0.dev11
18
+ Requires-Dist: microsoft-agents-activity==0.6.0.dev16
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
@@ -683,8 +683,8 @@ class AgentApplication(Agent, Generic[StateT]):
683
683
  try:
684
684
  if context.activity.type != ActivityTypes.typing:
685
685
  if self._options.start_typing_timer:
686
- typing = TypingIndicator()
687
- await typing.start(context)
686
+ typing = TypingIndicator(context)
687
+ typing.start()
688
688
 
689
689
  self._remove_mentions(context)
690
690
 
@@ -733,7 +733,7 @@ class AgentApplication(Agent, Generic[StateT]):
733
733
  await self._on_error(context, err)
734
734
  finally:
735
735
  if typing:
736
- await typing.stop()
736
+ typing.stop()
737
737
 
738
738
  def _remove_mentions(self, context: TurnContext):
739
739
  if (
@@ -0,0 +1,81 @@
1
+ """
2
+ Copyright (c) Microsoft Corporation. All rights reserved.
3
+ Licensed under the MIT License.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import asyncio
9
+ import logging
10
+ from typing import Optional
11
+
12
+ from microsoft_agents.hosting.core import TurnContext
13
+ from microsoft_agents.activity import Activity, ActivityTypes
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ class TypingIndicator:
19
+ """
20
+ Encapsulates the logic for sending "typing" activity to the user.
21
+
22
+ Scoped to a single turn of conversation with the user.
23
+ """
24
+
25
+ def __init__(self, context: TurnContext, interval_seconds: float = 10.0) -> None:
26
+ """Initializes a new instance of the TypingIndicator class.
27
+
28
+ :param context: The turn context.
29
+ :param interval_seconds: The interval in seconds between typing indicators.
30
+ """
31
+ if interval_seconds <= 0:
32
+ raise ValueError("interval_seconds must be greater than 0")
33
+ self._context: TurnContext = context
34
+ self._interval: float = interval_seconds
35
+ self._task: Optional[asyncio.Task[None]] = None
36
+
37
+ async def _run(self) -> None:
38
+ """Sends typing indicators at regular intervals."""
39
+
40
+ running_task = self._task
41
+ try:
42
+ while running_task is self._task:
43
+ await self._context.send_activity(Activity(type=ActivityTypes.typing))
44
+ await asyncio.sleep(self._interval)
45
+ except asyncio.CancelledError:
46
+ # Task was cancelled, exit gracefully
47
+ pass
48
+
49
+ def start(self) -> None:
50
+ """Starts sending typing indicators."""
51
+
52
+ if self._task is not None:
53
+ logger.warning(
54
+ "Typing indicator is already running for conversation %s",
55
+ self._context.activity.conversation.id,
56
+ )
57
+ return
58
+
59
+ logger.debug(
60
+ "Starting typing indicator with interval: %s seconds in conversation %s",
61
+ self._interval,
62
+ self._context.activity.conversation.id,
63
+ )
64
+ self._task = asyncio.create_task(self._run())
65
+
66
+ def stop(self) -> None:
67
+ """Stops sending typing indicators."""
68
+
69
+ if self._task is None:
70
+ logger.warning(
71
+ "Typing indicator is not running for conversation %s",
72
+ self._context.activity.conversation.id,
73
+ )
74
+ return
75
+
76
+ logger.debug(
77
+ "Stopping typing indicator for conversation %s",
78
+ self._context.activity.conversation.id,
79
+ )
80
+ self._task.cancel()
81
+ self._task = None
@@ -8,7 +8,8 @@ This module provides centralized error messages with error codes and help URLs
8
8
  following the pattern established in the C# SDK.
9
9
  """
10
10
 
11
- from .error_message import ErrorMessage
11
+ from microsoft_agents.activity.errors import ErrorMessage
12
+
12
13
  from .error_resources import ErrorResources
13
14
 
14
15
  # Singleton instance
@@ -9,7 +9,7 @@ Error codes are in the range -63000 to -63999 for hosting errors.
9
9
  General/validation errors are in the range -66000 to -66999.
10
10
  """
11
11
 
12
- from .error_message import ErrorMessage
12
+ from microsoft_agents.activity.errors import ErrorMessage
13
13
 
14
14
 
15
15
  class ErrorResources:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agents-hosting-core
3
- Version: 0.6.0.dev11
3
+ Version: 0.6.0.dev16
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.6.0.dev11
18
+ Requires-Dist: microsoft-agents-activity==0.6.0.dev16
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
@@ -81,7 +81,6 @@ microsoft_agents/hosting/core/connector/client/user_token_client.py
81
81
  microsoft_agents/hosting/core/connector/teams/__init__.py
82
82
  microsoft_agents/hosting/core/connector/teams/teams_connector_client.py
83
83
  microsoft_agents/hosting/core/errors/__init__.py
84
- microsoft_agents/hosting/core/errors/error_message.py
85
84
  microsoft_agents/hosting/core/errors/error_resources.py
86
85
  microsoft_agents/hosting/core/state/__init__.py
87
86
  microsoft_agents/hosting/core/state/agent_state.py
@@ -1,4 +1,4 @@
1
- microsoft-agents-activity==0.6.0.dev11
1
+ microsoft-agents-activity==0.6.0.dev16
2
2
  pyjwt>=2.10.1
3
3
  isodate>=0.6.1
4
4
  azure-core>=1.30.0
@@ -1,78 +0,0 @@
1
- """
2
- Copyright (c) Microsoft Corporation. All rights reserved.
3
- Licensed under the MIT License.
4
- """
5
-
6
- from __future__ import annotations
7
- import asyncio
8
- import logging
9
-
10
- from typing import Optional
11
-
12
- from microsoft_agents.hosting.core import TurnContext
13
- from microsoft_agents.activity import Activity, ActivityTypes
14
-
15
- logger = logging.getLogger(__name__)
16
-
17
-
18
- class TypingIndicator:
19
- """
20
- Encapsulates the logic for sending "typing" activity to the user.
21
- """
22
-
23
- def __init__(self, intervalSeconds=1) -> None:
24
- self._intervalSeconds = intervalSeconds
25
- self._task: Optional[asyncio.Task] = None
26
- self._running: bool = False
27
- self._lock = asyncio.Lock()
28
-
29
- async def start(self, context: TurnContext) -> None:
30
- async with self._lock:
31
- if self._running:
32
- return
33
-
34
- logger.debug(
35
- f"Starting typing indicator with interval: {self._intervalSeconds} seconds"
36
- )
37
- self._running = True
38
- self._task = asyncio.create_task(self._typing_loop(context))
39
-
40
- async def stop(self) -> None:
41
- async with self._lock:
42
- if not self._running:
43
- return
44
-
45
- logger.debug("Stopping typing indicator")
46
- self._running = False
47
- task = self._task
48
- self._task = None
49
-
50
- # Cancel outside the lock to avoid blocking
51
- if task and not task.done():
52
- task.cancel()
53
- try:
54
- await task
55
- except asyncio.CancelledError:
56
- pass
57
-
58
- async def _typing_loop(self, context: TurnContext):
59
- """Continuously send typing indicators at the specified interval."""
60
- try:
61
- while True:
62
- # Check running status under lock
63
- async with self._lock:
64
- if not self._running:
65
- break
66
-
67
- try:
68
- logger.debug("Sending typing activity")
69
- await context.send_activity(Activity(type=ActivityTypes.typing))
70
- except Exception as e:
71
- logger.error(f"Error sending typing activity: {e}")
72
- async with self._lock:
73
- self._running = False
74
- break
75
-
76
- await asyncio.sleep(self._intervalSeconds)
77
- except asyncio.CancelledError:
78
- logger.debug("Typing indicator loop cancelled")
@@ -1,64 +0,0 @@
1
- # Copyright (c) Microsoft Corporation. All rights reserved.
2
- # Licensed under the MIT License.
3
-
4
- """
5
- ErrorMessage class for formatting error messages with error codes and help URLs.
6
- """
7
-
8
-
9
- class ErrorMessage:
10
- """
11
- Represents a formatted error message with error code and help URL.
12
-
13
- This class formats error messages according to the Microsoft Agents SDK pattern:
14
- - Original error message
15
- - Error Code: [negative number]
16
- - Help URL: https://aka.ms/M365AgentsErrorCodes/#[error_code]
17
- """
18
-
19
- def __init__(
20
- self,
21
- message_template: str,
22
- error_code: int,
23
- ):
24
- """
25
- Initialize an ErrorMessage.
26
-
27
- :param message_template: The error message template (may include format placeholders)
28
- :type message_template: str
29
- :param error_code: The error code (should be negative)
30
- :type error_code: int
31
- """
32
- self.message_template = message_template
33
- self.error_code = error_code
34
- self.base_url = "https://aka.ms/M365AgentsErrorCodes"
35
-
36
- def format(self, *args, **kwargs) -> str:
37
- """
38
- Format the error message with the provided arguments.
39
-
40
- :param args: Positional arguments for string formatting
41
- :param kwargs: Keyword arguments for string formatting
42
- :return: Formatted error message with error code and help URL
43
- :rtype: str
44
- """
45
- # Format the main message
46
- if args or kwargs:
47
- message = self.message_template.format(*args, **kwargs)
48
- else:
49
- message = self.message_template
50
-
51
- # Append error code and help URL
52
- return (
53
- f"{message}\n\n"
54
- f"Error Code: {self.error_code}\n"
55
- f"Help URL: {self.base_url}/#{self.error_code}"
56
- )
57
-
58
- def __str__(self) -> str:
59
- """Return the formatted error message without any arguments."""
60
- return self.format()
61
-
62
- def __repr__(self) -> str:
63
- """Return a representation of the ErrorMessage."""
64
- return f"ErrorMessage(code={self.error_code}, message='{self.message_template[:50]}...')"