agno 2.0.7__py3-none-any.whl → 2.0.9__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.
Files changed (64) hide show
  1. agno/agent/agent.py +83 -51
  2. agno/db/base.py +14 -0
  3. agno/db/dynamo/dynamo.py +107 -27
  4. agno/db/firestore/firestore.py +109 -33
  5. agno/db/gcs_json/gcs_json_db.py +100 -20
  6. agno/db/in_memory/in_memory_db.py +95 -20
  7. agno/db/json/json_db.py +101 -21
  8. agno/db/migrations/v1_to_v2.py +322 -47
  9. agno/db/mongo/mongo.py +251 -26
  10. agno/db/mysql/mysql.py +307 -6
  11. agno/db/postgres/postgres.py +279 -33
  12. agno/db/redis/redis.py +99 -22
  13. agno/db/singlestore/singlestore.py +319 -38
  14. agno/db/sqlite/sqlite.py +339 -23
  15. agno/knowledge/embedder/sentence_transformer.py +3 -3
  16. agno/knowledge/knowledge.py +152 -31
  17. agno/knowledge/types.py +8 -0
  18. agno/models/anthropic/claude.py +0 -20
  19. agno/models/cometapi/__init__.py +5 -0
  20. agno/models/cometapi/cometapi.py +57 -0
  21. agno/models/google/gemini.py +4 -8
  22. agno/models/huggingface/huggingface.py +2 -1
  23. agno/models/ollama/chat.py +52 -3
  24. agno/models/openai/chat.py +9 -7
  25. agno/models/openai/responses.py +21 -17
  26. agno/os/interfaces/agui/agui.py +2 -2
  27. agno/os/interfaces/agui/utils.py +81 -18
  28. agno/os/interfaces/base.py +2 -0
  29. agno/os/interfaces/slack/router.py +50 -10
  30. agno/os/interfaces/slack/slack.py +6 -4
  31. agno/os/interfaces/whatsapp/router.py +7 -4
  32. agno/os/interfaces/whatsapp/whatsapp.py +2 -2
  33. agno/os/router.py +18 -0
  34. agno/os/utils.py +10 -2
  35. agno/reasoning/azure_ai_foundry.py +2 -2
  36. agno/reasoning/deepseek.py +2 -2
  37. agno/reasoning/default.py +3 -1
  38. agno/reasoning/groq.py +2 -2
  39. agno/reasoning/ollama.py +2 -2
  40. agno/reasoning/openai.py +2 -2
  41. agno/run/base.py +15 -2
  42. agno/session/agent.py +8 -5
  43. agno/session/team.py +14 -10
  44. agno/team/team.py +218 -111
  45. agno/tools/function.py +43 -4
  46. agno/tools/mcp.py +60 -37
  47. agno/tools/mcp_toolbox.py +284 -0
  48. agno/tools/scrapegraph.py +58 -31
  49. agno/tools/whatsapp.py +1 -1
  50. agno/utils/gemini.py +147 -19
  51. agno/utils/models/claude.py +9 -0
  52. agno/utils/print_response/agent.py +18 -2
  53. agno/utils/print_response/team.py +22 -6
  54. agno/utils/reasoning.py +22 -1
  55. agno/utils/string.py +9 -0
  56. agno/vectordb/base.py +2 -2
  57. agno/vectordb/langchaindb/langchaindb.py +5 -7
  58. agno/vectordb/llamaindex/llamaindexdb.py +25 -6
  59. agno/workflow/workflow.py +30 -15
  60. {agno-2.0.7.dist-info → agno-2.0.9.dist-info}/METADATA +4 -1
  61. {agno-2.0.7.dist-info → agno-2.0.9.dist-info}/RECORD +64 -61
  62. {agno-2.0.7.dist-info → agno-2.0.9.dist-info}/WHEEL +0 -0
  63. {agno-2.0.7.dist-info → agno-2.0.9.dist-info}/licenses/LICENSE +0 -0
  64. {agno-2.0.7.dist-info → agno-2.0.9.dist-info}/top_level.txt +0 -0
agno/utils/reasoning.py CHANGED
@@ -1,4 +1,4 @@
1
- from typing import TYPE_CHECKING, List, Union
1
+ from typing import TYPE_CHECKING, List, Optional, Tuple, Union
2
2
 
3
3
  from agno.models.message import Message
4
4
  from agno.models.metrics import Metrics
@@ -9,6 +9,27 @@ if TYPE_CHECKING:
9
9
  from agno.team.team import TeamRunOutput
10
10
 
11
11
 
12
+ def extract_thinking_content(content: str) -> Tuple[Optional[str], str]:
13
+ """Extract thinking content from response text between <think> tags."""
14
+ if not content or "</think>" not in content:
15
+ return None, content
16
+
17
+ # Find the end of thinking content
18
+ end_idx = content.find("</think>")
19
+
20
+ # Look for opening <think> tag, if not found, assume thinking starts at beginning
21
+ start_idx = content.find("<think>")
22
+ if start_idx == -1:
23
+ reasoning_content = content[:end_idx].strip()
24
+ else:
25
+ start_idx = start_idx + len("<think>")
26
+ reasoning_content = content[start_idx:end_idx].strip()
27
+
28
+ output_content = content[end_idx + len("</think>") :].strip()
29
+
30
+ return reasoning_content, output_content
31
+
32
+
12
33
  def append_to_reasoning_content(run_response: Union["RunOutput", "TeamRunOutput"], content: str) -> None:
13
34
  """Helper to append content to the reasoning_content field."""
14
35
  if not hasattr(run_response, "reasoning_content") or not run_response.reasoning_content: # type: ignore
agno/utils/string.py CHANGED
@@ -158,6 +158,15 @@ def _parse_individual_json(content: str, output_schema: Type[BaseModel]) -> Opti
158
158
  def parse_response_model_str(content: str, output_schema: Type[BaseModel]) -> Optional[BaseModel]:
159
159
  structured_output = None
160
160
 
161
+ # Extract thinking content first to prevent <think> tags from corrupting JSON
162
+ from agno.utils.reasoning import extract_thinking_content
163
+
164
+ # handle thinking content b/w <think> tags
165
+ if "</think>" in content:
166
+ reasoning_content, output_content = extract_thinking_content(content)
167
+ if reasoning_content:
168
+ content = output_content
169
+
161
170
  # Clean content first to simplify all parsing attempts
162
171
  cleaned_content = _clean_json_content(content)
163
172
 
agno/vectordb/base.py CHANGED
@@ -1,12 +1,12 @@
1
1
  from abc import ABC, abstractmethod
2
2
  from typing import Any, Dict, List, Optional
3
3
 
4
- from agno.knowledge.document import Document
5
-
6
4
 
7
5
  class VectorDb(ABC):
8
6
  """Base class for Vector Databases"""
9
7
 
8
+ from agno.knowledge.document import Document
9
+
10
10
  @abstractmethod
11
11
  def create(self) -> None:
12
12
  raise NotImplementedError
@@ -63,9 +63,7 @@ class LangChainVectorDb(VectorDb):
63
63
  logger.warning("LangChainKnowledgeBase.async_upsert() not supported - please check the vectorstore manually.")
64
64
  raise NotImplementedError
65
65
 
66
- def search(
67
- self, query: str, num_documents: Optional[int] = None, filters: Optional[Dict[str, Any]] = None
68
- ) -> List[Document]:
66
+ def search(self, query: str, limit: int = 5, filters: Optional[Dict[str, Any]] = None) -> List[Document]:
69
67
  """Returns relevant documents matching the query"""
70
68
 
71
69
  try:
@@ -79,7 +77,7 @@ class LangChainVectorDb(VectorDb):
79
77
  if self.vectorstore is not None and self.knowledge_retriever is None:
80
78
  log_debug("Creating knowledge retriever")
81
79
  if self.search_kwargs is None:
82
- self.search_kwargs = {"k": num_documents}
80
+ self.search_kwargs = {"k": limit}
83
81
  if filters is not None:
84
82
  self.search_kwargs.update(filters)
85
83
  self.knowledge_retriever = self.vectorstore.as_retriever(search_kwargs=self.search_kwargs)
@@ -91,7 +89,7 @@ class LangChainVectorDb(VectorDb):
91
89
  if not isinstance(self.knowledge_retriever, BaseRetriever):
92
90
  raise ValueError(f"Knowledge retriever is not of type BaseRetriever: {self.knowledge_retriever}")
93
91
 
94
- log_debug(f"Getting {num_documents} relevant documents for query: {query}")
92
+ log_debug(f"Getting {limit} relevant documents for query: {query}")
95
93
  lc_documents: List[LangChainDocument] = self.knowledge_retriever.invoke(input=query)
96
94
  documents = []
