agno 2.2.13__tar.gz → 2.3.1__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 (586) hide show
  1. {agno-2.2.13 → agno-2.3.1}/PKG-INFO +6 -2
  2. {agno-2.2.13 → agno-2.3.1}/agno/agent/agent.py +197 -110
  3. {agno-2.2.13 → agno-2.3.1}/agno/api/api.py +2 -0
  4. {agno-2.2.13 → agno-2.3.1}/agno/db/base.py +26 -0
  5. {agno-2.2.13 → agno-2.3.1}/agno/db/dynamo/dynamo.py +8 -0
  6. {agno-2.2.13 → agno-2.3.1}/agno/db/dynamo/schemas.py +1 -0
  7. {agno-2.2.13 → agno-2.3.1}/agno/db/firestore/firestore.py +8 -0
  8. {agno-2.2.13 → agno-2.3.1}/agno/db/firestore/schemas.py +1 -0
  9. {agno-2.2.13 → agno-2.3.1}/agno/db/gcs_json/gcs_json_db.py +8 -0
  10. {agno-2.2.13 → agno-2.3.1}/agno/db/in_memory/in_memory_db.py +8 -1
  11. {agno-2.2.13 → agno-2.3.1}/agno/db/json/json_db.py +8 -0
  12. agno-2.3.1/agno/db/migrations/manager.py +199 -0
  13. agno-2.3.1/agno/db/migrations/versions/v2_3_0.py +938 -0
  14. {agno-2.2.13 → agno-2.3.1}/agno/db/mongo/async_mongo.py +16 -6
  15. {agno-2.2.13 → agno-2.3.1}/agno/db/mongo/mongo.py +11 -0
  16. {agno-2.2.13 → agno-2.3.1}/agno/db/mongo/schemas.py +3 -0
  17. {agno-2.2.13 → agno-2.3.1}/agno/db/mongo/utils.py +17 -0
  18. {agno-2.2.13 → agno-2.3.1}/agno/db/mysql/mysql.py +76 -3
  19. {agno-2.2.13 → agno-2.3.1}/agno/db/mysql/schemas.py +20 -10
  20. {agno-2.2.13 → agno-2.3.1}/agno/db/postgres/async_postgres.py +99 -25
  21. {agno-2.2.13 → agno-2.3.1}/agno/db/postgres/postgres.py +75 -6
  22. {agno-2.2.13 → agno-2.3.1}/agno/db/postgres/schemas.py +30 -20
  23. {agno-2.2.13 → agno-2.3.1}/agno/db/redis/redis.py +15 -2
  24. {agno-2.2.13 → agno-2.3.1}/agno/db/redis/schemas.py +4 -0
  25. {agno-2.2.13 → agno-2.3.1}/agno/db/schemas/memory.py +13 -0
  26. {agno-2.2.13 → agno-2.3.1}/agno/db/singlestore/schemas.py +11 -0
  27. {agno-2.2.13 → agno-2.3.1}/agno/db/singlestore/singlestore.py +79 -5
  28. {agno-2.2.13 → agno-2.3.1}/agno/db/sqlite/async_sqlite.py +97 -19
  29. {agno-2.2.13 → agno-2.3.1}/agno/db/sqlite/schemas.py +10 -0
  30. {agno-2.2.13 → agno-2.3.1}/agno/db/sqlite/sqlite.py +79 -2
  31. {agno-2.2.13 → agno-2.3.1}/agno/db/surrealdb/surrealdb.py +8 -0
  32. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/semantic.py +7 -2
  33. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/nebius.py +1 -1
  34. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/knowledge.py +57 -86
  35. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/csv_reader.py +7 -9
  36. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/docx_reader.py +5 -5
  37. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/field_labeled_csv_reader.py +16 -18
  38. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/json_reader.py +5 -4
  39. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/markdown_reader.py +8 -8
  40. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/pdf_reader.py +11 -11
  41. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/pptx_reader.py +5 -5
  42. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/s3_reader.py +3 -3
  43. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/text_reader.py +8 -8
  44. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/web_search_reader.py +1 -48
  45. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/website_reader.py +10 -10
  46. {agno-2.2.13 → agno-2.3.1}/agno/models/anthropic/claude.py +319 -28
  47. {agno-2.2.13 → agno-2.3.1}/agno/models/aws/claude.py +32 -0
  48. {agno-2.2.13 → agno-2.3.1}/agno/models/azure/openai_chat.py +19 -10
  49. {agno-2.2.13 → agno-2.3.1}/agno/models/base.py +612 -545
  50. {agno-2.2.13 → agno-2.3.1}/agno/models/cerebras/cerebras.py +8 -11
  51. {agno-2.2.13 → agno-2.3.1}/agno/models/cohere/chat.py +27 -1
  52. {agno-2.2.13 → agno-2.3.1}/agno/models/google/gemini.py +39 -7
  53. {agno-2.2.13 → agno-2.3.1}/agno/models/groq/groq.py +25 -11
  54. {agno-2.2.13 → agno-2.3.1}/agno/models/meta/llama.py +20 -9
  55. {agno-2.2.13 → agno-2.3.1}/agno/models/meta/llama_openai.py +3 -19
  56. {agno-2.2.13 → agno-2.3.1}/agno/models/nebius/nebius.py +4 -4
  57. {agno-2.2.13 → agno-2.3.1}/agno/models/openai/chat.py +30 -14
  58. {agno-2.2.13 → agno-2.3.1}/agno/models/openai/responses.py +10 -13
  59. {agno-2.2.13 → agno-2.3.1}/agno/models/response.py +1 -0
  60. {agno-2.2.13 → agno-2.3.1}/agno/models/vertexai/claude.py +26 -0
  61. {agno-2.2.13 → agno-2.3.1}/agno/os/app.py +8 -19
  62. {agno-2.2.13 → agno-2.3.1}/agno/os/router.py +54 -0
  63. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/knowledge/knowledge.py +2 -2
  64. {agno-2.2.13 → agno-2.3.1}/agno/os/schema.py +2 -2
  65. {agno-2.2.13 → agno-2.3.1}/agno/session/agent.py +57 -92
  66. {agno-2.2.13 → agno-2.3.1}/agno/session/summary.py +1 -1
  67. {agno-2.2.13 → agno-2.3.1}/agno/session/team.py +62 -112
  68. agno-2.3.1/agno/session/workflow.py +501 -0
  69. {agno-2.2.13 → agno-2.3.1}/agno/team/team.py +227 -125
  70. {agno-2.2.13 → agno-2.3.1}/agno/tools/models/nebius.py +5 -5
  71. {agno-2.2.13 → agno-2.3.1}/agno/tools/models_labs.py +20 -10
  72. agno-2.3.1/agno/tools/nano_banana.py +151 -0
  73. {agno-2.2.13 → agno-2.3.1}/agno/tools/yfinance.py +12 -11
  74. agno-2.3.1/agno/utils/http.py +185 -0
  75. {agno-2.2.13 → agno-2.3.1}/agno/utils/media.py +11 -0
  76. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/claude.py +8 -0
  77. agno-2.3.1/agno/utils/print_response/__init__.py +0 -0
  78. {agno-2.2.13 → agno-2.3.1}/agno/utils/print_response/agent.py +33 -12
  79. {agno-2.2.13 → agno-2.3.1}/agno/utils/print_response/team.py +22 -12
  80. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/couchbase/couchbase.py +6 -2
  81. {agno-2.2.13 → agno-2.3.1}/agno/workflow/condition.py +13 -0
  82. {agno-2.2.13 → agno-2.3.1}/agno/workflow/loop.py +13 -0
  83. {agno-2.2.13 → agno-2.3.1}/agno/workflow/parallel.py +13 -0
  84. {agno-2.2.13 → agno-2.3.1}/agno/workflow/router.py +13 -0
  85. {agno-2.2.13 → agno-2.3.1}/agno/workflow/step.py +120 -20
  86. {agno-2.2.13 → agno-2.3.1}/agno/workflow/steps.py +13 -0
  87. {agno-2.2.13 → agno-2.3.1}/agno/workflow/workflow.py +76 -63
  88. {agno-2.2.13 → agno-2.3.1}/agno.egg-info/PKG-INFO +6 -2
  89. {agno-2.2.13 → agno-2.3.1}/agno.egg-info/SOURCES.txt +4 -1
  90. {agno-2.2.13 → agno-2.3.1}/agno.egg-info/requires.txt +6 -1
  91. {agno-2.2.13 → agno-2.3.1}/pyproject.toml +4 -3
  92. agno-2.2.13/agno/session/workflow.py +0 -205
  93. agno-2.2.13/agno/tools/googlesearch.py +0 -98
  94. agno-2.2.13/agno/utils/http.py +0 -74
  95. {agno-2.2.13 → agno-2.3.1}/LICENSE +0 -0
  96. {agno-2.2.13 → agno-2.3.1}/README.md +0 -0
  97. {agno-2.2.13 → agno-2.3.1}/agno/__init__.py +0 -0
  98. {agno-2.2.13 → agno-2.3.1}/agno/agent/__init__.py +0 -0
  99. {agno-2.2.13 → agno-2.3.1}/agno/api/__init__.py +0 -0
  100. {agno-2.2.13 → agno-2.3.1}/agno/api/agent.py +0 -0
  101. {agno-2.2.13 → agno-2.3.1}/agno/api/evals.py +0 -0
  102. {agno-2.2.13 → agno-2.3.1}/agno/api/os.py +0 -0
  103. {agno-2.2.13 → agno-2.3.1}/agno/api/routes.py +0 -0
  104. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/__init__.py +0 -0
  105. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/agent.py +0 -0
  106. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/evals.py +0 -0
  107. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/os.py +0 -0
  108. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/response.py +0 -0
  109. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/team.py +0 -0
  110. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/utils.py +0 -0
  111. {agno-2.2.13 → agno-2.3.1}/agno/api/schemas/workflows.py +0 -0
  112. {agno-2.2.13 → agno-2.3.1}/agno/api/settings.py +0 -0
  113. {agno-2.2.13 → agno-2.3.1}/agno/api/team.py +0 -0
  114. {agno-2.2.13 → agno-2.3.1}/agno/api/workflow.py +0 -0
  115. {agno-2.2.13 → agno-2.3.1}/agno/cloud/aws/base.py +0 -0
  116. {agno-2.2.13 → agno-2.3.1}/agno/cloud/aws/s3/__init__.py +0 -0
  117. {agno-2.2.13 → agno-2.3.1}/agno/cloud/aws/s3/api_client.py +0 -0
  118. {agno-2.2.13 → agno-2.3.1}/agno/cloud/aws/s3/bucket.py +0 -0
  119. {agno-2.2.13 → agno-2.3.1}/agno/cloud/aws/s3/object.py +0 -0
  120. {agno-2.2.13 → agno-2.3.1}/agno/culture/__init__.py +0 -0
  121. {agno-2.2.13 → agno-2.3.1}/agno/culture/manager.py +0 -0
  122. {agno-2.2.13 → agno-2.3.1}/agno/db/__init__.py +0 -0
  123. {agno-2.2.13 → agno-2.3.1}/agno/db/async_postgres/__init__.py +0 -0
  124. {agno-2.2.13 → agno-2.3.1}/agno/db/dynamo/__init__.py +0 -0
  125. {agno-2.2.13 → agno-2.3.1}/agno/db/dynamo/utils.py +0 -0
  126. {agno-2.2.13 → agno-2.3.1}/agno/db/firestore/__init__.py +0 -0
  127. {agno-2.2.13 → agno-2.3.1}/agno/db/firestore/utils.py +0 -0
  128. {agno-2.2.13 → agno-2.3.1}/agno/db/gcs_json/__init__.py +0 -0
  129. {agno-2.2.13 → agno-2.3.1}/agno/db/gcs_json/utils.py +0 -0
  130. {agno-2.2.13 → agno-2.3.1}/agno/db/in_memory/__init__.py +0 -0
  131. {agno-2.2.13 → agno-2.3.1}/agno/db/in_memory/utils.py +0 -0
  132. {agno-2.2.13 → agno-2.3.1}/agno/db/json/__init__.py +0 -0
  133. {agno-2.2.13 → agno-2.3.1}/agno/db/json/utils.py +0 -0
  134. {agno-2.2.13 → agno-2.3.1}/agno/db/migrations/__init__.py +0 -0
  135. {agno-2.2.13 → agno-2.3.1}/agno/db/migrations/v1_to_v2.py +0 -0
  136. {agno-2.2.13/agno/integrations → agno-2.3.1/agno/db/migrations/versions}/__init__.py +0 -0
  137. {agno-2.2.13 → agno-2.3.1}/agno/db/mongo/__init__.py +0 -0
  138. {agno-2.2.13 → agno-2.3.1}/agno/db/mysql/__init__.py +0 -0
  139. {agno-2.2.13 → agno-2.3.1}/agno/db/mysql/utils.py +0 -0
  140. {agno-2.2.13 → agno-2.3.1}/agno/db/postgres/__init__.py +0 -0
  141. {agno-2.2.13 → agno-2.3.1}/agno/db/postgres/utils.py +0 -0
  142. {agno-2.2.13 → agno-2.3.1}/agno/db/redis/__init__.py +0 -0
  143. {agno-2.2.13 → agno-2.3.1}/agno/db/redis/utils.py +0 -0
  144. {agno-2.2.13 → agno-2.3.1}/agno/db/schemas/__init__.py +0 -0
  145. {agno-2.2.13 → agno-2.3.1}/agno/db/schemas/culture.py +0 -0
  146. {agno-2.2.13 → agno-2.3.1}/agno/db/schemas/evals.py +0 -0
  147. {agno-2.2.13 → agno-2.3.1}/agno/db/schemas/knowledge.py +0 -0
  148. {agno-2.2.13 → agno-2.3.1}/agno/db/schemas/metrics.py +0 -0
  149. {agno-2.2.13 → agno-2.3.1}/agno/db/singlestore/__init__.py +0 -0
  150. {agno-2.2.13 → agno-2.3.1}/agno/db/singlestore/utils.py +0 -0
  151. {agno-2.2.13 → agno-2.3.1}/agno/db/sqlite/__init__.py +0 -0
  152. {agno-2.2.13 → agno-2.3.1}/agno/db/sqlite/utils.py +0 -0
  153. {agno-2.2.13 → agno-2.3.1}/agno/db/surrealdb/__init__.py +0 -0
  154. {agno-2.2.13 → agno-2.3.1}/agno/db/surrealdb/metrics.py +0 -0
  155. {agno-2.2.13 → agno-2.3.1}/agno/db/surrealdb/models.py +0 -0
  156. {agno-2.2.13 → agno-2.3.1}/agno/db/surrealdb/queries.py +0 -0
  157. {agno-2.2.13 → agno-2.3.1}/agno/db/surrealdb/utils.py +0 -0
  158. {agno-2.2.13 → agno-2.3.1}/agno/db/utils.py +0 -0
  159. {agno-2.2.13 → agno-2.3.1}/agno/debug.py +0 -0
  160. {agno-2.2.13 → agno-2.3.1}/agno/eval/__init__.py +0 -0
  161. {agno-2.2.13 → agno-2.3.1}/agno/eval/accuracy.py +0 -0
  162. {agno-2.2.13 → agno-2.3.1}/agno/eval/performance.py +0 -0
  163. {agno-2.2.13 → agno-2.3.1}/agno/eval/reliability.py +0 -0
  164. {agno-2.2.13 → agno-2.3.1}/agno/eval/utils.py +0 -0
  165. {agno-2.2.13 → agno-2.3.1}/agno/exceptions.py +0 -0
  166. {agno-2.2.13 → agno-2.3.1}/agno/filters.py +0 -0
  167. {agno-2.2.13 → agno-2.3.1}/agno/guardrails/__init__.py +0 -0
  168. {agno-2.2.13 → agno-2.3.1}/agno/guardrails/base.py +0 -0
  169. {agno-2.2.13 → agno-2.3.1}/agno/guardrails/openai.py +0 -0
  170. {agno-2.2.13 → agno-2.3.1}/agno/guardrails/pii.py +0 -0
  171. {agno-2.2.13 → agno-2.3.1}/agno/guardrails/prompt_injection.py +0 -0
  172. {agno-2.2.13/agno/knowledge/chunking → agno-2.3.1/agno/integrations}/__init__.py +0 -0
  173. {agno-2.2.13 → agno-2.3.1}/agno/integrations/discord/__init__.py +0 -0
  174. {agno-2.2.13 → agno-2.3.1}/agno/integrations/discord/client.py +0 -0
  175. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/__init__.py +0 -0
  176. {agno-2.2.13/agno/knowledge/remote_content → agno-2.3.1/agno/knowledge/chunking}/__init__.py +0 -0
  177. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/agentic.py +0 -0
  178. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/document.py +0 -0
  179. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/fixed.py +0 -0
  180. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/markdown.py +0 -0
  181. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/recursive.py +0 -0
  182. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/row.py +0 -0
  183. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/chunking/strategy.py +0 -0
  184. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/content.py +0 -0
  185. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/document/__init__.py +0 -0
  186. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/document/base.py +0 -0
  187. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/__init__.py +0 -0
  188. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/aws_bedrock.py +0 -0
  189. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/azure_openai.py +0 -0
  190. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/base.py +0 -0
  191. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/cohere.py +0 -0
  192. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/fastembed.py +0 -0
  193. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/fireworks.py +0 -0
  194. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/google.py +0 -0
  195. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/huggingface.py +0 -0
  196. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/jina.py +0 -0
  197. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/langdb.py +0 -0
  198. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/mistral.py +0 -0
  199. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/ollama.py +0 -0
  200. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/openai.py +0 -0
  201. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/sentence_transformer.py +0 -0
  202. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/together.py +0 -0
  203. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/vllm.py +0 -0
  204. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/embedder/voyageai.py +0 -0
  205. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/__init__.py +0 -0
  206. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/arxiv_reader.py +0 -0
  207. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/base.py +0 -0
  208. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/firecrawl_reader.py +0 -0
  209. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/reader_factory.py +0 -0
  210. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/tavily_reader.py +0 -0
  211. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/wikipedia_reader.py +0 -0
  212. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reader/youtube_reader.py +0 -0
  213. {agno-2.2.13/agno/models → agno-2.3.1/agno/knowledge/remote_content}/__init__.py +0 -0
  214. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/remote_content/remote_content.py +0 -0
  215. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reranker/__init__.py +0 -0
  216. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reranker/base.py +0 -0
  217. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reranker/cohere.py +0 -0
  218. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reranker/infinity.py +0 -0
  219. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/reranker/sentence_transformer.py +0 -0
  220. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/types.py +0 -0
  221. {agno-2.2.13 → agno-2.3.1}/agno/knowledge/utils.py +0 -0
  222. {agno-2.2.13 → agno-2.3.1}/agno/media.py +0 -0
  223. {agno-2.2.13 → agno-2.3.1}/agno/memory/__init__.py +0 -0
  224. {agno-2.2.13 → agno-2.3.1}/agno/memory/manager.py +0 -0
  225. {agno-2.2.13/agno/models/vertexai → agno-2.3.1/agno/models}/__init__.py +0 -0
  226. {agno-2.2.13 → agno-2.3.1}/agno/models/aimlapi/__init__.py +0 -0
  227. {agno-2.2.13 → agno-2.3.1}/agno/models/aimlapi/aimlapi.py +0 -0
  228. {agno-2.2.13 → agno-2.3.1}/agno/models/anthropic/__init__.py +0 -0
  229. {agno-2.2.13 → agno-2.3.1}/agno/models/aws/__init__.py +0 -0
  230. {agno-2.2.13 → agno-2.3.1}/agno/models/aws/bedrock.py +0 -0
  231. {agno-2.2.13 → agno-2.3.1}/agno/models/azure/__init__.py +0 -0
  232. {agno-2.2.13 → agno-2.3.1}/agno/models/azure/ai_foundry.py +0 -0
  233. {agno-2.2.13 → agno-2.3.1}/agno/models/cerebras/__init__.py +0 -0
  234. {agno-2.2.13 → agno-2.3.1}/agno/models/cerebras/cerebras_openai.py +0 -0
  235. {agno-2.2.13 → agno-2.3.1}/agno/models/cohere/__init__.py +0 -0
  236. {agno-2.2.13 → agno-2.3.1}/agno/models/cometapi/__init__.py +0 -0
  237. {agno-2.2.13 → agno-2.3.1}/agno/models/cometapi/cometapi.py +0 -0
  238. {agno-2.2.13 → agno-2.3.1}/agno/models/dashscope/__init__.py +0 -0
  239. {agno-2.2.13 → agno-2.3.1}/agno/models/dashscope/dashscope.py +0 -0
  240. {agno-2.2.13 → agno-2.3.1}/agno/models/deepinfra/__init__.py +0 -0
  241. {agno-2.2.13 → agno-2.3.1}/agno/models/deepinfra/deepinfra.py +0 -0
  242. {agno-2.2.13 → agno-2.3.1}/agno/models/deepseek/__init__.py +0 -0
  243. {agno-2.2.13 → agno-2.3.1}/agno/models/deepseek/deepseek.py +0 -0
  244. {agno-2.2.13 → agno-2.3.1}/agno/models/defaults.py +0 -0
  245. {agno-2.2.13 → agno-2.3.1}/agno/models/fireworks/__init__.py +0 -0
  246. {agno-2.2.13 → agno-2.3.1}/agno/models/fireworks/fireworks.py +0 -0
  247. {agno-2.2.13 → agno-2.3.1}/agno/models/google/__init__.py +0 -0
  248. {agno-2.2.13 → agno-2.3.1}/agno/models/groq/__init__.py +0 -0
  249. {agno-2.2.13 → agno-2.3.1}/agno/models/huggingface/__init__.py +0 -0
  250. {agno-2.2.13 → agno-2.3.1}/agno/models/huggingface/huggingface.py +0 -0
  251. {agno-2.2.13 → agno-2.3.1}/agno/models/ibm/__init__.py +0 -0
  252. {agno-2.2.13 → agno-2.3.1}/agno/models/ibm/watsonx.py +0 -0
  253. {agno-2.2.13 → agno-2.3.1}/agno/models/internlm/__init__.py +0 -0
  254. {agno-2.2.13 → agno-2.3.1}/agno/models/internlm/internlm.py +0 -0
  255. {agno-2.2.13 → agno-2.3.1}/agno/models/langdb/__init__.py +0 -0
  256. {agno-2.2.13 → agno-2.3.1}/agno/models/langdb/langdb.py +0 -0
  257. {agno-2.2.13 → agno-2.3.1}/agno/models/litellm/__init__.py +0 -0
  258. {agno-2.2.13 → agno-2.3.1}/agno/models/litellm/chat.py +0 -0
  259. {agno-2.2.13 → agno-2.3.1}/agno/models/litellm/litellm_openai.py +0 -0
  260. {agno-2.2.13 → agno-2.3.1}/agno/models/llama_cpp/__init__.py +0 -0
  261. {agno-2.2.13 → agno-2.3.1}/agno/models/llama_cpp/llama_cpp.py +0 -0
  262. {agno-2.2.13 → agno-2.3.1}/agno/models/lmstudio/__init__.py +0 -0
  263. {agno-2.2.13 → agno-2.3.1}/agno/models/lmstudio/lmstudio.py +0 -0
  264. {agno-2.2.13 → agno-2.3.1}/agno/models/message.py +0 -0
  265. {agno-2.2.13 → agno-2.3.1}/agno/models/meta/__init__.py +0 -0
  266. {agno-2.2.13 → agno-2.3.1}/agno/models/metrics.py +0 -0
  267. {agno-2.2.13 → agno-2.3.1}/agno/models/mistral/__init__.py +0 -0
  268. {agno-2.2.13 → agno-2.3.1}/agno/models/mistral/mistral.py +0 -0
  269. {agno-2.2.13 → agno-2.3.1}/agno/models/nebius/__init__.py +0 -0
  270. {agno-2.2.13 → agno-2.3.1}/agno/models/nexus/__init__.py +0 -0
  271. {agno-2.2.13 → agno-2.3.1}/agno/models/nexus/nexus.py +0 -0
  272. {agno-2.2.13 → agno-2.3.1}/agno/models/nvidia/__init__.py +0 -0
  273. {agno-2.2.13 → agno-2.3.1}/agno/models/nvidia/nvidia.py +0 -0
  274. {agno-2.2.13 → agno-2.3.1}/agno/models/ollama/__init__.py +0 -0
  275. {agno-2.2.13 → agno-2.3.1}/agno/models/ollama/chat.py +0 -0
  276. {agno-2.2.13 → agno-2.3.1}/agno/models/openai/__init__.py +0 -0
  277. {agno-2.2.13 → agno-2.3.1}/agno/models/openai/like.py +0 -0
  278. {agno-2.2.13 → agno-2.3.1}/agno/models/openrouter/__init__.py +0 -0
  279. {agno-2.2.13 → agno-2.3.1}/agno/models/openrouter/openrouter.py +0 -0
  280. {agno-2.2.13 → agno-2.3.1}/agno/models/perplexity/__init__.py +0 -0
  281. {agno-2.2.13 → agno-2.3.1}/agno/models/perplexity/perplexity.py +0 -0
  282. {agno-2.2.13 → agno-2.3.1}/agno/models/portkey/__init__.py +0 -0
  283. {agno-2.2.13 → agno-2.3.1}/agno/models/portkey/portkey.py +0 -0
  284. {agno-2.2.13 → agno-2.3.1}/agno/models/requesty/__init__.py +0 -0
  285. {agno-2.2.13 → agno-2.3.1}/agno/models/requesty/requesty.py +0 -0
  286. {agno-2.2.13 → agno-2.3.1}/agno/models/sambanova/__init__.py +0 -0
  287. {agno-2.2.13 → agno-2.3.1}/agno/models/sambanova/sambanova.py +0 -0
  288. {agno-2.2.13 → agno-2.3.1}/agno/models/siliconflow/__init__.py +0 -0
  289. {agno-2.2.13 → agno-2.3.1}/agno/models/siliconflow/siliconflow.py +0 -0
  290. {agno-2.2.13 → agno-2.3.1}/agno/models/together/__init__.py +0 -0
  291. {agno-2.2.13 → agno-2.3.1}/agno/models/together/together.py +0 -0
  292. {agno-2.2.13 → agno-2.3.1}/agno/models/utils.py +0 -0
  293. {agno-2.2.13 → agno-2.3.1}/agno/models/vercel/__init__.py +0 -0
  294. {agno-2.2.13 → agno-2.3.1}/agno/models/vercel/v0.py +0 -0
  295. {agno-2.2.13/agno/reasoning → agno-2.3.1/agno/models/vertexai}/__init__.py +0 -0
  296. {agno-2.2.13 → agno-2.3.1}/agno/models/vllm/__init__.py +0 -0
  297. {agno-2.2.13 → agno-2.3.1}/agno/models/vllm/vllm.py +0 -0
  298. {agno-2.2.13 → agno-2.3.1}/agno/models/xai/__init__.py +0 -0
  299. {agno-2.2.13 → agno-2.3.1}/agno/models/xai/xai.py +0 -0
  300. {agno-2.2.13 → agno-2.3.1}/agno/os/__init__.py +0 -0
  301. {agno-2.2.13 → agno-2.3.1}/agno/os/auth.py +0 -0
  302. {agno-2.2.13 → agno-2.3.1}/agno/os/config.py +0 -0
  303. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/__init__.py +0 -0
  304. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/a2a/__init__.py +0 -0
  305. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/a2a/a2a.py +0 -0
  306. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/a2a/router.py +0 -0
  307. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/a2a/utils.py +0 -0
  308. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/agui/__init__.py +0 -0
  309. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/agui/agui.py +0 -0
  310. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/agui/router.py +0 -0
  311. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/agui/utils.py +0 -0
  312. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/base.py +0 -0
  313. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/slack/__init__.py +0 -0
  314. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/slack/router.py +0 -0
  315. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/slack/security.py +0 -0
  316. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/slack/slack.py +0 -0
  317. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/whatsapp/__init__.py +0 -0
  318. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/whatsapp/router.py +0 -0
  319. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/whatsapp/security.py +0 -0
  320. {agno-2.2.13 → agno-2.3.1}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
  321. {agno-2.2.13 → agno-2.3.1}/agno/os/mcp.py +0 -0
  322. {agno-2.2.13 → agno-2.3.1}/agno/os/middleware/__init__.py +0 -0
  323. {agno-2.2.13 → agno-2.3.1}/agno/os/middleware/jwt.py +0 -0
  324. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/__init__.py +0 -0
  325. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/evals/__init__.py +0 -0
  326. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/evals/evals.py +0 -0
  327. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/evals/schemas.py +0 -0
  328. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/evals/utils.py +0 -0
  329. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/health.py +0 -0
  330. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/home.py +0 -0
  331. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/knowledge/__init__.py +0 -0
  332. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/knowledge/schemas.py +0 -0
  333. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/memory/__init__.py +0 -0
  334. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/memory/memory.py +0 -0
  335. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/memory/schemas.py +0 -0
  336. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/metrics/__init__.py +0 -0
  337. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/metrics/metrics.py +0 -0
  338. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/metrics/schemas.py +0 -0
  339. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/session/__init__.py +0 -0
  340. {agno-2.2.13 → agno-2.3.1}/agno/os/routers/session/session.py +0 -0
  341. {agno-2.2.13 → agno-2.3.1}/agno/os/settings.py +0 -0
  342. {agno-2.2.13 → agno-2.3.1}/agno/os/utils.py +0 -0
  343. {agno-2.2.13 → agno-2.3.1}/agno/py.typed +0 -0
  344. {agno-2.2.13/agno/tools/models → agno-2.3.1/agno/reasoning}/__init__.py +0 -0
  345. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/anthropic.py +0 -0
  346. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/azure_ai_foundry.py +0 -0
  347. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/deepseek.py +0 -0
  348. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/default.py +0 -0
  349. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/gemini.py +0 -0
  350. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/groq.py +0 -0
  351. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/helpers.py +0 -0
  352. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/ollama.py +0 -0
  353. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/openai.py +0 -0
  354. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/step.py +0 -0
  355. {agno-2.2.13 → agno-2.3.1}/agno/reasoning/vertexai.py +0 -0
  356. {agno-2.2.13 → agno-2.3.1}/agno/run/__init__.py +0 -0
  357. {agno-2.2.13 → agno-2.3.1}/agno/run/agent.py +0 -0
  358. {agno-2.2.13 → agno-2.3.1}/agno/run/base.py +0 -0
  359. {agno-2.2.13 → agno-2.3.1}/agno/run/cancel.py +0 -0
  360. {agno-2.2.13 → agno-2.3.1}/agno/run/messages.py +0 -0
  361. {agno-2.2.13 → agno-2.3.1}/agno/run/team.py +0 -0
  362. {agno-2.2.13 → agno-2.3.1}/agno/run/workflow.py +0 -0
  363. {agno-2.2.13 → agno-2.3.1}/agno/session/__init__.py +0 -0
  364. {agno-2.2.13 → agno-2.3.1}/agno/team/__init__.py +0 -0
  365. {agno-2.2.13 → agno-2.3.1}/agno/tools/__init__.py +0 -0
  366. {agno-2.2.13 → agno-2.3.1}/agno/tools/agentql.py +0 -0
  367. {agno-2.2.13 → agno-2.3.1}/agno/tools/airflow.py +0 -0
  368. {agno-2.2.13 → agno-2.3.1}/agno/tools/api.py +0 -0
  369. {agno-2.2.13 → agno-2.3.1}/agno/tools/apify.py +0 -0
  370. {agno-2.2.13 → agno-2.3.1}/agno/tools/arxiv.py +0 -0
  371. {agno-2.2.13 → agno-2.3.1}/agno/tools/aws_lambda.py +0 -0
  372. {agno-2.2.13 → agno-2.3.1}/agno/tools/aws_ses.py +0 -0
  373. {agno-2.2.13 → agno-2.3.1}/agno/tools/baidusearch.py +0 -0
  374. {agno-2.2.13 → agno-2.3.1}/agno/tools/bitbucket.py +0 -0
  375. {agno-2.2.13 → agno-2.3.1}/agno/tools/brandfetch.py +0 -0
  376. {agno-2.2.13 → agno-2.3.1}/agno/tools/bravesearch.py +0 -0
  377. {agno-2.2.13 → agno-2.3.1}/agno/tools/brightdata.py +0 -0
  378. {agno-2.2.13 → agno-2.3.1}/agno/tools/browserbase.py +0 -0
  379. {agno-2.2.13 → agno-2.3.1}/agno/tools/calcom.py +0 -0
  380. {agno-2.2.13 → agno-2.3.1}/agno/tools/calculator.py +0 -0
  381. {agno-2.2.13 → agno-2.3.1}/agno/tools/cartesia.py +0 -0
  382. {agno-2.2.13 → agno-2.3.1}/agno/tools/clickup.py +0 -0
  383. {agno-2.2.13 → agno-2.3.1}/agno/tools/confluence.py +0 -0
  384. {agno-2.2.13 → agno-2.3.1}/agno/tools/crawl4ai.py +0 -0
  385. {agno-2.2.13 → agno-2.3.1}/agno/tools/csv_toolkit.py +0 -0
  386. {agno-2.2.13 → agno-2.3.1}/agno/tools/dalle.py +0 -0
  387. {agno-2.2.13 → agno-2.3.1}/agno/tools/daytona.py +0 -0
  388. {agno-2.2.13 → agno-2.3.1}/agno/tools/decorator.py +0 -0
  389. {agno-2.2.13 → agno-2.3.1}/agno/tools/desi_vocal.py +0 -0
  390. {agno-2.2.13 → agno-2.3.1}/agno/tools/discord.py +0 -0
  391. {agno-2.2.13 → agno-2.3.1}/agno/tools/docker.py +0 -0
  392. {agno-2.2.13 → agno-2.3.1}/agno/tools/duckdb.py +0 -0
  393. {agno-2.2.13 → agno-2.3.1}/agno/tools/duckduckgo.py +0 -0
  394. {agno-2.2.13 → agno-2.3.1}/agno/tools/e2b.py +0 -0
  395. {agno-2.2.13 → agno-2.3.1}/agno/tools/eleven_labs.py +0 -0
  396. {agno-2.2.13 → agno-2.3.1}/agno/tools/email.py +0 -0
  397. {agno-2.2.13 → agno-2.3.1}/agno/tools/evm.py +0 -0
  398. {agno-2.2.13 → agno-2.3.1}/agno/tools/exa.py +0 -0
  399. {agno-2.2.13 → agno-2.3.1}/agno/tools/fal.py +0 -0
  400. {agno-2.2.13 → agno-2.3.1}/agno/tools/file.py +0 -0
  401. {agno-2.2.13 → agno-2.3.1}/agno/tools/file_generation.py +0 -0
  402. {agno-2.2.13 → agno-2.3.1}/agno/tools/financial_datasets.py +0 -0
  403. {agno-2.2.13 → agno-2.3.1}/agno/tools/firecrawl.py +0 -0
  404. {agno-2.2.13 → agno-2.3.1}/agno/tools/function.py +0 -0
  405. {agno-2.2.13 → agno-2.3.1}/agno/tools/giphy.py +0 -0
  406. {agno-2.2.13 → agno-2.3.1}/agno/tools/github.py +0 -0
  407. {agno-2.2.13 → agno-2.3.1}/agno/tools/gmail.py +0 -0
  408. {agno-2.2.13 → agno-2.3.1}/agno/tools/google_bigquery.py +0 -0
  409. {agno-2.2.13 → agno-2.3.1}/agno/tools/google_drive.py +0 -0
  410. {agno-2.2.13 → agno-2.3.1}/agno/tools/google_maps.py +0 -0
  411. {agno-2.2.13 → agno-2.3.1}/agno/tools/googlecalendar.py +0 -0
  412. {agno-2.2.13 → agno-2.3.1}/agno/tools/googlesheets.py +0 -0
  413. {agno-2.2.13 → agno-2.3.1}/agno/tools/hackernews.py +0 -0
  414. {agno-2.2.13 → agno-2.3.1}/agno/tools/jina.py +0 -0
  415. {agno-2.2.13 → agno-2.3.1}/agno/tools/jira.py +0 -0
  416. {agno-2.2.13 → agno-2.3.1}/agno/tools/knowledge.py +0 -0
  417. {agno-2.2.13 → agno-2.3.1}/agno/tools/linear.py +0 -0
  418. {agno-2.2.13 → agno-2.3.1}/agno/tools/linkup.py +0 -0
  419. {agno-2.2.13 → agno-2.3.1}/agno/tools/local_file_system.py +0 -0
  420. {agno-2.2.13 → agno-2.3.1}/agno/tools/lumalab.py +0 -0
  421. {agno-2.2.13 → agno-2.3.1}/agno/tools/mcp/__init__.py +0 -0
  422. {agno-2.2.13 → agno-2.3.1}/agno/tools/mcp/mcp.py +0 -0
  423. {agno-2.2.13 → agno-2.3.1}/agno/tools/mcp/multi_mcp.py +0 -0
  424. {agno-2.2.13 → agno-2.3.1}/agno/tools/mcp/params.py +0 -0
  425. {agno-2.2.13 → agno-2.3.1}/agno/tools/mcp_toolbox.py +0 -0
  426. {agno-2.2.13 → agno-2.3.1}/agno/tools/mem0.py +0 -0
  427. {agno-2.2.13 → agno-2.3.1}/agno/tools/memori.py +0 -0
  428. {agno-2.2.13 → agno-2.3.1}/agno/tools/memory.py +0 -0
  429. {agno-2.2.13 → agno-2.3.1}/agno/tools/mlx_transcribe.py +0 -0
  430. {agno-2.2.13/agno/tools/streamlit → agno-2.3.1/agno/tools/models}/__init__.py +0 -0
  431. {agno-2.2.13 → agno-2.3.1}/agno/tools/models/azure_openai.py +0 -0
  432. {agno-2.2.13 → agno-2.3.1}/agno/tools/models/gemini.py +0 -0
  433. {agno-2.2.13 → agno-2.3.1}/agno/tools/models/groq.py +0 -0
  434. {agno-2.2.13 → agno-2.3.1}/agno/tools/models/morph.py +0 -0
  435. {agno-2.2.13 → agno-2.3.1}/agno/tools/moviepy_video.py +0 -0
  436. {agno-2.2.13 → agno-2.3.1}/agno/tools/neo4j.py +0 -0
  437. {agno-2.2.13 → agno-2.3.1}/agno/tools/newspaper.py +0 -0
  438. {agno-2.2.13 → agno-2.3.1}/agno/tools/newspaper4k.py +0 -0
  439. {agno-2.2.13 → agno-2.3.1}/agno/tools/notion.py +0 -0
  440. {agno-2.2.13 → agno-2.3.1}/agno/tools/openai.py +0 -0
  441. {agno-2.2.13 → agno-2.3.1}/agno/tools/openbb.py +0 -0
  442. {agno-2.2.13 → agno-2.3.1}/agno/tools/opencv.py +0 -0
  443. {agno-2.2.13 → agno-2.3.1}/agno/tools/openweather.py +0 -0
  444. {agno-2.2.13 → agno-2.3.1}/agno/tools/oxylabs.py +0 -0
  445. {agno-2.2.13 → agno-2.3.1}/agno/tools/pandas.py +0 -0
  446. {agno-2.2.13 → agno-2.3.1}/agno/tools/parallel.py +0 -0
  447. {agno-2.2.13 → agno-2.3.1}/agno/tools/postgres.py +0 -0
  448. {agno-2.2.13 → agno-2.3.1}/agno/tools/pubmed.py +0 -0
  449. {agno-2.2.13 → agno-2.3.1}/agno/tools/python.py +0 -0
  450. {agno-2.2.13 → agno-2.3.1}/agno/tools/reasoning.py +0 -0
  451. {agno-2.2.13 → agno-2.3.1}/agno/tools/reddit.py +0 -0
  452. {agno-2.2.13 → agno-2.3.1}/agno/tools/replicate.py +0 -0
  453. {agno-2.2.13 → agno-2.3.1}/agno/tools/resend.py +0 -0
  454. {agno-2.2.13 → agno-2.3.1}/agno/tools/scrapegraph.py +0 -0
  455. {agno-2.2.13 → agno-2.3.1}/agno/tools/searxng.py +0 -0
  456. {agno-2.2.13 → agno-2.3.1}/agno/tools/serpapi.py +0 -0
  457. {agno-2.2.13 → agno-2.3.1}/agno/tools/serper.py +0 -0
  458. {agno-2.2.13 → agno-2.3.1}/agno/tools/shell.py +0 -0
  459. {agno-2.2.13 → agno-2.3.1}/agno/tools/slack.py +0 -0
  460. {agno-2.2.13 → agno-2.3.1}/agno/tools/sleep.py +0 -0
  461. {agno-2.2.13 → agno-2.3.1}/agno/tools/spider.py +0 -0
  462. {agno-2.2.13 → agno-2.3.1}/agno/tools/sql.py +0 -0
  463. {agno-2.2.13/agno/utils → agno-2.3.1/agno/tools/streamlit}/__init__.py +0 -0
  464. {agno-2.2.13 → agno-2.3.1}/agno/tools/streamlit/components.py +0 -0
  465. {agno-2.2.13 → agno-2.3.1}/agno/tools/tavily.py +0 -0
  466. {agno-2.2.13 → agno-2.3.1}/agno/tools/telegram.py +0 -0
  467. {agno-2.2.13 → agno-2.3.1}/agno/tools/todoist.py +0 -0
  468. {agno-2.2.13 → agno-2.3.1}/agno/tools/tool_registry.py +0 -0
  469. {agno-2.2.13 → agno-2.3.1}/agno/tools/toolkit.py +0 -0
  470. {agno-2.2.13 → agno-2.3.1}/agno/tools/trafilatura.py +0 -0
  471. {agno-2.2.13 → agno-2.3.1}/agno/tools/trello.py +0 -0
  472. {agno-2.2.13 → agno-2.3.1}/agno/tools/twilio.py +0 -0
  473. {agno-2.2.13 → agno-2.3.1}/agno/tools/user_control_flow.py +0 -0
  474. {agno-2.2.13 → agno-2.3.1}/agno/tools/valyu.py +0 -0
  475. {agno-2.2.13 → agno-2.3.1}/agno/tools/visualization.py +0 -0
  476. {agno-2.2.13 → agno-2.3.1}/agno/tools/webbrowser.py +0 -0
  477. {agno-2.2.13 → agno-2.3.1}/agno/tools/webex.py +0 -0
  478. {agno-2.2.13 → agno-2.3.1}/agno/tools/website.py +0 -0
  479. {agno-2.2.13 → agno-2.3.1}/agno/tools/webtools.py +0 -0
  480. {agno-2.2.13 → agno-2.3.1}/agno/tools/whatsapp.py +0 -0
  481. {agno-2.2.13 → agno-2.3.1}/agno/tools/wikipedia.py +0 -0
  482. {agno-2.2.13 → agno-2.3.1}/agno/tools/workflow.py +0 -0
  483. {agno-2.2.13 → agno-2.3.1}/agno/tools/x.py +0 -0
  484. {agno-2.2.13 → agno-2.3.1}/agno/tools/youtube.py +0 -0
  485. {agno-2.2.13 → agno-2.3.1}/agno/tools/zendesk.py +0 -0
  486. {agno-2.2.13 → agno-2.3.1}/agno/tools/zep.py +0 -0
  487. {agno-2.2.13 → agno-2.3.1}/agno/tools/zoom.py +0 -0
  488. {agno-2.2.13/agno/utils/models → agno-2.3.1/agno/utils}/__init__.py +0 -0
  489. {agno-2.2.13 → agno-2.3.1}/agno/utils/agent.py +0 -0
  490. {agno-2.2.13 → agno-2.3.1}/agno/utils/audio.py +0 -0
  491. {agno-2.2.13 → agno-2.3.1}/agno/utils/certs.py +0 -0
  492. {agno-2.2.13 → agno-2.3.1}/agno/utils/code_execution.py +0 -0
  493. {agno-2.2.13 → agno-2.3.1}/agno/utils/common.py +0 -0
  494. {agno-2.2.13 → agno-2.3.1}/agno/utils/dttm.py +0 -0
  495. {agno-2.2.13 → agno-2.3.1}/agno/utils/enum.py +0 -0
  496. {agno-2.2.13 → agno-2.3.1}/agno/utils/env.py +0 -0
  497. {agno-2.2.13 → agno-2.3.1}/agno/utils/events.py +0 -0
  498. {agno-2.2.13 → agno-2.3.1}/agno/utils/format_str.py +0 -0
  499. {agno-2.2.13 → agno-2.3.1}/agno/utils/functions.py +0 -0
  500. {agno-2.2.13 → agno-2.3.1}/agno/utils/gemini.py +0 -0
  501. {agno-2.2.13 → agno-2.3.1}/agno/utils/hooks.py +0 -0
  502. {agno-2.2.13 → agno-2.3.1}/agno/utils/json_schema.py +0 -0
  503. {agno-2.2.13 → agno-2.3.1}/agno/utils/knowledge.py +0 -0
  504. {agno-2.2.13 → agno-2.3.1}/agno/utils/location.py +0 -0
  505. {agno-2.2.13 → agno-2.3.1}/agno/utils/log.py +0 -0
  506. {agno-2.2.13 → agno-2.3.1}/agno/utils/mcp.py +0 -0
  507. {agno-2.2.13 → agno-2.3.1}/agno/utils/merge_dict.py +0 -0
  508. {agno-2.2.13 → agno-2.3.1}/agno/utils/message.py +0 -0
  509. {agno-2.2.13/agno/utils/print_response → agno-2.3.1/agno/utils/models}/__init__.py +0 -0
  510. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/ai_foundry.py +0 -0
  511. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/cohere.py +0 -0
  512. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/llama.py +0 -0
  513. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/mistral.py +0 -0
  514. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/openai_responses.py +0 -0
  515. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/schema_utils.py +0 -0
  516. {agno-2.2.13 → agno-2.3.1}/agno/utils/models/watsonx.py +0 -0
  517. {agno-2.2.13 → agno-2.3.1}/agno/utils/openai.py +0 -0
  518. {agno-2.2.13 → agno-2.3.1}/agno/utils/pickle.py +0 -0
  519. {agno-2.2.13 → agno-2.3.1}/agno/utils/pprint.py +0 -0
  520. {agno-2.2.13 → agno-2.3.1}/agno/utils/print_response/workflow.py +0 -0
  521. {agno-2.2.13 → agno-2.3.1}/agno/utils/prompts.py +0 -0
  522. {agno-2.2.13 → agno-2.3.1}/agno/utils/reasoning.py +0 -0
  523. {agno-2.2.13 → agno-2.3.1}/agno/utils/response.py +0 -0
  524. {agno-2.2.13 → agno-2.3.1}/agno/utils/response_iterator.py +0 -0
  525. {agno-2.2.13 → agno-2.3.1}/agno/utils/safe_formatter.py +0 -0
  526. {agno-2.2.13 → agno-2.3.1}/agno/utils/serialize.py +0 -0
  527. {agno-2.2.13 → agno-2.3.1}/agno/utils/shell.py +0 -0
  528. {agno-2.2.13 → agno-2.3.1}/agno/utils/streamlit.py +0 -0
  529. {agno-2.2.13 → agno-2.3.1}/agno/utils/string.py +0 -0
  530. {agno-2.2.13 → agno-2.3.1}/agno/utils/team.py +0 -0
  531. {agno-2.2.13 → agno-2.3.1}/agno/utils/timer.py +0 -0
  532. {agno-2.2.13 → agno-2.3.1}/agno/utils/tools.py +0 -0
  533. {agno-2.2.13 → agno-2.3.1}/agno/utils/web.py +0 -0
  534. {agno-2.2.13 → agno-2.3.1}/agno/utils/whatsapp.py +0 -0
  535. {agno-2.2.13 → agno-2.3.1}/agno/utils/yaml_io.py +0 -0
  536. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/__init__.py +0 -0
  537. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/base.py +0 -0
  538. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/cassandra/__init__.py +0 -0
  539. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/cassandra/cassandra.py +0 -0
  540. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
  541. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/cassandra/index.py +0 -0
  542. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/chroma/__init__.py +0 -0
  543. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/chroma/chromadb.py +0 -0
  544. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/clickhouse/__init__.py +0 -0
  545. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
  546. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/clickhouse/index.py +0 -0
  547. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/couchbase/__init__.py +0 -0
  548. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/distance.py +0 -0
  549. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/lancedb/__init__.py +0 -0
  550. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/lancedb/lance_db.py +0 -0
  551. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/langchaindb/__init__.py +0 -0
  552. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/langchaindb/langchaindb.py +0 -0
  553. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/lightrag/__init__.py +0 -0
  554. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/lightrag/lightrag.py +0 -0
  555. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/llamaindex/__init__.py +0 -0
  556. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
  557. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/milvus/__init__.py +0 -0
  558. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/milvus/milvus.py +0 -0
  559. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/mongodb/__init__.py +0 -0
  560. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/mongodb/mongodb.py +0 -0
  561. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/pgvector/__init__.py +0 -0
  562. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/pgvector/index.py +0 -0
  563. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/pgvector/pgvector.py +0 -0
  564. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/pineconedb/__init__.py +0 -0
  565. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/pineconedb/pineconedb.py +0 -0
  566. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/qdrant/__init__.py +0 -0
  567. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/qdrant/qdrant.py +0 -0
  568. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/redis/__init__.py +0 -0
  569. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/redis/redisdb.py +0 -0
  570. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/search.py +0 -0
  571. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/singlestore/__init__.py +0 -0
  572. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/singlestore/index.py +0 -0
  573. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/singlestore/singlestore.py +0 -0
  574. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/surrealdb/__init__.py +0 -0
  575. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/surrealdb/surrealdb.py +0 -0
  576. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/upstashdb/__init__.py +0 -0
  577. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/upstashdb/upstashdb.py +0 -0
  578. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/weaviate/__init__.py +0 -0
  579. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/weaviate/index.py +0 -0
  580. {agno-2.2.13 → agno-2.3.1}/agno/vectordb/weaviate/weaviate.py +0 -0
  581. {agno-2.2.13 → agno-2.3.1}/agno/workflow/__init__.py +0 -0
  582. {agno-2.2.13 → agno-2.3.1}/agno/workflow/agent.py +0 -0
  583. {agno-2.2.13 → agno-2.3.1}/agno/workflow/types.py +0 -0
  584. {agno-2.2.13 → agno-2.3.1}/agno.egg-info/dependency_links.txt +0 -0
  585. {agno-2.2.13 → agno-2.3.1}/agno.egg-info/top_level.txt +0 -0
  586. {agno-2.2.13 → agno-2.3.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.2.13
3
+ Version: 2.3.1
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
@@ -24,7 +24,7 @@ License-File: LICENSE
24
24
  Requires-Dist: docstring-parser
25
25
  Requires-Dist: gitpython
26
26
  Requires-Dist: h11>=0.16.0
27
- Requires-Dist: httpx
27
+ Requires-Dist: httpx[http2]
28
28
  Requires-Dist: packaging
29
29
  Requires-Dist: pydantic-settings
30
30
  Requires-Dist: pydantic
@@ -200,6 +200,9 @@ Provides-Extra: postgres
200
200
  Requires-Dist: psycopg-binary; extra == "postgres"
201
201
  Provides-Extra: async-postgres
202
202
  Requires-Dist: asyncpg; extra == "async-postgres"
203
+ Provides-Extra: async-mongo
204
+ Requires-Dist: pymongo; extra == "async-mongo"
205
+ Requires-Dist: motor; extra == "async-mongo"
203
206
  Provides-Extra: sqlite
204
207
  Requires-Dist: sqlalchemy; extra == "sqlite"
205
208
  Provides-Extra: gcs
@@ -336,6 +339,7 @@ Provides-Extra: storage
336
339
  Requires-Dist: agno[sql]; extra == "storage"
337
340
  Requires-Dist: agno[postgres]; extra == "storage"
338
341
  Requires-Dist: agno[async_postgres]; extra == "storage"
342
+ Requires-Dist: agno[async_mongo]; extra == "storage"
339
343
  Requires-Dist: agno[sqlite]; extra == "storage"
340
344
  Requires-Dist: agno[gcs]; extra == "storage"
341
345
  Requires-Dist: agno[firestore]; extra == "storage"
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import warnings
3
4
  from asyncio import CancelledError, create_task
4
5
  from collections import ChainMap, deque
5
6
  from dataclasses import dataclass
@@ -72,7 +73,6 @@ from agno.session.summary import SessionSummary
72
73
  from agno.tools import Toolkit
73
74
  from agno.tools.function import Function
74
75
  from agno.utils.agent import (
75
- aget_chat_history_util,
76
76
  aget_last_run_output_util,
77
77
  aget_run_output_util,
78
78
  aget_session_metrics_util,
@@ -86,7 +86,6 @@ from agno.utils.agent import (
86
86
  collect_joint_files,
87
87
  collect_joint_images,
88
88
  collect_joint_videos,
89
- get_chat_history_util,
90
89
  get_last_run_output_util,
91
90
  get_run_output_util,
92
91
  get_session_metrics_util,
@@ -376,8 +375,6 @@ class Agent:
376
375
  stream: Optional[bool] = None
377
376
  # Stream the intermediate steps from the Agent
378
377
  stream_events: Optional[bool] = None
379
- # [Deprecated] Stream the intermediate steps from the Agent
380
- stream_intermediate_steps: Optional[bool] = None
381
378
 
382
379
  # Persist the events on the run response
383
380
  store_events: bool = False
@@ -417,6 +414,9 @@ class Agent:
417
414
  # This helps us improve the Agent and provide better support
418
415
  telemetry: bool = True
419
416
 
417
+ # Deprecated. Use stream_events instead
418
+ stream_intermediate_steps: Optional[bool] = None
419
+
420
420
  def __init__(
421
421
  self,
422
422
  *,
@@ -627,6 +627,13 @@ class Agent:
627
627
  self.save_response_to_file = save_response_to_file
628
628
 
629
629
  self.stream = stream
630
+
631
+ if stream_intermediate_steps is not None:
632
+ warnings.warn(
633
+ "The 'stream_intermediate_steps' parameter is deprecated and will be removed in future versions. Use 'stream_events' instead.",
634
+ DeprecationWarning,
635
+ stacklevel=2,
636
+ )
630
637
  self.stream_events = stream_events or stream_intermediate_steps
631
638
 
632
639
  self.store_events = store_events
@@ -1538,6 +1545,13 @@ class Agent:
1538
1545
  "add_history_to_context is True, but no database has been assigned to the agent. History will not be added to the context."
1539
1546
  )
1540
1547
 
1548
+ if yield_run_response is not None:
1549
+ warnings.warn(
1550
+ "The 'yield_run_response' parameter is deprecated and will be removed in future versions. Use 'yield_run_output' instead.",
1551
+ DeprecationWarning,
1552
+ stacklevel=2,
1553
+ )
1554
+
1541
1555
  # Create a run_id for this specific run
1542
1556
  run_id = str(uuid4())
1543
1557
 
@@ -1616,6 +1630,12 @@ class Agent:
1616
1630
  stream = False if self.stream is None else self.stream
1617
1631
 
1618
1632
  # Considering both stream_events and stream_intermediate_steps (deprecated)
1633
+ if stream_intermediate_steps is not None:
1634
+ warnings.warn(
1635
+ "The 'stream_intermediate_steps' parameter is deprecated and will be removed in future versions. Use 'stream_events' instead.",
1636
+ DeprecationWarning,
1637
+ stacklevel=2,
1638
+ )
1619
1639
  stream_events = stream_events or stream_intermediate_steps
1620
1640
 
1621
1641
  # Can't stream events if streaming is disabled
@@ -2003,6 +2023,7 @@ class Agent:
2003
2023
  await cultural_knowledge_task
2004
2024
  except CancelledError:
2005
2025
  pass
2026
+
2006
2027
  # Always clean up the run tracking
2007
2028
  cleanup_run(run_response.run_id) # type: ignore
2008
2029
 
@@ -2458,6 +2479,13 @@ class Agent:
2458
2479
  "add_history_to_context is True, but no database has been assigned to the agent. History will not be added to the context."
2459
2480
  )
2460
2481
 
2482
+ if yield_run_response is not None:
2483
+ warnings.warn(
2484
+ "The 'yield_run_response' parameter is deprecated and will be removed in future versions. Use 'yield_run_output' instead.",
2485
+ DeprecationWarning,
2486
+ stacklevel=2,
2487
+ )
2488
+
2461
2489
  # Create a run_id for this specific run
2462
2490
  run_id = str(uuid4())
2463
2491
 
@@ -2508,6 +2536,12 @@ class Agent:
2508
2536
  stream = False if self.stream is None else self.stream
2509
2537
 
2510
2538
  # Considering both stream_events and stream_intermediate_steps (deprecated)
2539
+ if stream_intermediate_steps is not None:
2540
+ warnings.warn(
2541
+ "The 'stream_intermediate_steps' parameter is deprecated and will be removed in future versions. Use 'stream_events' instead.",
2542
+ DeprecationWarning,
2543
+ stacklevel=2,
2544
+ )
2511
2545
  stream_events = stream_events or stream_intermediate_steps
2512
2546
 
2513
2547
  # Can't stream events if streaming is disabled
@@ -2790,6 +2824,12 @@ class Agent:
2790
2824
  stream = False if self.stream is None else self.stream
2791
2825
 
2792
2826
  # Considering both stream_events and stream_intermediate_steps (deprecated)
2827
+ if stream_intermediate_steps is not None:
2828
+ warnings.warn(
2829
+ "The 'stream_intermediate_steps' parameter is deprecated and will be removed in future versions. Use 'stream_events' instead.",
2830
+ DeprecationWarning,
2831
+ stacklevel=2,
2832
+ )
2793
2833
  stream_events = stream_events or stream_intermediate_steps
2794
2834
 
2795
2835
  # Can't stream events if streaming is disabled
@@ -3313,6 +3353,12 @@ class Agent:
3313
3353
  stream = False if self.stream is None else self.stream
3314
3354
 
3315
3355
  # Considering both stream_events and stream_intermediate_steps (deprecated)
3356
+ if stream_intermediate_steps is not None:
3357
+ warnings.warn(
3358
+ "The 'stream_intermediate_steps' parameter is deprecated and will be removed in future versions. Use 'stream_events' instead.",
3359
+ DeprecationWarning,
3360
+ stacklevel=2,
3361
+ )
3316
3362
  stream_events = stream_events or stream_intermediate_steps
3317
3363
 
3318
3364
  # Can't stream events if streaming is disabled
@@ -6168,36 +6214,6 @@ class Agent:
6168
6214
  self._upsert_session(session=session)
6169
6215
  log_debug(f"Created or updated AgentSession record: {session.session_id}")
6170
6216
 
6171
- def get_chat_history(self, session_id: Optional[str] = None) -> List[Message]:
6172
- """Read the chat history from the session
6173
-
6174
- Args:
6175
- session_id: The session ID to get the chat history for. If not provided, the current cached session ID is used.
6176
- Returns:
6177
- List[Message]: The chat history from the session.
6178
- """
6179
- session_id = session_id or self.session_id
6180
- if session_id is None:
6181
- log_warning("Session ID is not set, cannot get chat history")
6182
- return []
6183
-
6184
- return get_chat_history_util(self, session_id=session_id)
6185
-
6186
- async def aget_chat_history(self, session_id: Optional[str] = None) -> List[Message]:
6187
- """Read the chat history from the session
6188
-
6189
- Args:
6190
- session_id: The session ID to get the chat history for. If not provided, the current cached session ID is used.
6191
- Returns:
6192
- List[Message]: The chat history from the session.
6193
- """
6194
- session_id = session_id or self.session_id
6195
- if session_id is None:
6196
- log_warning("Session ID is not set, cannot get chat history")
6197
- return []
6198
-
6199
- return await aget_chat_history_util(self, session_id=session_id)
6200
-
6201
6217
  # -*- Session Management Functions
6202
6218
  def rename(self, name: str, session_id: Optional[str] = None) -> None:
6203
6219
  """
@@ -6311,7 +6327,7 @@ class Agent:
6311
6327
 
6312
6328
  gen_session_name_prompt = "Conversation\n"
6313
6329
 
6314
- messages_for_generating_session_name = session.get_messages_for_session()
6330
+ messages_for_generating_session_name = session.get_messages()
6315
6331
 
6316
6332
  for message in messages_for_generating_session_name:
6317
6333
  gen_session_name_prompt += f"{message.role.upper()}: {message.content}\n"
@@ -6467,11 +6483,25 @@ class Agent:
6467
6483
  return
6468
6484
  await self.db.delete_session(session_id=session_id) # type: ignore
6469
6485
 
6470
- def get_messages_for_session(self, session_id: Optional[str] = None) -> List[Message]:
6471
- """Get messages for a session
6486
+ def get_session_messages(
6487
+ self,
6488
+ session_id: Optional[str] = None,
6489
+ last_n_runs: Optional[int] = None,
6490
+ limit: Optional[int] = None,
6491
+ skip_roles: Optional[List[str]] = None,
6492
+ skip_statuses: Optional[List[RunStatus]] = None,
6493
+ skip_history_messages: bool = True,
6494
+ ) -> List[Message]:
6495
+ """Get all messages belonging to the given session.
6472
6496
 
6473
6497
  Args:
6474
- session_id: The session ID to get the messages for. If not provided, the current cached session ID is used.
6498
+ session_id: The session ID to get the messages for. If not provided, the latest used session ID is used.
6499
+ last_n_runs: The number of runs to return messages from, counting from the latest. Defaults to all runs.
6500
+ limit: The number of messages to return, counting from the latest. Defaults to all messages.
6501
+ skip_roles: Skip messages with these roles.
6502
+ skip_statuses: Skip messages with these statuses.
6503
+ skip_history_messages: Skip messages that were tagged as history in previous runs.
6504
+
6475
6505
  Returns:
6476
6506
  List[Message]: The messages for the session.
6477
6507
  """
@@ -6481,20 +6511,49 @@ class Agent:
6481
6511
  return []
6482
6512
 
6483
6513
  session = self.get_session(session_id=session_id)
6484
-
6485
6514
  if session is None:
6486
6515
  raise Exception("Session not found")
6487
6516
 
6488
- # Only filter by agent_id if this is part of a team
6489
- return session.get_messages_from_last_n_runs( # type: ignore
6517
+ # Handle the case in which the agent is reusing a team session
6518
+ if isinstance(session, TeamSession):
6519
+ return session.get_messages(
6520
+ member_ids=[self.id] if self.team_id and self.id else None,
6521
+ last_n_runs=last_n_runs,
6522
+ limit=limit,
6523
+ skip_roles=skip_roles,
6524
+ skip_statuses=skip_statuses,
6525
+ skip_history_messages=skip_history_messages,
6526
+ )
6527
+
6528
+ return session.get_messages(
6529
+ # Only filter by agent_id if this is part of a team
6490
6530
  agent_id=self.id if self.team_id is not None else None,
6531
+ last_n_runs=last_n_runs,
6532
+ limit=limit,
6533
+ skip_roles=skip_roles,
6534
+ skip_statuses=skip_statuses,
6535
+ skip_history_messages=skip_history_messages,
6491
6536
  )
6492
6537
 
6493
- async def aget_messages_for_session(self, session_id: Optional[str] = None) -> List[Message]:
6494
- """Get messages for a session
6538
+ async def aget_session_messages(
6539
+ self,
6540
+ session_id: Optional[str] = None,
6541
+ last_n_runs: Optional[int] = None,
6542
+ limit: Optional[int] = None,
6543
+ skip_roles: Optional[List[str]] = None,
6544
+ skip_statuses: Optional[List[RunStatus]] = None,
6545
+ skip_history_messages: bool = True,
6546
+ ) -> List[Message]:
6547
+ """Get all messages belonging to the given session.
6495
6548
 
6496
6549
  Args:
6497
6550
  session_id: The session ID to get the messages for. If not provided, the current cached session ID is used.
6551
+ last_n_runs: The number of runs to return messages from, counting from the latest. Defaults to all runs.
6552
+ limit: The number of messages to return, counting from the latest. Defaults to all messages.
6553
+ skip_roles: Skip messages with these roles.
6554
+ skip_statuses: Skip messages with these statuses.
6555
+ skip_history_messages: Skip messages that were tagged as history in previous runs.
6556
+
6498
6557
  Returns:
6499
6558
  List[Message]: The messages for the session.
6500
6559
  """
@@ -6504,13 +6563,50 @@ class Agent:
6504
6563
  return []
6505
6564
 
6506
6565
  session = await self.aget_session(session_id=session_id)
6507
-
6508
6566
  if session is None:
6509
6567
  raise Exception("Session not found")
6510
6568
 
6569
+ # Handle the case in which the agent is reusing a team session
6570
+ if isinstance(session, TeamSession):
6571
+ return session.get_messages(
6572
+ member_ids=[self.id] if self.team_id and self.id else None,
6573
+ last_n_runs=last_n_runs,
6574
+ limit=limit,
6575
+ skip_roles=skip_roles,
6576
+ skip_statuses=skip_statuses,
6577
+ skip_history_messages=skip_history_messages,
6578
+ )
6579
+
6511
6580
  # Only filter by agent_id if this is part of a team
6512
- return session.get_messages_from_last_n_runs( # type: ignore
6581
+ return session.get_messages(
6513
6582
  agent_id=self.id if self.team_id is not None else None,
6583
+ last_n_runs=last_n_runs,
6584
+ limit=limit,
6585
+ skip_roles=skip_roles,
6586
+ skip_statuses=skip_statuses,
6587
+ skip_history_messages=skip_history_messages,
6588
+ )
6589
+
6590
+ def get_chat_history(self, session_id: Optional[str] = None, last_n_runs: Optional[int] = None) -> List[Message]:
6591
+ """Return the chat history (user and assistant messages) for the session.
6592
+ Use get_messages() for more filtering options.
6593
+
6594
+ Returns:
6595
+ A list of user and assistant Messages belonging to the session.
6596
+ """
6597
+ return self.get_session_messages(session_id=session_id, last_n_runs=last_n_runs, skip_roles=["system", "tool"])
6598
+
6599
+ async def aget_chat_history(
6600
+ self, session_id: Optional[str] = None, last_n_runs: Optional[int] = None
6601
+ ) -> List[Message]:
6602
+ """Return the chat history (user and assistant messages) for the session.
6603
+ Use get_messages() for more filtering options.
6604
+
6605
+ Returns:
6606
+ A list of user and assistant Messages belonging to the session.
6607
+ """
6608
+ return await self.aget_session_messages(
6609
+ session_id=session_id, last_n_runs=last_n_runs, skip_roles=["system", "tool"]
6514
6610
  )
6515
6611
 
6516
6612
  def get_session_summary(self, session_id: Optional[str] = None) -> Optional[SessionSummary]:
@@ -6518,6 +6614,7 @@ class Agent:
6518
6614
 
6519
6615
  Args:
6520
6616
  session_id: The session ID to get the summary for. If not provided, the current cached session ID is used.
6617
+
6521
6618
  Returns:
6522
6619
  SessionSummary: The session summary.
6523
6620
  """
@@ -7136,7 +7233,7 @@ class Agent:
7136
7233
 
7137
7234
  # 3.2.5 Add information about agentic filters if enabled
7138
7235
  if self.knowledge is not None and self.enable_agentic_knowledge_filters:
7139
- valid_filters = await self.knowledge.aget_valid_filters()
7236
+ valid_filters = await self.knowledge.async_get_valid_filters()
7140
7237
  if valid_filters:
7141
7238
  valid_filters_str = ", ".join(valid_filters)
7142
7239
  additional_information.append(
@@ -7628,10 +7725,10 @@ class Agent:
7628
7725
  self.system_message_role if self.system_message_role not in ["user", "assistant", "tool"] else None
7629
7726
  )
7630
7727
 
7631
- history: List[Message] = session.get_messages_from_last_n_runs(
7632
- last_n=self.num_history_runs,
7633
- last_n_messages=self.num_history_messages,
7634
- skip_role=skip_role,
7728
+ history: List[Message] = session.get_messages(
7729
+ last_n_runs=self.num_history_runs,
7730
+ limit=self.num_history_messages,
7731
+ skip_roles=[skip_role] if skip_role else None,
7635
7732
  agent_id=self.id if self.team_id is not None else None,
7636
7733
  )
7637
7734
 
@@ -7841,10 +7938,10 @@ class Agent:
7841
7938
  self.system_message_role if self.system_message_role not in ["user", "assistant", "tool"] else None
7842
7939
  )
7843
7940
 
7844
- history: List[Message] = session.get_messages_from_last_n_runs(
7845
- last_n=self.num_history_runs,
7846
- last_n_messages=self.num_history_messages,
7847
- skip_role=skip_role,
7941
+ history: List[Message] = session.get_messages(
7942
+ last_n_runs=self.num_history_runs,
7943
+ limit=self.num_history_messages,
7944
+ skip_roles=[skip_role] if skip_role else None,
7848
7945
  agent_id=self.id if self.team_id is not None else None,
7849
7946
  )
7850
7947
 
@@ -8042,6 +8139,7 @@ class Agent:
8042
8139
  query: str,
8043
8140
  num_documents: Optional[int] = None,
8044
8141
  filters: Optional[Union[Dict[str, Any], List[FilterExpr]]] = None,
8142
+ validate_filters: bool = False,
8045
8143
  **kwargs,
8046
8144
  ) -> Optional[List[Union[Dict[str, Any], str]]]:
8047
8145
  """Get relevant docs from the knowledge base to answer a query.
@@ -8050,6 +8148,7 @@ class Agent:
8050
8148
  query (str): The query to search for.
8051
8149
  num_documents (Optional[int]): Number of documents to return.
8052
8150
  filters (Optional[Dict[str, Any]]): Filters to apply to the search.
8151
+ validate_filters (bool): Whether to validate the filters against known valid filter keys.
8053
8152
  **kwargs: Additional keyword arguments.
8054
8153
 
8055
8154
  Returns:
@@ -8060,23 +8159,23 @@ class Agent:
8060
8159
  if num_documents is None and self.knowledge is not None:
8061
8160
  num_documents = self.knowledge.max_results
8062
8161
  # Validate the filters against known valid filter keys
8063
- if self.knowledge is not None:
8064
- valid_filters, invalid_keys = self.knowledge.validate_filters(filters) # type: ignore
8162
+ if self.knowledge is not None and filters is not None:
8163
+ if validate_filters:
8164
+ valid_filters, invalid_keys = self.knowledge.validate_filters(filters) # type: ignore
8065
8165
 
8066
- # Warn about invalid filter keys
8067
- if invalid_keys:
8068
- # type: ignore
8069
- log_warning(f"Invalid filter keys provided: {invalid_keys}. These filters will be ignored.")
8070
- log_info(f"Valid filter keys are: {self.knowledge.valid_metadata_filters}") # type: ignore
8166
+ # Warn about invalid filter keys
8167
+ if invalid_keys:
8168
+ # type: ignore
8169
+ log_warning(f"Invalid filter keys provided: {invalid_keys}. These filters will be ignored.")
8071
8170
 
8072
- # Only use valid filters
8073
- filters = valid_filters
8074
- if not filters:
8075
- log_warning("No valid filters remain after validation. Search will proceed without filters.")
8171
+ # Only use valid filters
8172
+ filters = valid_filters
8173
+ if not filters:
8174
+ log_warning("No valid filters remain after validation. Search will proceed without filters.")
8076
8175
 
8077
- if invalid_keys == [] and valid_filters == {}:
8078
- log_warning("No valid filters provided. Search will proceed without filters.")
8079
- filters = None
8176
+ if invalid_keys == [] and valid_filters == {}:
8177
+ log_warning("No valid filters provided. Search will proceed without filters.")
8178
+ filters = None
8080
8179
 
8081
8180
  if self.knowledge_retriever is not None and callable(self.knowledge_retriever):
8082
8181
  from inspect import signature
@@ -8125,6 +8224,7 @@ class Agent:
8125
8224
  query: str,
8126
8225
  num_documents: Optional[int] = None,
8127
8226
  filters: Optional[Union[Dict[str, Any], List[FilterExpr]]] = None,
8227
+ validate_filters: bool = False,
8128
8228
  **kwargs,
8129
8229
  ) -> Optional[List[Union[Dict[str, Any], str]]]:
8130
8230
  """Get relevant documents from knowledge base asynchronously."""
@@ -8134,22 +8234,22 @@ class Agent:
8134
8234
  num_documents = self.knowledge.max_results
8135
8235
 
8136
8236
  # Validate the filters against known valid filter keys
8137
- if self.knowledge is not None:
8138
- valid_filters, invalid_keys = await self.knowledge.async_validate_filters(filters) # type: ignore
8237
+ if self.knowledge is not None and filters is not None:
8238
+ if validate_filters:
8239
+ valid_filters, invalid_keys = await self.knowledge.async_validate_filters(filters) # type: ignore
8139
8240
 
8140
- # Warn about invalid filter keys
8141
- if invalid_keys: # type: ignore
8142
- log_warning(f"Invalid filter keys provided: {invalid_keys}. These filters will be ignored.")
8143
- log_info(f"Valid filter keys are: {self.knowledge.valid_metadata_filters}") # type: ignore
8241
+ # Warn about invalid filter keys
8242
+ if invalid_keys: # type: ignore
8243
+ log_warning(f"Invalid filter keys provided: {invalid_keys}. These filters will be ignored.")
8144
8244
 
8145
- # Only use valid filters
8146
- filters = valid_filters
8147
- if not filters:
8148
- log_warning("No valid filters remain after validation. Search will proceed without filters.")
8245
+ # Only use valid filters
8246
+ filters = valid_filters
8247
+ if not filters:
8248
+ log_warning("No valid filters remain after validation. Search will proceed without filters.")
8149
8249
 
8150
- if invalid_keys == [] and valid_filters == {}:
8151
- log_warning("No valid filters provided. Search will proceed without filters.")
8152
- filters = None
8250
+ if invalid_keys == [] and valid_filters == {}:
8251
+ log_warning("No valid filters provided. Search will proceed without filters.")
8252
+ filters = None
8153
8253
 
8154
8254
  if self.knowledge_retriever is not None and callable(self.knowledge_retriever):
8155
8255
  from inspect import isawaitable, signature
@@ -9416,7 +9516,7 @@ class Agent:
9416
9516
  import json
9417
9517
 
9418
9518
  history: List[Dict[str, Any]] = []
9419
- all_chats = session.get_messages_for_session()
9519
+ all_chats = session.get_messages()
9420
9520
 
9421
9521
  if len(all_chats) == 0:
9422
9522
  return ""
@@ -9569,7 +9669,9 @@ class Agent:
9569
9669
  # Get the relevant documents from the knowledge base, passing filters
9570
9670
  retrieval_timer = Timer()
9571
9671
  retrieval_timer.start()
9572
- docs_from_knowledge = self.get_relevant_docs_from_knowledge(query=query, filters=search_filters)
9672
+ docs_from_knowledge = self.get_relevant_docs_from_knowledge(
9673
+ query=query, filters=search_filters, validate_filters=True
9674
+ )
9573
9675
  if docs_from_knowledge is not None:
9574
9676
  references = MessageReferences(
9575
9677
  query=query,
@@ -9604,7 +9706,9 @@ class Agent:
9604
9706
 
9605
9707
  retrieval_timer = Timer()
9606
9708
  retrieval_timer.start()
9607
- docs_from_knowledge = await self.aget_relevant_docs_from_knowledge(query=query, filters=search_filters)
9709
+ docs_from_knowledge = await self.aget_relevant_docs_from_knowledge(
9710
+ query=query, filters=search_filters, validate_filters=True
9711
+ )
9608
9712
  if docs_from_knowledge is not None:
9609
9713
  references = MessageReferences(
9610
9714
  query=query,
@@ -9628,7 +9732,7 @@ class Agent:
9628
9732
 
9629
9733
  return Function.from_callable(
9630
9734
  search_knowledge_base_function,
9631
- name="search_knowledge_base_with_agentic_filters",
9735
+ name="search_knowledge_base",
9632
9736
  )
9633
9737
 
9634
9738
  def add_to_knowledge(self, query: str, result: str) -> str:
@@ -9689,6 +9793,8 @@ class Agent:
9689
9793
  session_type=SessionType.AGENT,
9690
9794
  limit=num_history_sessions,
9691
9795
  user_id=user_id,
9796
+ sort_by="created_at",
9797
+ sort_order="desc",
9692
9798
  )
9693
9799
 
9694
9800
  all_messages = []
@@ -9815,8 +9921,6 @@ class Agent:
9815
9921
  videos: Optional[Sequence[Video]] = None,
9816
9922
  files: Optional[Sequence[File]] = None,
9817
9923
  stream: Optional[bool] = None,
9818
- stream_events: Optional[bool] = None,
9819
- stream_intermediate_steps: Optional[bool] = None,
9820
9924
  markdown: Optional[bool] = None,
9821
9925
  knowledge_filters: Optional[Union[Dict[str, Any], List[FilterExpr]]] = None,
9822
9926
  add_history_to_context: Optional[bool] = None,
@@ -9851,15 +9955,8 @@ class Agent:
9851
9955
  if stream is None:
9852
9956
  stream = False if self.stream is None else self.stream
9853
9957
 
9854
- # Considering both stream_events and stream_intermediate_steps (deprecated)
9855
- stream_events = stream_events or stream_intermediate_steps
9856
-
9857
- # Can't stream events if streaming is disabled
9858
- if stream is False:
9859
- stream_events = False
9860
-
9861
- if stream_events is None:
9862
- stream_events = False if self.stream_events is None else self.stream_events
9958
+ if "stream_events" in kwargs:
9959
+ kwargs.pop("stream_events")
9863
9960
 
9864
9961
  if stream:
9865
9962
  print_response_stream(
@@ -9872,7 +9969,7 @@ class Agent:
9872
9969
  images=images,
9873
9970
  videos=videos,
9874
9971
  files=files,
9875
- stream_events=stream_events,
9972
+ stream_events=True,
9876
9973
  knowledge_filters=knowledge_filters,
9877
9974
  debug_mode=debug_mode,
9878
9975
  markdown=markdown,
@@ -9900,7 +9997,6 @@ class Agent:
9900
9997
  images=images,
9901
9998
  videos=videos,
9902
9999
  files=files,
9903
- stream_events=stream_events,
9904
10000
  knowledge_filters=knowledge_filters,
9905
10001
  debug_mode=debug_mode,
9906
10002
  markdown=markdown,
@@ -9929,8 +10025,6 @@ class Agent:
9929
10025
  videos: Optional[Sequence[Video]] = None,
9930
10026
  files: Optional[Sequence[File]] = None,
9931
10027
  stream: Optional[bool] = None,
9932
- stream_events: Optional[bool] = None,
9933
- stream_intermediate_steps: Optional[bool] = None,
9934
10028
  markdown: Optional[bool] = None,
9935
10029
  knowledge_filters: Optional[Union[Dict[str, Any], List[FilterExpr]]] = None,
9936
10030
  add_history_to_context: Optional[bool] = None,
@@ -9959,15 +10053,8 @@ class Agent:
9959
10053
  if stream is None:
9960
10054
  stream = self.stream or False
9961
10055
 
9962
- # Considering both stream_events and stream_intermediate_steps (deprecated)
9963
- stream_events = stream_events or stream_intermediate_steps
9964
-
9965
- # Can't stream events if streaming is disabled
9966
- if stream is False:
9967
- stream_events = False
9968
-
9969
- if stream_events is None:
9970
- stream_events = False if self.stream_events is None else self.stream_events
10056
+ if "stream_events" in kwargs:
10057
+ kwargs.pop("stream_events")
9971
10058
 
9972
10059
  if stream:
9973
10060
  await aprint_response_stream(
@@ -9980,7 +10067,7 @@ class Agent:
9980
10067
  images=images,
9981
10068
  videos=videos,
9982
10069
  files=files,
9983
- stream_events=stream_events,
10070
+ stream_events=True,
9984
10071
  knowledge_filters=knowledge_filters,
9985
10072
  debug_mode=debug_mode,
9986
10073
  markdown=markdown,
@@ -19,6 +19,7 @@ class Api:
19
19
  base_url=agno_api_settings.api_url,
20
20
  headers=self.headers,
21
21
  timeout=60,
22
+ http2=True,
22
23
  )
23
24
 
24
25
  def AsyncClient(self) -> HttpxAsyncClient:
@@ -26,6 +27,7 @@ class Api:
26
27
  base_url=agno_api_settings.api_url,
27
28
  headers=self.headers,
28
29
  timeout=60,
30
+ http2=True,
29
31
  )
30
32
 
31
33