agentle 0.9.29__py3-none-any.whl → 0.9.30__py3-none-any.whl

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.
@@ -46,11 +46,14 @@ Example:
46
46
  from __future__ import annotations
47
47
 
48
48
  from collections.abc import Awaitable, Callable, Sequence
49
- from typing import override
49
+ from typing import Any, override
50
50
 
51
51
  from agentle.agents.conversations.conversation_store import ConversationStore
52
52
  from agentle.generations.models.messages.assistant_message import AssistantMessage
53
53
  from agentle.generations.models.messages.developer_message import DeveloperMessage
54
+ from agentle.generations.models.messages.generated_assistant_message import (
55
+ GeneratedAssistantMessage,
56
+ )
54
57
  from agentle.generations.models.messages.user_message import UserMessage
55
58
 
56
59
 
@@ -78,10 +81,23 @@ class CallbackConversationStore(ConversationStore):
78
81
  self,
79
82
  get_callback: Callable[
80
83
  [str],
81
- Awaitable[Sequence[DeveloperMessage | UserMessage | AssistantMessage]],
84
+ Awaitable[
85
+ Sequence[
86
+ DeveloperMessage
87
+ | UserMessage
88
+ | AssistantMessage
89
+ ]
90
+ ],
82
91
  ],
83
92
  add_callback: Callable[
84
- [str, DeveloperMessage | UserMessage | AssistantMessage], Awaitable[None]
93
+ [
94
+ str,
95
+ DeveloperMessage
96
+ | UserMessage
97
+ | AssistantMessage
98
+ | GeneratedAssistantMessage[Any],
99
+ ],
100
+ Awaitable[None],
85
101
  ],
86
102
  clear_callback: Callable[[str], Awaitable[None]],
87
103
  message_limit: int | None = None,
@@ -146,8 +162,13 @@ class CallbackConversationStore(ConversationStore):
146
162
  return await self._get_callback(chat_id)
147
163
 
148
164
  @override