97
95
  for lc_doc in lc_documents:
@@ -104,9 +102,9 @@ class LangChainVectorDb(VectorDb):
104
102
  return documents
105
103
 
106
104
  async def async_search(
107
- self, query: str, num_documents: Optional[int] = None, filters: Optional[Dict[str, Any]] = None
105
+ self, query: str, limit: int = 5, filters: Optional[Dict[str, Any]] = None
108
106
  ) -> List[Document]:
109
- return self.search(query, num_documents, filters)
107
+ return self.search(query, limit, filters)
110
108
 
111
109
  def drop(self) -> None:
112
110
  raise NotImplementedError
@@ -17,6 +17,11 @@ class LlamaIndexVectorDb(VectorDb):
17
17
  knowledge_retriever: BaseRetriever
18
18
  loader: Optional[Callable] = None
19
19
 
20
+ def __init__(self, knowledge_retriever: BaseRetriever, loader: Optional[Callable] = None, **kwargs):
21
+ super().__init__(**kwargs)
22
+ self.knowledge_retriever = knowledge_retriever
23
+ self.loader = loader
24
+
20
25
  def create(self) -> None:
21
26
  raise NotImplementedError
22
27
 
@@ -53,15 +58,13 @@ class LlamaIndexVectorDb(VectorDb):
53
58
  logger.warning("LlamaIndexVectorDb.async_upsert() not supported - please check the vectorstore manually.")
54
59
  raise NotImplementedError
55
60
 
56
- def search(
57
- self, query: str, num_documents: Optional[int] = None, filters: Optional[Dict[str, Any]] = None
58
- ) -> List[Document]:
61
+ def search(self, query: str, limit: int = 5, filters: Optional[Dict[str, Any]] = None) -> List[Document]:
59
62
  """
60
63
  Returns relevant documents matching the query.
61
64
 
62
65
  Args:
63
66
  query (str): The query string to search for.
64
- num_documents (Optional[int]): The maximum number of documents to return. Defaults to None.
67
+ limit (int): The maximum number of documents to return. Defaults to 5.
65
68
  filters (Optional[Dict[str, Any]]): Filters to apply to the search. Defaults to None.
66
69
 
67
70
  Returns:
@@ -73,8 +76,8 @@ class LlamaIndexVectorDb(VectorDb):
73
76
  raise ValueError(f"Knowledge retriever is not of type BaseRetriever: {self.knowledge_retriever}")
74
77
 
75
78
  lc_documents: List[NodeWithScore] = self.knowledge_retriever.retrieve(query)
76
- if num_documents is not None:
77
- lc_documents = lc_documents[:num_documents]
79
+ if limit is not None:
80
+ lc_documents = lc_documents[:limit]
78
81
  documents = []
79
82
  for lc_doc in lc_documents:
80
83
  documents.append(
@@ -125,3 +128,19 @@ class LlamaIndexVectorDb(VectorDb):
125
128
  metadata (Dict[str, Any]): The metadata to update
126
129
  """
127
130
  raise NotImplementedError("update_metadata not supported for LlamaIndex vectorstores")
131
+
132
+ def delete_by_content_id(self, content_id: str) -> bool:
133
+ """
134
+ Delete documents by content ID.
135
+ Not implemented for LlamaIndex wrapper.
136
+
137
+ Args:
138
+ content_id (str): The content ID to delete
139
+
140
+ Returns:
141
+ bool: False as this operation is not supported
142
+ """
143
+ logger.warning(
144
+ "LlamaIndexVectorDb.delete_by_content_id() not supported - please check the vectorstore manually."
145
+ )
146
+ return False
agno/workflow/workflow.py CHANGED
@@ -343,9 +343,19 @@ class Workflow:
343
343
  if user_id is None:
344
344
  user_id = self.user_id
345
345
 
346
- # Determine the session_state
346
+ # Determine the session_state with proper precedence
347
347
  if session_state is None:
348
348
  session_state = self.session_state or {}
349
+ else:
350
+ # If run session_state is provided, merge agent defaults under it
351
+ # This ensures run state takes precedence over agent defaults
352
+ if self.session_state:
353
+ from agno.utils.merge_dict import merge_dictionaries
354
+
355
+ base_state = self.session_state.copy()
356
+ merge_dictionaries(base_state, session_state)
357
+ session_state.clear()
358
+ session_state.update(base_state)
349
359
 
350
360
  if user_id is not None:
351
361
  session_state["current_user_id"] = user_id
@@ -594,7 +604,8 @@ class Workflow:
594
604
 
595
605
  from agno.utils.merge_dict import merge_dictionaries
596
606
 
597
- # Get the session_state from the database and update the current session_state
607
+ # Get the session_state from the database and merge with proper precedence
608
+ # At this point session_state contains: agent_defaults + run_params
598
609
  if session.session_data and "session_state" in session.session_data:
599
610
  session_state_from_db = session.session_data.get("session_state")
600
611
 
@@ -603,10 +614,11 @@ class Workflow:
603
614
  and isinstance(session_state_from_db, dict)
604
615
  and len(session_state_from_db) > 0
605
616
  ):
606
- # This updates session_state_from_db
607
- # If there are conflicting keys, values from provided session_state will take precedence
608
- merge_dictionaries(session_state_from_db, session_state)
609
- session_state = session_state_from_db
617
+ # This preserves precedence: run_params > db_state > agent_defaults
618
+ merged_state = session_state_from_db.copy()
619
+ merge_dictionaries(merged_state, session_state)
620
+ session_state.clear()
621
+ session_state.update(merged_state)
610
622
 
611
623
  # Update the session_state in the session
612
624
  if session.session_data is None:
@@ -616,7 +628,10 @@ class Workflow:
616
628
  return session_state
617
629
 
618
630
  def _get_workflow_data(self) -> Dict[str, Any]:
619
- workflow_data = {}
631
+ workflow_data: Dict[str, Any] = {
632
+ "workflow_id": self.id,
633
+ "name": self.name,
634
+ }
620
635
 
621
636
  if self.steps and not callable(self.steps):
622
637
  steps_dict = []
@@ -939,9 +954,7 @@ class Workflow:
939
954
 
940
955
  # Update the workflow-level previous_step_outputs dictionary
941
956
  previous_step_outputs[step_name] = step_output
942
- if step_output.stop:
943
- logger.info(f"Early termination requested by step {step_name}")
944
- break
957
+ collected_step_outputs.append(step_output)
945
958
 
946
959
  # Update shared media for next step
947
960
  shared_images.extend(step_output.images or [])
@@ -953,7 +966,9 @@ class Workflow:
953
966
  output_audio.extend(step_output.audio or [])
954
967
  output_files.extend(step_output.files or [])
955
968
 
956
- collected_step_outputs.append(step_output)
969
+ if step_output.stop:
970
+ logger.info(f"Early termination requested by step {step_name}")
971
+ break
957
972
 
958
973
  # Update the workflow_run_response with completion data
959
974
  if collected_step_outputs:
@@ -1375,9 +1390,7 @@ class Workflow:
1375
1390
 
1376
1391
  # Update the workflow-level previous_step_outputs dictionary
1377
1392
  previous_step_outputs[step_name] = step_output
1378
- if step_output.stop:
1379
- logger.info(f"Early termination requested by step {step_name}")
1380
- break
1393
+ collected_step_outputs.append(step_output)
1381
1394
 
1382
1395
  # Update shared media for next step
1383
1396
  shared_images.extend(step_output.images or [])
@@ -1389,7 +1402,9 @@ class Workflow:
1389
1402
  output_audio.extend(step_output.audio or [])
1390
1403
  output_files.extend(step_output.files or [])
1391
1404
 
1392
- collected_step_outputs.append(step_output)
1405
+ if step_output.stop:
1406
+ logger.info(f"Early termination requested by step {step_name}")
1407
+ break
1393
1408
 
1394
1409
  # Update the workflow_run_response with completion data
1395
1410
  if collected_step_outputs:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.0.7
3
+ Version: 2.0.9
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
@@ -163,6 +163,8 @@ Requires-Dist: psycopg-binary; extra == "psycopg"
163
163
  Requires-Dist: psycopg; extra == "psycopg"
164
164
  Provides-Extra: reportlab
165
165
  Requires-Dist: reportlab; extra == "reportlab"
166
+ Provides-Extra: scrapegraph
167
+ Requires-Dist: scrapegraph-py; extra == "scrapegraph"
166
168
  Provides-Extra: todoist
167
169
  Requires-Dist: todoist-api-python; extra == "todoist"
168
170
  Provides-Extra: valyu
@@ -300,6 +302,7 @@ Requires-Dist: agno[mcp]; extra == "tools"
300
302
  Requires-Dist: agno[browserbase]; extra == "tools"
