agno 2.0.4__tar.gz → 2.0.5__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 (527) hide show
  1. {agno-2.0.4 → agno-2.0.5}/PKG-INFO +6 -5
  2. {agno-2.0.4 → agno-2.0.5}/README.md +5 -4
  3. {agno-2.0.4 → agno-2.0.5}/agno/agent/agent.py +74 -85
  4. {agno-2.0.4 → agno-2.0.5}/agno/db/dynamo/dynamo.py +2 -2
  5. {agno-2.0.4 → agno-2.0.5}/agno/db/firestore/firestore.py +3 -2
  6. {agno-2.0.4 → agno-2.0.5}/agno/db/gcs_json/gcs_json_db.py +2 -2
  7. {agno-2.0.4 → agno-2.0.5}/agno/db/json/json_db.py +2 -2
  8. agno-2.0.5/agno/db/migrations/v1_to_v2.py +330 -0
  9. {agno-2.0.4 → agno-2.0.5}/agno/db/mongo/mongo.py +61 -2
  10. {agno-2.0.4 → agno-2.0.5}/agno/db/mysql/mysql.py +5 -5
  11. {agno-2.0.4 → agno-2.0.5}/agno/db/mysql/schemas.py +27 -27
  12. {agno-2.0.4 → agno-2.0.5}/agno/db/postgres/postgres.py +5 -5
  13. {agno-2.0.4 → agno-2.0.5}/agno/db/redis/redis.py +2 -2
  14. {agno-2.0.4 → agno-2.0.5}/agno/db/singlestore/singlestore.py +2 -2
  15. {agno-2.0.4 → agno-2.0.5}/agno/db/sqlite/sqlite.py +6 -5
  16. {agno-2.0.4 → agno-2.0.5}/agno/db/utils.py +0 -14
  17. {agno-2.0.4 → agno-2.0.5}/agno/integrations/discord/client.py +1 -0
  18. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/knowledge.py +7 -7
  19. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/reader_factory.py +7 -3
  20. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/web_search_reader.py +12 -6
  21. {agno-2.0.4 → agno-2.0.5}/agno/models/message.py +109 -0
  22. {agno-2.0.4 → agno-2.0.5}/agno/models/openai/responses.py +6 -0
  23. {agno-2.0.4 → agno-2.0.5}/agno/os/app.py +162 -42
  24. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/agui/utils.py +98 -134
  25. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/health.py +0 -1
  26. agno-2.0.5/agno/os/routers/home.py +52 -0
  27. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/knowledge/knowledge.py +2 -2
  28. {agno-2.0.4 → agno-2.0.5}/agno/os/schema.py +21 -0
  29. {agno-2.0.4 → agno-2.0.5}/agno/os/utils.py +0 -8
  30. {agno-2.0.4 → agno-2.0.5}/agno/run/agent.py +3 -3
  31. {agno-2.0.4 → agno-2.0.5}/agno/run/team.py +3 -3
  32. {agno-2.0.4 → agno-2.0.5}/agno/team/team.py +33 -38
  33. {agno-2.0.4 → agno-2.0.5}/agno/tools/duckduckgo.py +15 -11
  34. {agno-2.0.4 → agno-2.0.5}/agno/tools/googlesearch.py +1 -1
  35. {agno-2.0.4 → agno-2.0.5}/agno/utils/string.py +32 -0
  36. {agno-2.0.4 → agno-2.0.5}/agno/utils/tools.py +1 -1
  37. {agno-2.0.4 → agno-2.0.5}/agno/workflow/step.py +4 -3
  38. {agno-2.0.4 → agno-2.0.5}/agno.egg-info/PKG-INFO +6 -5
  39. {agno-2.0.4 → agno-2.0.5}/agno.egg-info/SOURCES.txt +1 -1
  40. {agno-2.0.4 → agno-2.0.5}/pyproject.toml +1 -1
  41. agno-2.0.4/agno/db/migrations/v1_to_v2.py +0 -162
  42. agno-2.0.4/agno/knowledge/reader/url_reader.py +0 -128
  43. {agno-2.0.4 → agno-2.0.5}/LICENSE +0 -0
  44. {agno-2.0.4 → agno-2.0.5}/agno/__init__.py +0 -0
  45. {agno-2.0.4 → agno-2.0.5}/agno/agent/__init__.py +0 -0
  46. {agno-2.0.4 → agno-2.0.5}/agno/api/__init__.py +0 -0
  47. {agno-2.0.4 → agno-2.0.5}/agno/api/agent.py +0 -0
  48. {agno-2.0.4 → agno-2.0.5}/agno/api/api.py +0 -0
  49. {agno-2.0.4 → agno-2.0.5}/agno/api/evals.py +0 -0
  50. {agno-2.0.4 → agno-2.0.5}/agno/api/os.py +0 -0
  51. {agno-2.0.4 → agno-2.0.5}/agno/api/routes.py +0 -0
  52. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/__init__.py +0 -0
  53. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/agent.py +0 -0
  54. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/evals.py +0 -0
  55. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/os.py +0 -0
  56. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/response.py +0 -0
  57. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/team.py +0 -0
  58. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/utils.py +0 -0
  59. {agno-2.0.4 → agno-2.0.5}/agno/api/schemas/workflows.py +0 -0
  60. {agno-2.0.4 → agno-2.0.5}/agno/api/settings.py +0 -0
  61. {agno-2.0.4 → agno-2.0.5}/agno/api/team.py +0 -0
  62. {agno-2.0.4 → agno-2.0.5}/agno/api/workflow.py +0 -0
  63. {agno-2.0.4 → agno-2.0.5}/agno/cloud/aws/base.py +0 -0
  64. {agno-2.0.4 → agno-2.0.5}/agno/cloud/aws/s3/__init__.py +0 -0
  65. {agno-2.0.4 → agno-2.0.5}/agno/cloud/aws/s3/api_client.py +0 -0
  66. {agno-2.0.4 → agno-2.0.5}/agno/cloud/aws/s3/bucket.py +0 -0
  67. {agno-2.0.4 → agno-2.0.5}/agno/cloud/aws/s3/object.py +0 -0
  68. {agno-2.0.4 → agno-2.0.5}/agno/db/__init__.py +0 -0
  69. {agno-2.0.4 → agno-2.0.5}/agno/db/base.py +0 -0
  70. {agno-2.0.4 → agno-2.0.5}/agno/db/dynamo/__init__.py +0 -0
  71. {agno-2.0.4 → agno-2.0.5}/agno/db/dynamo/schemas.py +0 -0
  72. {agno-2.0.4 → agno-2.0.5}/agno/db/dynamo/utils.py +0 -0
  73. {agno-2.0.4 → agno-2.0.5}/agno/db/firestore/__init__.py +0 -0
  74. {agno-2.0.4 → agno-2.0.5}/agno/db/firestore/schemas.py +0 -0
  75. {agno-2.0.4 → agno-2.0.5}/agno/db/firestore/utils.py +0 -0
  76. {agno-2.0.4 → agno-2.0.5}/agno/db/gcs_json/__init__.py +0 -0
  77. {agno-2.0.4 → agno-2.0.5}/agno/db/gcs_json/utils.py +0 -0
  78. {agno-2.0.4 → agno-2.0.5}/agno/db/in_memory/__init__.py +0 -0
  79. {agno-2.0.4 → agno-2.0.5}/agno/db/in_memory/in_memory_db.py +0 -0
  80. {agno-2.0.4 → agno-2.0.5}/agno/db/in_memory/utils.py +0 -0
  81. {agno-2.0.4 → agno-2.0.5}/agno/db/json/__init__.py +0 -0
  82. {agno-2.0.4 → agno-2.0.5}/agno/db/json/utils.py +0 -0
  83. {agno-2.0.4 → agno-2.0.5}/agno/db/migrations/__init__.py +0 -0
  84. {agno-2.0.4 → agno-2.0.5}/agno/db/mongo/__init__.py +0 -0
  85. {agno-2.0.4 → agno-2.0.5}/agno/db/mongo/schemas.py +0 -0
  86. {agno-2.0.4 → agno-2.0.5}/agno/db/mongo/utils.py +0 -0
  87. {agno-2.0.4 → agno-2.0.5}/agno/db/mysql/__init__.py +0 -0
  88. {agno-2.0.4 → agno-2.0.5}/agno/db/mysql/utils.py +0 -0
  89. {agno-2.0.4 → agno-2.0.5}/agno/db/postgres/__init__.py +0 -0
  90. {agno-2.0.4 → agno-2.0.5}/agno/db/postgres/schemas.py +0 -0
  91. {agno-2.0.4 → agno-2.0.5}/agno/db/postgres/utils.py +0 -0
  92. {agno-2.0.4 → agno-2.0.5}/agno/db/redis/__init__.py +0 -0
  93. {agno-2.0.4 → agno-2.0.5}/agno/db/redis/schemas.py +0 -0
  94. {agno-2.0.4 → agno-2.0.5}/agno/db/redis/utils.py +0 -0
  95. {agno-2.0.4 → agno-2.0.5}/agno/db/schemas/__init__.py +0 -0
  96. {agno-2.0.4 → agno-2.0.5}/agno/db/schemas/evals.py +0 -0
  97. {agno-2.0.4 → agno-2.0.5}/agno/db/schemas/knowledge.py +0 -0
  98. {agno-2.0.4 → agno-2.0.5}/agno/db/schemas/memory.py +0 -0
  99. {agno-2.0.4 → agno-2.0.5}/agno/db/schemas/metrics.py +0 -0
  100. {agno-2.0.4 → agno-2.0.5}/agno/db/singlestore/__init__.py +0 -0
  101. {agno-2.0.4 → agno-2.0.5}/agno/db/singlestore/schemas.py +0 -0
  102. {agno-2.0.4 → agno-2.0.5}/agno/db/singlestore/utils.py +0 -0
  103. {agno-2.0.4 → agno-2.0.5}/agno/db/sqlite/__init__.py +0 -0
  104. {agno-2.0.4 → agno-2.0.5}/agno/db/sqlite/schemas.py +0 -0
  105. {agno-2.0.4 → agno-2.0.5}/agno/db/sqlite/utils.py +0 -0
  106. {agno-2.0.4 → agno-2.0.5}/agno/debug.py +0 -0
  107. {agno-2.0.4 → agno-2.0.5}/agno/eval/__init__.py +0 -0
  108. {agno-2.0.4 → agno-2.0.5}/agno/eval/accuracy.py +0 -0
  109. {agno-2.0.4 → agno-2.0.5}/agno/eval/performance.py +0 -0
  110. {agno-2.0.4 → agno-2.0.5}/agno/eval/reliability.py +0 -0
  111. {agno-2.0.4 → agno-2.0.5}/agno/eval/utils.py +0 -0
  112. {agno-2.0.4 → agno-2.0.5}/agno/exceptions.py +0 -0
  113. {agno-2.0.4 → agno-2.0.5}/agno/integrations/__init__.py +0 -0
  114. {agno-2.0.4 → agno-2.0.5}/agno/integrations/discord/__init__.py +0 -0
  115. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/__init__.py +0 -0
  116. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/__init__.py +0 -0
  117. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/agentic.py +0 -0
  118. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/document.py +0 -0
  119. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/fixed.py +0 -0
  120. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/markdown.py +0 -0
  121. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/recursive.py +0 -0
  122. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/row.py +0 -0
  123. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/semantic.py +0 -0
  124. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/chunking/strategy.py +0 -0
  125. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/content.py +0 -0
  126. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/document/__init__.py +0 -0
  127. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/document/base.py +0 -0
  128. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/__init__.py +0 -0
  129. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/aws_bedrock.py +0 -0
  130. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/azure_openai.py +0 -0
  131. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/base.py +0 -0
  132. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/cohere.py +0 -0
  133. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/fastembed.py +0 -0
  134. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/fireworks.py +0 -0
  135. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/google.py +0 -0
  136. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/huggingface.py +0 -0
  137. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/jina.py +0 -0
  138. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/langdb.py +0 -0
  139. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/mistral.py +0 -0
  140. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/nebius.py +0 -0
  141. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/ollama.py +0 -0
  142. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/openai.py +0 -0
  143. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/sentence_transformer.py +0 -0
  144. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/together.py +0 -0
  145. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/embedder/voyageai.py +0 -0
  146. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/__init__.py +0 -0
  147. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/arxiv_reader.py +0 -0
  148. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/base.py +0 -0
  149. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/csv_reader.py +0 -0
  150. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/docx_reader.py +0 -0
  151. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/firecrawl_reader.py +0 -0
  152. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/json_reader.py +0 -0
  153. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/markdown_reader.py +0 -0
  154. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/pdf_reader.py +0 -0
  155. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/s3_reader.py +0 -0
  156. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/text_reader.py +0 -0
  157. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/website_reader.py +0 -0
  158. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/wikipedia_reader.py +0 -0
  159. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reader/youtube_reader.py +0 -0
  160. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/remote_content/__init__.py +0 -0
  161. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/remote_content/remote_content.py +0 -0
  162. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reranker/__init__.py +0 -0
  163. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reranker/base.py +0 -0
  164. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reranker/cohere.py +0 -0
  165. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reranker/infinity.py +0 -0
  166. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/reranker/sentence_transformer.py +0 -0
  167. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/types.py +0 -0
  168. {agno-2.0.4 → agno-2.0.5}/agno/knowledge/utils.py +0 -0
  169. {agno-2.0.4 → agno-2.0.5}/agno/media.py +0 -0
  170. {agno-2.0.4 → agno-2.0.5}/agno/memory/__init__.py +0 -0
  171. {agno-2.0.4 → agno-2.0.5}/agno/memory/manager.py +0 -0
  172. {agno-2.0.4 → agno-2.0.5}/agno/models/__init__.py +0 -0
  173. {agno-2.0.4 → agno-2.0.5}/agno/models/aimlapi/__init__.py +0 -0
  174. {agno-2.0.4 → agno-2.0.5}/agno/models/aimlapi/aimlapi.py +0 -0
  175. {agno-2.0.4 → agno-2.0.5}/agno/models/anthropic/__init__.py +0 -0
  176. {agno-2.0.4 → agno-2.0.5}/agno/models/anthropic/claude.py +0 -0
  177. {agno-2.0.4 → agno-2.0.5}/agno/models/aws/__init__.py +0 -0
  178. {agno-2.0.4 → agno-2.0.5}/agno/models/aws/bedrock.py +0 -0
  179. {agno-2.0.4 → agno-2.0.5}/agno/models/aws/claude.py +0 -0
  180. {agno-2.0.4 → agno-2.0.5}/agno/models/azure/__init__.py +0 -0
  181. {agno-2.0.4 → agno-2.0.5}/agno/models/azure/ai_foundry.py +0 -0
  182. {agno-2.0.4 → agno-2.0.5}/agno/models/azure/openai_chat.py +0 -0
  183. {agno-2.0.4 → agno-2.0.5}/agno/models/base.py +0 -0
  184. {agno-2.0.4 → agno-2.0.5}/agno/models/cerebras/__init__.py +0 -0
  185. {agno-2.0.4 → agno-2.0.5}/agno/models/cerebras/cerebras.py +0 -0
  186. {agno-2.0.4 → agno-2.0.5}/agno/models/cerebras/cerebras_openai.py +0 -0
  187. {agno-2.0.4 → agno-2.0.5}/agno/models/cohere/__init__.py +0 -0
  188. {agno-2.0.4 → agno-2.0.5}/agno/models/cohere/chat.py +0 -0
  189. {agno-2.0.4 → agno-2.0.5}/agno/models/dashscope/__init__.py +0 -0
  190. {agno-2.0.4 → agno-2.0.5}/agno/models/dashscope/dashscope.py +0 -0
  191. {agno-2.0.4 → agno-2.0.5}/agno/models/deepinfra/__init__.py +0 -0
  192. {agno-2.0.4 → agno-2.0.5}/agno/models/deepinfra/deepinfra.py +0 -0
  193. {agno-2.0.4 → agno-2.0.5}/agno/models/deepseek/__init__.py +0 -0
  194. {agno-2.0.4 → agno-2.0.5}/agno/models/deepseek/deepseek.py +0 -0
  195. {agno-2.0.4 → agno-2.0.5}/agno/models/defaults.py +0 -0
  196. {agno-2.0.4 → agno-2.0.5}/agno/models/fireworks/__init__.py +0 -0
  197. {agno-2.0.4 → agno-2.0.5}/agno/models/fireworks/fireworks.py +0 -0
  198. {agno-2.0.4 → agno-2.0.5}/agno/models/google/__init__.py +0 -0
  199. {agno-2.0.4 → agno-2.0.5}/agno/models/google/gemini.py +0 -0
  200. {agno-2.0.4 → agno-2.0.5}/agno/models/groq/__init__.py +0 -0
  201. {agno-2.0.4 → agno-2.0.5}/agno/models/groq/groq.py +0 -0
  202. {agno-2.0.4 → agno-2.0.5}/agno/models/huggingface/__init__.py +0 -0
  203. {agno-2.0.4 → agno-2.0.5}/agno/models/huggingface/huggingface.py +0 -0
  204. {agno-2.0.4 → agno-2.0.5}/agno/models/ibm/__init__.py +0 -0
  205. {agno-2.0.4 → agno-2.0.5}/agno/models/ibm/watsonx.py +0 -0
  206. {agno-2.0.4 → agno-2.0.5}/agno/models/internlm/__init__.py +0 -0
  207. {agno-2.0.4 → agno-2.0.5}/agno/models/internlm/internlm.py +0 -0
  208. {agno-2.0.4 → agno-2.0.5}/agno/models/langdb/__init__.py +0 -0
  209. {agno-2.0.4 → agno-2.0.5}/agno/models/langdb/langdb.py +0 -0
  210. {agno-2.0.4 → agno-2.0.5}/agno/models/litellm/__init__.py +0 -0
  211. {agno-2.0.4 → agno-2.0.5}/agno/models/litellm/chat.py +0 -0
  212. {agno-2.0.4 → agno-2.0.5}/agno/models/litellm/litellm_openai.py +0 -0
  213. {agno-2.0.4 → agno-2.0.5}/agno/models/lmstudio/__init__.py +0 -0
  214. {agno-2.0.4 → agno-2.0.5}/agno/models/lmstudio/lmstudio.py +0 -0
  215. {agno-2.0.4 → agno-2.0.5}/agno/models/meta/__init__.py +0 -0
  216. {agno-2.0.4 → agno-2.0.5}/agno/models/meta/llama.py +0 -0
  217. {agno-2.0.4 → agno-2.0.5}/agno/models/meta/llama_openai.py +0 -0
  218. {agno-2.0.4 → agno-2.0.5}/agno/models/metrics.py +0 -0
  219. {agno-2.0.4 → agno-2.0.5}/agno/models/mistral/__init__.py +0 -0
  220. {agno-2.0.4 → agno-2.0.5}/agno/models/mistral/mistral.py +0 -0
  221. {agno-2.0.4 → agno-2.0.5}/agno/models/nebius/__init__.py +0 -0
  222. {agno-2.0.4 → agno-2.0.5}/agno/models/nebius/nebius.py +0 -0
  223. {agno-2.0.4 → agno-2.0.5}/agno/models/nvidia/__init__.py +0 -0
  224. {agno-2.0.4 → agno-2.0.5}/agno/models/nvidia/nvidia.py +0 -0
  225. {agno-2.0.4 → agno-2.0.5}/agno/models/ollama/__init__.py +0 -0
  226. {agno-2.0.4 → agno-2.0.5}/agno/models/ollama/chat.py +0 -0
  227. {agno-2.0.4 → agno-2.0.5}/agno/models/openai/__init__.py +0 -0
  228. {agno-2.0.4 → agno-2.0.5}/agno/models/openai/chat.py +0 -0
  229. {agno-2.0.4 → agno-2.0.5}/agno/models/openai/like.py +0 -0
  230. {agno-2.0.4 → agno-2.0.5}/agno/models/openrouter/__init__.py +0 -0
  231. {agno-2.0.4 → agno-2.0.5}/agno/models/openrouter/openrouter.py +0 -0
  232. {agno-2.0.4 → agno-2.0.5}/agno/models/perplexity/__init__.py +0 -0
  233. {agno-2.0.4 → agno-2.0.5}/agno/models/perplexity/perplexity.py +0 -0
  234. {agno-2.0.4 → agno-2.0.5}/agno/models/portkey/__init__.py +0 -0
  235. {agno-2.0.4 → agno-2.0.5}/agno/models/portkey/portkey.py +0 -0
  236. {agno-2.0.4 → agno-2.0.5}/agno/models/response.py +0 -0
  237. {agno-2.0.4 → agno-2.0.5}/agno/models/sambanova/__init__.py +0 -0
  238. {agno-2.0.4 → agno-2.0.5}/agno/models/sambanova/sambanova.py +0 -0
  239. {agno-2.0.4 → agno-2.0.5}/agno/models/siliconflow/__init__.py +0 -0
  240. {agno-2.0.4 → agno-2.0.5}/agno/models/siliconflow/siliconflow.py +0 -0
  241. {agno-2.0.4 → agno-2.0.5}/agno/models/together/__init__.py +0 -0
  242. {agno-2.0.4 → agno-2.0.5}/agno/models/together/together.py +0 -0
  243. {agno-2.0.4 → agno-2.0.5}/agno/models/utils.py +0 -0
  244. {agno-2.0.4 → agno-2.0.5}/agno/models/vercel/__init__.py +0 -0
  245. {agno-2.0.4 → agno-2.0.5}/agno/models/vercel/v0.py +0 -0
  246. {agno-2.0.4 → agno-2.0.5}/agno/models/vllm/__init__.py +0 -0
  247. {agno-2.0.4 → agno-2.0.5}/agno/models/vllm/vllm.py +0 -0
  248. {agno-2.0.4 → agno-2.0.5}/agno/models/xai/__init__.py +0 -0
  249. {agno-2.0.4 → agno-2.0.5}/agno/models/xai/xai.py +0 -0
  250. {agno-2.0.4 → agno-2.0.5}/agno/os/__init__.py +0 -0
  251. {agno-2.0.4 → agno-2.0.5}/agno/os/auth.py +0 -0
  252. {agno-2.0.4 → agno-2.0.5}/agno/os/config.py +0 -0
  253. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/__init__.py +0 -0
  254. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/agui/__init__.py +0 -0
  255. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/agui/agui.py +0 -0
  256. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/agui/router.py +0 -0
  257. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/base.py +0 -0
  258. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/slack/__init__.py +0 -0
  259. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/slack/router.py +0 -0
  260. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/slack/security.py +0 -0
  261. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/slack/slack.py +0 -0
  262. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/whatsapp/__init__.py +0 -0
  263. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/whatsapp/router.py +0 -0
  264. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/whatsapp/security.py +0 -0
  265. {agno-2.0.4 → agno-2.0.5}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
  266. {agno-2.0.4 → agno-2.0.5}/agno/os/mcp.py +0 -0
  267. {agno-2.0.4 → agno-2.0.5}/agno/os/router.py +0 -0
  268. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/__init__.py +0 -0
  269. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/evals/__init__.py +0 -0
  270. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/evals/evals.py +0 -0
  271. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/evals/schemas.py +0 -0
  272. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/evals/utils.py +0 -0
  273. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/knowledge/__init__.py +0 -0
  274. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/knowledge/schemas.py +0 -0
  275. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/memory/__init__.py +0 -0
  276. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/memory/memory.py +0 -0
  277. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/memory/schemas.py +0 -0
  278. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/metrics/__init__.py +0 -0
  279. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/metrics/metrics.py +0 -0
  280. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/metrics/schemas.py +0 -0
  281. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/session/__init__.py +0 -0
  282. {agno-2.0.4 → agno-2.0.5}/agno/os/routers/session/session.py +0 -0
  283. {agno-2.0.4 → agno-2.0.5}/agno/os/settings.py +0 -0
  284. {agno-2.0.4 → agno-2.0.5}/agno/py.typed +0 -0
  285. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/__init__.py +0 -0
  286. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/azure_ai_foundry.py +0 -0
  287. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/deepseek.py +0 -0
  288. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/default.py +0 -0
  289. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/groq.py +0 -0
  290. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/helpers.py +0 -0
  291. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/ollama.py +0 -0
  292. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/openai.py +0 -0
  293. {agno-2.0.4 → agno-2.0.5}/agno/reasoning/step.py +0 -0
  294. {agno-2.0.4 → agno-2.0.5}/agno/run/__init__.py +0 -0
  295. {agno-2.0.4 → agno-2.0.5}/agno/run/base.py +0 -0
  296. {agno-2.0.4 → agno-2.0.5}/agno/run/cancel.py +0 -0
  297. {agno-2.0.4 → agno-2.0.5}/agno/run/messages.py +0 -0
  298. {agno-2.0.4 → agno-2.0.5}/agno/run/workflow.py +0 -0
  299. {agno-2.0.4 → agno-2.0.5}/agno/session/__init__.py +0 -0
  300. {agno-2.0.4 → agno-2.0.5}/agno/session/agent.py +0 -0
  301. {agno-2.0.4 → agno-2.0.5}/agno/session/summary.py +0 -0
  302. {agno-2.0.4 → agno-2.0.5}/agno/session/team.py +0 -0
  303. {agno-2.0.4 → agno-2.0.5}/agno/session/workflow.py +0 -0
  304. {agno-2.0.4 → agno-2.0.5}/agno/team/__init__.py +0 -0
  305. {agno-2.0.4 → agno-2.0.5}/agno/tools/__init__.py +0 -0
  306. {agno-2.0.4 → agno-2.0.5}/agno/tools/agentql.py +0 -0
  307. {agno-2.0.4 → agno-2.0.5}/agno/tools/airflow.py +0 -0
  308. {agno-2.0.4 → agno-2.0.5}/agno/tools/api.py +0 -0
  309. {agno-2.0.4 → agno-2.0.5}/agno/tools/apify.py +0 -0
  310. {agno-2.0.4 → agno-2.0.5}/agno/tools/arxiv.py +0 -0
  311. {agno-2.0.4 → agno-2.0.5}/agno/tools/aws_lambda.py +0 -0
  312. {agno-2.0.4 → agno-2.0.5}/agno/tools/aws_ses.py +0 -0
  313. {agno-2.0.4 → agno-2.0.5}/agno/tools/baidusearch.py +0 -0
  314. {agno-2.0.4 → agno-2.0.5}/agno/tools/bitbucket.py +0 -0
  315. {agno-2.0.4 → agno-2.0.5}/agno/tools/brandfetch.py +0 -0
  316. {agno-2.0.4 → agno-2.0.5}/agno/tools/bravesearch.py +0 -0
  317. {agno-2.0.4 → agno-2.0.5}/agno/tools/brightdata.py +0 -0
  318. {agno-2.0.4 → agno-2.0.5}/agno/tools/browserbase.py +0 -0
  319. {agno-2.0.4 → agno-2.0.5}/agno/tools/calcom.py +0 -0
  320. {agno-2.0.4 → agno-2.0.5}/agno/tools/calculator.py +0 -0
  321. {agno-2.0.4 → agno-2.0.5}/agno/tools/cartesia.py +0 -0
  322. {agno-2.0.4 → agno-2.0.5}/agno/tools/clickup.py +0 -0
  323. {agno-2.0.4 → agno-2.0.5}/agno/tools/confluence.py +0 -0
  324. {agno-2.0.4 → agno-2.0.5}/agno/tools/crawl4ai.py +0 -0
  325. {agno-2.0.4 → agno-2.0.5}/agno/tools/csv_toolkit.py +0 -0
  326. {agno-2.0.4 → agno-2.0.5}/agno/tools/dalle.py +0 -0
  327. {agno-2.0.4 → agno-2.0.5}/agno/tools/daytona.py +0 -0
  328. {agno-2.0.4 → agno-2.0.5}/agno/tools/decorator.py +0 -0
  329. {agno-2.0.4 → agno-2.0.5}/agno/tools/desi_vocal.py +0 -0
  330. {agno-2.0.4 → agno-2.0.5}/agno/tools/discord.py +0 -0
  331. {agno-2.0.4 → agno-2.0.5}/agno/tools/docker.py +0 -0
  332. {agno-2.0.4 → agno-2.0.5}/agno/tools/duckdb.py +0 -0
  333. {agno-2.0.4 → agno-2.0.5}/agno/tools/e2b.py +0 -0
  334. {agno-2.0.4 → agno-2.0.5}/agno/tools/eleven_labs.py +0 -0
  335. {agno-2.0.4 → agno-2.0.5}/agno/tools/email.py +0 -0
  336. {agno-2.0.4 → agno-2.0.5}/agno/tools/evm.py +0 -0
  337. {agno-2.0.4 → agno-2.0.5}/agno/tools/exa.py +0 -0
  338. {agno-2.0.4 → agno-2.0.5}/agno/tools/fal.py +0 -0
  339. {agno-2.0.4 → agno-2.0.5}/agno/tools/file.py +0 -0
  340. {agno-2.0.4 → agno-2.0.5}/agno/tools/financial_datasets.py +0 -0
  341. {agno-2.0.4 → agno-2.0.5}/agno/tools/firecrawl.py +0 -0
  342. {agno-2.0.4 → agno-2.0.5}/agno/tools/function.py +0 -0
  343. {agno-2.0.4 → agno-2.0.5}/agno/tools/giphy.py +0 -0
  344. {agno-2.0.4 → agno-2.0.5}/agno/tools/github.py +0 -0
  345. {agno-2.0.4 → agno-2.0.5}/agno/tools/gmail.py +0 -0
  346. {agno-2.0.4 → agno-2.0.5}/agno/tools/google_bigquery.py +0 -0
  347. {agno-2.0.4 → agno-2.0.5}/agno/tools/google_maps.py +0 -0
  348. {agno-2.0.4 → agno-2.0.5}/agno/tools/googlecalendar.py +0 -0
  349. {agno-2.0.4 → agno-2.0.5}/agno/tools/googlesheets.py +0 -0
  350. {agno-2.0.4 → agno-2.0.5}/agno/tools/hackernews.py +0 -0
  351. {agno-2.0.4 → agno-2.0.5}/agno/tools/jina.py +0 -0
  352. {agno-2.0.4 → agno-2.0.5}/agno/tools/jira.py +0 -0
  353. {agno-2.0.4 → agno-2.0.5}/agno/tools/knowledge.py +0 -0
  354. {agno-2.0.4 → agno-2.0.5}/agno/tools/linear.py +0 -0
  355. {agno-2.0.4 → agno-2.0.5}/agno/tools/linkup.py +0 -0
  356. {agno-2.0.4 → agno-2.0.5}/agno/tools/local_file_system.py +0 -0
  357. {agno-2.0.4 → agno-2.0.5}/agno/tools/lumalab.py +0 -0
  358. {agno-2.0.4 → agno-2.0.5}/agno/tools/mcp.py +0 -0
  359. {agno-2.0.4 → agno-2.0.5}/agno/tools/mem0.py +0 -0
  360. {agno-2.0.4 → agno-2.0.5}/agno/tools/memori.py +0 -0
  361. {agno-2.0.4 → agno-2.0.5}/agno/tools/memory.py +0 -0
  362. {agno-2.0.4 → agno-2.0.5}/agno/tools/mlx_transcribe.py +0 -0
  363. {agno-2.0.4 → agno-2.0.5}/agno/tools/models/__init__.py +0 -0
  364. {agno-2.0.4 → agno-2.0.5}/agno/tools/models/azure_openai.py +0 -0
  365. {agno-2.0.4 → agno-2.0.5}/agno/tools/models/gemini.py +0 -0
  366. {agno-2.0.4 → agno-2.0.5}/agno/tools/models/groq.py +0 -0
  367. {agno-2.0.4 → agno-2.0.5}/agno/tools/models/morph.py +0 -0
  368. {agno-2.0.4 → agno-2.0.5}/agno/tools/models/nebius.py +0 -0
  369. {agno-2.0.4 → agno-2.0.5}/agno/tools/models_labs.py +0 -0
  370. {agno-2.0.4 → agno-2.0.5}/agno/tools/moviepy_video.py +0 -0
  371. {agno-2.0.4 → agno-2.0.5}/agno/tools/neo4j.py +0 -0
  372. {agno-2.0.4 → agno-2.0.5}/agno/tools/newspaper.py +0 -0
  373. {agno-2.0.4 → agno-2.0.5}/agno/tools/newspaper4k.py +0 -0
  374. {agno-2.0.4 → agno-2.0.5}/agno/tools/openai.py +0 -0
  375. {agno-2.0.4 → agno-2.0.5}/agno/tools/openbb.py +0 -0
  376. {agno-2.0.4 → agno-2.0.5}/agno/tools/opencv.py +0 -0
  377. {agno-2.0.4 → agno-2.0.5}/agno/tools/openweather.py +0 -0
  378. {agno-2.0.4 → agno-2.0.5}/agno/tools/oxylabs.py +0 -0
  379. {agno-2.0.4 → agno-2.0.5}/agno/tools/pandas.py +0 -0
  380. {agno-2.0.4 → agno-2.0.5}/agno/tools/postgres.py +0 -0
  381. {agno-2.0.4 → agno-2.0.5}/agno/tools/pubmed.py +0 -0
  382. {agno-2.0.4 → agno-2.0.5}/agno/tools/python.py +0 -0
  383. {agno-2.0.4 → agno-2.0.5}/agno/tools/reasoning.py +0 -0
  384. {agno-2.0.4 → agno-2.0.5}/agno/tools/reddit.py +0 -0
  385. {agno-2.0.4 → agno-2.0.5}/agno/tools/replicate.py +0 -0
  386. {agno-2.0.4 → agno-2.0.5}/agno/tools/resend.py +0 -0
  387. {agno-2.0.4 → agno-2.0.5}/agno/tools/scrapegraph.py +0 -0
  388. {agno-2.0.4 → agno-2.0.5}/agno/tools/searxng.py +0 -0
  389. {agno-2.0.4 → agno-2.0.5}/agno/tools/serpapi.py +0 -0
  390. {agno-2.0.4 → agno-2.0.5}/agno/tools/serper.py +0 -0
  391. {agno-2.0.4 → agno-2.0.5}/agno/tools/shell.py +0 -0
  392. {agno-2.0.4 → agno-2.0.5}/agno/tools/slack.py +0 -0
  393. {agno-2.0.4 → agno-2.0.5}/agno/tools/sleep.py +0 -0
  394. {agno-2.0.4 → agno-2.0.5}/agno/tools/spider.py +0 -0
  395. {agno-2.0.4 → agno-2.0.5}/agno/tools/sql.py +0 -0
  396. {agno-2.0.4 → agno-2.0.5}/agno/tools/streamlit/__init__.py +0 -0
  397. {agno-2.0.4 → agno-2.0.5}/agno/tools/streamlit/components.py +0 -0
  398. {agno-2.0.4 → agno-2.0.5}/agno/tools/tavily.py +0 -0
  399. {agno-2.0.4 → agno-2.0.5}/agno/tools/telegram.py +0 -0
  400. {agno-2.0.4 → agno-2.0.5}/agno/tools/todoist.py +0 -0
  401. {agno-2.0.4 → agno-2.0.5}/agno/tools/tool_registry.py +0 -0
  402. {agno-2.0.4 → agno-2.0.5}/agno/tools/toolkit.py +0 -0
  403. {agno-2.0.4 → agno-2.0.5}/agno/tools/trafilatura.py +0 -0
  404. {agno-2.0.4 → agno-2.0.5}/agno/tools/trello.py +0 -0
  405. {agno-2.0.4 → agno-2.0.5}/agno/tools/twilio.py +0 -0
  406. {agno-2.0.4 → agno-2.0.5}/agno/tools/user_control_flow.py +0 -0
  407. {agno-2.0.4 → agno-2.0.5}/agno/tools/valyu.py +0 -0
  408. {agno-2.0.4 → agno-2.0.5}/agno/tools/visualization.py +0 -0
  409. {agno-2.0.4 → agno-2.0.5}/agno/tools/webbrowser.py +0 -0
  410. {agno-2.0.4 → agno-2.0.5}/agno/tools/webex.py +0 -0
  411. {agno-2.0.4 → agno-2.0.5}/agno/tools/website.py +0 -0
  412. {agno-2.0.4 → agno-2.0.5}/agno/tools/webtools.py +0 -0
  413. {agno-2.0.4 → agno-2.0.5}/agno/tools/whatsapp.py +0 -0
  414. {agno-2.0.4 → agno-2.0.5}/agno/tools/wikipedia.py +0 -0
  415. {agno-2.0.4 → agno-2.0.5}/agno/tools/workflow.py +0 -0
  416. {agno-2.0.4 → agno-2.0.5}/agno/tools/x.py +0 -0
  417. {agno-2.0.4 → agno-2.0.5}/agno/tools/yfinance.py +0 -0
  418. {agno-2.0.4 → agno-2.0.5}/agno/tools/youtube.py +0 -0
  419. {agno-2.0.4 → agno-2.0.5}/agno/tools/zendesk.py +0 -0
  420. {agno-2.0.4 → agno-2.0.5}/agno/tools/zep.py +0 -0
  421. {agno-2.0.4 → agno-2.0.5}/agno/tools/zoom.py +0 -0
  422. {agno-2.0.4 → agno-2.0.5}/agno/utils/__init__.py +0 -0
  423. {agno-2.0.4 → agno-2.0.5}/agno/utils/audio.py +0 -0
  424. {agno-2.0.4 → agno-2.0.5}/agno/utils/certs.py +0 -0
  425. {agno-2.0.4 → agno-2.0.5}/agno/utils/code_execution.py +0 -0
  426. {agno-2.0.4 → agno-2.0.5}/agno/utils/common.py +0 -0
  427. {agno-2.0.4 → agno-2.0.5}/agno/utils/dttm.py +0 -0
  428. {agno-2.0.4 → agno-2.0.5}/agno/utils/enum.py +0 -0
  429. {agno-2.0.4 → agno-2.0.5}/agno/utils/env.py +0 -0
  430. {agno-2.0.4 → agno-2.0.5}/agno/utils/events.py +0 -0
  431. {agno-2.0.4 → agno-2.0.5}/agno/utils/format_str.py +0 -0
  432. {agno-2.0.4 → agno-2.0.5}/agno/utils/functions.py +0 -0
  433. {agno-2.0.4 → agno-2.0.5}/agno/utils/gemini.py +0 -0
  434. {agno-2.0.4 → agno-2.0.5}/agno/utils/http.py +0 -0
  435. {agno-2.0.4 → agno-2.0.5}/agno/utils/json_schema.py +0 -0
  436. {agno-2.0.4 → agno-2.0.5}/agno/utils/knowledge.py +0 -0
  437. {agno-2.0.4 → agno-2.0.5}/agno/utils/location.py +0 -0
  438. {agno-2.0.4 → agno-2.0.5}/agno/utils/log.py +0 -0
  439. {agno-2.0.4 → agno-2.0.5}/agno/utils/mcp.py +0 -0
  440. {agno-2.0.4 → agno-2.0.5}/agno/utils/media.py +0 -0
  441. {agno-2.0.4 → agno-2.0.5}/agno/utils/merge_dict.py +0 -0
  442. {agno-2.0.4 → agno-2.0.5}/agno/utils/message.py +0 -0
  443. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/__init__.py +0 -0
  444. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/ai_foundry.py +0 -0
  445. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/aws_claude.py +0 -0
  446. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/claude.py +0 -0
  447. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/cohere.py +0 -0
  448. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/llama.py +0 -0
  449. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/mistral.py +0 -0
  450. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/openai_responses.py +0 -0
  451. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/schema_utils.py +0 -0
  452. {agno-2.0.4 → agno-2.0.5}/agno/utils/models/watsonx.py +0 -0
  453. {agno-2.0.4 → agno-2.0.5}/agno/utils/openai.py +0 -0
  454. {agno-2.0.4 → agno-2.0.5}/agno/utils/pickle.py +0 -0
  455. {agno-2.0.4 → agno-2.0.5}/agno/utils/pprint.py +0 -0
  456. {agno-2.0.4 → agno-2.0.5}/agno/utils/print_response/__init__.py +0 -0
  457. {agno-2.0.4 → agno-2.0.5}/agno/utils/print_response/agent.py +0 -0
  458. {agno-2.0.4 → agno-2.0.5}/agno/utils/print_response/team.py +0 -0
  459. {agno-2.0.4 → agno-2.0.5}/agno/utils/print_response/workflow.py +0 -0
  460. {agno-2.0.4 → agno-2.0.5}/agno/utils/prompts.py +0 -0
  461. {agno-2.0.4 → agno-2.0.5}/agno/utils/reasoning.py +0 -0
  462. {agno-2.0.4 → agno-2.0.5}/agno/utils/response.py +0 -0
  463. {agno-2.0.4 → agno-2.0.5}/agno/utils/response_iterator.py +0 -0
  464. {agno-2.0.4 → agno-2.0.5}/agno/utils/safe_formatter.py +0 -0
  465. {agno-2.0.4 → agno-2.0.5}/agno/utils/shell.py +0 -0
  466. {agno-2.0.4 → agno-2.0.5}/agno/utils/streamlit.py +0 -0
  467. {agno-2.0.4 → agno-2.0.5}/agno/utils/team.py +0 -0
  468. {agno-2.0.4 → agno-2.0.5}/agno/utils/timer.py +0 -0
  469. {agno-2.0.4 → agno-2.0.5}/agno/utils/web.py +0 -0
  470. {agno-2.0.4 → agno-2.0.5}/agno/utils/whatsapp.py +0 -0
  471. {agno-2.0.4 → agno-2.0.5}/agno/utils/yaml_io.py +0 -0
  472. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/__init__.py +0 -0
  473. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/base.py +0 -0
  474. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/cassandra/__init__.py +0 -0
  475. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/cassandra/cassandra.py +0 -0
  476. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
  477. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/cassandra/index.py +0 -0
  478. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/chroma/__init__.py +0 -0
  479. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/chroma/chromadb.py +0 -0
  480. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/clickhouse/__init__.py +0 -0
  481. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
  482. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/clickhouse/index.py +0 -0
  483. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/couchbase/__init__.py +0 -0
  484. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/couchbase/couchbase.py +0 -0
  485. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/distance.py +0 -0
  486. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/lancedb/__init__.py +0 -0
  487. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/lancedb/lance_db.py +0 -0
  488. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/langchaindb/__init__.py +0 -0
  489. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/langchaindb/langchaindb.py +0 -0
  490. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/lightrag/__init__.py +0 -0
  491. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/lightrag/lightrag.py +0 -0
  492. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/llamaindex/__init__.py +0 -0
  493. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
  494. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/milvus/__init__.py +0 -0
  495. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/milvus/milvus.py +0 -0
  496. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/mongodb/__init__.py +0 -0
  497. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/mongodb/mongodb.py +0 -0
  498. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/pgvector/__init__.py +0 -0
  499. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/pgvector/index.py +0 -0
  500. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/pgvector/pgvector.py +0 -0
  501. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/pineconedb/__init__.py +0 -0
  502. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/pineconedb/pineconedb.py +0 -0
  503. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/qdrant/__init__.py +0 -0
  504. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/qdrant/qdrant.py +0 -0
  505. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/search.py +0 -0
  506. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/singlestore/__init__.py +0 -0
  507. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/singlestore/index.py +0 -0
  508. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/singlestore/singlestore.py +0 -0
  509. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/surrealdb/__init__.py +0 -0
  510. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/surrealdb/surrealdb.py +0 -0
  511. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/upstashdb/__init__.py +0 -0
  512. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/upstashdb/upstashdb.py +0 -0
  513. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/weaviate/__init__.py +0 -0
  514. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/weaviate/index.py +0 -0
  515. {agno-2.0.4 → agno-2.0.5}/agno/vectordb/weaviate/weaviate.py +0 -0
  516. {agno-2.0.4 → agno-2.0.5}/agno/workflow/__init__.py +0 -0
  517. {agno-2.0.4 → agno-2.0.5}/agno/workflow/condition.py +0 -0
  518. {agno-2.0.4 → agno-2.0.5}/agno/workflow/loop.py +0 -0
  519. {agno-2.0.4 → agno-2.0.5}/agno/workflow/parallel.py +0 -0
  520. {agno-2.0.4 → agno-2.0.5}/agno/workflow/router.py +0 -0
  521. {agno-2.0.4 → agno-2.0.5}/agno/workflow/steps.py +0 -0
  522. {agno-2.0.4 → agno-2.0.5}/agno/workflow/types.py +0 -0
  523. {agno-2.0.4 → agno-2.0.5}/agno/workflow/workflow.py +0 -0
  524. {agno-2.0.4 → agno-2.0.5}/agno.egg-info/dependency_links.txt +0 -0
  525. {agno-2.0.4 → agno-2.0.5}/agno.egg-info/requires.txt +0 -0
  526. {agno-2.0.4 → agno-2.0.5}/agno.egg-info/top_level.txt +0 -0
  527. {agno-2.0.4 → agno-2.0.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.0.4
3
+ Version: 2.0.5
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
@@ -366,6 +366,7 @@ Dynamic: license-file
366
366
  <div align="center">
367
367
  <a href="https://docs.agno.com">📚 Documentation</a> &nbsp;|&nbsp;
368
368
  <a href="https://docs.agno.com/examples/introduction">💡 Examples</a> &nbsp;|&nbsp;
369
+ <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github&utm_content=header">🏠 Website</a> &nbsp;|&nbsp;
369
370
  <a href="https://github.com/agno-agi/agno/stargazers">🌟 Star Us</a>
370
371
  </div>
371
372
 
@@ -406,14 +407,14 @@ If you're new to Agno, follow our [quickstart](https://docs.agno.com/introductio
406
407
 
407
408
  After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
408
409
 
409
- ## Documentation, Community & More examples
410
+ ## Documentation, Community & More Examples
410
411
 
411
412
  - Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
412
413
  - Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
413
414
  - Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
414
415
  - Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
415
416
 
416
- ## Setup your coding agent to use Agno
417
+ ## Setup Your Coding Agent to Use Agno
417
418
 
418
419
  For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file.
419
420
 
@@ -441,7 +442,7 @@ At Agno, we're obsessed with performance. Why? because even simple AI workflows
441
442
 
442
443
  While an Agent's run-time is bottlenecked by inference, we must do everything possible to minimize execution time, reduce memory usage, and parallelize tool calls. These numbers may seem trivial at first, but our experience shows that they add up even at a reasonably small scale.
443
444
 
444
- ### Instantiation time
445
+ ### Instantiation Time
445
446
 
446
447
  Let's measure the time it takes for an Agent with 1 tool to start up. We'll run the evaluation 1000 times to get a baseline measurement.
447
448
 
@@ -469,7 +470,7 @@ Agno is on the left, notice how it finishes before LangGraph gets 1/2 way throug
469
470
 
470
471
  https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
471
472
 
472
- ### Memory usage
473
+ ### Memory Usage
473
474
 
474
475
  To measure memory usage, we use the `tracemalloc` library. We first calculate a baseline memory usage by running an empty function, then run the Agent 1000x times and calculate the difference. This gives a (reasonably) isolated measurement of the memory usage of the Agent.
475
476
 
@@ -10,6 +10,7 @@
10
10
  <div align="center">
11
11
  <a href="https://docs.agno.com">📚 Documentation</a> &nbsp;|&nbsp;
12
12
  <a href="https://docs.agno.com/examples/introduction">💡 Examples</a> &nbsp;|&nbsp;
13
+ <a href="https://www.agno.com/?utm_source=github&utm_medium=readme&utm_campaign=agno-github&utm_content=header">🏠 Website</a> &nbsp;|&nbsp;
13
14
  <a href="https://github.com/agno-agi/agno/stargazers">🌟 Star Us</a>
14
15
  </div>
15
16
 
@@ -50,14 +51,14 @@ If you're new to Agno, follow our [quickstart](https://docs.agno.com/introductio
50
51
 
51
52
  After that, checkout the [examples gallery](https://docs.agno.com/examples/introduction) and build real-world applications with Agno.
52
53
 
53
- ## Documentation, Community & More examples
54
+ ## Documentation, Community & More Examples
54
55
 
55
56
  - Docs: <a href="https://docs.agno.com" target="_blank" rel="noopener noreferrer">docs.agno.com</a>
56
57
  - Cookbook: <a href="https://github.com/agno-agi/agno/tree/main/cookbook" target="_blank" rel="noopener noreferrer">Cookbook</a>
57
58
  - Community forum: <a href="https://community.agno.com/" target="_blank" rel="noopener noreferrer">community.agno.com</a>
58
59
  - Discord: <a href="https://discord.gg/4MtYHHrgA8" target="_blank" rel="noopener noreferrer">discord</a>
59
60
 
60
- ## Setup your coding agent to use Agno
61
+ ## Setup Your Coding Agent to Use Agno
61
62
 
62
63
  For LLMs and AI assistants to understand and navigate Agno's documentation, we provide an [llms.txt](https://docs.agno.com/llms.txt) or [llms-full.txt](https://docs.agno.com/llms-full.txt) file.
63
64
 
@@ -85,7 +86,7 @@ At Agno, we're obsessed with performance. Why? because even simple AI workflows
85
86
 
86
87
  While an Agent's run-time is bottlenecked by inference, we must do everything possible to minimize execution time, reduce memory usage, and parallelize tool calls. These numbers may seem trivial at first, but our experience shows that they add up even at a reasonably small scale.
87
88
 
88
- ### Instantiation time
89
+ ### Instantiation Time
89
90
 
90
91
  Let's measure the time it takes for an Agent with 1 tool to start up. We'll run the evaluation 1000 times to get a baseline measurement.
91
92
 
@@ -113,7 +114,7 @@ Agno is on the left, notice how it finishes before LangGraph gets 1/2 way throug
113
114
 
114
115
  https://github.com/user-attachments/assets/ba466d45-75dd-45ac-917b-0a56c5742e23
115
116
 
116
- ### Memory usage
117
+ ### Memory Usage
117
118
 
118
119
  To measure memory usage, we use the `tracemalloc` library. We first calculate a baseline memory usage by running an empty function, then run the Agent 1000x times and calculate the difference. This gives a (reasonably) isolated measurement of the memory usage of the Agent.
119
120
 
@@ -107,7 +107,7 @@ from agno.utils.response import (
107
107
  get_paused_content,
108
108
  )
109
109
  from agno.utils.safe_formatter import SafeFormatter
110
- from agno.utils.string import parse_response_model_str
110
+ from agno.utils.string import generate_id_from_name, parse_response_model_str
111
111
  from agno.utils.timer import Timer
112
112
 
113
113
 
@@ -545,10 +545,7 @@ class Agent:
545
545
 
546
546
  def set_id(self) -> None:
547
547
  if self.id is None:
548
- if self.name is not None:
549
- self.id = self.name.lower().replace(" ", "-")
550
- else:
551
- self.id = str(uuid4())
548
+ self.id = generate_id_from_name(self.name)
552
549
 
553
550
  def _set_debug(self, debug_mode: Optional[bool] = None) -> None:
554
551
  # If the default debug mode is set, or passed on run, or via environment variable, set the debug mode to True
@@ -790,14 +787,7 @@ class Agent:
790
787
  run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
791
788
  )
792
789
 
793
- # 4. Update Agent Memory
794
- response_iterator = self._make_memories_and_summaries(
795
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
796
- )
797
- # Consume the response iterator to ensure the memory is updated before the run is completed
798
- deque(response_iterator, maxlen=0)
799
-
800
- # 5. Calculate session metrics
790
+ # 4. Calculate session metrics
801
791
  self._update_session_metrics(session=session, run_response=run_response)
802
792
 
803
793
  run_response.status = RunStatus.completed
@@ -809,14 +799,21 @@ class Agent:
809
799
  if run_response.metrics:
810
800
  run_response.metrics.stop_timer()
811
801
 
812
- # 6. Optional: Save output to file if save_response_to_file is set
802
+ # 5. Optional: Save output to file if save_response_to_file is set
813
803
  self.save_run_response_to_file(
814
804
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
815
805
  )
816
806
 
817
- # 7. Add the RunOutput to Agent Session
807
+ # 6. Add the RunOutput to Agent Session
818
808
  session.upsert_run(run=run_response)
819
809
 
810
+ # 7. Update Agent Memory
811
+ response_iterator = self._make_memories_and_summaries(
812
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
813
+ )
814
+ # Consume the response iterator to ensure the memory is updated before the run is completed
815
+ deque(response_iterator, maxlen=0)
816
+
820
817
  # 8. Save session to memory
821
818
  self.save_session(session=session)
822
819
 
@@ -930,12 +927,7 @@ class Agent:
930
927
  )
