agno 2.2.2__py3-none-any.whl → 2.2.4__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.
agno/session/team.py CHANGED
@@ -113,11 +113,25 @@ class TeamSession:
113
113
 
114
114
  log_debug("Added RunOutput to Team Session")
115
115
 
116
+ def _should_skip_message(
117
+ self, message: Message, skip_role: Optional[str] = None, skip_history_messages: bool = True
118
+ ) -> bool:
119
+ """Processes a message for history"""
120
+ # Skip messages that were tagged as history in previous runs
121
+ if hasattr(message, "from_history") and message.from_history and skip_history_messages:
122
+ return True
123
+
124
+ # Skip messages with specified role
125
+ if skip_role and message.role == skip_role:
126
+ return True
127
+ return False
128
+
116
129
  def get_messages_from_last_n_runs(
117
130
  self,
118
131
  agent_id: Optional[str] = None,
119
132
  team_id: Optional[str] = None,
120
133
  last_n: Optional[int] = None,
134
+ last_n_messages: Optional[int] = None,
121
135
  skip_role: Optional[str] = None,
122
136
  skip_status: Optional[List[RunStatus]] = None,
123
137
  skip_history_messages: bool = True,
@@ -129,6 +143,7 @@ class TeamSession:
129
143
  agent_id: The id of the agent to get the messages from.
130
144
  team_id: The id of the team to get the messages from.
131
145
  last_n: The number of runs to return from the end of the conversation. Defaults to all runs.
146
+ last_n_messages: The number of messages to return from the end of the conversation. Defaults to all messages.
132
147
  skip_role: Skip messages with this role.
133
148
  skip_status: Skip messages with this status.
134
149
  skip_history_messages: Skip messages that were tagged as history in previous runs.
@@ -155,31 +170,55 @@ class TeamSession:
155
170
  # Filter by status
156
171
  session_runs = [run for run in session_runs if hasattr(run, "status") and run.status not in skip_status] # type: ignore
157
172
 
158
- # Filter by last_n
159
- runs_to_process = session_runs[-last_n:] if last_n is not None else session_runs
160
173
  messages_from_history = []
161
174
  system_message = None
162
175
 
163
- for run_response in runs_to_process:
164
- if not (run_response and run_response.messages):
165
- continue
166
-
167
- for message in run_response.messages or []:
168
- # Skip messages that were tagged as history in previous runs
169
- if hasattr(message, "from_history") and message.from_history and skip_history_messages:
176
+ # Filter by last_n_messages
177
+ if last_n_messages is not None:
178
+ for run_response in session_runs:
179
+ if not run_response or not run_response.messages:
170
180
  continue
171
181
 
172
- # Skip messages with specified role
173
- if skip_role and message.role == skip_role:
182
+ for message in run_response.messages or []:
183
+ if self._should_skip_message(message, skip_role, skip_history_messages):
184
+ continue
185
+
186
+ if message.role == "system":
187
+ # Only add the system message once
188
+ if system_message is None:
189
+ system_message = message
190
+ else:
191
+ messages_from_history.append(message)
192
+
193
+ if system_message:
194
+ messages_from_history = [system_message] + messages_from_history[
195
+ -(last_n_messages - 1) :
196
+ ] # Grab one less message then add the system message
197
+ else:
198
+ messages_from_history = messages_from_history[-last_n_messages:]
199
+
200
+ # Remove tool result messages that don't have an associated assistant message with tool calls
201
+ while len(messages_from_history) > 0 and messages_from_history[0].role == "tool":
202
+ messages_from_history.pop(0)
203
+ else:
204
+ # Filter by last_n runs
205
+ runs_to_process = session_runs[-last_n:] if last_n is not None else session_runs
206
+
207
+ for run_response in runs_to_process:
208
+ if not (run_response and run_response.messages):
174
209
  continue
175
210
 
176
- if message.role == "system":
177
- # Only add the system message once
178
- if system_message is None:
179
- system_message = message
180
- messages_from_history.append(system_message)
181
- else:
182
- messages_from_history.append(message)
211
+ for message in run_response.messages or []:
212
+ if self._should_skip_message(message, skip_role, skip_history_messages):
213
+ continue
214
+
215
+ if message.role == "system":
216
+ # Only add the system message once
217
+ if system_message is None:
218
+ system_message = message
219
+ messages_from_history.append(system_message)
220
+ else:
221
+ messages_from_history.append(message)
183
222
 
184
223
  log_debug(f"Getting messages from previous runs: {len(messages_from_history)}")
185
224
  return messages_from_history
agno/team/team.py CHANGED
@@ -378,7 +378,9 @@ class Team:
378
378
  # add_history_to_context=true adds messages from the chat history to the messages list sent to the Model.
379
379
  add_history_to_context: bool = False
380
380
  # Number of historical runs to include in the messages
381
- num_history_runs: int = 3
381
+ num_history_runs: Optional[int] = None
382
+ # Number of historical messages to include in the messages list sent to the Model.
383
+ num_history_messages: Optional[int] = None
382
384
  # Maximum number of tool calls to include from history (None = no limit)
383
385
  max_tool_calls_from_history: Optional[int] = None
384
386
 
@@ -485,7 +487,9 @@ class Team:
485
487
  store_history_messages: bool = True,
486
488
  send_media_to_model: bool = True,
487
489
  add_history_to_context: bool = False,
488
- num_history_runs: int = 3,
490
+ num_history_runs: Optional[int] = None,
491
+ num_history_messages: Optional[int] = None,
492
+ max_tool_calls_from_history: Optional[int] = None,
489
493
  tools: Optional[List[Union[Toolkit, Callable, Function, Dict]]] = None,
490
494
  tool_call_limit: Optional[int] = None,
491
495
  tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
@@ -508,7 +512,6 @@ class Team:
508
512
  enable_session_summaries: bool = False,
509
513
  session_summary_manager: Optional[SessionSummaryManager] = None,
510
514
  add_session_summary_to_context: Optional[bool] = None,
511
- max_tool_calls_from_history: Optional[int] = None,
512
515
  metadata: Optional[Dict[str, Any]] = None,
513
516
  reasoning: bool = False,
514
517
  reasoning_model: Optional[Model] = None,
@@ -553,6 +556,17 @@ class Team:
553
556
 
554
557
  self.add_history_to_context = add_history_to_context
555
558
  self.num_history_runs = num_history_runs
559
+ self.num_history_messages = num_history_messages
560
+ if self.num_history_messages is not None and self.num_history_runs is not None:
561
+ log_warning(
562
+ "num_history_messages and num_history_runs cannot be set at the same time. Using num_history_runs."
563
+ )
564
+ self.num_history_messages = None
565
+ if self.num_history_messages is None and self.num_history_runs is None:
566
+ self.num_history_runs = 3
567
+
568
+ self.max_tool_calls_from_history = max_tool_calls_from_history
569
+
556
570
  self.add_team_history_to_members = add_team_history_to_members
557
571
  self.num_team_history_runs = num_team_history_runs
558
572
  self.search_session_history = search_session_history
@@ -620,9 +634,6 @@ class Team:
620
634
  self.enable_session_summaries = enable_session_summaries
621
635
  self.session_summary_manager = session_summary_manager
622
636
  self.add_session_summary_to_context = add_session_summary_to_context
623
- self.add_history_to_context = add_history_to_context
624
- self.num_history_runs = num_history_runs
625
- self.max_tool_calls_from_history = max_tool_calls_from_history
626
637
  self.metadata = metadata
627
638
 
628
639
  self.reasoning = reasoning
@@ -3457,7 +3468,7 @@ class Team:
3457
3468
  run_messages.user_message.get_content_string() if run_messages.user_message is not None else None
3458
3469
  )