301
303
  Requires-Dist: agno[agentql]; extra == "tools"
302
304
  Requires-Dist: agno[opencv]; extra == "tools"
305
+ Requires-Dist: agno[scrapegraph]; extra == "tools"
303
306
  Requires-Dist: agno[valyu]; extra == "tools"
304
307
  Requires-Dist: agno[confluence]; extra == "tools"
305
308
  Requires-Dist: agno[oxylabs]; extra == "tools"
@@ -4,7 +4,7 @@ agno/exceptions.py,sha256=HWuuNFS5J0l1RYJsdUrSx51M22aFEoh9ltoeonXBoBw,2891
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=1-GmMYKCDv4lxUzyr2IKS1nvVzQQix30M03jzE5AM5w,327890
7
+ agno/agent/agent.py,sha256=ZfLfL6KRQzyPRQh3WS5oyHqGScgzdDvaZMce3KsDNMQ,329965
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
@@ -28,41 +28,41 @@ agno/cloud/aws/s3/api_client.py,sha256=nW-Jn8WPILIvdH8niQOPpKMXlAIDB2xYTz0GHRy4P
28
28
  agno/cloud/aws/s3/bucket.py,sha256=5dkKhjWVmf8dyQEyCTd6DkQlKADBnm0-_VKQgKqtJQM,7798
29
29
  agno/cloud/aws/s3/object.py,sha256=ttZPbLm3o63oGIhKgAr_bIf9DOpJlXRmrEVlkbTcJbk,1766
30
30
  agno/db/__init__.py,sha256=bfd_tpKsIKCjZosnFqID26VoWqy88v8gzkf9kLHToY4,625
31
- agno/db/base.py,sha256=POGw6M85Dwt1YD_69KbtB1iuTyrqYl4ZIWU07GO_4yc,7898
31
+ agno/db/base.py,sha256=JYsminwt6x0MuWxmJIEf9AjNl1WkDELKjlGvCJRdHZ4,8482
32
32
  agno/db/utils.py,sha256=xjrbR4g2ry0HnkiQC29Ql7jRzfxrorqS4HNlswhzVcM,3478
33
33
  agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
34
- agno/db/dynamo/dynamo.py,sha256=kfuClYY8i8cv2R5hZ4vUayEW4NQsE3YDxnhihF2fz8U,66522
34
+ agno/db/dynamo/dynamo.py,sha256=Gde62hB1qQx62ey_w00-Ap0_LJhnzwTbwvHJegTr_io,69134
35
35
  agno/db/dynamo/schemas.py,sha256=ZqeR4QdqMVi53iz2qcs-d5Y6MDfmhHSuP7vot__hLoI,11638
36
36
  agno/db/dynamo/utils.py,sha256=3Kwkq7FqUac6Q6BjwuzWzfyo4ANnS8FIz7_n3EEnbYo,25047
37
37
  agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
38
- agno/db/firestore/firestore.py,sha256=Gi_eapQORjPJOOTZKIxTejlW1P4NCH6UWQPphTBgzC8,57079
38
+ agno/db/firestore/firestore.py,sha256=izPTOz6u08YQ9sXl7b4x--7wDmSwW1TpWPeefccLpzw,59650
39
39
  agno/db/firestore/schemas.py,sha256=k8YuG_PC_Hd3WCLaDkk4bAJP8BmAWmrt6VXuG1wr2Ak,4132
40
40
  agno/db/firestore/utils.py,sha256=FVR1XQjnsZsG3IrFyvTOHICd0lgD99aajUJ-UAvVEOg,10332
41
41
  agno/db/gcs_json/__init__.py,sha256=aTR4o3aFrzfANHtRw7nX9uc5_GsY52ch0rmoo7uXuc4,76
42
- agno/db/gcs_json/gcs_json_db.py,sha256=1OWdYE-ywsX2TcUzZ_SPIQuJLBrbArKW2yH5DAH48K8,42388
42
+ agno/db/gcs_json/gcs_json_db.py,sha256=1veG3FX1exwTVGzdcMQiM62kctp1S9Sn3QFrh4O06RU,45001
43
43
  agno/db/gcs_json/utils.py,sha256=Ist4HuQoYvC2BKr01oTxDp9mfMirz1UBBDKElbXg2bg,6610
44
44
  agno/db/in_memory/__init__.py,sha256=OvR_FONhOh9PmcRfUA_6gvplZT5UGIBAgVKqVg6SWTA,80
45
- agno/db/in_memory/in_memory_db.py,sha256=qivtyP3ShYMuKFRadGgzbrRyaCElfm511ytiSdqPWcY,35074
45
+ agno/db/in_memory/in_memory_db.py,sha256=L0a8pU5I1HNy_8Uo3lP4BjOOqhUDj021-jxcPohxp0o,37615
46
46
  agno/db/in_memory/utils.py,sha256=X02wny18w5uvGE3caokPbCQTG6t7OErWNPkK3Umru3s,5780
47
47
  agno/db/json/__init__.py,sha256=zyPTmVF9S-OwXCL7FSkrDmunZ_Q14YZO3NYUv1Pa14Y,62
48
- agno/db/json/json_db.py,sha256=xIYkb4Fzns5490SOtIdY4wbqIaWbIh87ga6Oscci6ms,42491
48
+ agno/db/json/json_db.py,sha256=fBXdRiP69bHz-FE2LsnFQx0WNatpkjtNfxrebVODhZo,45099
49
49
  agno/db/json/utils.py,sha256=__c14xMdyw1AlyV7-DAGDr8YicqhfCbSS5C8OkVN2So,6658
50
50
  agno/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- agno/db/migrations/v1_to_v2.py,sha256=HYLLaas9YEEbAOhzK3Sd-qBP-1YfHeeWglWsU31V584,12692
51
+ agno/db/migrations/v1_to_v2.py,sha256=bBc96nKf8CjkuhTEdcKdr3hUgPpRMVwE71ozVCnux4c,23969
52
52
  agno/db/mongo/__init__.py,sha256=EPa9QkGNVwnuej72LhZDCeASMXa-e0pR20jsgwa9BhY,63
53
- agno/db/mongo/mongo.py,sha256=jHizCIW4fFYrrzXMGH4rfV4DbP8p7o-WTDP59-ZtQTU,58011
53
+ agno/db/mongo/mongo.py,sha256=xyQUWIyXREmr8jgUopSv2me8euQ2UzJB_Gd1i4Tw7Xc,67840
54
54
  agno/db/mongo/schemas.py,sha256=MAhfwx7_zxKucnZpgq_YSZANaF5MqiZ6qDByhdIREk8,2054
55
55
  agno/db/mongo/utils.py,sha256=dmVo0HGIG7IPKdCjuRDcO0ZOtyXcNkP6S2G-XBFqzZE,6906
56
56
  agno/db/mysql/__init__.py,sha256=ohBMZ1E6ctioEF0XX5PjC4LtUQrc6lFkjsE4ojyXA8g,63
57
- agno/db/mysql/mysql.py,sha256=ZmX17ZBMz1UPVTjw0la0HUlsx_zognbRtKBCD3c9Vf4,70291
57
+ agno/db/mysql/mysql.py,sha256=0AEGNs-zXWJ6bsmrcBe6l1ECwwnp9d2xWQcwVqwZ_wU,84350
58
58
  agno/db/mysql/schemas.py,sha256=2OAaX7ILykFCJBcEWH6kFXzNI8JnnYZCXClbVUoRbLc,5482
59
59
  agno/db/mysql/utils.py,sha256=7E83u2gKOkr7lxFPGM2ucLvfJarbEtNRxOeZQhLYKzU,10066
60
60
  agno/db/postgres/__init__.py,sha256=eEdY4emRxmBmxeZUhAYSaObgcqKdd6C9IxUSk1U0gDY,75
61
- agno/db/postgres/postgres.py,sha256=FWMke0CJDLxZhxRM_kvS0yAmrfzO8-Y2deeRAFFisuc,69313
61
+ agno/db/postgres/postgres.py,sha256=DWQFM4XgdrFwhqn0FDE5XqiIK36mzmvD3X3ntiyyEJs,80085
62
62
  agno/db/postgres/schemas.py,sha256=adbKcMapqeXsEYeF6feWe2ja1paRzCMOkQSHHN6Psp8,5275
63
63
  agno/db/postgres/utils.py,sha256=iaY0ZqJgzadCitxSbsRchCtBE5WeUApfIj-VbdH9MJI,9447
64
64
  agno/db/redis/__init__.py,sha256=rZWeZ4CpVeKP-enVQ-SRoJ777i0rdGNgoNDRS9gsfAc,63