931
928
  return
932
929
 
933
- # 3. Update Agent Memory
934
- yield from self._make_memories_and_summaries(
935
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
936
- )
937
-
938
- # 4. Calculate session metrics
930
+ # 3. Calculate session metrics
939
931
  self._update_session_metrics(session=session, run_response=run_response)
940
932
 
941
933
  run_response.status = RunStatus.completed
@@ -948,7 +940,7 @@ class Agent:
948
940
  if run_response.metrics:
949
941
  run_response.metrics.stop_timer()
950
942
 
951
- # 5. Optional: Save output to file if save_response_to_file is set
943
+ # 4. Optional: Save output to file if save_response_to_file is set
952
944
  self.save_run_response_to_file(
953
945
  run_response=run_response,
954
946
  input=run_messages.user_message,
@@ -956,9 +948,14 @@ class Agent:
956
948
  user_id=user_id,
957
949
  )
958
950
 
959
- # 6. Add RunOutput to Agent Session
951
+ # 5. Add RunOutput to Agent Session
960
952
  session.upsert_run(run=run_response)
961
953
 
954
+ # 6. Update Agent Memory
955
+ yield from self._make_memories_and_summaries(
956
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
957
+ )
958
+
962
959
  # 7. Save session to storage
963
960
  self.save_session(session=session)