149
- async def add_message_async(
150
- self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage
165
+ async def add_message_async[T = Any](
166
+ self,
167
+ chat_id: str,
168
+ message: DeveloperMessage
169
+ | UserMessage
170
+ | AssistantMessage
171
+ | GeneratedAssistantMessage[T],
151
172
  ) -> None:
152
173
  """
153
174
  Add a message to the conversation using the user-provided add callback.
@@ -1,8 +1,10 @@
1
1
  import abc
2
2
  from collections.abc import Sequence
3
+ from typing import Any
3
4
 
4
5
  from agentle.generations.models.messages.assistant_message import AssistantMessage
5
6
  from agentle.generations.models.messages.developer_message import DeveloperMessage
7
+ from agentle.generations.models.messages.generated_assistant_message import GeneratedAssistantMessage
6
8
  from agentle.generations.models.messages.user_message import UserMessage
7
9
 
8
10
 
@@ -42,8 +44,8 @@ class ConversationStore(abc.ABC):
42
44
  ) -> Sequence[DeveloperMessage | UserMessage | AssistantMessage]: ...
43
45
 
44
46
  @abc.abstractmethod
45
- async def add_message_async(
46
- self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage
47
+ async def add_message_async[T = Any](
48
+ self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage | GeneratedAssistantMessage[T]
47
49
  ) -> None: ...
48
50
 
49
51
  @abc.abstractmethod
@@ -1,11 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from collections.abc import Sequence
4
- from typing import TYPE_CHECKING, override
4
+ from typing import TYPE_CHECKING, Any, override
5
5
 
6
6
  from agentle.agents.conversations.conversation_store import ConversationStore
7
7
  from agentle.generations.models.messages.assistant_message import AssistantMessage
8
8
  from agentle.generations.models.messages.developer_message import DeveloperMessage
9
+ from agentle.generations.models.messages.generated_assistant_message import (
10
+ GeneratedAssistantMessage,
11
+ )
9
12
  from agentle.generations.models.messages.user_message import UserMessage
10
13
 
11
14
  if TYPE_CHECKING:
@@ -28,8 +31,8 @@ class FirebaseConversationStore(ConversationStore):
28
31
  self._collection_name = collection_name
29
32
 
30
33
  @override
31
- async def add_message_async(
32
- self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage
34
+ async def add_message_async[T = Any](
35
+ self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage | GeneratedAssistantMessage[T]
33
36
  ) -> None:
34
37
  from google.cloud import firestore
35
38
 
@@ -7,6 +7,9 @@ from typing import Any, override
7
7
  from agentle.agents.conversations.conversation_store import ConversationStore
8
8
  from agentle.generations.models.messages.assistant_message import AssistantMessage
9
9
  from agentle.generations.models.messages.developer_message import DeveloperMessage
10
+ from agentle.generations.models.messages.generated_assistant_message import (
11
+ GeneratedAssistantMessage,
12
+ )
10
13
  from agentle.generations.models.messages.user_message import UserMessage
11
14
 
12
15
 
@@ -87,8 +90,12 @@ class JSONFileConversationStore(ConversationStore):
87
90
  # For other non-serializable objects, convert to string
88
91
  return str(obj)
89
92
 
90
- def _message_to_dict(
91
- self, message: DeveloperMessage | UserMessage | AssistantMessage
93
+ def _message_to_dict[T](
94
+ self,
95
+ message: DeveloperMessage
96
+ | UserMessage
97
+ | AssistantMessage
98
+ | GeneratedAssistantMessage[T],
92
99
  ) -> dict[str, Any]:
93
100
  """Convert a message object to a dictionary for JSON serialization."""
94
101
  # Get the basic message dictionary
@@ -177,8 +184,13 @@ class JSONFileConversationStore(ConversationStore):
177
184
  return UserMessage.model_validate(message_data)
178
185
 
179
186
  @override
180
- async def add_message_async(
181
- self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage
187
+ async def add_message_async[T = Any](
188
+ self,
189
+ chat_id: str,
190
+ message: DeveloperMessage
191
+ | UserMessage
192
+ | AssistantMessage
193
+ | GeneratedAssistantMessage[T],
182
194
  ) -> None:
183
195
  """Add a message to the conversation."""
184
196
  messages_data = self._load_messages(chat_id)
@@ -1,14 +1,19 @@
1
1
  from collections.abc import MutableMapping, MutableSequence, Sequence
2
- from typing import override
2
+ from typing import Any, override
3
+
3
4
  from agentle.agents.conversations.conversation_store import ConversationStore
4
5
  from agentle.generations.models.messages.assistant_message import AssistantMessage
5
6
  from agentle.generations.models.messages.developer_message import DeveloperMessage
7
+ from agentle.generations.models.messages.generated_assistant_message import (
8
+ GeneratedAssistantMessage,
9
+ )
6
10
  from agentle.generations.models.messages.user_message import UserMessage
7
11
 
8
12
 
9
13
  class LocalConversationStore(ConversationStore):
10
14
  __messages: MutableMapping[
11
- str, MutableSequence[DeveloperMessage | UserMessage | AssistantMessage]
15
+ str,
16
+ MutableSequence[DeveloperMessage | UserMessage | AssistantMessage],
12
17
  ]
13
18
 
14
19
  def __init__(
@@ -20,8 +25,13 @@ class LocalConversationStore(ConversationStore):
20
25
  self.__messages = {}
21
26
 
22
27
  @override
23
- async def add_message_async(
24
- self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage
28
+ async def add_message_async[T = Any](
29
+ self,
30
+ chat_id: str,
31
+ message: DeveloperMessage
32
+ | UserMessage
33
+ | AssistantMessage
34
+ | GeneratedAssistantMessage[T],
25
35
  ) -> None:
26
36
  if chat_id not in self.__messages:
27
37
  self.__messages[chat_id] = []
@@ -41,6 +51,9 @@ class LocalConversationStore(ConversationStore):
41
51
  # Don't add message if limit reached and not overriding
42
52
  return
43
53
 
54
+ if isinstance(message, GeneratedAssistantMessage):
55
+ message = message.to_assistant_message()
56
+
44
57
  self.__messages[chat_id].append(message)
45
58
 
46
59
  @override
@@ -8,6 +8,9 @@ from typing import TYPE_CHECKING, Any, override
8
8
  from agentle.agents.conversations.conversation_store import ConversationStore
9
9
  from agentle.generations.models.messages.assistant_message import AssistantMessage
10
10
  from agentle.generations.models.messages.developer_message import DeveloperMessage
11
+ from agentle.generations.models.messages.generated_assistant_message import (
12
+ GeneratedAssistantMessage,
13
+ )
11
14
  from agentle.generations.models.messages.user_message import UserMessage
12
15
 
13
16
  if TYPE_CHECKING:
@@ -74,7 +77,11 @@ class MySQLConversationStore(ConversationStore):
74
77
  await conn.commit()
75
78
 
76
79
  def _message_to_dict(
77
- self, message: DeveloperMessage | UserMessage | AssistantMessage
80
+ self,
81
+ message: DeveloperMessage
82
+ | UserMessage
83
+ | AssistantMessage
84
+ | GeneratedAssistantMessage[Any],
78
85
  ) -> dict[str, Any]:
79
86
  """
80
87
  Convert a Message object to a dictionary for JSON serialization.
@@ -125,8 +132,13 @@ class MySQLConversationStore(ConversationStore):
125
132
  return UserMessage.model_validate(message_dict)
126
133
 
127
134
  @override
128
- async def add_message_async(
129
- self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage
135
+ async def add_message_async[T = Any](
136
+ self,
137
+ chat_id: str,
138
+ message: DeveloperMessage
139
+ | UserMessage
140
+ | AssistantMessage
141
+ | GeneratedAssistantMessage[T],
130
142
  ) -> None:
131
143
  """
132
144
  Add a message to the conversation store.
@@ -7,6 +7,9 @@ from typing import TYPE_CHECKING, Any, override
7
7
  from agentle.agents.conversations.conversation_store import ConversationStore
8
8
  from agentle.generations.models.messages.assistant_message import AssistantMessage
9
9
  from agentle.generations.models.messages.developer_message import DeveloperMessage
10
+ from agentle.generations.models.messages.generated_assistant_message import (
11
+ GeneratedAssistantMessage,
12
+ )
10
13
  from agentle.generations.models.messages.user_message import UserMessage
11
14
 
12
15
  if TYPE_CHECKING:
@@ -84,7 +87,11 @@ class PostgresConversationStore(ConversationStore):
84
87
  """)
85
88
 
86
89
  def _message_to_dict(
87
- self, message: DeveloperMessage | UserMessage | AssistantMessage
90
+ self,
91
+ message: DeveloperMessage
92
+ | UserMessage
93
+ | AssistantMessage
94
+ | GeneratedAssistantMessage[Any],
88
95
  ) -> dict[str, Any]:
89
96
  """Convert a message object to a dictionary for JSON serialization."""
90
97
  message_dict = message.model_dump()
@@ -119,8 +126,13 @@ class PostgresConversationStore(ConversationStore):
119
126
  return UserMessage.model_validate(message_dict)
120
127
 
121
128
  @override
122
- async def add_message_async(
123
- self, chat_id: str, message: DeveloperMessage | UserMessage | AssistantMessage
129
+ async def add_message_async[T = Any](
130
+ self,
131
+ chat_id: str,
132
+ message: DeveloperMessage
133
+ | UserMessage
134
+ | AssistantMessage
135
+ | GeneratedAssistantMessage[T],
124
136
  ) -> None:
125
137
  """Add a message to the conversation."""
126
138
  async with self._pool.acquire() as conn:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentle
3
- Version: 0.9.29
3
+ Version: 0.9.30
4
4
  Summary: ...
5
5
  Author-email: Arthur Brenno <64020210+arthurbrenno@users.noreply.github.com>
6
6
  License-File: LICENSE
@@ -109,13 +109,13 @@ agentle/agents/asgi/blacksheep/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
109
109
  agentle/agents/asgi/blacksheep/agent_to_blacksheep_application_adapter.py,sha256=EI-0TBWlL8wewFuOtNoTeY7T1BTbj3GVQjUmkuPrv74,12080
110
110
  agentle/agents/asgi/blacksheep/agent_to_blacksheep_route_handler_adapter.py,sha256=kAX3_W6Gj8JI9yjXm6bnWvzq4YH8E4RD_jPy-Z_RtoA,25124
111
111
  agentle/agents/conversations/__init__.py,sha256=8XNgbcRauHDWbaiwKzoQkMbA4v3IOB1rtKGPfjReHPY,573
112
- agentle/agents/conversations/callback_conversation_store.py,sha256=2ITH1ETBIjbTxq_i9x86kQEaKtlSyi1GMR9OAw2tHcQ,7945
113
- agentle/agents/conversations/conversation_store.py,sha256=LeSwBrQvHjPFLTAoGrY8s2b5h5o43x_BOmrtGIiJ0qM,1824
114
- agentle/agents/conversations/firebase_conversation_store.py,sha256=POnO7mTkL4HLhz0l8DUXZzBluGGnOzmpASZ2k0BC-uE,4167
115
- agentle/agents/conversations/json_file_conversation_store.py,sha256=OWmvr7XbUlueIatFgqvMCaf3hnz11UoMtX4d_pEf1pA,9285
116
- agentle/agents/conversations/local_conversation_store.py,sha256=grnpHX0wc89QjLJXIIZzhMo3O4qsFcO4gGBcUFQUQA0,2112
117
- agentle/agents/conversations/mysql_conversation_store.py,sha256=sBrU5SGDxelWRifjFKUjcx2s4gBWccUmA_7k4Atao2s,11243
118
- agentle/agents/conversations/postgres_conversation_store.py,sha256=Z0zuh2-LbqjE7ft81r24iMrksdpIGNiIwQEjZjRgUNM,9695
112
+ agentle/agents/conversations/callback_conversation_store.py,sha256=oWVRRoWhnMK_rxaOYBGT6oGF58rwIEVC8nR9QGT3jig,8391
113
+ agentle/agents/conversations/conversation_store.py,sha256=vOJDCclf3CtiuRmt1ei9cy7KQtBRiK63MKs2ElL_S1I,1989
114
+ agentle/agents/conversations/firebase_conversation_store.py,sha256=Ie9Q05q0Pv6AU9DC3uYbNQ9LvN0WTKxloen-IO15m84,4323
115
+ agentle/agents/conversations/json_file_conversation_store.py,sha256=NvUGXzxKU_ozoNM4rodqKtrDR1r7WeUvTUDm3eYXkkM,9544
116
+ agentle/agents/conversations/local_conversation_store.py,sha256=cPFQcCieZ9d0K3fc0MvfzcUucnL8KPMK9K8IhOEn28Y,2432
117
+ agentle/agents/conversations/mysql_conversation_store.py,sha256=XKlURkjRQpHcotRyhQHneqzzZXehyR2IJtIqh4kyEgM,11501
118
+ agentle/agents/conversations/postgres_conversation_store.py,sha256=kwB3UsME1oqKj-dYbhMw-XPe0pOm47MSoA6RFNWHrNk,9953
119
119
  agentle/agents/errors/__init__.py,sha256=g2WoSvolIhcRutVsaEctMRsKK_r02wpSquvoNEjDOPo,1694
120
120
  agentle/agents/errors/max_tool_calls_exceeded_error.py,sha256=LXyGXOSNhYyc9W8f0ZcKMuQiFdpFjLr_yM4nkpUvZF8,2817
121
121
  agentle/agents/errors/tool_suspension_error.py,sha256=_wL6URtj2eqnuSLpTvabqD8IYfz8z-1eszifzibyfoc,3096
@@ -1018,7 +1018,7 @@ agentle/web/actions/scroll.py,sha256=WqVVAORNDK3BL1oASZBPmXJYeSVkPgAOmWA8ibYO82I
1018
1018
  agentle/web/actions/viewport.py,sha256=KCwm88Pri19Qc6GLHC69HsRxmdJz1gEEAODfggC_fHo,287
1019
1019
  agentle/web/actions/wait.py,sha256=IKEywjf-KC4ni9Gkkv4wgc7bY-hk7HwD4F-OFWlyf2w,571
1020
1020
  agentle/web/actions/write_text.py,sha256=9mxfHcpKs_L7BsDnJvOYHQwG8M0GWe61SRJAsKk3xQ8,748
1021
- agentle-0.9.29.dist-info/METADATA,sha256=R9crja9iNTdYzuPt86thtNZGJFIkwz7wou53L--okQQ,86849
1022
- agentle-0.9.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1023
- agentle-0.9.29.dist-info/licenses/LICENSE,sha256=T90S9vqRS6qP-voULxAcvwEs558wRRo6dHuZrjgcOUI,1085
1024
- agentle-0.9.29.dist-info/RECORD,,
1021
+ agentle-0.9.30.dist-info/METADATA,sha256=OcjyI2hJ0Q5CcgJTjSfD0RhgUzfJHb2aNiXYo5Mz-VM,86849
1022
+ agentle-0.9.30.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1023
+ agentle-0.9.30.dist-info/licenses/LICENSE,sha256=T90S9vqRS6qP-voULxAcvwEs558wRRo6dHuZrjgcOUI,1085
1024
+ agentle-0.9.30.dist-info/RECORD,,