65
- agno/db/redis/redis.py,sha256=pkrYNQgzu-N6QqXtgr75UMCsRui3sBluJsDoDqwnxzY,51521
65
+ agno/db/redis/redis.py,sha256=Yg8KAmXZpNO7rKpwhqc6JJeevCCWQo_d1qz_SVJPQJU,54094
66
66
  agno/db/redis/schemas.py,sha256=LE1NApES1ao5X770HXB7jvrk2n31KiOWAsl5Z0xMG08,3637
67
67
  agno/db/redis/utils.py,sha256=z1pyakjlCQ_FyQUXe8pPer-pQDG70GLDOYQLNl4Oxrg,8955
68
68
  agno/db/schemas/__init__.py,sha256=HIKc2Apyk6ENJb_Py6sgNdbl6H7eo6PD5QMTmkdJSwI,72
@@ -72,11 +72,11 @@ agno/db/schemas/memory.py,sha256=kKlJ6AWpbwz-ZJfBJieartPP0QqeeoKAXx2Ity4Yj-Y,146
72
72
  agno/db/schemas/metrics.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  agno/db/singlestore/__init__.py,sha256=dufbaod8ZZIeZIVi0hYJQ8Eu2DfIfWdIy00cpqAsx9U,87
74
74
  agno/db/singlestore/schemas.py,sha256=yDXBGtswAuVxKX1_GvKIBt6IlEor2HiAbYPrwX5SSJ8,5489
75
- agno/db/singlestore/singlestore.py,sha256=3pv_4e9v156_wzCmCKzC4f1wY5_QXkyeUPOx_ge-fa4,69492
75
+ agno/db/singlestore/singlestore.py,sha256=DRRzrlGDfO33s_oGVBb3raX14QUSI9LPA5-6yX1S5KU,82480
76
76
  agno/db/singlestore/utils.py,sha256=LG0NhOx5B5oJY-Kcc_3ipNzBT1J-mBGx8TARUkRtWv8,11377
77
77
  agno/db/sqlite/__init__.py,sha256=LocJ-suv6xpdun8HUxgbD3bTgmQArQvLJkbpb1pRGy0,67
78
78
  agno/db/sqlite/schemas.py,sha256=-L3hmlg80PAPmfexPrWtnepSzlmZHrbyPZ754nJlVdE,5191
79
- agno/db/sqlite/sqlite.py,sha256=q6WppFCsD_jYM8qLHWG08fhs8S2moq1jfUNuWitaz3g,68158
79
+ agno/db/sqlite/sqlite.py,sha256=b7Act9wF9H2yH_kkmMovu2tbO88xZikjZFONX11NPdI,83254
80
80
  agno/db/sqlite/utils.py,sha256=52FbQrmMHXicxocqbXM5B7iBGgVTSft0r_9PyckLSt0,9434
81
81
  agno/eval/__init__.py,sha256=vCYcIbfOkT2lL8vZJ9zsea6j3byp5A-mxEb_45VaD8I,449
82
82
  agno/eval/accuracy.py,sha256=UZmxOtVP3p3fFzby2YyjE4-Tza2MMtQiBrfhK9mJrx4,32531
@@ -88,8 +88,8 @@ agno/integrations/discord/__init__.py,sha256=MS08QSnegGgpDZd9LyLjK4pWIk9dXlbzgD7
88
88
  agno/integrations/discord/client.py,sha256=2IWkA-kCDsDXByKOGq2QJG6MtFsbouzNN105rsXn95A,8375
89
89
  agno/knowledge/__init__.py,sha256=PJCt-AGKGFztzR--Ok2TNKW5QEqllZzqiI_7f8-1u80,79
90
90
  agno/knowledge/content.py,sha256=q2bjcjDhfge_UrQAcygrv5R9ZTk7vozzKnQpatDQWRo,2295
91
- agno/knowledge/knowledge.py,sha256=s8tvW8O3bA3rZvK3giFNU_aJ3uz4xsa0tIYsl-f2t48,63507
92
- agno/knowledge/types.py,sha256=zKBJC6xhy2Kl7pxWIhu7txbTAmAPIZlgMPZCbjyU11k,635
91
+ agno/knowledge/knowledge.py,sha256=AQuJZVpwRzVtdd1Q32kk2K-3wqUaKI1tTpQvy53mDqA,68172
92
+ agno/knowledge/types.py,sha256=ciwDLK9MXwi_W_g4nUChEmK6meDQyqTqGK2Ad-wM1os,754
93
93
  agno/knowledge/utils.py,sha256=_uhEFtz4p7-cIKffdj5UZ__c-u96rs2UWP6dv5HpOMk,6490
94
94
  agno/knowledge/chunking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
95
  agno/knowledge/chunking/agentic.py,sha256=OksjCXySqu0vRseQsFgsOdfD0lXqXHP_SGJ6G8Tecbc,3059
@@ -117,7 +117,7 @@ agno/knowledge/embedder/mistral.py,sha256=bs_i1XKFnAEOTyBviwNJhMEmH8HpN9NI8_pUXD
117
117
  agno/knowledge/embedder/nebius.py,sha256=4I2irehvR6Di00Al4jbG4vAa6KZnbOJ-7QqVjB7Mn64,363
118
118
  agno/knowledge/embedder/ollama.py,sha256=clxM1CslYwfdoEzK1fg5m3j9-syjQjlNF3jxOO8xaVo,5797
119
119
  agno/knowledge/embedder/openai.py,sha256=pAqJWV-T__fxzYHB69uimfN-kYIVM-9hETPrAJ75VY0,8585
120
- agno/knowledge/embedder/sentence_transformer.py,sha256=w5dMP_mvuZybvBNKKn2zZRqgVROziMLWCEknsltXmLk,2193
120
+ agno/knowledge/embedder/sentence_transformer.py,sha256=khJJbJlBFDeVJm7yd4ub3e7n7rM-l5z00f594jGtIaU,2203
121
121
  agno/knowledge/embedder/together.py,sha256=Pt524Lh6YRDKfD8rfmLu0Qlw4dDh4vLz7KEMIvIULBk,387
122
122
  agno/knowledge/embedder/voyageai.py,sha256=jaXqr4C3-Vdp_DV1nqKQad_daAn_LRsJoIVPeNmr0_U,4139
123
123
  agno/knowledge/reader/__init__.py,sha256=edjnCwyDjM9Q5JPMi4K9mll8a3CdV52iagUKAgGiaas,159
@@ -155,7 +155,7 @@ agno/models/utils.py,sha256=PprNlVI8d8loHayjRsrc4TL38sfkFMS3EVZcF5cLXoA,669
155
155
  agno/models/aimlapi/__init__.py,sha256=XQcFRvt4qJ8ol9nCC0XKEkVEDivdNf3nZNoJZMZ5m8M,78
156
156
  agno/models/aimlapi/aimlapi.py,sha256=9Qh-b8HvFSvmPP3VBNGT00qy9izHLMWgR-KDQCE5CM0,1493
157
157
  agno/models/anthropic/__init__.py,sha256=nbReX3p17JCwfrMDR9hR7-OaEFZm80I7dng93dl-Fhw,77
158
- agno/models/anthropic/claude.py,sha256=iyMOdfBPuliNHe956ethMJNcu2Uu2Gv99--OjrMmxSo,27200
158
+ agno/models/anthropic/claude.py,sha256=8v9AbtYJmhXF-e6X5yRcRki3xE7GOowLbQh6jeGiei0,26363
159
159
  agno/models/aws/__init__.py,sha256=TbcwQwv9A7KjqBM5RQBR8x46GvyyCxbBCjwkpjfVGKE,352
160
160
  agno/models/aws/bedrock.py,sha256=4H4Y-ZC8nz1Dcag1JxT3orpvzSlHPaNhTy9NXaqCSY8,30919
161
161
  agno/models/aws/claude.py,sha256=rfBA8RZ5Br8QxmLeXWHBWrj1-KGB4OLj1q740SokcMU,14750
@@ -167,6 +167,8 @@ agno/models/cerebras/cerebras.py,sha256=eeJACHdYeI3k_NJtuwRuJ0iPHHYlk7K3bEZcqj7n
167
167
  agno/models/cerebras/cerebras_openai.py,sha256=iA2k2QLTkTOqx-K6Hm1XGL-xfiLhf4bB2s4NWUYWx1w,4076
168
168
  agno/models/cohere/__init__.py,sha256=4kFUnfPEL3__hd1TRW7fZxh7D_DctcpY5QDV58lR6s0,72
169
169
  agno/models/cohere/chat.py,sha256=Ff6LdMZ9xzIhaz4R9ugXFQH3YZRGaEnidIgA4kGTpM8,15086