964
961
 
@@ -1383,13 +1380,7 @@ class Agent:
1383
1380
  run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
1384
1381
  )
1385
1382
 
1386
- # 6. Update Agent Memory
1387
- async for _ in self._amake_memories_and_summaries(
1388
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
1389
- ):
1390
- pass
1391
-
1392
- # 7. Calculate session metrics
1383
+ # 6. Calculate session metrics
1393
1384
  self._update_session_metrics(session=session, run_response=run_response)
1394
1385
 
1395
1386
  run_response.status = RunStatus.completed
@@ -1406,9 +1397,15 @@ class Agent:
1406
1397
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
1407
1398
  )
1408
1399
 
1409
- # 8. Add RunOutput to Agent Session
1400
+ # 7. Add RunOutput to Agent Session
1410
1401
  session.upsert_run(run=run_response)
1411
1402
 
1403
+ # 8. Update Agent Memory
1404
+ async for _ in self._amake_memories_and_summaries(
1405
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
1406
+ ):
1407
+ pass
1408
+
1412
1409
  # 9. Save session to storage
1413
1410
  self.save_session(session=session)
1414
1411
 
@@ -1563,13 +1560,7 @@ class Agent:
1563
1560
  yield item
1564
1561
  return
1565
1562
 
1566
- # 5. Update Agent Memory
1567
- async for event in self._amake_memories_and_summaries(
1568
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
1569
- ):
1570
- yield event
1571
-
1572
- # 6. Calculate session metrics
1563
+ # 5. Calculate session metrics
1573
1564
  self._update_session_metrics(session=session, run_response=run_response)