3459
3470
  if user_message_str is not None and user_message_str.strip() != "" and self.memory_manager is not None:
3460
- log_debug("Creating user memories.")
3471
+ log_debug("Managing user memories")
3461
3472
  self.memory_manager.create_user_memories(
3462
3473
  message=user_message_str,
3463
3474
  user_id=user_id,
@@ -3473,7 +3484,7 @@ class Team:
3473
3484
  run_messages.user_message.get_content_string() if run_messages.user_message is not None else None
3474
3485
  )
3475
3486
  if user_message_str is not None and user_message_str.strip() != "" and self.memory_manager is not None:
3476
- log_debug("Creating user memories.")
3487
+ log_debug("Managing user memories")
3477
3488
  await self.memory_manager.acreate_user_memories(
3478
3489
  message=user_message_str,
3479
3490
  user_id=user_id,
@@ -5928,6 +5939,7 @@ class Team:
5928
5939
 
5929
5940
  history = session.get_messages_from_last_n_runs(
5930
5941
  last_n=self.num_history_runs,
5942
+ last_n_messages=self.num_history_messages,
5931
5943
  skip_role=skip_role,
5932
5944
  team_id=self.id if self.parent_team_id is not None else None,
5933
5945
  )
@@ -6059,9 +6071,16 @@ class Team:
6059
6071
  if add_history_to_context:
6060
6072
  from copy import deepcopy
6061
6073
 
6074
+ # Only skip messages from history when system_message_role is NOT a standard conversation role.
6075
+ # Standard conversation roles ("user", "assistant", "tool") should never be filtered
6076
+ # to preserve conversation continuity.
6077
+ skip_role = (
6078
+ self.system_message_role if self.system_message_role not in ["user", "assistant", "tool"] else None
6079
+ )
6062
6080
  history = session.get_messages_from_last_n_runs(
6063
6081
  last_n=self.num_history_runs,
6064
- skip_role=self.system_message_role,
6082
+ last_n_messages=self.num_history_messages,
6083
+ skip_role=skip_role,
6065
6084
  team_id=self.id,
6066
6085
  )
6067
6086
 
@@ -6765,6 +6784,7 @@ class Team:
6765
6784
 
6766
6785
  history = session.get_messages_from_last_n_runs(
6767
6786
  last_n=member_agent.num_history_runs or self.num_history_runs,
6787
+ last_n_messages=member_agent.num_history_messages,
6768
6788
  skip_role=skip_role,
6769
6789
  agent_id=member_agent_id,
6770
6790
  team_id=member_team_id,
@@ -8501,7 +8521,7 @@ class Team:
8501
8521
  log_warning("No valid filters remain after validation. Search will proceed without filters.")
8502
8522
 
8503
8523
  if self.knowledge_retriever is not None and callable(self.knowledge_retriever):
8504
- from inspect import signature
8524
+ from inspect import isawaitable, signature
8505
8525
 
8506
8526
  try:
8507
8527
  sig = signature(self.knowledge_retriever)
@@ -8511,7 +8531,13 @@ class Team:
8511
8531
  if "filters" in sig.parameters:
8512
8532
  knowledge_retriever_kwargs["filters"] = filters
8513
8533
  knowledge_retriever_kwargs.update({"query": query, "num_documents": num_documents, **kwargs})
8514
- return self.knowledge_retriever(**knowledge_retriever_kwargs)
8534
+
8535
+ result = self.knowledge_retriever(**knowledge_retriever_kwargs)
8536
+
8537
+ if isawaitable(result):
8538
+ result = await result
8539
+
8540
+ return result
8515
8541
  except Exception as e:
8516
8542
  log_warning(f"Knowledge retriever failed: {e}")
8517
8543
  raise e
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: Agno: a lightweight library for building Multi-Agent Systems
5
5
  Author-email: Ashpreet Bedi <ashpreet@agno.com>
6
6
  Project-URL: homepage, https://agno.com
@@ -4,7 +4,7 @@ agno/exceptions.py,sha256=7xqLur8sWHugnViIJz4PvPKSHljSiVKNAqaKQOJgZiU,4982
4
4
  agno/media.py,sha256=eTfYb_pwhX_PCIVPSrW4VYRqmoxKABEF1aZClrVvQ30,16500
5
5
  agno/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  agno/agent/__init__.py,sha256=s7S3FgsjZxuaabzi8L5n4aSH8IZAiZ7XaNNcySGR-EQ,1051
7
- agno/agent/agent.py,sha256=qsdcMth4tg1dOzn_vL4XMsMDWk1Y2sYmSrFvw7jcOYo,453093
7
+ agno/agent/agent.py,sha256=U0xx271S2I6WdzrJqyJMZ7z_6VY7Tc4PGvazsLKdAfk,454283
8
8
  agno/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  agno/api/agent.py,sha256=fKlQ62E_C9Rjd7Zus3Gs3R1RG-IhzFV-ICpkb6SLqYc,932
10
10
  agno/api/api.py,sha256=Z7iWbrjheJcGLeeDYrtTCWiKTVqjH0uJI35UNWOtAXw,973
@@ -36,39 +36,40 @@ agno/db/async_postgres/__init__.py,sha256=ja_thcYP3bP0DD3da6iUVDR_w2-S6B3M-UxBlk
36
36
  agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
37
37
  agno/db/dynamo/dynamo.py,sha256=SlpKYVbfb67q8r2tp48lDRWyW2wfURo6S1TjWuqzPks,78126
38
38
  agno/db/dynamo/schemas.py,sha256=Pdtpa0wV_M8G_inM2rA8pBn2LdxdjG-irltQpYIQPMo,12932
39
- agno/db/dynamo/utils.py,sha256=dKVLfZOGvyCrEcVZZ6t1mHwyqZvqSNFzq0l-xVhGyIU,27390
39
+ agno/db/dynamo/utils.py,sha256=2tt1poijpdsKqh4jipiP_ZeJ5tvwWlxNLqLrRzCnd2U,27394
40
40
  agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
41
41
  agno/db/firestore/firestore.py,sha256=ck2UtZzoSfOjXUOR_BXf2LuZ66pNidPkA5_-aKSWhq0,70496
42
42
  agno/db/firestore/schemas.py,sha256=sPbi2teuzCfRECnCyj6LrNNu0drSqbBHpH-o1xoJYfs,4392
43
- agno/db/firestore/utils.py,sha256=ddmij9sdKDPbAnpUIyA74G1L55md9JWrrwGAssjy1Es,13808
43
+ agno/db/firestore/utils.py,sha256=hQudu539CDkEKG1GvtDPOJbzdhIpSTE7Y-Uu8IdooDU,13812
44
44
  agno/db/gcs_json/__init__.py,sha256=aTR4o3aFrzfANHtRw7nX9uc5_GsY52ch0rmoo7uXuc4,76
45
45
  agno/db/gcs_json/gcs_json_db.py,sha256=vtLrWlwEALSDAkHu3k8YEthkBLGENuYyO1yH493NOc8,54561
46
- agno/db/gcs_json/utils.py,sha256=4qBkY9F3i-PG55k99hEqzs15RNHgrkZ_jtfaRe0xQrA,8004
46
+ agno/db/gcs_json/utils.py,sha256=mleGhIY2J7s5rPUteQbIBosJQgRsRDPNJEwGBzh7Hws,8008
47
47
  agno/db/in_memory/__init__.py,sha256=OvR_FONhOh9PmcRfUA_6gvplZT5UGIBAgVKqVg6SWTA,80
48
48
  agno/db/in_memory/in_memory_db.py,sha256=IapPmv178SXv5Gy9t395PjvvcjpyIDNt_mpwL-2QGB8,45991
49
- agno/db/in_memory/utils.py,sha256=c50_QSw2DHeujjl5iHlJlgWxlmNHXwKl3ZwyLvVgED4,8057
49
+ agno/db/in_memory/utils.py,sha256=KM-FlcN8IszNU4dtP82oSAg5ImpYil3ygH0mOxWV2Ns,8061
50
50
  agno/db/json/__init__.py,sha256=zyPTmVF9S-OwXCL7FSkrDmunZ_Q14YZO3NYUv1Pa14Y,62
51
51
  agno/db/json/json_db.py,sha256=JgBintmR0gGaXsPLTprgvawpivXbEXhhW_2h5da5HB8,52632
52
- agno/db/json/utils.py,sha256=Hygm1SZ1qSLUH7h55MeULvoSGFIPMVnes-kp0kbrJSg,8052
52
+ agno/db/json/utils.py,sha256=a4dOAKLIP8vHh64gZ3ebBTrf69EzSM4vd2_80_WwRa8,8056
53
53
  agno/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  agno/db/migrations/v1_to_v2.py,sha256=gj8deaEWUxOr0qJyMfjOpV3LxEh-otOSOxDckeUq0qU,24938
55
- agno/db/mongo/__init__.py,sha256=EPa9QkGNVwnuej72LhZDCeASMXa-e0pR20jsgwa9BhY,63
55
+ agno/db/mongo/__init__.py,sha256=NG2WC2jE5PX1kMXTYCVHjhomf5DAJgvzSj45QHdvl2E,466
56
+ agno/db/mongo/async_mongo.py,sha256=7U7wTcqWewtR4a_aJi108GjD9uTw4oGmuNOXfMIrZf8,80357
56
57
  agno/db/mongo/mongo.py,sha256=0Mqr_U_ViK8S7clJR6nre-bAMaaGvfhEdSQtgKP9gfw,77034
57
58
  agno/db/mongo/schemas.py,sha256=d2ZxqqzKYwz0Iexgrv1HWArGnmk3KUKJ37PCzFykodI,2314
58
- agno/db/mongo/utils.py,sha256=UO-mI3w2-EUzgFQ3gzfT7-SeXlofau_eUzWknOhPvjY,9248
59
+ agno/db/mongo/utils.py,sha256=9xdra4QRe01f441VrSpBMMy9gv7SYeKrJJchlOdwfsE,9252
59
60
  agno/db/mysql/__init__.py,sha256=ohBMZ1E6ctioEF0XX5PjC4LtUQrc6lFkjsE4ojyXA8g,63
60
61
  agno/db/mysql/mysql.py,sha256=rkfUFwOcJ2lxyPq1QE0SItJ0ZhP2oY1Zj556jSJ77xk,95134
61
62
  agno/db/mysql/schemas.py,sha256=OpdAWhh-ElwQ5JOg1MKJqGJ16qzVTuyS56iH9Zw3oHs,6171
62
- agno/db/mysql/utils.py,sha256=jF06bYYASQYdpmR6lwjD4iAp3-fq7moezjOnEYpju8g,12356
63
+ agno/db/mysql/utils.py,sha256=XHuvgI-xAe0Y0sBZWSXW9B0xM0KKgI-JDssG7Tyqlbs,12360
63
64
  agno/db/postgres/__init__.py,sha256=Ojk00nTCzQFiH2ViD7KIBjgpkTKLRNPCwWnuXMKtNXY,154
64
- agno/db/postgres/async_postgres.py,sha256=2j6qJ3vXnh4YjdQ64uQFV2HgH_LnKgxVUrN31Smlm8k,78354
65
+ agno/db/postgres/async_postgres.py,sha256=y3l3R6gw4xb9Wlhh5YYrnEJ-n-Rmqzne2MC9FYKzxtA,78604
65
66
  agno/db/postgres/postgres.py,sha256=HnxdgdIFik3fPnFQLtAmz4y5y0EDNMcKzfh-Wlh8SoM,91345
66
67
  agno/db/postgres/schemas.py,sha256=O049oyPU07tHwnyuOzYyiKcK1NYvh6cQmmsFOvA7LTs,5971
67
- agno/db/postgres/utils.py,sha256=lHU20wxpFT20Lqqk8Pippbxs9I9h_MH7gku7DCemkfI,15461
68
+ agno/db/postgres/utils.py,sha256=ZHWmVlx96pqI07h-hoiMm6TZTsudpf2zxID4MJtiY9s,15465
68
69
  agno/db/redis/__init__.py,sha256=rZWeZ4CpVeKP-enVQ-SRoJ777i0rdGNgoNDRS9gsfAc,63
69
70
  agno/db/redis/redis.py,sha256=QoM8J8uXCv5x5w0RZsFs9mpNzctXkCSBaZo46rrHvxs,62821
70
71
  agno/db/redis/schemas.py,sha256=3WilZq3NqZqRONyu_mAjjmQpClgYDYoWjfkvlOh0Tfw,4038
71
- agno/db/redis/utils.py,sha256=b6FthFWSgrkMtjHSclPAyjW-ZwYLFn_3r-WFiCkuntI,11232
72
+ agno/db/redis/utils.py,sha256=4iql9MavWM3okOhuOFKK7r0TP1AAT5qAAbiL5jTE84k,11236
72
73
  agno/db/schemas/__init__.py,sha256=g72Zr5_nm00yXHStv4pf9PG9bGLKXEK7Av6YQtrDbCQ,147
73
74
  agno/db/schemas/culture.py,sha256=w4azKAVLf5X4xyRUFXMIEq0CA0pnyeN03W3eMpqScxo,4342
74
75
  agno/db/schemas/evals.py,sha256=T1zIiwrN5fxZVD2em85wQ9CV-HSVZvNF4D4v9_w30VA,786
@@ -78,12 +79,12 @@ agno/db/schemas/metrics.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
79
  agno/db/singlestore/__init__.py,sha256=dufbaod8ZZIeZIVi0hYJQ8Eu2DfIfWdIy00cpqAsx9U,87
79
80
  agno/db/singlestore/schemas.py,sha256=Eb9wipCjWr48dlF3CMDa53WDvFsr7QhLOSaTgbUkMKg,6178
80
81
  agno/db/singlestore/singlestore.py,sha256=B_RG3f67j7JLOQ_xs4bnGw8ZjTLqopzd5GGg2GjTPUc,93042
81
- agno/db/singlestore/utils.py,sha256=ZYkpaSwFE_EiJ06vOd_bpr22RvdercFObTTlw3hfq2M,13667
82
+ agno/db/singlestore/utils.py,sha256=NnA6YJAk1Oj-5w7Y-juxuQ7eiFnpjVAiGCV5U7QcjVE,13671
82
83
  agno/db/sqlite/__init__.py,sha256=09V3i4y0-tBjt60--57ivZ__SaaS67GCsDT4Apzv-5Y,138
83
84
  agno/db/sqlite/async_sqlite.py,sha256=EGHkhETD-UPxzm0wvOHJo99BlOOddW1NRtahNnpFTFw,95604
84
85
  agno/db/sqlite/schemas.py,sha256=NyEvAFG-hi3Inm5femgJdorxJ5l2-bXLWBhxJ4r7jW0,5832
85
86
  agno/db/sqlite/sqlite.py,sha256=NQfh56217Xki1KnDCM_kAfPjn4RHz_0wYbXJBaUOi3Q,93789
86
- agno/db/sqlite/utils.py,sha256=XHQoSmvOTCrMdLPMIBj0Zwj7WY_X8U8wRHkI8hq5S30,15547
87
+ agno/db/sqlite/utils.py,sha256=21Z1PjQNjz1QaeY0BQY-abg0sv0nIJJ3oHuFUTV-raU,15551
87
88
  agno/db/surrealdb/__init__.py,sha256=C8qp5-Nx9YnSmgKEtGua-sqG_ntCXONBw1qqnNyKPqI,75
88
89
  agno/db/surrealdb/metrics.py,sha256=oKDRyjRQ6KR3HaO8zDHQLVMG7-0NDkOFOKX5I7mD5FA,10336
89
90
  agno/db/surrealdb/models.py,sha256=2KBxSxiEI4yQ2OTOr1HVeL8Fd52tQfWkM53kwzqUmyw,11512
@@ -132,7 +133,7 @@ agno/knowledge/embedder/jina.py,sha256=M2M2ki0XyylyitJs_ZL2JoepC1y70IJzYntPsCVUx
132
133
  agno/knowledge/embedder/langdb.py,sha256=_vbE1Jbj16WGP4aEkh54D7ESTu0LlI1_lp5WiXPIABA,731
133
134
  agno/knowledge/embedder/mistral.py,sha256=AMc3VBpQCKFxetx2gRd9c6iRvR4-bSEWJ1Q4JPwQg28,8608
134
135
  agno/knowledge/embedder/nebius.py,sha256=4I2irehvR6Di00Al4jbG4vAa6KZnbOJ-7QqVjB7Mn64,363
135
- agno/knowledge/embedder/ollama.py,sha256=fzbC2IMkYOs0QJn3rtMZiLxxpPRPIw7uTefGtjmxW1I,6005
136
+ agno/knowledge/embedder/ollama.py,sha256=faLkOvPt2dWs8h87anAgeeG3LJpMH4jVMWP7_3f7JHs,6313
136
137
  agno/knowledge/embedder/openai.py,sha256=oUEyqIyREIPYRCtQBjAn-aIjxI7DQkMZQmXOt0OkLbo,7331
137
138
  agno/knowledge/embedder/sentence_transformer.py,sha256=khJJbJlBFDeVJm7yd4ub3e7n7rM-l5z00f594jGtIaU,2203
138
139
  agno/knowledge/embedder/together.py,sha256=Pt524Lh6YRDKfD8rfmLu0Qlw4dDh4vLz7KEMIvIULBk,387
@@ -164,7 +165,7 @@ agno/knowledge/reranker/cohere.py,sha256=2Be5blVyeZ3vYlnFa2NYvJuytjaCB8G2OWJ11pQ
164
165
  agno/knowledge/reranker/infinity.py,sha256=N9geg9xZqRdJZksfQcvbGJgMymXrQVJl_K5KICWqH8o,7193
165
166
  agno/knowledge/reranker/sentence_transformer.py,sha256=ZN4SqnMZsUhg5G7AzlONM1_UjezfNrjFYXpNVHD4U-U,1912
166
167
  agno/memory/__init__.py,sha256=XWKJU5SJObYZqEKMZ2XYwgH8-YeuWUoSRfT4dEI5HnY,101
167
- agno/memory/manager.py,sha256=Hvs0JYLy8QM7KZhR5mNEET1rZqEb7N6uCoMYf9YRyzA,51834
168
+ agno/memory/manager.py,sha256=p7ZHhzrfYYEj_7ALCdvU72qWa_qtxkQc-A9taqVfLAw,51829
168
169
  agno/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
170
  agno/models/base.py,sha256=6ucSAOgG95n6uT2VaWp8QtZctVnH67FS4JwYt4P4_Rw,95015
170
171
  agno/models/defaults.py,sha256=1_fe4-ZbNriE8BgqxVRVi4KGzEYxYKYsz4hn6CZNEEM,40
@@ -256,12 +257,12 @@ agno/models/vllm/vllm.py,sha256=UtiiSvUR4pG_1CzuhY5MWduRgzM2hGVTakKJ6ZBdQmo,2730
256
257
  agno/models/xai/__init__.py,sha256=ukcCxnCHxTtkJNA2bAMTX4MhCv1wJcbiq8ZIfYczIxs,55
257
258
  agno/models/xai/xai.py,sha256=jA6_39tfapkjkHKdzbKaNq1t9qIvO1IaZY1hQqEmFVs,4181
258
259
  agno/os/__init__.py,sha256=h8oQu7vhD5RZf09jkyM_Kt1Kdq_d5kFB9gJju8QPwcY,55
259
- agno/os/app.py,sha256=F_5XGuZMVc2Y4X9-9WrF8JGvE9Ae74s1AVLo01LU_Lk,27835
260
+ agno/os/app.py,sha256=N6sBJqx2ShfuPaPJdy3waHC5cZ5OH-Owa0ApgTojNm8,30217
260
261
  agno/os/auth.py,sha256=FyBtAKWtg-qSunCas5m5pK1dVEmikOSZvcCp5r25tTA,1844
261
262
  agno/os/config.py,sha256=u4R9yazQXIcKjR3QzEIZw_XAe_OHp3xn0ff7SVkj2jA,2893
262
263
  agno/os/mcp.py,sha256=vJhjjSm1KC61HLoxPj24lSrjkjo7plkoFfcQX2BmTp0,10253
263
264
  agno/os/router.py,sha256=qn9oK0ko8P8WtYAaxOHTeiJLNC7FRptpfEGZQSco7wk,71172
264
- agno/os/schema.py,sha256=jiliSXitWI-fOrPJQIUC9WfmpafFN39GKwMceB0cxbA,53107
265
+ agno/os/schema.py,sha256=oDQSPh4SMIswX4eCOcT7dCRwNaPIwg8YACdqtHJf1SM,53073
265
266
  agno/os/settings.py,sha256=Cn5_8lZI8Vx1UaUYqs9h6Qp4IMDFn4f3c35uppiaMy4,1343
266
267
  agno/os/utils.py,sha256=qe3utJ9jS2b0an5WbOu9eRY3LQueZL6GRdh4-GLXan0,20269
267
268
  agno/os/interfaces/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -315,19 +316,19 @@ agno/reasoning/openai.py,sha256=JYk-mR9cMf1ibprX3MdL8oeCEDyQ3XaJw9PAIYvWeGk,3234
315
316
  agno/reasoning/step.py,sha256=6DaOb_0DJRz9Yh1w_mxcRaOSVzIQDrj3lQ6rzHLdIwA,1220
316
317
  agno/reasoning/vertexai.py,sha256=O9ntvalkIY2jLmWviEH1DnecMskqTL-mRZQBZohoHiU,2974
317
318
  agno/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
318
- agno/run/agent.py,sha256=7HXieysLfmAURwy-wdAju01nTbdkat9eIOSjbuOWyfk,25432
319
+ agno/run/agent.py,sha256=uTtruA2DCrt5qPuAH6QuDQZ-s4E7TEP8NkIGBE7n-OA,26887
319
320
  agno/run/base.py,sha256=2KEu0TLfCM-0Dd3JQ6aSQf_dqtKHtDIUt0oCPdk7rIk,7756
320
321
  agno/run/cancel.py,sha256=yoSj3fnx8D7Gf-fSngVIgd3GOp3tRaDhHH_4QeHDoAk,2667
321
322
  agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
322
- agno/run/team.py,sha256=_ykwaf4i-7MFvgDr3pdwxWe8SRmubA0ll7igWrih09w,25888
323
+ agno/run/team.py,sha256=hR61LilAVVvVzVTbyJ600youEP29poX2CosmKa0f4kU,27343
323
324
  agno/run/workflow.py,sha256=dxnrvG7icRt7oOiFYyJvqI_XpSj4A0dCAMRCmsSo1XQ,23377
324
325
  agno/session/__init__.py,sha256=p6eqzWcLSHiMex2yZvkwv2yrFUNdGs21TGMS49xrEC4,376
325
- agno/session/agent.py,sha256=S2bdsxVBIYHMCZlXVtkXnbm4p_kVvX1j7v4u3V7Jups,9943
326
+ agno/session/agent.py,sha256=UGgDQB5nTxFwJcqWpWAmRGjXMLhwSCqRXDyoEi5a-jg,11763
326
327
  agno/session/summary.py,sha256=JEvSnvOgYf6pxmExXsQu7kQGx5p4OLVuQtgsypz2jhY,10130
327
- agno/session/team.py,sha256=fRmFn_51O6uRUlLYgt3HKcAoEjpDScMRd0NW5WTWQWQ,13442
328
+ agno/session/team.py,sha256=M9QEmGYyQM64ZsvPWRdp1xZV6EQGuun6pjJL05AzU-k,15260
328
329
  agno/session/workflow.py,sha256=tluE_3ERMBYJtffpwlrhdETWlzJk6Xw2x06FZ1Y3fXg,7397
329
330
  agno/team/__init__.py,sha256=toHidBOo5M3n_TIVtIKHgcDbLL9HR-_U-YQYuIt_XtE,847
330
- agno/team/team.py,sha256=ToXKAExObQfZePqezLqdEG90BiE5W7J6kfv9BDYoHgk,399360
331
+ agno/team/team.py,sha256=s1Xd-1S50HJR7iDhJM1lw-gYTRKhEs_fsUT8aZpS56Y,400633
331
332
  agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
332
333
  agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
333
334
  agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
@@ -560,8 +561,8 @@ agno/workflow/step.py,sha256=3t83LwEajM-jHjcXzJR74iEO36P4ZVqenocmiWLtQOg,60532
560
561
  agno/workflow/steps.py,sha256=O3lbKw56ziSnuJndAGm8hjlEwdTh2jQXf1s0587Va3M,25671
561
562
  agno/workflow/types.py,sha256=J474F5MWHCHHVjrzTUPJihlcrRLUnQ3hVW2-9TWdxWw,18519
562
563
  agno/workflow/workflow.py,sha256=LBy_jVjvglRE4sOLAITZGaOJctJYbP59oV0HvuiHopA,147346
563
- agno-2.2.2.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
564
- agno-2.2.2.dist-info/METADATA,sha256=SBxvECM_DJ1rAR-Pa3OAKIcJrkjU30irpsU3oOSUO1o,28193
565
- agno-2.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
566
- agno-2.2.2.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
567
- agno-2.2.2.dist-info/RECORD,,
564
+ agno-2.2.4.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
565
+ agno-2.2.4.dist-info/METADATA,sha256=IRtlV1luuV_lGWilSVIOVmjhZnUf90G2ZbRPJBHQKNA,28193
566
+ agno-2.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
567
+ agno-2.2.4.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
568
+ agno-2.2.4.dist-info/RECORD,,
File without changes