170
+ agno/models/cometapi/__init__.py,sha256=_t5JqHLyohg2u1RkkOR9eSwKsPoAhWUr48i9ei-Rn4Y,82
171
+ agno/models/cometapi/cometapi.py,sha256=0BYFV3HJnI3lvcXr67EQZJlxNINPR3-zCQMoARVpvro,1946
170
172
  agno/models/dashscope/__init__.py,sha256=lHZTGvs7fVeX4N1G7JNMa4mfsSQHgQq02DsSVqYFqpw,86
171
173
  agno/models/dashscope/dashscope.py,sha256=ezhnM9lQ0Gg6u17aVNy82VrjUhgoefdtYhPwTvGrCfg,3370
172
174
  agno/models/deepinfra/__init__.py,sha256=24gMCeFHNbHw6l5gHZ1GwVg02546E9F_0yIZVSK15C8,86
@@ -176,11 +178,11 @@ agno/models/deepseek/deepseek.py,sha256=Sc2Jtc6-lROb2BnSHzG_m6p48RPlYXbsyrgjHqYW
176
178
  agno/models/fireworks/__init__.py,sha256=qIDjKUnwmrnwfa9B2Y3ybRyuUsF7Pzw6_bVq4N6M0Cg,86
177
179
  agno/models/fireworks/fireworks.py,sha256=jL1Zg8DZBbkNGe1-Fr5ymD8VWw2pTho4DsJa7DqWvM8,943
178
180
  agno/models/google/__init__.py,sha256=bEOSroFJ4__38XaCgBUWiOe_Qga66ZRm_gis__yIMmc,74
179
- agno/models/google/gemini.py,sha256=ygxR-1k7t29_3HHvbhfih8MPy0aUHiCyTmabdEj39Ws,47753
181
+ agno/models/google/gemini.py,sha256=UDyF4jzeT63pS2BrrFJcqARcaqd8WrLEb-B-KnyZeO4,47545
180
182
  agno/models/groq/__init__.py,sha256=gODf5IA4yJKlwTEYsUywmA-dsiQVyL2_yWMc8VncdVU,66
181
183
  agno/models/groq/groq.py,sha256=hByU97lwb9HBsFgDHZsq2_a3dvT-X8QIO-qmLsD4ePY,22121
182
184
  agno/models/huggingface/__init__.py,sha256=VgdYkgSHqsFLhvJ9lSUCyEZfest8hbCAUpWU6WCk-_c,94
183
- agno/models/huggingface/huggingface.py,sha256=ryBIvKYJ7ubvR0e9szXFS_RN5-LuYQUUcbHSJTx57P0,19840
185
+ agno/models/huggingface/huggingface.py,sha256=Kt_2UeXF2dCbxnsuNt8F_Hezq_WR9kvySltp3U_OrrM,19877
184
186
  agno/models/ibm/__init__.py,sha256=jwrz0JL4pd1cAPN7wLi51qgQfOB8kUIhFjs_oEc4NWc,74
185
187
  agno/models/ibm/watsonx.py,sha256=GkMfe68DunLMVQ4wtox8Y-LzagPN5mz4hd0Z_vXS1tM,16007
186
188
  agno/models/internlm/__init__.py,sha256=88O1Vb6HuNls8KDUOKuQdKF_3iG9wI3uc56Xy-qBoMI,75
@@ -206,11 +208,11 @@ agno/models/nexus/nexus.py,sha256=rJcBQXR1aqUiLWMPBRuHIEh87wVrsqXup1hr_smanBQ,63
206
208
  agno/models/nvidia/__init__.py,sha256=O0g3_0_ciOz0AH4Y4CAL7YRfhdDPAvhDzNjJmgWKT78,74
207
209
  agno/models/nvidia/nvidia.py,sha256=0vpEq4cBY_5JdBzGoD95rBdro6dpVNAV5ioKz3lpnfs,948
208
210
  agno/models/ollama/__init__.py,sha256=TIhwxG7ek3eyfoKTLoZQXwdgzcIngYKjbjSlkf2gkWE,72
209
- agno/models/ollama/chat.py,sha256=QGJetMU5qL6oPrI-yFSAMt_rfjb2T0XsquGx6r3z91k,13940
211
+ agno/models/ollama/chat.py,sha256=jGDjLi6aeJdLCG8ITxnp0r_E7eoWT5qOZWbM9GmzuyU,16005
210
212
  agno/models/openai/__init__.py,sha256=OssVgQRpsriU6aJZ3lIp_jFuqvX6y78L4Fd3uTlmI3E,225
211
- agno/models/openai/chat.py,sha256=4cRlD9NAFhmIC81uaun4UbERkHKGMO2nBabh5InoZLo,36444
213
+ agno/models/openai/chat.py,sha256=sZ6gDrXun7GLkksLWHA1f6bCkxgHGA96Bo8xz0gx5GA,36800
212
214
  agno/models/openai/like.py,sha256=wmw9PfAVqluBs4MMY73dgjelKn1yl5JDKyCRvaNFjFw,745
213
- agno/models/openai/responses.py,sha256=KCFe1K5TLt81WHPQMJY5vbwRaKVZlceat5Mz49RvHJg,47106
215
+ agno/models/openai/responses.py,sha256=tOxgILr9GZVJRCQX1fJYG7p06pBe2-h7fASjr7YdxHA,47109
214
216
  agno/models/openrouter/__init__.py,sha256=ZpZhNyy_EGSXp58uC9e2iyjnxBctql7GaY8rUG-599I,90
215
217
  agno/models/openrouter/openrouter.py,sha256=FX0P9mPEHyTuiVQNs-c84Ehy0RIGEmvdy6WM_-KhxUQ,907
216
218
  agno/models/perplexity/__init__.py,sha256=JNmOElDLwcZ9_Lk5owkEdgwmAhaH3YJ-VJqOI8rgp5c,90
@@ -234,24 +236,24 @@ agno/os/app.py,sha256=acPtlVPAlrdsg6L2QC73SpaaX68-hsWn9X0RH9WNx7Q,24457
234
236
  agno/os/auth.py,sha256=FyBtAKWtg-qSunCas5m5pK1dVEmikOSZvcCp5r25tTA,1844
235
237
  agno/os/config.py,sha256=u4R9yazQXIcKjR3QzEIZw_XAe_OHp3xn0ff7SVkj2jA,2893
236
238
  agno/os/mcp.py,sha256=5L0TZwInuCWM7TQ7MI_DjMWfVIIB0jxVCqaVEdR62UU,8114
237
- agno/os/router.py,sha256=LSWu6jCnDxo8JV02fFi9bhXEWh47PYJmWWYLAlOlfQM,61695
239
+ agno/os/router.py,sha256=IFgQCyx16MHHA2UAqr1T8I2_dKJ_QqmOOYdnGjWABHE,62517
238
240
  agno/os/schema.py,sha256=bdmGLQoBJyetiAZeajJG_gEKLaQSSEwiDwKy0q4Pa-M,38278
239
241
  agno/os/settings.py,sha256=Cn5_8lZI8Vx1UaUYqs9h6Qp4IMDFn4f3c35uppiaMy4,1343
240
- agno/os/utils.py,sha256=mWTHc-czb95hsEoMZxo0CAUE29HDg6vx6GAWRzY1uWo,10498
242
+ agno/os/utils.py,sha256=tOszvSQPXbbYCLOWBPsCnHGbELKw0i6mVahxmEzddhI,10810
241
243
  agno/os/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
242
- agno/os/interfaces/base.py,sha256=NIqG5vCQDaKczcQZWRc9tK1L1v5_wD6haXTHFViMCpo,443
244
+ agno/os/interfaces/base.py,sha256=giU0y-egtXLqokN1HQyQIWl4NBawTk_ua7ytKGFmZRc,527
243
245
  agno/os/interfaces/agui/__init__.py,sha256=1zrGICk4roXUINwSFZfqH6sBsbHmD5KjGYVJMGg4fKQ,66
244
- agno/os/interfaces/agui/agui.py,sha256=Gf05amiSeDrEfCe7KcQaEJ8Tq9JdX1D7It9hYh1k-a8,902
246
+ agno/os/interfaces/agui/agui.py,sha256=-KiJaM-IkL9QI9UNzyWqO-uQxdQxsZJnV5aNFmDPcN4,898
245
247
  agno/os/interfaces/agui/router.py,sha256=CgHCqNwA3ktUoGmCt0PoaQPX3hJ4rcXOgtXUGQ5sPIU,4335