1574
1565
 
1575
1566
  run_response.status = RunStatus.completed
@@ -1590,9 +1581,15 @@ class Agent:
1590
1581
  user_id=user_id,
1591
1582
  )
1592
1583
 
1593
- # 7. Add RunOutput to Agent Session
1584
+ # 6. Add RunOutput to Agent Session
1594
1585
  session.upsert_run(run=run_response)
1595
1586
 
1587
+ # 7. Update Agent Memory
1588
+ async for event in self._amake_memories_and_summaries(
1589
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
1590
+ ):
1591
+ yield event
1592
+
1596
1593
  # 8. Save session to storage
1597
1594
  self.save_session(session=session)
1598
1595
 
@@ -2177,14 +2174,7 @@ class Agent:
2177
2174
  run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2178
2175
  )
2179
2176
 
2180
- # 4. Update Agent Memory
2181
- response_iterator = self._make_memories_and_summaries(
2182
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2183
- )
2184
- # Consume the response iterator to ensure the memory is updated before the run is completed
2185
- deque(response_iterator, maxlen=0)
2186
-
2187
- # 5. Calculate session metrics
2177
+ # 3. Calculate session metrics
2188
2178
  self._update_session_metrics(session=session, run_response=run_response)
2189
2179
 
2190
2180
  run_response.status = RunStatus.completed
@@ -2196,14 +2186,21 @@ class Agent:
2196
2186
  if run_response.metrics:
2197
2187
  run_response.metrics.stop_timer()
2198
2188
 
2199
- # 5. Save output to file if save_response_to_file is set
2189
+ # 4. Save output to file if save_response_to_file is set
2200
2190
  self.save_run_response_to_file(
2201
2191
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
2202
2192
  )
2203
2193
 
2204
- # 6. Add the run to memory
2194
+ # 5. Add the run to memory
2205
2195
  session.upsert_run(run=run_response)
2206
2196
 
2197
+ # 6. Update Agent Memory
2198
+ response_iterator = self._make_memories_and_summaries(
2199
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2200
+ )
2201
+ # Consume the response iterator to ensure the memory is updated before the run is completed
2202
+ deque(response_iterator, maxlen=0)
2203
+
2207
2204
  # 7. Save session to storage
2208
2205
  self.save_session(session=session)
2209
2206
 
@@ -2261,12 +2258,7 @@ class Agent:
2261
2258
  )
2262
2259
  return
2263
2260
 
2264
- # 4. Update Agent Memory
2265
- yield from self._make_memories_and_summaries(
2266
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2267
- )
2268
-
2269
- # 5. Calculate session metrics
2261
+ # 3. Calculate session metrics
2270
2262
  self._update_session_metrics(session=session, run_response=run_response)