246
- agno/os/interfaces/agui/utils.py,sha256=VykZ-SGN5UzBpP5Pv4TmZgMsZRNPgSryO5z5ir48-N0,15892
248
+ agno/os/interfaces/agui/utils.py,sha256=bfWxYh2w2O3aroRlaOc2f4ZJXEVavya1IqvCntqY9Xw,19162
247
249
  agno/os/interfaces/slack/__init__.py,sha256=F095kOcgiyk_KzIozNNieKwpVc_NR8HYpuO4bKiCNN0,70
248
- agno/os/interfaces/slack/router.py,sha256=9FvL12luuzJyTKIO_piQFayHeRAV317JEwUkZ3W9MzY,4034
250
+ agno/os/interfaces/slack/router.py,sha256=RuD0Y0YOdlyqaj37W5outpM7dHTlEX6R63V4IrETSYc,5710
249
251
  agno/os/interfaces/slack/security.py,sha256=nMbW_0g-G_DEMbCQOD8C3PYrRPIpB2cyM6P-xS6GHYk,917
250
- agno/os/interfaces/slack/slack.py,sha256=xZanqP4MPTDXHVfkAfIvPCRUiRul1RKqONuj551EE3k,883
252
+ agno/os/interfaces/slack/slack.py,sha256=hBW_n3WDdt9q3Ptbd1gB4Kr9iOX7LBD8zQvMuiyEEro,1042
251
253
  agno/os/interfaces/whatsapp/__init__.py,sha256=-sD2W00qj8hrx72ATVMtaDc7GfAsaCQJMlnRjYPwisg,82
252
- agno/os/interfaces/whatsapp/router.py,sha256=48AfJrsmtmGzG32rUrQ76E4kc9F9bSqR4ei21VQRvPc,9620
254
+ agno/os/interfaces/whatsapp/router.py,sha256=pcB2CAxGsfVIr5z0YvFGYk6LVaBdUmgE5JHJpprSgo8,9721
253
255
  agno/os/interfaces/whatsapp/security.py,sha256=WOdjP886O0Wq6CRHSLAv_b39y6pjmn8opPQDSlZf4WA,1735
254
- agno/os/interfaces/whatsapp/whatsapp.py,sha256=NpkenUHFhILEZgEIjbicCXq61rdaXhbx5Md1aFy7UjY,837
256
+ agno/os/interfaces/whatsapp/whatsapp.py,sha256=lPWPsfK-fenpdWPYPKwXOYzev-tE44H1-LwqCSsExRA,833
255
257
  agno/os/routers/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
256
258
  agno/os/routers/health.py,sha256=MpJrg488T0m8jU0mtoBNPiLhlR2r2gFihvyZwdQh_oc,725
257
259
  agno/os/routers/home.py,sha256=gbqBP2-G5_aFSdsXMdc77jtanI8XSRZ8QcxKjX8_qkw,1717
@@ -271,28 +273,28 @@ agno/os/routers/metrics/schemas.py,sha256=E7F31CXg9_JiBqeNZWFsZCraShqEHIDD8pDfS4
271
273
  agno/os/routers/session/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
272
274
  agno/os/routers/session/session.py,sha256=ajM-ehfThQTxczwkRpEpo_EkmloeRGNNYWWad6Dth18,31923
273
275
  agno/reasoning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
- agno/reasoning/azure_ai_foundry.py,sha256=ZCrrQ0wOEO0JNpLxFxp3crqGA9xjBqAcop9xJFlpRng,2600
275
- agno/reasoning/deepseek.py,sha256=nEBIs7X-3dzkPWB_0tht5jNCtg61NBdroiaVPeT0pjw,2237
276
- agno/reasoning/default.py,sha256=8p3WYtCtVA4FoGEv7x-BG3SmfF6NGA6O6n9GJq34k68,5236
277
- agno/reasoning/groq.py,sha256=B4Ha6QuLwyOEp6V3lyUDv8xDadS_XCJTEw9WyCyMd2A,2644
276
+ agno/reasoning/azure_ai_foundry.py,sha256=VL7DmFpuYMf_gLFAZ9kUCS7Zb3pNhDaEingRZcyUdQY,2594
277
+ agno/reasoning/deepseek.py,sha256=Xj_QkaN9ivbtD_IMojd_hlLBijdnyi8fQd3Iz1k9-hQ,2231
278
+ agno/reasoning/default.py,sha256=KFOhfgz9ERICRpKakow60SYIRlF7LIrM7fp0TLHma4w,5318
279
+ agno/reasoning/groq.py,sha256=1rV_-RTy924U3uTshN7fja1E4fiCbx8HYGxuWGjGGcQ,2638
278
280
  agno/reasoning/helpers.py,sha256=77gce_FQDGGVwM1-j5Zc_ds5FRZy9l7EcH2cp0WkJrI,2153
279
- agno/reasoning/ollama.py,sha256=v-XbtBjjRUZHX9I1ZNZAAb-sv8W_a0hCgkhczz_W4HU,2564
280
- agno/reasoning/openai.py,sha256=RkXxZZpr1KykMiDLVdz36d3WKjwlGPucR5RmhU5asHM,3089
281
+ agno/reasoning/ollama.py,sha256=hJPmpBD07W6SOphkg-EifLYqosM330fxv-SbeEhoG74,2558
282
+ agno/reasoning/openai.py,sha256=8c4_tVVvY3shx9YEHSMP3qAgcQsOzpvpYXQEE2hDfzU,3083
281
283
  agno/reasoning/step.py,sha256=6DaOb_0DJRz9Yh1w_mxcRaOSVzIQDrj3lQ6rzHLdIwA,1220
282
284
  agno/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
285
  agno/run/agent.py,sha256=OmcTPaq466DURhZ2sBd6c4MtwR-7ZyOzwWdSBoVMrzM,22416
284
- agno/run/base.py,sha256=TvIGCos_uNrFpYe8F9j3qWE1YC4-_SW9rxnsFilJvCc,6911
286
+ agno/run/base.py,sha256=z335BSg_-H5ZdM5WpdIYwRe5KysFKaafaW2nCLVMVaA,7481
285
287
  agno/run/cancel.py,sha256=yoSj3fnx8D7Gf-fSngVIgd3GOp3tRaDhHH_4QeHDoAk,2667
286
288
  agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
287
289
  agno/run/team.py,sha256=J-ZsMIMe-xLMgjAWgMRiSREqn8gJ6uKPQsKLo3RUdNU,22935
288
290
  agno/run/workflow.py,sha256=C4RHtkT-WjEzx44qiRbzzL2po7-0FV37sA4A-7XheMs,22999
289
291
  agno/session/__init__.py,sha256=p6eqzWcLSHiMex2yZvkwv2yrFUNdGs21TGMS49xrEC4,376
290
- agno/session/agent.py,sha256=0o8QJRc6HclC7X5MjPTSqtRIwuyjJ9un4ck9FK8lBlA,9686
292
+ agno/session/agent.py,sha256=vut3IwCivUu0vvuht_1c3rUhW61NZee6whxDQUsEkUM,9756
291
293
  agno/session/summary.py,sha256=2a74rDzrOGkWjrFkHQ6gf1dsZBU0_G1lgDE7b3fPaQw,8405
292
- agno/session/team.py,sha256=ttb5MquVYEAtcXZNPttcBYgELu2cEwQRknveVyddr-Y,10250
294
+ agno/session/team.py,sha256=ckz-h_sYoFEbqLmNYglS0mamI9QzLfh-2ixsrHW6lU0,10383
293
295
  agno/session/workflow.py,sha256=8dWTona5jen1iPYwjcvxq1XG5EQDFnd28BEjcbqzl4s,5004
294
296
  agno/team/__init__.py,sha256=toHidBOo5M3n_TIVtIKHgcDbLL9HR-_U-YQYuIt_XtE,847
295
- agno/team/team.py,sha256=lUwsSb1B8lEsjgpkmcvk3ov9qkPagYfE9cQZatoBz-U,307828
297
+ agno/team/team.py,sha256=cTBAn5vZ9ebEO3hUPJM08_LYD4x2qs6ZRM7wAxcLpmY,314695
296
298
  agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
297
299
  agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
298
300
  agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
@@ -332,7 +334,7 @@ agno/tools/file.py,sha256=h3CiiM0wREK3vR_PlYFwJ8zYBFFjNmReNnAm9-JPgCU,4322
332
334
  agno/tools/file_generation.py,sha256=OMRG1CkpnZTCMxnKXGHfkfdXUYEur9jsdyCNxujWHS4,13896
333
335
  agno/tools/financial_datasets.py,sha256=NiXwyiYIFCawI8rR7JLJNIfwoQlranUeCcABHKhLHfw,9190
334
336
  agno/tools/firecrawl.py,sha256=jV-uWVCZzISL4IoXlggzeO7KvnkE-UrDIzSaoQvbtmQ,5333