2271
2263
 
2272
2264
  run_response.status = RunStatus.completed
@@ -2277,14 +2269,19 @@ class Agent:
2277
2269
  if run_response.metrics:
2278
2270
  run_response.metrics.stop_timer()
2279
2271
 
2280
- # 5. Save output to file if save_response_to_file is set
2272
+ # 4. Save output to file if save_response_to_file is set
2281
2273
  self.save_run_response_to_file(
2282
2274
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
2283
2275
  )
2284
2276
 
2285
- # 6. Add the run to memory
2277
+ # 5. Add the run to memory
2286
2278
  session.upsert_run(run=run_response)
2287
2279
 
2280
+ # 6. Update Agent Memory
2281
+ yield from self._make_memories_and_summaries(
2282
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2283
+ )
2284
+
2288
2285
  # 7. Save session to storage
2289
2286
  self.save_session(session=session)
2290
2287
 
@@ -2563,13 +2560,7 @@ class Agent:
2563
2560
  run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2564
2561
  )
2565
2562
 
2566
- # 4. Update Agent Memory
2567
- async for _ in self._amake_memories_and_summaries(
2568
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2569
- ):
2570
- pass
2571
-
2572
- # 5. Calculate session metrics
2563
+ # 3. Calculate session metrics
2573
2564
  self._update_session_metrics(session=session, run_response=run_response)
2574
2565
 
2575
2566
  run_response.status = RunStatus.completed
@@ -2581,14 +2572,21 @@ class Agent:
2581
2572
  if run_response.metrics:
2582
2573
  run_response.metrics.stop_timer()
2583
2574
 
2584
- # 7. Save output to file if save_response_to_file is set
2575
+ # 4. Save output to file if save_response_to_file is set
2585
2576
  self.save_run_response_to_file(
2586
2577
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
2587
2578
  )
2588
2579
 
2580
+ # 5. Add the run to memory
2589
2581
  session.upsert_run(run=run_response)
2590
2582
 
2591
- # 6. Save session to storage
2583
+ # 6. Update Agent Memory
2584
+ async for _ in self._amake_memories_and_summaries(
2585
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2586
+ ):
2587
+ pass
2588
+
2589
+ # 7. Save session to storage
2592
2590
  self.save_session(session=session)
2593
2591
 
2594
2592
  # Log Agent Telemetry
@@ -2644,9 +2642,6 @@ class Agent:
2644
2642
  ):
2645
2643
  yield event
2646
2644
 
2647
- # 3. Add the run to memory
2648
- session.upsert_run(run=run_response)
2649
-
2650
2645
  # We should break out of the run function
2651
2646
  if any(tool_call.is_paused for tool_call in run_response.tools or []):