335
- agno/tools/function.py,sha256=dA2B9GuEk7oxrYoPA3-XRq43PyOG6Q_GJJ6NsNnijDU,41690
337
+ agno/tools/function.py,sha256=EhJBjN11219Y1wUn5aIzoL9GvHP1SLGCMKLLPveOv6U,43217
336
338
  agno/tools/giphy.py,sha256=_wOCWVnMdFByE9Yoz4Pf2MoKxSjkUTiPJZ928_BNe2M,3070
337
339
  agno/tools/github.py,sha256=wct6P00YzF3zgWoV2c5aHeXX_2dgb9LqRwJAboi6QXw,70286
338
340
  agno/tools/gmail.py,sha256=MlLlEvxHly_2oKAZaKxXDmoHLTbWDSXcjOASGt7RpY8,28067
@@ -349,7 +351,8 @@ agno/tools/linear.py,sha256=yA3Yci-Dnid0rZPeXds4aZY8hL7KjloZkES9thKEPe8,13775
349
351
  agno/tools/linkup.py,sha256=EzX4_ARW96DkFe1IXAFlPQI5rdhhdhmNTX1tB5IVFWs,2123
350
352
  agno/tools/local_file_system.py,sha256=wWyhM5-lqDgDO_YNzRA8ekG-m2n89k8fWr8M1BWiQWo,3157
351
353
  agno/tools/lumalab.py,sha256=6WnZXbThKY2jL9zLswq1PVsbFm2jz81qshWqBZi59oo,6808
352
- agno/tools/mcp.py,sha256=4effn9XvS878W810k1mOE411-_XQqp3dpHc1Y9IcN4k,25397
354
+ agno/tools/mcp.py,sha256=Zox_N0Uv6xRS_rA0pV_nSpQxTbQAiQfSBEOJGGcJnfM,26361
355
+ agno/tools/mcp_toolbox.py,sha256=HOCerjBTTcJ3WnWwkMNlk5zkAAUFUUB-jHTZ6CvApX0,12622
353
356
  agno/tools/mem0.py,sha256=5W5pZwJmBTt-_l4nvBdNQHavXFSKV9mVdJg5aso4JBI,7680
354
357
  agno/tools/memori.py,sha256=tubBYj0rQFbBXadhWxwTjjmb3Rnims536AVPkGdCMcw,13181
355
358
  agno/tools/memory.py,sha256=vpMoKtCqs3m6vkuqmZ4fW9IRf1OhXHQGGaq3exJK0Xo,18449
@@ -372,7 +375,7 @@ agno/tools/reasoning.py,sha256=5k2D89s0mAqJGo5AVBM6XDvJHjfun3GqollhVkZ6rxk,12581
372
375
  agno/tools/reddit.py,sha256=F6lUJFAoQmuZMqppauMteF1BprDj8mpu-lVd1reUJTk,18632
373
376
  agno/tools/replicate.py,sha256=xVh6F2OCjIuCT8qt_ryzHb46ZctQ3_9bQhXQ5-HrzYQ,4459
374
377
  agno/tools/resend.py,sha256=TKsb5W_Yj0SaVBFL2ySACkehIW6bPnQ9GzYwldfordo,1990
375
- agno/tools/scrapegraph.py,sha256=1_-GBuj8vvOfd0_KGjI70uE5drSq5592jdtb-vmBJX8,7388
378
+ agno/tools/scrapegraph.py,sha256=ErKegx2YzPxOjuwFcmqAUSwisYEX_D84ydgeB_ufgfM,8366
376
379
  agno/tools/searxng.py,sha256=aNDeYhBcCeLXj9q8DiD3KlwMIpJB1oQElBn61s6B-x8,4962
377
380
  agno/tools/serpapi.py,sha256=3jTBH93OiN7LvS7zJt4xOhkNsNd_SADHLKzQKDckh2s,3925
378
381
  agno/tools/serper.py,sha256=r_77s2X5-uPD-G-iwpzrHjzFGG_Oz-4YEaxqDZAZqvo,9061
@@ -396,7 +399,7 @@ agno/tools/webbrowser.py,sha256=UuU3I7ynFHUAjAh4Dz6OyXTsfqW8Qjl9hKhc1I0j29o,856
396
399
  agno/tools/webex.py,sha256=8YKxNzinm9sym906KOWOfgX1kXBkKs0j6PQdEXgNib4,2548
397
400
  agno/tools/website.py,sha256=jzcXLEsCfGIEqV88OLePiCEjfDoAbXQDCPAr9JbP8cU,1798
398
401
  agno/tools/webtools.py,sha256=5Dyp8U2ov32DkJMpj-7plzQZcfnCL7wlXbQIfRh8jmw,1305
399
- agno/tools/whatsapp.py,sha256=DEmsThVDl7OvdkEUmSKISwkyG43Lh02EpkHpSXs83oA,11048
402
+ agno/tools/whatsapp.py,sha256=DaDyNogtbgrinJohfU7CmVQJSZsZO-00XUbRJegN_eE,11055
400
403
  agno/tools/wikipedia.py,sha256=u6xhc5wkEGcjng4leVCmo28o6Ti7OzDgRqiOqTMnmoc,2277
401
404
  agno/tools/workflow.py,sha256=PQIGffLe_bQI5EjYWG2FLV21-cFhTUVs-1KSxAX6az4,12638
402
405
  agno/tools/x.py,sha256=gaFCel9FyDPnKLL03nkjsc9NGsfQOsS92XByp3hdwMo,14495
@@ -424,7 +427,7 @@ agno/utils/env.py,sha256=o8OwKhx78vi8MaXPes10mXejmJ13CqAh7ODKMS1pmcM,438
424
427
  agno/utils/events.py,sha256=UDlVk51vvQIgnJGkTA-mxl1_fy2qze6wi8griiPEwVQ,20092
425
428
  agno/utils/format_str.py,sha256=Zp9dDGMABUJzulp2bs41JiNv0MqmMX0qPToL7l_Ab1c,376
426
429
  agno/utils/functions.py,sha256=eHvGqO2uO63TR-QmmhZy2DEnC0xkAfhBG26z77T7jCo,6306
427
- agno/utils/gemini.py,sha256=OPaXmqS1-fuZ9kETlpx_pMp6cEufSZzHmJerR5nAR7g,11206
430
+ agno/utils/gemini.py,sha256=2IMG68G41nfD-5dSepRu9ZrZa_20AvRyqygeAtHgOJQ,15609
428
431
  agno/utils/http.py,sha256=t7sr34VD9M___MYBlX6p4XKEqkvuXRJNJG7Y1ebU2bk,2673
429
432
  agno/utils/json_schema.py,sha256=VPbK-Gdo0qOQKco7MZnv1d2Fe-9mt1PRBO1SNFIvBHY,8555
430
433
  agno/utils/knowledge.py,sha256=b2H3VxJOeut24_vICb_k-fkzoRagxt93waznn2tUJZk,990
@@ -438,13 +441,13 @@ agno/utils/openai.py,sha256=quhHsggz0uSZc9Lt-aVsveHSS1LT2r1fMgC0IpG43Tg,10300
438
441
  agno/utils/pickle.py,sha256=Ip6CPNxAWF3MVrUhMTW7e3IcpKhYG0IA-NKbdUYr94c,1008
439
442
  agno/utils/pprint.py,sha256=aTg3gfib3x3VK3E-xJrbBeufK7s77ebTVtWoa2VrYgU,7762
440
443
  agno/utils/prompts.py,sha256=Bvvl0yosp6drt1zqHDlDKYIdTSdrZw-KGJ_-TC-78zY,5653
441
- agno/utils/reasoning.py,sha256=xrwAIL-tdxjG4LVQRzm6C_F7sTgEJQm-35tnG05QDJQ,3099
444
+ agno/utils/reasoning.py,sha256=pW5y674EjJ-R6IX8Fyxi_vN9xLG5dLkujPpcfSVL1jU,3862
442
445
  agno/utils/response.py,sha256=VfMfRK_m3teMjoEbZaq2nFt5hSmBYrWFaf0VSEuol58,7218
443
446
  agno/utils/response_iterator.py,sha256=MgtadrOuMcw2vJcVvhJdMKRzpVddhLWUIkGFbBz7ZCQ,379
444
447
  agno/utils/safe_formatter.py,sha256=zLrW6O-nGUZvXoDkZOTgVpjeUFTmMUj8pk3FLvW_XjM,809
445
448
  agno/utils/shell.py,sha256=JaY14Fq3ulodG4SeSdLEoOZDI4JJlmCbdgwK5beJuc8,700
446
449
  agno/utils/streamlit.py,sha256=Bn2kQLiTKKqyN0VXj0NBN_sz8V1bV5vImoSk1PCi52g,17966