2652
2647
  for item in self._handle_agent_run_paused_stream(
@@ -2655,13 +2650,7 @@ class Agent:
2655
2650
  yield item
2656
2651
  return
2657
2652
 
2658
- # 4. Update Agent Memory
2659
- async for event in self._amake_memories_and_summaries(
2660
- run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2661
- ):
2662
- yield event
2663
-
2664
- # 5. Calculate session metrics
2653
+ # 3. Calculate session metrics
2665
2654
  self._update_session_metrics(session=session, run_response=run_response)
2666
2655
 
2667
2656
  run_response.status = RunStatus.completed
@@ -2672,14 +2661,21 @@ class Agent:
2672
2661
  if run_response.metrics:
2673
2662
  run_response.metrics.stop_timer()
2674
2663
 
2675
- # 6. Save output to file if save_response_to_file is set
2664
+ # 4. Save output to file if save_response_to_file is set
2676
2665
  self.save_run_response_to_file(
2677
2666
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
2678
2667
  )
2679
2668
 
2669
+ # 5. Add the run to memory
2680
2670
  session.upsert_run(run=run_response)
2681
2671
 
2682
- # 6. Save session to storage
2672
+ # 6. Update Agent Memory
2673
+ async for event in self._amake_memories_and_summaries(
2674
+ run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
2675
+ ):
2676
+ yield event
2677
+
2678
+ # 7. Save session to storage
2683
2679
  self.save_session(session=session)
2684
2680
 
2685
2681
  if stream_intermediate_steps:
@@ -3336,13 +3332,6 @@ class Agent:
3336
3332
  ) + model_response_event.reasoning_content
3337
3333
  run_response.reasoning_content = model_response.reasoning_content
3338
3334
 
3339
- if model_response_event.reasoning_content is not None:
3340
- if not model_response.reasoning_content:
3341
- model_response.reasoning_content = model_response_event.reasoning_content
3342
- else:
3343
- model_response.reasoning_content += model_response_event.reasoning_content
3344
- run_response.reasoning_content = model_response.reasoning_content
3345
-
3346
3335
  if model_response_event.redacted_reasoning_content is not None:
3347
3336
  if not model_response.reasoning_content:
3348
3337
  model_response.reasoning_content = model_response_event.redacted_reasoning_content
@@ -30,9 +30,9 @@ from agno.db.dynamo.utils import (
30
30
  from agno.db.schemas.evals import EvalFilterType, EvalRunRecord, EvalType
31
31
  from agno.db.schemas.knowledge import KnowledgeRow
32
32
  from agno.db.schemas.memory import UserMemory
33
- from agno.db.utils import generate_deterministic_id
34
33
  from agno.session import AgentSession, Session, TeamSession, WorkflowSession
35
34
  from agno.utils.log import log_debug, log_error
35
+ from agno.utils.string import generate_id
36
36
 
37
37
  try:
38
38
  import boto3 # type: ignore[import-untyped]
@@ -75,7 +75,7 @@ class DynamoDb(BaseDb):
75
75
  """
76
76
  if id is None:
77
77
  seed = str(db_client) if db_client else f"{region_name}_{aws_access_key_id}"
78
- id = generate_deterministic_id(seed)
78
+ id = generate_id(seed)
79
79
 
80
80
  super().__init__(
81
81
  id=id,
@@ -16,9 +16,10 @@ from agno.db.firestore.utils import (
16
16
  from agno.db.schemas.evals import EvalFilterType, EvalRunRecord, EvalType
17
17
  from agno.db.schemas.knowledge import KnowledgeRow
18
18
  from agno.db.schemas.memory import UserMemory
19
- from agno.db.utils import deserialize_session_json_fields, generate_deterministic_id, serialize_session_json_fields
19
+ from agno.db.utils import deserialize_session_json_fields, serialize_session_json_fields
20
20
  from agno.session import AgentSession, Session, TeamSession, WorkflowSession
21
21
  from agno.utils.log import log_debug, log_error, log_info
22
+ from agno.utils.string import generate_id
22
23
 
23
24
  try:
24
25
  from google.cloud.firestore import Client, FieldFilter # type: ignore[import-untyped]
@@ -58,7 +59,7 @@ class FirestoreDb(BaseDb):
58
59
  """
59
60
  if id is None:
60
61
  seed = project_id or str(db_client)
61
- id = generate_deterministic_id(seed)
62
+ id = generate_id(seed)
62
63
 
63
64
  super().__init__(
64
65
  id=id,
@@ -14,9 +14,9 @@ from agno.db.gcs_json.utils import (
14
14
  from agno.db.schemas.evals import EvalFilterType, EvalRunRecord, EvalType
15
15
  from agno.db.schemas.knowledge import KnowledgeRow
16
16
  from agno.db.schemas.memory import UserMemory
17
- from agno.db.utils import generate_deterministic_id
18
17
  from agno.session import AgentSession, Session, TeamSession, WorkflowSession
19
18
  from agno.utils.log import log_debug, log_error, log_info, log_warning
19
+ from agno.utils.string import generate_id
20
20
 
21
21
  try:
22
22
  from google.cloud import storage as gcs # type: ignore
@@ -57,7 +57,7 @@ class GcsJsonDb(BaseDb):
57
57
  if id is None:
58
58
  prefix_suffix = prefix or "agno/"
59
59
  seed = f"{bucket_name}_{project}#{prefix_suffix}"
60
- id = generate_deterministic_id(seed)
60
+ id = generate_id(seed)
61
61
 
62
62
  super().__init__(
63
63
  id=id,
@@ -17,9 +17,9 @@ from agno.db.json.utils import (
17
17
  from agno.db.schemas.evals import EvalFilterType, EvalRunRecord, EvalType
18
18
  from agno.db.schemas.knowledge import KnowledgeRow
19
19
  from agno.db.schemas.memory import UserMemory
20
- from agno.db.utils import generate_deterministic_id
21
20
  from agno.session import AgentSession, Session, TeamSession, WorkflowSession
22
21
  from agno.utils.log import log_debug, log_error, log_info, log_warning
22
+ from agno.utils.string import generate_id
23
23
 
24
24
 
25
25
  class JsonDb(BaseDb):
@@ -47,7 +47,7 @@ class JsonDb(BaseDb):
47
47
  """
48
48
  if id is None:
49
49
  seed = db_path or "agno_json_db"
50
- id = generate_deterministic_id(seed)
50
+ id = generate_id(seed)
51
51
 
52
52
  super().__init__(
53
53
  id=id,