447
- agno/utils/string.py,sha256=N2BBdn-gvtFjeWAU_FBDpXBzEZxHEhK85DpA1ZiV4p0,7189
450
+ agno/utils/string.py,sha256=iO1etmjHVxnPMTixAKlpR1vnBnRapYL2pm_cjhS06Ww,7557
448
451
  agno/utils/team.py,sha256=VXdm41WhsC6Rb20fHcpO4H55obQ6R435luAAZ4Jc3yQ,1853
449
452
  agno/utils/timer.py,sha256=Fuax69yh1cVIzCYMmJDB4HpTsPM8Iiq1VaTWz1vJtF8,1282
450
453
  agno/utils/tools.py,sha256=YZjA95pSNhHHcyoz5pe-Wo-yh9O2NU4Pqcbhs5kbefY,3842
@@ -454,7 +457,7 @@ agno/utils/yaml_io.py,sha256=cwTqCE-eBGoi87KLDcwB6iyWe0NcvEmadQjWL1cQ7jE,860
454
457
  agno/utils/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
455
458
  agno/utils/models/ai_foundry.py,sha256=PmhETWhdqZCq8NbDe-MdZVuRXx6DbVOePCyPFiPLceo,1511
456
459
  agno/utils/models/aws_claude.py,sha256=d0PWNNVHiA8Kzg_RzOEvNNkmOsmSzWxOnlA86uLtnQE,5680
457
- agno/utils/models/claude.py,sha256=27jq6tqf1ZID-ZZbrMtBsI2w6JgqiLECgVFIXYRN-iA,11000
460
+ agno/utils/models/claude.py,sha256=QYnARhGrLSvP2kfFCa7t-hnaZdU9Nby-B-21ocT9_rA,11293
458
461
  agno/utils/models/cohere.py,sha256=wir2K9u4RmOwq7T7n_2UPZFHfwmnrt_u91Psd_DFqdE,3266
459
462
  agno/utils/models/llama.py,sha256=Z5fdOFUFnov1JgUDcP6ICK3M7o64UB1fkcwAs2XaZkM,2515
460
463
  agno/utils/models/mistral.py,sha256=SVcJ8Q8SFeadNwCr8BARbET0gvGiylmaDKzcSJ9kWq0,4189
@@ -462,11 +465,11 @@ agno/utils/models/openai_responses.py,sha256=63f2UgDFCzrr6xQITrGtn42UUHQBcZFUUFM
462
465
  agno/utils/models/schema_utils.py,sha256=L6TkraMClI471H6xYy7V81lhHR4qQloVKCN0bF4Ajw0,5047
463
466
  agno/utils/models/watsonx.py,sha256=fe6jN0hBvOCQurqjS6_9PIwDHt-4kVod9qW236Zs6DU,1496
464
467
  agno/utils/print_response/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
465
- agno/utils/print_response/agent.py,sha256=nvjg2h8qTyU38DL6XdiWDIEdvd8rxOWoUgpNH5gSMBY,32917
466
- agno/utils/print_response/team.py,sha256=e5ABDd4hoCxxzgAzmN6Mo1exWusni8MwovrXubNu73E,75823
468
+ agno/utils/print_response/agent.py,sha256=IFS_iyKee02krwOiXe452TdFwqscVhxzy82hES08Mzw,33967
469
+ agno/utils/print_response/team.py,sha256=dt-nvTk1E8wDdd1BFetzNT5igTDE7TdjzuQ-TpAkanQ,76949
467
470
  agno/utils/print_response/workflow.py,sha256=qzI09OFS-f4tua27tBXhmle0ezQGFiC6s5IPgPvTq9I,66499
468
471
  agno/vectordb/__init__.py,sha256=P0QP9PUC4j2JtWIfYJX7LeC-oiPuh_QsUaOaP1ZY_dI,64
469
- agno/vectordb/base.py,sha256=LXTD5dIQbfIAzQJqbzvRriMnjT3bTyadRzBCEwjUsDU,3050
472
+ agno/vectordb/base.py,sha256=y5kqBiIp2atgcvV-_NXNXcX6NZFqJZibBaqbkWhtFTk,3054
470
473
  agno/vectordb/distance.py,sha256=OjpKSq57_gblZm4VGZTV7B7le45r_2-Fp1X4Hilx1M4,131
471
474
  agno/vectordb/search.py,sha256=9lJjTm2nvykn3MeVg0stB1qDZb_q-S7GG1MMS9P12e8,121
472
475
  agno/vectordb/cassandra/__init__.py,sha256=1N7lA9QDVWsCD5V5qvXjhACVDMWlq8f37hhNBWOcZA0,88
@@ -483,11 +486,11 @@ agno/vectordb/couchbase/couchbase.py,sha256=YSiJgabL4_xP2CwQNZOHkOmqdkX8Hh4VsbyP
483
486
  agno/vectordb/lancedb/__init__.py,sha256=tb9qvinKyWMTLjJYMwW_lhYHFvrfWTfHODtBfMj-NLE,111
484
487
  agno/vectordb/lancedb/lance_db.py,sha256=h7exAQxlwEyA6c2TMawyQNvyTO4GV691_OjIG8FaR7o,40320
485
488
  agno/vectordb/langchaindb/__init__.py,sha256=BxGs6tcEKTiydbVJL3P5djlnafS5Bbgql3u1k6vhW2w,108
486
- agno/vectordb/langchaindb/langchaindb.py,sha256=HEHWHyQvKLQofDOrMKPTa6n3pwwPXXqm_zsrSM4Bzsk,5585
489
+ agno/vectordb/langchaindb/langchaindb.py,sha256=VieHU4W-lRmYN0bLo2vmb7rGkmlNkPtjXILD4_F8818,5505
487
490
  agno/vectordb/lightrag/__init__.py,sha256=fgQpA8pZW-jEHI91SZ_xgmROmv14oKdwCQZ8LpyipaE,84
488
491
  agno/vectordb/lightrag/lightrag.py,sha256=GBReSzGBxpv0u0WTTZYTezZWpJQNj1zwL70ori3_cD4,14390
489
492
  agno/vectordb/llamaindex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
490
- agno/vectordb/llamaindex/llamaindexdb.py,sha256=wqEIZ3S3hlS_s44IbpjbrvZbFiWgEtwk-CpDmXGVsQU,4792
493
+ agno/vectordb/llamaindex/llamaindexdb.py,sha256=co_GtDJuorGG0cN-taWiuNUXGwNlgE044PQjTT7lfcU,5432
491
494
  agno/vectordb/milvus/__init__.py,sha256=I9V-Rm-rIYxWdRVIs6bKI-6JSJsyOd1-vvasvVpYHuE,127
492
495
  agno/vectordb/milvus/milvus.py,sha256=fbpXXOV_ahxP5kX0KoPZ4_4M3kWC4gjGX0GEtuIVD8o,42394
493
496
  agno/vectordb/mongodb/__init__.py,sha256=yYwaWdxZRnFTd87Hfgs8_DO4QxcJxy1iL3__bnxP71I,73
@@ -517,9 +520,9 @@ agno/workflow/router.py,sha256=ZAiVsh2F_9ssKj0_RzHWzfgimaZ5hfb3Ni1Xx_SkVR0,26625
517
520
  agno/workflow/step.py,sha256=15vZFN5HlO3IkHqsxkM-2InUzCWC0Ee8BtoJ-OAhS5w,52485
518
521
  agno/workflow/steps.py,sha256=uRE4oGWs2cA-TrX881AEa69zu6rheXH81mNOZiRrNvg,23719
519
522
  agno/workflow/types.py,sha256=ZEFyaKH42261_3yx810ABfi70RUfjPGSwiIep7n53yg,17485
520
- agno/workflow/workflow.py,sha256=1SWIoQdXt8FN8qJDxpfJ7Ol9Ea4c_Ir2xPV7m7deqnQ,111724
521
- agno-2.0.7.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
522
- agno-2.0.7.dist-info/METADATA,sha256=1Jt-ipXGuFjrLybXQZaLJGxte4rJg0noeXjnGLl0p-M,21884
523
- agno-2.0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
524
- agno-2.0.7.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
525
- agno-2.0.7.dist-info/RECORD,,
523
+ agno/workflow/workflow.py,sha256=KZ_8RArdH8iFiSlX2FCMhfcegD6fWjNGr53afgUdjik,112398
524
+ agno-2.0.9.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
525
+ agno-2.0.9.dist-info/METADATA,sha256=IvqPWldG93r3IZBXtnv0lnb-SDDT26Seww5tBfNkWdo,22017
526
+ agno-2.0.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
527
+ agno-2.0.9.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
528
+ agno-2.0.9.dist-info/RECORD,,
File without changes