agno 2.2.8__tar.gz → 2.2.10__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 (579) hide show
  1. {agno-2.2.8 → agno-2.2.10}/PKG-INFO +11 -13
  2. {agno-2.2.8 → agno-2.2.10}/README.md +10 -10
  3. {agno-2.2.8 → agno-2.2.10}/agno/agent/agent.py +37 -19
  4. {agno-2.2.8 → agno-2.2.10}/agno/db/base.py +23 -0
  5. {agno-2.2.8 → agno-2.2.10}/agno/db/dynamo/dynamo.py +20 -25
  6. {agno-2.2.8 → agno-2.2.10}/agno/db/dynamo/schemas.py +1 -0
  7. {agno-2.2.8 → agno-2.2.10}/agno/db/firestore/firestore.py +11 -0
  8. {agno-2.2.8 → agno-2.2.10}/agno/db/gcs_json/gcs_json_db.py +4 -0
  9. {agno-2.2.8 → agno-2.2.10}/agno/db/in_memory/in_memory_db.py +4 -0
  10. {agno-2.2.8 → agno-2.2.10}/agno/db/json/json_db.py +4 -0
  11. {agno-2.2.8 → agno-2.2.10}/agno/db/mongo/async_mongo.py +27 -0
  12. {agno-2.2.8 → agno-2.2.10}/agno/db/mongo/mongo.py +25 -0
  13. {agno-2.2.8 → agno-2.2.10}/agno/db/mysql/mysql.py +26 -1
  14. {agno-2.2.8 → agno-2.2.10}/agno/db/postgres/async_postgres.py +26 -1
  15. {agno-2.2.8 → agno-2.2.10}/agno/db/postgres/postgres.py +26 -1
  16. {agno-2.2.8 → agno-2.2.10}/agno/db/redis/redis.py +4 -0
  17. {agno-2.2.8 → agno-2.2.10}/agno/db/singlestore/singlestore.py +24 -0
  18. {agno-2.2.8 → agno-2.2.10}/agno/db/sqlite/async_sqlite.py +25 -1
  19. {agno-2.2.8 → agno-2.2.10}/agno/db/sqlite/sqlite.py +25 -1
  20. {agno-2.2.8 → agno-2.2.10}/agno/db/surrealdb/surrealdb.py +13 -1
  21. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/docx_reader.py +0 -1
  22. {agno-2.2.8 → agno-2.2.10}/agno/models/azure/ai_foundry.py +2 -1
  23. {agno-2.2.8 → agno-2.2.10}/agno/models/cerebras/cerebras.py +3 -2
  24. {agno-2.2.8 → agno-2.2.10}/agno/models/openai/chat.py +2 -1
  25. {agno-2.2.8 → agno-2.2.10}/agno/models/openai/responses.py +2 -1
  26. {agno-2.2.8 → agno-2.2.10}/agno/os/app.py +127 -65
  27. {agno-2.2.8 → agno-2.2.10}/agno/os/config.py +1 -0
  28. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/agui/router.py +9 -0
  29. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/agui/utils.py +49 -3
  30. {agno-2.2.8 → agno-2.2.10}/agno/os/mcp.py +8 -8
  31. {agno-2.2.8 → agno-2.2.10}/agno/os/router.py +27 -9
  32. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/evals/evals.py +12 -7
  33. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/memory/memory.py +18 -10
  34. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/metrics/metrics.py +6 -4
  35. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/session/session.py +21 -11
  36. {agno-2.2.8 → agno-2.2.10}/agno/os/utils.py +57 -11
  37. {agno-2.2.8 → agno-2.2.10}/agno/team/team.py +33 -23
  38. agno-2.2.10/agno/vectordb/mongodb/__init__.py +9 -0
  39. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/redis/__init__.py +4 -0
  40. {agno-2.2.8 → agno-2.2.10}/agno/workflow/agent.py +2 -2
  41. {agno-2.2.8 → agno-2.2.10}/agno/workflow/condition.py +26 -4
  42. {agno-2.2.8 → agno-2.2.10}/agno/workflow/loop.py +9 -0
  43. {agno-2.2.8 → agno-2.2.10}/agno/workflow/parallel.py +39 -16
  44. {agno-2.2.8 → agno-2.2.10}/agno/workflow/router.py +25 -4
  45. {agno-2.2.8 → agno-2.2.10}/agno/workflow/step.py +162 -91
  46. {agno-2.2.8 → agno-2.2.10}/agno/workflow/steps.py +9 -0
  47. {agno-2.2.8 → agno-2.2.10}/agno/workflow/workflow.py +26 -22
  48. {agno-2.2.8 → agno-2.2.10}/agno.egg-info/PKG-INFO +11 -13
  49. {agno-2.2.8 → agno-2.2.10}/agno.egg-info/requires.txt +0 -3
  50. {agno-2.2.8 → agno-2.2.10}/pyproject.toml +1 -2
  51. agno-2.2.8/agno/vectordb/mongodb/__init__.py +0 -3
  52. {agno-2.2.8 → agno-2.2.10}/LICENSE +0 -0
  53. {agno-2.2.8 → agno-2.2.10}/agno/__init__.py +0 -0
  54. {agno-2.2.8 → agno-2.2.10}/agno/agent/__init__.py +0 -0
  55. {agno-2.2.8 → agno-2.2.10}/agno/api/__init__.py +0 -0
  56. {agno-2.2.8 → agno-2.2.10}/agno/api/agent.py +0 -0
  57. {agno-2.2.8 → agno-2.2.10}/agno/api/api.py +0 -0
  58. {agno-2.2.8 → agno-2.2.10}/agno/api/evals.py +0 -0
  59. {agno-2.2.8 → agno-2.2.10}/agno/api/os.py +0 -0
  60. {agno-2.2.8 → agno-2.2.10}/agno/api/routes.py +0 -0
  61. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/__init__.py +0 -0
  62. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/agent.py +0 -0
  63. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/evals.py +0 -0
  64. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/os.py +0 -0
  65. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/response.py +0 -0
  66. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/team.py +0 -0
  67. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/utils.py +0 -0
  68. {agno-2.2.8 → agno-2.2.10}/agno/api/schemas/workflows.py +0 -0
  69. {agno-2.2.8 → agno-2.2.10}/agno/api/settings.py +0 -0
  70. {agno-2.2.8 → agno-2.2.10}/agno/api/team.py +0 -0
  71. {agno-2.2.8 → agno-2.2.10}/agno/api/workflow.py +0 -0
  72. {agno-2.2.8 → agno-2.2.10}/agno/cloud/aws/base.py +0 -0
  73. {agno-2.2.8 → agno-2.2.10}/agno/cloud/aws/s3/__init__.py +0 -0
  74. {agno-2.2.8 → agno-2.2.10}/agno/cloud/aws/s3/api_client.py +0 -0
  75. {agno-2.2.8 → agno-2.2.10}/agno/cloud/aws/s3/bucket.py +0 -0
  76. {agno-2.2.8 → agno-2.2.10}/agno/cloud/aws/s3/object.py +0 -0
  77. {agno-2.2.8 → agno-2.2.10}/agno/culture/__init__.py +0 -0
  78. {agno-2.2.8 → agno-2.2.10}/agno/culture/manager.py +0 -0
  79. {agno-2.2.8 → agno-2.2.10}/agno/db/__init__.py +0 -0
  80. {agno-2.2.8 → agno-2.2.10}/agno/db/async_postgres/__init__.py +0 -0
  81. {agno-2.2.8 → agno-2.2.10}/agno/db/dynamo/__init__.py +0 -0
  82. {agno-2.2.8 → agno-2.2.10}/agno/db/dynamo/utils.py +0 -0
  83. {agno-2.2.8 → agno-2.2.10}/agno/db/firestore/__init__.py +0 -0
  84. {agno-2.2.8 → agno-2.2.10}/agno/db/firestore/schemas.py +0 -0
  85. {agno-2.2.8 → agno-2.2.10}/agno/db/firestore/utils.py +0 -0
  86. {agno-2.2.8 → agno-2.2.10}/agno/db/gcs_json/__init__.py +0 -0
  87. {agno-2.2.8 → agno-2.2.10}/agno/db/gcs_json/utils.py +0 -0
  88. {agno-2.2.8 → agno-2.2.10}/agno/db/in_memory/__init__.py +0 -0
  89. {agno-2.2.8 → agno-2.2.10}/agno/db/in_memory/utils.py +0 -0
  90. {agno-2.2.8 → agno-2.2.10}/agno/db/json/__init__.py +0 -0
  91. {agno-2.2.8 → agno-2.2.10}/agno/db/json/utils.py +0 -0
  92. {agno-2.2.8 → agno-2.2.10}/agno/db/migrations/__init__.py +0 -0
  93. {agno-2.2.8 → agno-2.2.10}/agno/db/migrations/v1_to_v2.py +0 -0
  94. {agno-2.2.8 → agno-2.2.10}/agno/db/mongo/__init__.py +0 -0
  95. {agno-2.2.8 → agno-2.2.10}/agno/db/mongo/schemas.py +0 -0
  96. {agno-2.2.8 → agno-2.2.10}/agno/db/mongo/utils.py +0 -0
  97. {agno-2.2.8 → agno-2.2.10}/agno/db/mysql/__init__.py +0 -0
  98. {agno-2.2.8 → agno-2.2.10}/agno/db/mysql/schemas.py +0 -0
  99. {agno-2.2.8 → agno-2.2.10}/agno/db/mysql/utils.py +0 -0
  100. {agno-2.2.8 → agno-2.2.10}/agno/db/postgres/__init__.py +0 -0
  101. {agno-2.2.8 → agno-2.2.10}/agno/db/postgres/schemas.py +0 -0
  102. {agno-2.2.8 → agno-2.2.10}/agno/db/postgres/utils.py +0 -0
  103. {agno-2.2.8 → agno-2.2.10}/agno/db/redis/__init__.py +0 -0
  104. {agno-2.2.8 → agno-2.2.10}/agno/db/redis/schemas.py +0 -0
  105. {agno-2.2.8 → agno-2.2.10}/agno/db/redis/utils.py +0 -0
  106. {agno-2.2.8 → agno-2.2.10}/agno/db/schemas/__init__.py +0 -0
  107. {agno-2.2.8 → agno-2.2.10}/agno/db/schemas/culture.py +0 -0
  108. {agno-2.2.8 → agno-2.2.10}/agno/db/schemas/evals.py +0 -0
  109. {agno-2.2.8 → agno-2.2.10}/agno/db/schemas/knowledge.py +0 -0
  110. {agno-2.2.8 → agno-2.2.10}/agno/db/schemas/memory.py +0 -0
  111. {agno-2.2.8 → agno-2.2.10}/agno/db/schemas/metrics.py +0 -0
  112. {agno-2.2.8 → agno-2.2.10}/agno/db/singlestore/__init__.py +0 -0
  113. {agno-2.2.8 → agno-2.2.10}/agno/db/singlestore/schemas.py +0 -0
  114. {agno-2.2.8 → agno-2.2.10}/agno/db/singlestore/utils.py +0 -0
  115. {agno-2.2.8 → agno-2.2.10}/agno/db/sqlite/__init__.py +0 -0
  116. {agno-2.2.8 → agno-2.2.10}/agno/db/sqlite/schemas.py +0 -0
  117. {agno-2.2.8 → agno-2.2.10}/agno/db/sqlite/utils.py +0 -0
  118. {agno-2.2.8 → agno-2.2.10}/agno/db/surrealdb/__init__.py +0 -0
  119. {agno-2.2.8 → agno-2.2.10}/agno/db/surrealdb/metrics.py +0 -0
  120. {agno-2.2.8 → agno-2.2.10}/agno/db/surrealdb/models.py +0 -0
  121. {agno-2.2.8 → agno-2.2.10}/agno/db/surrealdb/queries.py +0 -0
  122. {agno-2.2.8 → agno-2.2.10}/agno/db/surrealdb/utils.py +0 -0
  123. {agno-2.2.8 → agno-2.2.10}/agno/db/utils.py +0 -0
  124. {agno-2.2.8 → agno-2.2.10}/agno/debug.py +0 -0
  125. {agno-2.2.8 → agno-2.2.10}/agno/eval/__init__.py +0 -0
  126. {agno-2.2.8 → agno-2.2.10}/agno/eval/accuracy.py +0 -0
  127. {agno-2.2.8 → agno-2.2.10}/agno/eval/performance.py +0 -0
  128. {agno-2.2.8 → agno-2.2.10}/agno/eval/reliability.py +0 -0
  129. {agno-2.2.8 → agno-2.2.10}/agno/eval/utils.py +0 -0
  130. {agno-2.2.8 → agno-2.2.10}/agno/exceptions.py +0 -0
  131. {agno-2.2.8 → agno-2.2.10}/agno/guardrails/__init__.py +0 -0
  132. {agno-2.2.8 → agno-2.2.10}/agno/guardrails/base.py +0 -0
  133. {agno-2.2.8 → agno-2.2.10}/agno/guardrails/openai.py +0 -0
  134. {agno-2.2.8 → agno-2.2.10}/agno/guardrails/pii.py +0 -0
  135. {agno-2.2.8 → agno-2.2.10}/agno/guardrails/prompt_injection.py +0 -0
  136. {agno-2.2.8 → agno-2.2.10}/agno/integrations/__init__.py +0 -0
  137. {agno-2.2.8 → agno-2.2.10}/agno/integrations/discord/__init__.py +0 -0
  138. {agno-2.2.8 → agno-2.2.10}/agno/integrations/discord/client.py +0 -0
  139. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/__init__.py +0 -0
  140. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/__init__.py +0 -0
  141. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/agentic.py +0 -0
  142. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/document.py +0 -0
  143. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/fixed.py +0 -0
  144. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/markdown.py +0 -0
  145. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/recursive.py +0 -0
  146. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/row.py +0 -0
  147. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/semantic.py +0 -0
  148. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/chunking/strategy.py +0 -0
  149. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/content.py +0 -0
  150. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/document/__init__.py +0 -0
  151. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/document/base.py +0 -0
  152. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/__init__.py +0 -0
  153. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/aws_bedrock.py +0 -0
  154. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/azure_openai.py +0 -0
  155. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/base.py +0 -0
  156. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/cohere.py +0 -0
  157. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/fastembed.py +0 -0
  158. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/fireworks.py +0 -0
  159. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/google.py +0 -0
  160. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/huggingface.py +0 -0
  161. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/jina.py +0 -0
  162. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/langdb.py +0 -0
  163. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/mistral.py +0 -0
  164. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/nebius.py +0 -0
  165. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/ollama.py +0 -0
  166. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/openai.py +0 -0
  167. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/sentence_transformer.py +0 -0
  168. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/together.py +0 -0
  169. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/vllm.py +0 -0
  170. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/embedder/voyageai.py +0 -0
  171. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/knowledge.py +0 -0
  172. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/__init__.py +0 -0
  173. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/arxiv_reader.py +0 -0
  174. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/base.py +0 -0
  175. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/csv_reader.py +0 -0
  176. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
  177. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/firecrawl_reader.py +0 -0
  178. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/json_reader.py +0 -0
  179. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/markdown_reader.py +0 -0
  180. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/pdf_reader.py +0 -0
  181. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/pptx_reader.py +0 -0
  182. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/reader_factory.py +0 -0
  183. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/s3_reader.py +0 -0
  184. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/tavily_reader.py +0 -0
  185. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/text_reader.py +0 -0
  186. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/web_search_reader.py +0 -0
  187. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/website_reader.py +0 -0
  188. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/wikipedia_reader.py +0 -0
  189. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reader/youtube_reader.py +0 -0
  190. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/remote_content/__init__.py +0 -0
  191. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/remote_content/remote_content.py +0 -0
  192. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reranker/__init__.py +0 -0
  193. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reranker/base.py +0 -0
  194. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reranker/cohere.py +0 -0
  195. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reranker/infinity.py +0 -0
  196. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/reranker/sentence_transformer.py +0 -0
  197. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/types.py +0 -0
  198. {agno-2.2.8 → agno-2.2.10}/agno/knowledge/utils.py +0 -0
  199. {agno-2.2.8 → agno-2.2.10}/agno/media.py +0 -0
  200. {agno-2.2.8 → agno-2.2.10}/agno/memory/__init__.py +0 -0
  201. {agno-2.2.8 → agno-2.2.10}/agno/memory/manager.py +0 -0
  202. {agno-2.2.8 → agno-2.2.10}/agno/models/__init__.py +0 -0
  203. {agno-2.2.8 → agno-2.2.10}/agno/models/aimlapi/__init__.py +0 -0
  204. {agno-2.2.8 → agno-2.2.10}/agno/models/aimlapi/aimlapi.py +0 -0
  205. {agno-2.2.8 → agno-2.2.10}/agno/models/anthropic/__init__.py +0 -0
  206. {agno-2.2.8 → agno-2.2.10}/agno/models/anthropic/claude.py +0 -0
  207. {agno-2.2.8 → agno-2.2.10}/agno/models/aws/__init__.py +0 -0
  208. {agno-2.2.8 → agno-2.2.10}/agno/models/aws/bedrock.py +0 -0
  209. {agno-2.2.8 → agno-2.2.10}/agno/models/aws/claude.py +0 -0
  210. {agno-2.2.8 → agno-2.2.10}/agno/models/azure/__init__.py +0 -0
  211. {agno-2.2.8 → agno-2.2.10}/agno/models/azure/openai_chat.py +0 -0
  212. {agno-2.2.8 → agno-2.2.10}/agno/models/base.py +0 -0
  213. {agno-2.2.8 → agno-2.2.10}/agno/models/cerebras/__init__.py +0 -0
  214. {agno-2.2.8 → agno-2.2.10}/agno/models/cerebras/cerebras_openai.py +0 -0
  215. {agno-2.2.8 → agno-2.2.10}/agno/models/cohere/__init__.py +0 -0
  216. {agno-2.2.8 → agno-2.2.10}/agno/models/cohere/chat.py +0 -0
  217. {agno-2.2.8 → agno-2.2.10}/agno/models/cometapi/__init__.py +0 -0
  218. {agno-2.2.8 → agno-2.2.10}/agno/models/cometapi/cometapi.py +0 -0
  219. {agno-2.2.8 → agno-2.2.10}/agno/models/dashscope/__init__.py +0 -0
  220. {agno-2.2.8 → agno-2.2.10}/agno/models/dashscope/dashscope.py +0 -0
  221. {agno-2.2.8 → agno-2.2.10}/agno/models/deepinfra/__init__.py +0 -0
  222. {agno-2.2.8 → agno-2.2.10}/agno/models/deepinfra/deepinfra.py +0 -0
  223. {agno-2.2.8 → agno-2.2.10}/agno/models/deepseek/__init__.py +0 -0
  224. {agno-2.2.8 → agno-2.2.10}/agno/models/deepseek/deepseek.py +0 -0
  225. {agno-2.2.8 → agno-2.2.10}/agno/models/defaults.py +0 -0
  226. {agno-2.2.8 → agno-2.2.10}/agno/models/fireworks/__init__.py +0 -0
  227. {agno-2.2.8 → agno-2.2.10}/agno/models/fireworks/fireworks.py +0 -0
  228. {agno-2.2.8 → agno-2.2.10}/agno/models/google/__init__.py +0 -0
  229. {agno-2.2.8 → agno-2.2.10}/agno/models/google/gemini.py +0 -0
  230. {agno-2.2.8 → agno-2.2.10}/agno/models/groq/__init__.py +0 -0
  231. {agno-2.2.8 → agno-2.2.10}/agno/models/groq/groq.py +0 -0
  232. {agno-2.2.8 → agno-2.2.10}/agno/models/huggingface/__init__.py +0 -0
  233. {agno-2.2.8 → agno-2.2.10}/agno/models/huggingface/huggingface.py +0 -0
  234. {agno-2.2.8 → agno-2.2.10}/agno/models/ibm/__init__.py +0 -0
  235. {agno-2.2.8 → agno-2.2.10}/agno/models/ibm/watsonx.py +0 -0
  236. {agno-2.2.8 → agno-2.2.10}/agno/models/internlm/__init__.py +0 -0
  237. {agno-2.2.8 → agno-2.2.10}/agno/models/internlm/internlm.py +0 -0
  238. {agno-2.2.8 → agno-2.2.10}/agno/models/langdb/__init__.py +0 -0
  239. {agno-2.2.8 → agno-2.2.10}/agno/models/langdb/langdb.py +0 -0
  240. {agno-2.2.8 → agno-2.2.10}/agno/models/litellm/__init__.py +0 -0
  241. {agno-2.2.8 → agno-2.2.10}/agno/models/litellm/chat.py +0 -0
  242. {agno-2.2.8 → agno-2.2.10}/agno/models/litellm/litellm_openai.py +0 -0
  243. {agno-2.2.8 → agno-2.2.10}/agno/models/llama_cpp/__init__.py +0 -0
  244. {agno-2.2.8 → agno-2.2.10}/agno/models/llama_cpp/llama_cpp.py +0 -0
  245. {agno-2.2.8 → agno-2.2.10}/agno/models/lmstudio/__init__.py +0 -0
  246. {agno-2.2.8 → agno-2.2.10}/agno/models/lmstudio/lmstudio.py +0 -0
  247. {agno-2.2.8 → agno-2.2.10}/agno/models/message.py +0 -0
  248. {agno-2.2.8 → agno-2.2.10}/agno/models/meta/__init__.py +0 -0
  249. {agno-2.2.8 → agno-2.2.10}/agno/models/meta/llama.py +0 -0
  250. {agno-2.2.8 → agno-2.2.10}/agno/models/meta/llama_openai.py +0 -0
  251. {agno-2.2.8 → agno-2.2.10}/agno/models/metrics.py +0 -0
  252. {agno-2.2.8 → agno-2.2.10}/agno/models/mistral/__init__.py +0 -0
  253. {agno-2.2.8 → agno-2.2.10}/agno/models/mistral/mistral.py +0 -0
  254. {agno-2.2.8 → agno-2.2.10}/agno/models/nebius/__init__.py +0 -0
  255. {agno-2.2.8 → agno-2.2.10}/agno/models/nebius/nebius.py +0 -0
  256. {agno-2.2.8 → agno-2.2.10}/agno/models/nexus/__init__.py +0 -0
  257. {agno-2.2.8 → agno-2.2.10}/agno/models/nexus/nexus.py +0 -0
  258. {agno-2.2.8 → agno-2.2.10}/agno/models/nvidia/__init__.py +0 -0
  259. {agno-2.2.8 → agno-2.2.10}/agno/models/nvidia/nvidia.py +0 -0
  260. {agno-2.2.8 → agno-2.2.10}/agno/models/ollama/__init__.py +0 -0
  261. {agno-2.2.8 → agno-2.2.10}/agno/models/ollama/chat.py +0 -0
  262. {agno-2.2.8 → agno-2.2.10}/agno/models/openai/__init__.py +0 -0
  263. {agno-2.2.8 → agno-2.2.10}/agno/models/openai/like.py +0 -0
  264. {agno-2.2.8 → agno-2.2.10}/agno/models/openrouter/__init__.py +0 -0
  265. {agno-2.2.8 → agno-2.2.10}/agno/models/openrouter/openrouter.py +0 -0
  266. {agno-2.2.8 → agno-2.2.10}/agno/models/perplexity/__init__.py +0 -0
  267. {agno-2.2.8 → agno-2.2.10}/agno/models/perplexity/perplexity.py +0 -0
  268. {agno-2.2.8 → agno-2.2.10}/agno/models/portkey/__init__.py +0 -0
  269. {agno-2.2.8 → agno-2.2.10}/agno/models/portkey/portkey.py +0 -0
  270. {agno-2.2.8 → agno-2.2.10}/agno/models/requesty/__init__.py +0 -0
  271. {agno-2.2.8 → agno-2.2.10}/agno/models/requesty/requesty.py +0 -0
  272. {agno-2.2.8 → agno-2.2.10}/agno/models/response.py +0 -0
  273. {agno-2.2.8 → agno-2.2.10}/agno/models/sambanova/__init__.py +0 -0
  274. {agno-2.2.8 → agno-2.2.10}/agno/models/sambanova/sambanova.py +0 -0
  275. {agno-2.2.8 → agno-2.2.10}/agno/models/siliconflow/__init__.py +0 -0
  276. {agno-2.2.8 → agno-2.2.10}/agno/models/siliconflow/siliconflow.py +0 -0
  277. {agno-2.2.8 → agno-2.2.10}/agno/models/together/__init__.py +0 -0
  278. {agno-2.2.8 → agno-2.2.10}/agno/models/together/together.py +0 -0
  279. {agno-2.2.8 → agno-2.2.10}/agno/models/utils.py +0 -0
  280. {agno-2.2.8 → agno-2.2.10}/agno/models/vercel/__init__.py +0 -0
  281. {agno-2.2.8 → agno-2.2.10}/agno/models/vercel/v0.py +0 -0
  282. {agno-2.2.8 → agno-2.2.10}/agno/models/vertexai/__init__.py +0 -0
  283. {agno-2.2.8 → agno-2.2.10}/agno/models/vertexai/claude.py +0 -0
  284. {agno-2.2.8 → agno-2.2.10}/agno/models/vllm/__init__.py +0 -0
  285. {agno-2.2.8 → agno-2.2.10}/agno/models/vllm/vllm.py +0 -0
  286. {agno-2.2.8 → agno-2.2.10}/agno/models/xai/__init__.py +0 -0
  287. {agno-2.2.8 → agno-2.2.10}/agno/models/xai/xai.py +0 -0
  288. {agno-2.2.8 → agno-2.2.10}/agno/os/__init__.py +0 -0
  289. {agno-2.2.8 → agno-2.2.10}/agno/os/auth.py +0 -0
  290. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/__init__.py +0 -0
  291. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/a2a/__init__.py +0 -0
  292. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/a2a/a2a.py +0 -0
  293. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/a2a/router.py +0 -0
  294. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/a2a/utils.py +0 -0
  295. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/agui/__init__.py +0 -0
  296. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/agui/agui.py +0 -0
  297. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/base.py +0 -0
  298. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/slack/__init__.py +0 -0
  299. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/slack/router.py +0 -0
  300. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/slack/security.py +0 -0
  301. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/slack/slack.py +0 -0
  302. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/whatsapp/__init__.py +0 -0
  303. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/whatsapp/router.py +0 -0
  304. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/whatsapp/security.py +0 -0
  305. {agno-2.2.8 → agno-2.2.10}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
  306. {agno-2.2.8 → agno-2.2.10}/agno/os/middleware/__init__.py +0 -0
  307. {agno-2.2.8 → agno-2.2.10}/agno/os/middleware/jwt.py +0 -0
  308. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/__init__.py +0 -0
  309. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/evals/__init__.py +0 -0
  310. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/evals/schemas.py +0 -0
  311. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/evals/utils.py +0 -0
  312. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/health.py +0 -0
  313. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/home.py +0 -0
  314. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/knowledge/__init__.py +0 -0
  315. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/knowledge/knowledge.py +0 -0
  316. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/knowledge/schemas.py +0 -0
  317. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/memory/__init__.py +0 -0
  318. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/memory/schemas.py +0 -0
  319. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/metrics/__init__.py +0 -0
  320. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/metrics/schemas.py +0 -0
  321. {agno-2.2.8 → agno-2.2.10}/agno/os/routers/session/__init__.py +0 -0
  322. {agno-2.2.8 → agno-2.2.10}/agno/os/schema.py +0 -0
  323. {agno-2.2.8 → agno-2.2.10}/agno/os/settings.py +0 -0
  324. {agno-2.2.8 → agno-2.2.10}/agno/py.typed +0 -0
  325. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/__init__.py +0 -0
  326. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/anthropic.py +0 -0
  327. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/azure_ai_foundry.py +0 -0
  328. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/deepseek.py +0 -0
  329. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/default.py +0 -0
  330. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/gemini.py +0 -0
  331. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/groq.py +0 -0
  332. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/helpers.py +0 -0
  333. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/ollama.py +0 -0
  334. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/openai.py +0 -0
  335. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/step.py +0 -0
  336. {agno-2.2.8 → agno-2.2.10}/agno/reasoning/vertexai.py +0 -0
  337. {agno-2.2.8 → agno-2.2.10}/agno/run/__init__.py +0 -0
  338. {agno-2.2.8 → agno-2.2.10}/agno/run/agent.py +0 -0
  339. {agno-2.2.8 → agno-2.2.10}/agno/run/base.py +0 -0
  340. {agno-2.2.8 → agno-2.2.10}/agno/run/cancel.py +0 -0
  341. {agno-2.2.8 → agno-2.2.10}/agno/run/messages.py +0 -0
  342. {agno-2.2.8 → agno-2.2.10}/agno/run/team.py +0 -0
  343. {agno-2.2.8 → agno-2.2.10}/agno/run/workflow.py +0 -0
  344. {agno-2.2.8 → agno-2.2.10}/agno/session/__init__.py +0 -0
  345. {agno-2.2.8 → agno-2.2.10}/agno/session/agent.py +0 -0
  346. {agno-2.2.8 → agno-2.2.10}/agno/session/summary.py +0 -0
  347. {agno-2.2.8 → agno-2.2.10}/agno/session/team.py +0 -0
  348. {agno-2.2.8 → agno-2.2.10}/agno/session/workflow.py +0 -0
  349. {agno-2.2.8 → agno-2.2.10}/agno/team/__init__.py +0 -0
  350. {agno-2.2.8 → agno-2.2.10}/agno/tools/__init__.py +0 -0
  351. {agno-2.2.8 → agno-2.2.10}/agno/tools/agentql.py +0 -0
  352. {agno-2.2.8 → agno-2.2.10}/agno/tools/airflow.py +0 -0
  353. {agno-2.2.8 → agno-2.2.10}/agno/tools/api.py +0 -0
  354. {agno-2.2.8 → agno-2.2.10}/agno/tools/apify.py +0 -0
  355. {agno-2.2.8 → agno-2.2.10}/agno/tools/arxiv.py +0 -0
  356. {agno-2.2.8 → agno-2.2.10}/agno/tools/aws_lambda.py +0 -0
  357. {agno-2.2.8 → agno-2.2.10}/agno/tools/aws_ses.py +0 -0
  358. {agno-2.2.8 → agno-2.2.10}/agno/tools/baidusearch.py +0 -0
  359. {agno-2.2.8 → agno-2.2.10}/agno/tools/bitbucket.py +0 -0
  360. {agno-2.2.8 → agno-2.2.10}/agno/tools/brandfetch.py +0 -0
  361. {agno-2.2.8 → agno-2.2.10}/agno/tools/bravesearch.py +0 -0
  362. {agno-2.2.8 → agno-2.2.10}/agno/tools/brightdata.py +0 -0
  363. {agno-2.2.8 → agno-2.2.10}/agno/tools/browserbase.py +0 -0
  364. {agno-2.2.8 → agno-2.2.10}/agno/tools/calcom.py +0 -0
  365. {agno-2.2.8 → agno-2.2.10}/agno/tools/calculator.py +0 -0
  366. {agno-2.2.8 → agno-2.2.10}/agno/tools/cartesia.py +0 -0
  367. {agno-2.2.8 → agno-2.2.10}/agno/tools/clickup.py +0 -0
  368. {agno-2.2.8 → agno-2.2.10}/agno/tools/confluence.py +0 -0
  369. {agno-2.2.8 → agno-2.2.10}/agno/tools/crawl4ai.py +0 -0
  370. {agno-2.2.8 → agno-2.2.10}/agno/tools/csv_toolkit.py +0 -0
  371. {agno-2.2.8 → agno-2.2.10}/agno/tools/dalle.py +0 -0
  372. {agno-2.2.8 → agno-2.2.10}/agno/tools/daytona.py +0 -0
  373. {agno-2.2.8 → agno-2.2.10}/agno/tools/decorator.py +0 -0
  374. {agno-2.2.8 → agno-2.2.10}/agno/tools/desi_vocal.py +0 -0
  375. {agno-2.2.8 → agno-2.2.10}/agno/tools/discord.py +0 -0
  376. {agno-2.2.8 → agno-2.2.10}/agno/tools/docker.py +0 -0
  377. {agno-2.2.8 → agno-2.2.10}/agno/tools/duckdb.py +0 -0
  378. {agno-2.2.8 → agno-2.2.10}/agno/tools/duckduckgo.py +0 -0
  379. {agno-2.2.8 → agno-2.2.10}/agno/tools/e2b.py +0 -0
  380. {agno-2.2.8 → agno-2.2.10}/agno/tools/eleven_labs.py +0 -0
  381. {agno-2.2.8 → agno-2.2.10}/agno/tools/email.py +0 -0
  382. {agno-2.2.8 → agno-2.2.10}/agno/tools/evm.py +0 -0
  383. {agno-2.2.8 → agno-2.2.10}/agno/tools/exa.py +0 -0
  384. {agno-2.2.8 → agno-2.2.10}/agno/tools/fal.py +0 -0
  385. {agno-2.2.8 → agno-2.2.10}/agno/tools/file.py +0 -0
  386. {agno-2.2.8 → agno-2.2.10}/agno/tools/file_generation.py +0 -0
  387. {agno-2.2.8 → agno-2.2.10}/agno/tools/financial_datasets.py +0 -0
  388. {agno-2.2.8 → agno-2.2.10}/agno/tools/firecrawl.py +0 -0
  389. {agno-2.2.8 → agno-2.2.10}/agno/tools/function.py +0 -0
  390. {agno-2.2.8 → agno-2.2.10}/agno/tools/giphy.py +0 -0
  391. {agno-2.2.8 → agno-2.2.10}/agno/tools/github.py +0 -0
  392. {agno-2.2.8 → agno-2.2.10}/agno/tools/gmail.py +0 -0
  393. {agno-2.2.8 → agno-2.2.10}/agno/tools/google_bigquery.py +0 -0
  394. {agno-2.2.8 → agno-2.2.10}/agno/tools/google_drive.py +0 -0
  395. {agno-2.2.8 → agno-2.2.10}/agno/tools/google_maps.py +0 -0
  396. {agno-2.2.8 → agno-2.2.10}/agno/tools/googlecalendar.py +0 -0
  397. {agno-2.2.8 → agno-2.2.10}/agno/tools/googlesearch.py +0 -0
  398. {agno-2.2.8 → agno-2.2.10}/agno/tools/googlesheets.py +0 -0
  399. {agno-2.2.8 → agno-2.2.10}/agno/tools/hackernews.py +0 -0
  400. {agno-2.2.8 → agno-2.2.10}/agno/tools/jina.py +0 -0
  401. {agno-2.2.8 → agno-2.2.10}/agno/tools/jira.py +0 -0
  402. {agno-2.2.8 → agno-2.2.10}/agno/tools/knowledge.py +0 -0
  403. {agno-2.2.8 → agno-2.2.10}/agno/tools/linear.py +0 -0
  404. {agno-2.2.8 → agno-2.2.10}/agno/tools/linkup.py +0 -0
  405. {agno-2.2.8 → agno-2.2.10}/agno/tools/local_file_system.py +0 -0
  406. {agno-2.2.8 → agno-2.2.10}/agno/tools/lumalab.py +0 -0
  407. {agno-2.2.8 → agno-2.2.10}/agno/tools/mcp/__init__.py +0 -0
  408. {agno-2.2.8 → agno-2.2.10}/agno/tools/mcp/mcp.py +0 -0
  409. {agno-2.2.8 → agno-2.2.10}/agno/tools/mcp/multi_mcp.py +0 -0
  410. {agno-2.2.8 → agno-2.2.10}/agno/tools/mcp/params.py +0 -0
  411. {agno-2.2.8 → agno-2.2.10}/agno/tools/mcp_toolbox.py +0 -0
  412. {agno-2.2.8 → agno-2.2.10}/agno/tools/mem0.py +0 -0
  413. {agno-2.2.8 → agno-2.2.10}/agno/tools/memori.py +0 -0
  414. {agno-2.2.8 → agno-2.2.10}/agno/tools/memory.py +0 -0
  415. {agno-2.2.8 → agno-2.2.10}/agno/tools/mlx_transcribe.py +0 -0
  416. {agno-2.2.8 → agno-2.2.10}/agno/tools/models/__init__.py +0 -0
  417. {agno-2.2.8 → agno-2.2.10}/agno/tools/models/azure_openai.py +0 -0
  418. {agno-2.2.8 → agno-2.2.10}/agno/tools/models/gemini.py +0 -0
  419. {agno-2.2.8 → agno-2.2.10}/agno/tools/models/groq.py +0 -0
  420. {agno-2.2.8 → agno-2.2.10}/agno/tools/models/morph.py +0 -0
  421. {agno-2.2.8 → agno-2.2.10}/agno/tools/models/nebius.py +0 -0
  422. {agno-2.2.8 → agno-2.2.10}/agno/tools/models_labs.py +0 -0
  423. {agno-2.2.8 → agno-2.2.10}/agno/tools/moviepy_video.py +0 -0
  424. {agno-2.2.8 → agno-2.2.10}/agno/tools/neo4j.py +0 -0
  425. {agno-2.2.8 → agno-2.2.10}/agno/tools/newspaper.py +0 -0
  426. {agno-2.2.8 → agno-2.2.10}/agno/tools/newspaper4k.py +0 -0
  427. {agno-2.2.8 → agno-2.2.10}/agno/tools/notion.py +0 -0
  428. {agno-2.2.8 → agno-2.2.10}/agno/tools/openai.py +0 -0
  429. {agno-2.2.8 → agno-2.2.10}/agno/tools/openbb.py +0 -0
  430. {agno-2.2.8 → agno-2.2.10}/agno/tools/opencv.py +0 -0
  431. {agno-2.2.8 → agno-2.2.10}/agno/tools/openweather.py +0 -0
  432. {agno-2.2.8 → agno-2.2.10}/agno/tools/oxylabs.py +0 -0
  433. {agno-2.2.8 → agno-2.2.10}/agno/tools/pandas.py +0 -0
  434. {agno-2.2.8 → agno-2.2.10}/agno/tools/postgres.py +0 -0
  435. {agno-2.2.8 → agno-2.2.10}/agno/tools/pubmed.py +0 -0
  436. {agno-2.2.8 → agno-2.2.10}/agno/tools/python.py +0 -0
  437. {agno-2.2.8 → agno-2.2.10}/agno/tools/reasoning.py +0 -0
  438. {agno-2.2.8 → agno-2.2.10}/agno/tools/reddit.py +0 -0
  439. {agno-2.2.8 → agno-2.2.10}/agno/tools/replicate.py +0 -0
  440. {agno-2.2.8 → agno-2.2.10}/agno/tools/resend.py +0 -0
  441. {agno-2.2.8 → agno-2.2.10}/agno/tools/scrapegraph.py +0 -0
  442. {agno-2.2.8 → agno-2.2.10}/agno/tools/searxng.py +0 -0
  443. {agno-2.2.8 → agno-2.2.10}/agno/tools/serpapi.py +0 -0
  444. {agno-2.2.8 → agno-2.2.10}/agno/tools/serper.py +0 -0
  445. {agno-2.2.8 → agno-2.2.10}/agno/tools/shell.py +0 -0
  446. {agno-2.2.8 → agno-2.2.10}/agno/tools/slack.py +0 -0
  447. {agno-2.2.8 → agno-2.2.10}/agno/tools/sleep.py +0 -0
  448. {agno-2.2.8 → agno-2.2.10}/agno/tools/spider.py +0 -0
  449. {agno-2.2.8 → agno-2.2.10}/agno/tools/sql.py +0 -0
  450. {agno-2.2.8 → agno-2.2.10}/agno/tools/streamlit/__init__.py +0 -0
  451. {agno-2.2.8 → agno-2.2.10}/agno/tools/streamlit/components.py +0 -0
  452. {agno-2.2.8 → agno-2.2.10}/agno/tools/tavily.py +0 -0
  453. {agno-2.2.8 → agno-2.2.10}/agno/tools/telegram.py +0 -0
  454. {agno-2.2.8 → agno-2.2.10}/agno/tools/todoist.py +0 -0
  455. {agno-2.2.8 → agno-2.2.10}/agno/tools/tool_registry.py +0 -0
  456. {agno-2.2.8 → agno-2.2.10}/agno/tools/toolkit.py +0 -0
  457. {agno-2.2.8 → agno-2.2.10}/agno/tools/trafilatura.py +0 -0
  458. {agno-2.2.8 → agno-2.2.10}/agno/tools/trello.py +0 -0
  459. {agno-2.2.8 → agno-2.2.10}/agno/tools/twilio.py +0 -0
  460. {agno-2.2.8 → agno-2.2.10}/agno/tools/user_control_flow.py +0 -0
  461. {agno-2.2.8 → agno-2.2.10}/agno/tools/valyu.py +0 -0
  462. {agno-2.2.8 → agno-2.2.10}/agno/tools/visualization.py +0 -0
  463. {agno-2.2.8 → agno-2.2.10}/agno/tools/webbrowser.py +0 -0
  464. {agno-2.2.8 → agno-2.2.10}/agno/tools/webex.py +0 -0
  465. {agno-2.2.8 → agno-2.2.10}/agno/tools/website.py +0 -0
  466. {agno-2.2.8 → agno-2.2.10}/agno/tools/webtools.py +0 -0
  467. {agno-2.2.8 → agno-2.2.10}/agno/tools/whatsapp.py +0 -0
  468. {agno-2.2.8 → agno-2.2.10}/agno/tools/wikipedia.py +0 -0
  469. {agno-2.2.8 → agno-2.2.10}/agno/tools/workflow.py +0 -0
  470. {agno-2.2.8 → agno-2.2.10}/agno/tools/x.py +0 -0
  471. {agno-2.2.8 → agno-2.2.10}/agno/tools/yfinance.py +0 -0
  472. {agno-2.2.8 → agno-2.2.10}/agno/tools/youtube.py +0 -0
  473. {agno-2.2.8 → agno-2.2.10}/agno/tools/zendesk.py +0 -0
  474. {agno-2.2.8 → agno-2.2.10}/agno/tools/zep.py +0 -0
  475. {agno-2.2.8 → agno-2.2.10}/agno/tools/zoom.py +0 -0
  476. {agno-2.2.8 → agno-2.2.10}/agno/utils/__init__.py +0 -0
  477. {agno-2.2.8 → agno-2.2.10}/agno/utils/agent.py +0 -0
  478. {agno-2.2.8 → agno-2.2.10}/agno/utils/audio.py +0 -0
  479. {agno-2.2.8 → agno-2.2.10}/agno/utils/certs.py +0 -0
  480. {agno-2.2.8 → agno-2.2.10}/agno/utils/code_execution.py +0 -0
  481. {agno-2.2.8 → agno-2.2.10}/agno/utils/common.py +0 -0
  482. {agno-2.2.8 → agno-2.2.10}/agno/utils/dttm.py +0 -0
  483. {agno-2.2.8 → agno-2.2.10}/agno/utils/enum.py +0 -0
  484. {agno-2.2.8 → agno-2.2.10}/agno/utils/env.py +0 -0
  485. {agno-2.2.8 → agno-2.2.10}/agno/utils/events.py +0 -0
  486. {agno-2.2.8 → agno-2.2.10}/agno/utils/format_str.py +0 -0
  487. {agno-2.2.8 → agno-2.2.10}/agno/utils/functions.py +0 -0
  488. {agno-2.2.8 → agno-2.2.10}/agno/utils/gemini.py +0 -0
  489. {agno-2.2.8 → agno-2.2.10}/agno/utils/hooks.py +0 -0
  490. {agno-2.2.8 → agno-2.2.10}/agno/utils/http.py +0 -0
  491. {agno-2.2.8 → agno-2.2.10}/agno/utils/json_schema.py +0 -0
  492. {agno-2.2.8 → agno-2.2.10}/agno/utils/knowledge.py +0 -0
  493. {agno-2.2.8 → agno-2.2.10}/agno/utils/location.py +0 -0
  494. {agno-2.2.8 → agno-2.2.10}/agno/utils/log.py +0 -0
  495. {agno-2.2.8 → agno-2.2.10}/agno/utils/mcp.py +0 -0
  496. {agno-2.2.8 → agno-2.2.10}/agno/utils/media.py +0 -0
  497. {agno-2.2.8 → agno-2.2.10}/agno/utils/merge_dict.py +0 -0
  498. {agno-2.2.8 → agno-2.2.10}/agno/utils/message.py +0 -0
  499. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/__init__.py +0 -0
  500. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/ai_foundry.py +0 -0
  501. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/claude.py +0 -0
  502. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/cohere.py +0 -0
  503. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/llama.py +0 -0
  504. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/mistral.py +0 -0
  505. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/openai_responses.py +0 -0
  506. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/schema_utils.py +0 -0
  507. {agno-2.2.8 → agno-2.2.10}/agno/utils/models/watsonx.py +0 -0
  508. {agno-2.2.8 → agno-2.2.10}/agno/utils/openai.py +0 -0
  509. {agno-2.2.8 → agno-2.2.10}/agno/utils/pickle.py +0 -0
  510. {agno-2.2.8 → agno-2.2.10}/agno/utils/pprint.py +0 -0
  511. {agno-2.2.8 → agno-2.2.10}/agno/utils/print_response/__init__.py +0 -0
  512. {agno-2.2.8 → agno-2.2.10}/agno/utils/print_response/agent.py +0 -0
  513. {agno-2.2.8 → agno-2.2.10}/agno/utils/print_response/team.py +0 -0
  514. {agno-2.2.8 → agno-2.2.10}/agno/utils/print_response/workflow.py +0 -0
  515. {agno-2.2.8 → agno-2.2.10}/agno/utils/prompts.py +0 -0
  516. {agno-2.2.8 → agno-2.2.10}/agno/utils/reasoning.py +0 -0
  517. {agno-2.2.8 → agno-2.2.10}/agno/utils/response.py +0 -0
  518. {agno-2.2.8 → agno-2.2.10}/agno/utils/response_iterator.py +0 -0
  519. {agno-2.2.8 → agno-2.2.10}/agno/utils/safe_formatter.py +0 -0
  520. {agno-2.2.8 → agno-2.2.10}/agno/utils/serialize.py +0 -0
  521. {agno-2.2.8 → agno-2.2.10}/agno/utils/shell.py +0 -0
  522. {agno-2.2.8 → agno-2.2.10}/agno/utils/streamlit.py +0 -0
  523. {agno-2.2.8 → agno-2.2.10}/agno/utils/string.py +0 -0
  524. {agno-2.2.8 → agno-2.2.10}/agno/utils/team.py +0 -0
  525. {agno-2.2.8 → agno-2.2.10}/agno/utils/timer.py +0 -0
  526. {agno-2.2.8 → agno-2.2.10}/agno/utils/tools.py +0 -0
  527. {agno-2.2.8 → agno-2.2.10}/agno/utils/web.py +0 -0
  528. {agno-2.2.8 → agno-2.2.10}/agno/utils/whatsapp.py +0 -0
  529. {agno-2.2.8 → agno-2.2.10}/agno/utils/yaml_io.py +0 -0
  530. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/__init__.py +0 -0
  531. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/base.py +0 -0
  532. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/cassandra/__init__.py +0 -0
  533. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/cassandra/cassandra.py +0 -0
  534. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
  535. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/cassandra/index.py +0 -0
  536. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/chroma/__init__.py +0 -0
  537. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/chroma/chromadb.py +0 -0
  538. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/clickhouse/__init__.py +0 -0
  539. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
  540. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/clickhouse/index.py +0 -0
  541. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/couchbase/__init__.py +0 -0
  542. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/couchbase/couchbase.py +0 -0
  543. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/distance.py +0 -0
  544. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/lancedb/__init__.py +0 -0
  545. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/lancedb/lance_db.py +0 -0
  546. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/langchaindb/__init__.py +0 -0
  547. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/langchaindb/langchaindb.py +0 -0
  548. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/lightrag/__init__.py +0 -0
  549. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/lightrag/lightrag.py +0 -0
  550. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/llamaindex/__init__.py +0 -0
  551. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
  552. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/milvus/__init__.py +0 -0
  553. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/milvus/milvus.py +0 -0
  554. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/mongodb/mongodb.py +0 -0
  555. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/pgvector/__init__.py +0 -0
  556. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/pgvector/index.py +0 -0
  557. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/pgvector/pgvector.py +0 -0
  558. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/pineconedb/__init__.py +0 -0
  559. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/pineconedb/pineconedb.py +0 -0
  560. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/qdrant/__init__.py +0 -0
  561. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/qdrant/qdrant.py +0 -0
  562. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/redis/redisdb.py +0 -0
  563. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/search.py +0 -0
  564. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/singlestore/__init__.py +0 -0
  565. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/singlestore/index.py +0 -0
  566. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/singlestore/singlestore.py +0 -0
  567. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/surrealdb/__init__.py +0 -0
  568. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/surrealdb/surrealdb.py +0 -0
  569. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/upstashdb/__init__.py +0 -0
  570. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/upstashdb/upstashdb.py +0 -0
  571. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/weaviate/__init__.py +0 -0
  572. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/weaviate/index.py +0 -0
  573. {agno-2.2.8 → agno-2.2.10}/agno/vectordb/weaviate/weaviate.py +0 -0
  574. {agno-2.2.8 → agno-2.2.10}/agno/workflow/__init__.py +0 -0
  575. {agno-2.2.8 → agno-2.2.10}/agno/workflow/types.py +0 -0
  576. {agno-2.2.8 → agno-2.2.10}/agno.egg-info/SOURCES.txt +0 -0
  577. {agno-2.2.8 → agno-2.2.10}/agno.egg-info/dependency_links.txt +0 -0
  578. {agno-2.2.8 → agno-2.2.10}/agno.egg-info/top_level.txt +0 -0
  579. {agno-2.2.8 → agno-2.2.10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.2.8
3
+ Version: 2.2.10
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
@@ -262,8 +262,6 @@ Provides-Extra: a2a
262
262
  Requires-Dist: a2a-sdk; extra == "a2a"
263
263
  Provides-Extra: huggingface
264
264
  Requires-Dist: huggingface-hub; extra == "huggingface"
265
- Provides-Extra: vllm
266
- Requires-Dist: vllm; extra == "vllm"
267
265
  Provides-Extra: performance
268
266
  Requires-Dist: memory_profiler; extra == "performance"
269
267
  Provides-Extra: cookbooks
@@ -403,13 +401,13 @@ Dynamic: license-file
403
401
 
404
402
  Agno is a multi-agent framework, runtime and control plane. Built for speed, privacy, and scale.
405
403
 
406
- It provides a rich set of primitives for building:
404
+ It provides a rich set of tools for building:
407
405
 
408
- - **Agents** with persistent state, knowledge retrieval, memory, and advanced features like human-in-the-loop, guardrails, dynamic context management and best-in-class MCP support.
409
- - **Multi-Agent Teams** that operate autonomously under a team leader that maintains shared state and context.
410
- - **Step-based Workflows** for controlled, deterministic execution. Steps can be Agents, Teams, or a regular python functions and can run sequentially, in parallel, in loops, branches, or conditionally.
406
+ - **Agents** with memory, knowledge, session management, and advanced features like human-in-the-loop, guardrails, dynamic context management and best-in-class MCP support.
407
+ - **Multi-Agent Teams** that operate autonomously under a team leader that maintains shared state and context. Perfect for use cases where the scope exceeds beyond a single agent.
408
+ - **Step-based Workflows** for controlled, deterministic execution. Steps can be Agents, Teams, or regular python functions that run sequentially, in parallel, in loops, branches, or conditionally.
411
409
 
412
- Agno also provides a FastAPI-powered runtime for serving multi-agent systems in production, covering the entire {build run deploy} lifecycle. Building Agents is easy, running them is hard, and that's where Agno shines.
410
+ Agno also provides a ready-to-use FastAPI app (called the AgentOS) for serving your agents, teams and workflows in production. Stateless, horizontally scalable and designed for scale, the AgentOS gives you major head start in building your AI product.
413
411
 
414
412
  ## Getting started
415
413
 
@@ -426,7 +424,7 @@ After that, checkout the [examples gallery](https://docs.agno.com/examples/intro
426
424
 
427
425
  ## Example
428
426
 
429
- Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, and is served using a FastAPI application that you can interact with using the [AgentOS UI](https://os.agno.com).
427
+ Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, is served using a FastAPI application that you can chat with using the [AgentOS UI](https://os.agno.com).
430
428
 
431
429
  ```python agno_agent.py
432
430
  from agno.agent import Agent
@@ -461,11 +459,11 @@ if __name__ == "__main__":
461
459
 
462
460
  ## AgentOS - Production Runtime for Multi-Agent Systems
463
461
 
464
- AgentOS is Agno's high-performance runtime for serving multi-agent systems in production. Key features include:
462
+ Building Agents is easy, running them is hard, and that's where the AgentOS comes in. AgentOS is a high-performance runtime for serving multi-agent systems in production. Key features include:
465
463
 
466
- 1. **Pre-built FastAPI Runtime**: AgentOS ships with a ready-to-use FastAPI app for orchestrating your agents, teams, and workflows. This provides a major head start when building an AI product.
464
+ 1. **Pre-built FastAPI app**: AgentOS ships with a ready-to-use FastAPI app for orchestrating your agents, teams, and workflows. This gives you a major head start in building your AI product.
467
465
 
468
- 2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time. This gives you unmatched visibility and control over your system.
466
+ 2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time, giving you unmatched control over your system.
469
467
 
470
468
  3. **Private by Design**: AgentOS runs entirely in your cloud, ensuring complete data privacy. No data ever leaves your system. This is ideal for security-conscious enterprises.
471
469
 
@@ -485,7 +483,7 @@ Agno brings a novel architecture that no other framework provides, your AgentOS
485
483
 
486
484
  ## Designed for Agent Engineering
487
485
 
488
- Agno is a remarkably feature-rich framework, purpose-built for large-scale multi-agent deployments.
486
+ Agno is an incredibly feature-rich framework, designed for Agent Engineering. Here are some key features:
489
487
 
490
488
  | **Category** | **Feature** | **Description** |
491
489
  |---------------|-------------|-----------------|
@@ -21,13 +21,13 @@
21
21
 
22
22
  Agno is a multi-agent framework, runtime and control plane. Built for speed, privacy, and scale.
23
23
 
24
- It provides a rich set of primitives for building:
24
+ It provides a rich set of tools for building:
25
25
 
26
- - **Agents** with persistent state, knowledge retrieval, memory, and advanced features like human-in-the-loop, guardrails, dynamic context management and best-in-class MCP support.
27
- - **Multi-Agent Teams** that operate autonomously under a team leader that maintains shared state and context.
28
- - **Step-based Workflows** for controlled, deterministic execution. Steps can be Agents, Teams, or a regular python functions and can run sequentially, in parallel, in loops, branches, or conditionally.
26
+ - **Agents** with memory, knowledge, session management, and advanced features like human-in-the-loop, guardrails, dynamic context management and best-in-class MCP support.
27
+ - **Multi-Agent Teams** that operate autonomously under a team leader that maintains shared state and context. Perfect for use cases where the scope exceeds beyond a single agent.
28
+ - **Step-based Workflows** for controlled, deterministic execution. Steps can be Agents, Teams, or regular python functions that run sequentially, in parallel, in loops, branches, or conditionally.
29
29
 
30
- Agno also provides a FastAPI-powered runtime for serving multi-agent systems in production, covering the entire {build run deploy} lifecycle. Building Agents is easy, running them is hard, and that's where Agno shines.
30
+ Agno also provides a ready-to-use FastAPI app (called the AgentOS) for serving your agents, teams and workflows in production. Stateless, horizontally scalable and designed for scale, the AgentOS gives you major head start in building your AI product.
31
31
 
32
32
  ## Getting started
33
33
 
@@ -44,7 +44,7 @@ After that, checkout the [examples gallery](https://docs.agno.com/examples/intro
44
44
 
45
45
  ## Example
46
46
 
47
- Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, and is served using a FastAPI application that you can interact with using the [AgentOS UI](https://os.agno.com).
47
+ Here’s an example of an Agent that connects to an MCP server, manages conversation state in a database, is served using a FastAPI application that you can chat with using the [AgentOS UI](https://os.agno.com).
48
48
 
49
49
  ```python agno_agent.py
50
50
  from agno.agent import Agent
@@ -79,11 +79,11 @@ if __name__ == "__main__":
79
79
 
80
80
  ## AgentOS - Production Runtime for Multi-Agent Systems
81
81
 
82
- AgentOS is Agno's high-performance runtime for serving multi-agent systems in production. Key features include:
82
+ Building Agents is easy, running them is hard, and that's where the AgentOS comes in. AgentOS is a high-performance runtime for serving multi-agent systems in production. Key features include:
83
83
 
84
- 1. **Pre-built FastAPI Runtime**: AgentOS ships with a ready-to-use FastAPI app for orchestrating your agents, teams, and workflows. This provides a major head start when building an AI product.
84
+ 1. **Pre-built FastAPI app**: AgentOS ships with a ready-to-use FastAPI app for orchestrating your agents, teams, and workflows. This gives you a major head start in building your AI product.
85
85
 
86
- 2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time. This gives you unmatched visibility and control over your system.
86
+ 2. **Integrated Control Plane**: The [AgentOS UI](https://os.agno.com) connects directly to your runtime, letting you test, monitor, and manage your system in real time, giving you unmatched control over your system.
87
87
 
88
88
  3. **Private by Design**: AgentOS runs entirely in your cloud, ensuring complete data privacy. No data ever leaves your system. This is ideal for security-conscious enterprises.
89
89
 
@@ -103,7 +103,7 @@ Agno brings a novel architecture that no other framework provides, your AgentOS
103
103
 
104
104
  ## Designed for Agent Engineering
105
105
 
106
- Agno is a remarkably feature-rich framework, purpose-built for large-scale multi-agent deployments.
106
+ Agno is an incredibly feature-rich framework, designed for Agent Engineering. Here are some key features:
107
107
 
108
108
  | **Category** | **Feature** | **Description** |
109
109
  |---------------|-------------|-----------------|
@@ -1140,7 +1140,7 @@ class Agent:
1140
1140
  add_session_state_to_context: Optional[bool] = None,
1141
1141
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
1142
1142
  stream_events: bool = False,
1143
- yield_run_response: bool = False,
1143
+ yield_run_output: Optional[bool] = None,
1144
1144
  debug_mode: Optional[bool] = None,
1145
1145
  **kwargs: Any,
1146
1146
  ) -> Iterator[Union[RunOutputEvent, RunOutput]]:
@@ -1410,7 +1410,7 @@ class Agent:
1410
1410
  if stream_events:
1411
1411
  yield completed_event # type: ignore
1412
1412
 
1413
- if yield_run_response:
1413
+ if yield_run_output:
1414
1414
  yield run_response
1415
1415
 
1416
1416
  # Log Agent Telemetry
@@ -1454,6 +1454,7 @@ class Agent:
1454
1454
  user_id: Optional[str] = None,
1455
1455
  session_id: Optional[str] = None,
1456
1456
  session_state: Optional[Dict[str, Any]] = None,
1457
+ run_context: Optional[RunContext] = None,
1457
1458
  audio: Optional[Sequence[Audio]] = None,
1458
1459
  images: Optional[Sequence[Image]] = None,
1459
1460
  videos: Optional[Sequence[Video]] = None,
@@ -1480,6 +1481,7 @@ class Agent:
1480
1481
  user_id: Optional[str] = None,
1481
1482
  session_id: Optional[str] = None,
1482
1483
  session_state: Optional[Dict[str, Any]] = None,
1484
+ run_context: Optional[RunContext] = None,
1483
1485
  audio: Optional[Sequence[Audio]] = None,
1484
1486
  images: Optional[Sequence[Image]] = None,
1485
1487
  videos: Optional[Sequence[Video]] = None,
@@ -1491,7 +1493,8 @@ class Agent:
1491
1493
  add_session_state_to_context: Optional[bool] = None,
1492
1494
  dependencies: Optional[Dict[str, Any]] = None,
1493
1495
  metadata: Optional[Dict[str, Any]] = None,
1494
- yield_run_response: bool = False,
1496
+ yield_run_response: bool = False, # To be deprecated: use yield_run_output instead
1497
+ yield_run_output: bool = False,
1495
1498
  debug_mode: Optional[bool] = None,
1496
1499
  **kwargs: Any,
1497
1500
  ) -> Iterator[Union[RunOutputEvent, RunOutput]]: ...
@@ -1506,6 +1509,7 @@ class Agent:
1506
1509
  user_id: Optional[str] = None,
1507
1510
  session_id: Optional[str] = None,
1508
1511
  session_state: Optional[Dict[str, Any]] = None,
1512
+ run_context: Optional[RunContext] = None,
1509
1513
  audio: Optional[Sequence[Audio]] = None,
1510
1514
  images: Optional[Sequence[Image]] = None,
1511
1515
  videos: Optional[Sequence[Video]] = None,
@@ -1517,7 +1521,8 @@ class Agent:
1517
1521
  add_session_state_to_context: Optional[bool] = None,
1518
1522
  dependencies: Optional[Dict[str, Any]] = None,
1519
1523
  metadata: Optional[Dict[str, Any]] = None,
1520
- yield_run_response: bool = False,
1524
+ yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
1525
+ yield_run_output: Optional[bool] = None,
1521
1526
  debug_mode: Optional[bool] = None,
1522
1527
  **kwargs: Any,
1523
1528
  ) -> Union[RunOutput, Iterator[Union[RunOutputEvent, RunOutput]]]:
@@ -1579,7 +1584,7 @@ class Agent:
1579
1584
  dependencies = dependencies if dependencies is not None else self.dependencies
1580
1585
 
1581
1586
  # Initialize run context
1582
- run_context = RunContext(
1587
+ run_context = run_context or RunContext(
1583
1588
  run_id=run_id,
1584
1589
  session_id=session_id,
1585
1590
  user_id=user_id,
@@ -1655,6 +1660,8 @@ class Agent:
1655
1660
  last_exception = None
1656
1661
  num_attempts = retries + 1
1657
1662
 
1663
+ yield_run_output = yield_run_output or yield_run_response # For backwards compatibility
1664
+
1658
1665
  for attempt in range(num_attempts):
1659
1666
  try:
1660
1667
  if stream:
@@ -1668,7 +1675,7 @@ class Agent:
1668
1675
  add_session_state_to_context=add_session_state,
1669
1676
  response_format=response_format,
1670
1677
  stream_events=stream_events,
1671
- yield_run_response=yield_run_response,
1678
+ yield_run_output=yield_run_output,
1672
1679
  debug_mode=debug_mode,
1673
1680
  **kwargs,
1674
1681
  )
@@ -2009,7 +2016,7 @@ class Agent:
2009
2016
  add_session_state_to_context: Optional[bool] = None,
2010
2017
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
2011
2018
  stream_events: bool = False,
2012
- yield_run_response: Optional[bool] = None,
2019
+ yield_run_output: Optional[bool] = None,
2013
2020
  debug_mode: Optional[bool] = None,
2014
2021
  **kwargs: Any,
2015
2022
  ) -> AsyncIterator[Union[RunOutputEvent, RunOutput]]:
@@ -2307,7 +2314,7 @@ class Agent:
2307
2314
  if stream_events:
2308
2315
  yield completed_event # type: ignore
2309
2316
 
2310
- if yield_run_response:
2317
+ if yield_run_output:
2311
2318
  yield run_response
2312
2319
 
2313
2320
  # Log Agent Telemetry
@@ -2370,6 +2377,7 @@ class Agent:
2370
2377
  user_id: Optional[str] = None,
2371
2378
  session_id: Optional[str] = None,
2372
2379
  session_state: Optional[Dict[str, Any]] = None,
2380
+ run_context: Optional[RunContext] = None,
2373
2381
  audio: Optional[Sequence[Audio]] = None,
2374
2382
  images: Optional[Sequence[Image]] = None,
2375
2383
  videos: Optional[Sequence[Video]] = None,
@@ -2395,6 +2403,7 @@ class Agent:
2395
2403
  stream: Literal[True] = True,
2396
2404
  user_id: Optional[str] = None,
2397
2405
  session_id: Optional[str] = None,
2406
+ run_context: Optional[RunContext] = None,
2398
2407
  audio: Optional[Sequence[Audio]] = None,
2399
2408
  images: Optional[Sequence[Image]] = None,
2400
2409
  videos: Optional[Sequence[Video]] = None,
@@ -2408,7 +2417,8 @@ class Agent:
2408
2417
  add_session_state_to_context: Optional[bool] = None,
2409
2418
  dependencies: Optional[Dict[str, Any]] = None,
2410
2419
  metadata: Optional[Dict[str, Any]] = None,
2411
- yield_run_response: Optional[bool] = None,
2420
+ yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
2421
+ yield_run_output: Optional[bool] = None,
2412
2422
  debug_mode: Optional[bool] = None,
2413
2423
  **kwargs: Any,
2414
2424
  ) -> AsyncIterator[Union[RunOutputEvent, RunOutput]]: ...
@@ -2421,6 +2431,7 @@ class Agent:
2421
2431
  user_id: Optional[str] = None,
2422
2432
  session_id: Optional[str] = None,
2423
2433
  session_state: Optional[Dict[str, Any]] = None,
2434
+ run_context: Optional[RunContext] = None,
2424
2435
  audio: Optional[Sequence[Audio]] = None,
2425
2436
  images: Optional[Sequence[Image]] = None,
2426
2437
  videos: Optional[Sequence[Video]] = None,
@@ -2434,7 +2445,8 @@ class Agent:
2434
2445
  add_session_state_to_context: Optional[bool] = None,
2435
2446
  dependencies: Optional[Dict[str, Any]] = None,
2436
2447
  metadata: Optional[Dict[str, Any]] = None,
2437
- yield_run_response: Optional[bool] = None,
2448
+ yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
2449
+ yield_run_output: Optional[bool] = None,
2438
2450
  debug_mode: Optional[bool] = None,
2439
2451
  **kwargs: Any,
2440
2452
  ) -> Union[RunOutput, AsyncIterator[RunOutputEvent]]:
@@ -2524,7 +2536,7 @@ class Agent:
2524
2536
  merge_dictionaries(metadata, self.metadata)
2525
2537
 
2526
2538
  # Initialize run context
2527
- run_context = RunContext(
2539
+ run_context = run_context or RunContext(
2528
2540
  run_id=run_id,
2529
2541
  session_id=session_id,
2530
2542
  user_id=user_id,
@@ -2559,6 +2571,8 @@ class Agent:
2559
2571
  last_exception = None
2560
2572
  num_attempts = retries + 1
2561
2573
 
2574
+ yield_run_output = yield_run_output or yield_run_response # For backwards compatibility
2575
+
2562
2576
  for attempt in range(num_attempts):
2563
2577
  try:
2564
2578
  # Pass the new run_response to _arun
@@ -2569,7 +2583,7 @@ class Agent:
2569
2583
  user_id=user_id,
2570
2584
  response_format=response_format,
2571
2585
  stream_events=stream_events,
2572
- yield_run_response=yield_run_response,
2586
+ yield_run_output=yield_run_output,
2573
2587
  session_id=session_id,
2574
2588
  add_history_to_context=add_history,
2575
2589
  add_dependencies_to_context=add_dependencies,
@@ -2684,6 +2698,7 @@ class Agent:
2684
2698
  stream_intermediate_steps: Optional[bool] = None,
2685
2699
  user_id: Optional[str] = None,
2686
2700
  session_id: Optional[str] = None,
2701
+ run_context: Optional[RunContext] = None,
2687
2702
  retries: Optional[int] = None,
2688
2703
  knowledge_filters: Optional[Dict[str, Any]] = None,
2689
2704
  dependencies: Optional[Dict[str, Any]] = None,
@@ -2701,6 +2716,7 @@ class Agent:
2701
2716
  stream_events: Whether to stream all events.
2702
2717
  user_id: The user id to continue the run for.
2703
2718
  session_id: The session id to continue the run for.
2719
+ run_context: The run context to use for the run.
2704
2720
  retries: The number of retries to continue the run for.
2705
2721
  knowledge_filters: The knowledge filters to use for the run.
2706
2722
  dependencies: The dependencies to use for the run.
@@ -2741,7 +2757,7 @@ class Agent:
2741
2757
  dependencies = dependencies if dependencies is not None else self.dependencies
2742
2758
 
2743
2759
  # Initialize run context
2744
- run_context = RunContext(
2760
+ run_context = run_context or RunContext(
2745
2761
  run_id=run_id, # type: ignore
2746
2762
  session_id=session_id,
2747
2763
  user_id=user_id,
@@ -3243,12 +3259,13 @@ class Agent:
3243
3259
  stream_intermediate_steps: Optional[bool] = None,
3244
3260
  user_id: Optional[str] = None,
3245
3261
  session_id: Optional[str] = None,
3262
+ run_context: Optional[RunContext] = None,
3246
3263
  retries: Optional[int] = None,
3247
3264
  knowledge_filters: Optional[Dict[str, Any]] = None,
3248
3265
  dependencies: Optional[Dict[str, Any]] = None,
3249
3266
  metadata: Optional[Dict[str, Any]] = None,
3250
3267
  debug_mode: Optional[bool] = None,
3251
- yield_run_response: bool = False,
3268
+ yield_run_output: bool = False,
3252
3269
  **kwargs,
3253
3270
  ) -> Union[RunOutput, AsyncIterator[Union[RunOutputEvent, RunOutput]]]:
3254
3271
  """Continue a previous run.
@@ -3261,12 +3278,13 @@ class Agent:
3261
3278
  stream_events: Whether to stream all events.
3262
3279
  user_id: The user id to continue the run for.
3263
3280
  session_id: The session id to continue the run for.
3281
+ run_context: The run context to use for the run.
3264
3282
  retries: The number of retries to continue the run for.
3265
3283
  knowledge_filters: The knowledge filters to use for the run.
3266
3284
  dependencies: The dependencies to use for continuing the run.
3267
3285
  metadata: The metadata to use for continuing the run.
3268
3286
  debug_mode: Whether to enable debug mode.
3269
- yield_run_response: Whether to yield the run response.
3287
+ yield_run_output: Whether to yield the run response.
3270
3288
  (deprecated) stream_intermediate_steps: Whether to stream all steps.
3271
3289
  """
3272
3290
  if run_response is None and run_id is None:
@@ -3327,7 +3345,7 @@ class Agent:
3327
3345
  self.model = cast(Model, self.model)
3328
3346
 
3329
3347
  # Initialize run context
3330
- run_context = RunContext(
3348
+ run_context = run_context or RunContext(
3331
3349
  run_id=run_id, # type: ignore
3332
3350
  session_id=session_id,
3333
3351
  user_id=user_id,
@@ -3351,7 +3369,7 @@ class Agent:
3351
3369
  session_id=session_id,
3352
3370
  response_format=response_format,
3353
3371
  stream_events=stream_events,
3354
- yield_run_response=yield_run_response,
3372
+ yield_run_output=yield_run_output,
3355
3373
  debug_mode=debug_mode,
3356
3374
  **kwargs,
3357
3375
  )
@@ -3620,7 +3638,7 @@ class Agent:
3620
3638
  user_id: Optional[str] = None,
3621
3639
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
3622
3640
  stream_events: bool = False,
3623
- yield_run_response: Optional[bool] = None,
3641
+ yield_run_output: bool = False,
3624
3642
  debug_mode: Optional[bool] = None,
3625
3643
  **kwargs,
3626
3644
  ) -> AsyncIterator[Union[RunOutputEvent, RunOutput]]:
@@ -3860,7 +3878,7 @@ class Agent:
3860
3878
  if stream_events:
3861
3879
  yield completed_event # type: ignore
3862
3880
 
3863
- if yield_run_response:
3881
+ if yield_run_output:
3864
3882
  yield run_response
3865
3883
 
3866
3884
  # Log Agent Telemetry
@@ -38,6 +38,14 @@ class BaseDb(ABC):
38
38
  self.eval_table_name = eval_table or "agno_eval_runs"
39
39
  self.knowledge_table_name = knowledge_table or "agno_knowledge"
40
40
 
41
+ @abstractmethod
42
+ def table_exists(self, table_name: str) -> bool:
43
+ raise NotImplementedError
44
+
45
+ def _create_all_tables(self) -> None:
46
+ """Create all tables for this database."""
47
+ pass
48
+
41
49
  # --- Sessions ---
42
50
  @abstractmethod
43
51
  def delete_session(self, session_id: str) -> bool:
@@ -328,6 +336,21 @@ class AsyncBaseDb(ABC):
328
336
  self.knowledge_table_name = knowledge_table or "agno_knowledge"
329
337
  self.culture_table_name = culture_table or "agno_culture"
330
338
 
339
+ @abstractmethod
340
+ async def table_exists(self, table_name: str) -> bool:
341
+ """Check if a table with the given name exists in this database.
342
+
343
+ Default implementation returns True if the table name is configured.
344
+ Subclasses should override this to perform actual existence checks.
345
+
346
+ Args:
347
+ table_name: Name of the table to check
348
+
349
+ Returns:
350
+ bool: True if the table exists, False otherwise
351
+ """
352
+ raise NotImplementedError
353
+
331
354
  # --- Sessions ---
332
355
  @abstractmethod
333
356
  async def delete_session(self, session_id: str) -> bool:
@@ -112,27 +112,8 @@ class DynamoDb(BaseDb):
112
112
  session = boto3.Session(**session_kwargs)
113
113
  self.client = session.client("dynamodb")
114
114
 
115
- def _create_tables(self):
116
- tables_to_create = [
117
- (self.session_table_name, "sessions"),
118
- (self.memory_table_name, "memories"),
119
- (self.metrics_table_name, "metrics"),
120
- (self.eval_table_name, "evals"),
121
- (self.knowledge_table_name, "knowledge_sources"),
122
- ]
123
-
124
- for table_name, table_type in tables_to_create:
125
- if table_name:
126
- try:
127
- schema = get_table_schema_definition(table_type)
128
- schema["TableName"] = table_name
129
- create_table_if_not_exists(self.client, table_name, schema)
130
-
131
- except Exception as e:
132
- log_error(f"Failed to create table {table_name}: {e}")
133
-
134
- def _table_exists(self, table_name: str) -> bool:
135
- """Check if a DynamoDB table with the given name exists.
115
+ def table_exists(self, table_name: str) -> bool:
116
+ """Check if a DynamoDB table exists.
136
117
 
137
118
  Args:
138
119
  table_name: The name of the table to check
@@ -145,9 +126,23 @@ class DynamoDb(BaseDb):
145
126
  return True
146
127
  except self.client.exceptions.ResourceNotFoundException:
147
128
  return False
148
- except Exception as e:
149
- log_error(f"Error checking if table {table_name} exists: {e}")
150
- return False
129
+
130
+ def _create_all_tables(self):
131
+ """Create all configured DynamoDB tables if they don't exist."""
132
+ tables_to_create = [
133
+ ("sessions", self.session_table_name),
134
+ ("memories", self.memory_table_name),
135
+ ("metrics", self.metrics_table_name),
136
+ ("evals", self.eval_table_name),
137
+ ("knowledge", self.knowledge_table_name),
138
+ ("culture", self.culture_table_name),
139
+ ]
140
+
141
+ for table_type, table_name in tables_to_create:
142
+ if not self.table_exists(table_name):
143
+ schema = get_table_schema_definition(table_type)
144
+ schema["TableName"] = table_name
145
+ create_table_if_not_exists(self.client, table_name, schema)
151
146
 
152
147
  def _get_table(self, table_type: str, create_table_if_not_found: Optional[bool] = True) -> Optional[str]:
153
148
  """
@@ -180,7 +175,7 @@ class DynamoDb(BaseDb):
180
175
  raise ValueError(f"Unknown table type: {table_type}")
181
176
 
182
177
  # Check if table exists, create if it doesn't
183
- if not self._table_exists(table_name) and create_table_if_not_found:
178
+ if not self.table_exists(table_name) and create_table_if_not_found:
184
179
  schema = get_table_schema_definition(table_type)
185
180
  schema["TableName"] = table_name
186
181
  create_table_if_not_exists(self.client, table_name, schema)
@@ -176,6 +176,7 @@ KNOWLEDGE_TABLE_SCHEMA = {
176
176
  "KeySchema": [{"AttributeName": "id", "KeyType": "HASH"}],
177
177
  "AttributeDefinitions": [
178
178
  {"AttributeName": "id", "AttributeType": "S"},
179
+ {"AttributeName": "user_id", "AttributeType": "S"},
179
180
  {"AttributeName": "type", "AttributeType": "S"},
180
181
  {"AttributeName": "status", "AttributeType": "S"},
181
182
  {"AttributeName": "created_at", "AttributeType": "N"},
@@ -89,6 +89,17 @@ class FirestoreDb(BaseDb):
89
89
 
90
90
  # -- DB methods --
91
91
 
92
+ def table_exists(self, table_name: str) -> bool:
93
+ """Check if a collection with the given name exists in the Firestore database.
94
+
95
+ Args:
96
+ table_name: Name of the collection to check
97
+
98
+ Returns:
99
+ bool: True if the collection exists in the database, False otherwise
100
+ """
101
+ return table_name in self.db_client.list_collections()
102
+
92
103
  def _get_collection(self, table_type: str, create_collection_if_not_found: Optional[bool] = True):
93
104
  """Get or create a collection based on table type.
94
105
 
@@ -83,6 +83,10 @@ class GcsJsonDb(BaseDb):
83
83
  self.client = gcs.Client(project=project, credentials=credentials)
84
84
  self.bucket = self.client.bucket(self.bucket_name)
85
85
 
86
+ def table_exists(self, table_name: str) -> bool:
87
+ """JSON implementation, always returns True."""
88
+ return True
89
+
86
90
  def _get_blob_name(self, filename: str) -> str:
87
91
  """Get the full blob name including prefix for a given filename."""
88
92
  return f"{self.prefix}{filename}.json"
@@ -34,6 +34,10 @@ class InMemoryDb(BaseDb):
34
34
  self._knowledge: List[Dict[str, Any]] = []
35
35
  self._cultural_knowledge: List[Dict[str, Any]] = []
36
36
 
37
+ def table_exists(self, table_name: str) -> bool:
38
+ """In-memory implementation, always returns True."""
39
+ return True
40
+
37
41
  # -- Session methods --
38
42
 
39
43
  def delete_session(self, session_id: str) -> bool:
@@ -66,6 +66,10 @@ class JsonDb(BaseDb):
66
66
  # Create the directory where the JSON files will be stored, if it doesn't exist
67
67
  self.db_path = Path(db_path or os.path.join(os.getcwd(), "agno_json_db"))
68
68
 
69
+ def table_exists(self, table_name: str) -> bool:
70
+ """JSON implementation, always returns True."""
71
+ return True
72
+
69
73
  def _read_json_file(self, filename: str, create_table_if_not_found: Optional[bool] = True) -> List[Dict[str, Any]]:
70
74
  """Read data from a JSON file, creating it if it doesn't exist.
71
75
 
@@ -99,6 +99,33 @@ class AsyncMongoDb(AsyncBaseDb):
99
99
  self._database: Optional[AsyncIOMotorDatabase] = None
100
100
  self._event_loop: Optional[asyncio.AbstractEventLoop] = None
101
101
 
102
+ async def table_exists(self, table_name: str) -> bool:
103
+ """Check if a collection with the given name exists in the MongoDB database.
104
+
105
+ Args:
106
+ table_name: Name of the collection to check
107
+
108
+ Returns:
109
+ bool: True if the collection exists in the database, False otherwise
110
+ """
111
+ collection_names = await self.database.list_collection_names()
112
+ return table_name in collection_names
113
+
114
+ async def _create_all_tables(self):
115
+ """Create all configured MongoDB collections if they don't exist."""
116
+ collections_to_create = [
117
+ ("sessions", self.session_table_name),
118
+ ("memories", self.memory_table_name),
119
+ ("metrics", self.metrics_table_name),
120
+ ("evals", self.eval_table_name),
121
+ ("knowledge", self.knowledge_table_name),
122
+ ("culture", self.culture_table_name),
123
+ ]
124
+
125
+ for collection_type, collection_name in collections_to_create:
126
+ if collection_name and not await self.table_exists(collection_name):
127
+ await self._get_collection(collection_type, create_collection_if_not_found=True)
128
+
102
129
  def _ensure_client(self) -> AsyncIOMotorClient:
103
130
  """
104
131
  Ensure the Motor client is valid for the current event loop.
@@ -100,6 +100,31 @@ class MongoDb(BaseDb):
100
100
  return self._database
101
101
 
102
102
  # -- DB methods --
103
+ def table_exists(self, table_name: str) -> bool:
104
+ """Check if a collection with the given name exists in the MongoDB database.
105
+
106
+ Args:
107
+ table_name: Name of the collection to check
108
+
109
+ Returns:
110
+ bool: True if the collection exists in the database, False otherwise
111
+ """
112
+ return table_name in self.database.list_collection_names()
113
+
114
+ def _create_all_tables(self):
115
+ """Create all configured MongoDB collections if they don't exist."""
116
+ collections_to_create = [
117
+ ("sessions", self.session_table_name),
118
+ ("memories", self.memory_table_name),
119
+ ("metrics", self.metrics_table_name),
120
+ ("evals", self.eval_table_name),
121
+ ("knowledge", self.knowledge_table_name),
122
+ ("culture", self.culture_table_name),
123
+ ]
124
+
125
+ for collection_type, collection_name in collections_to_create:
126
+ if collection_name and not self.table_exists(collection_name):
127
+ self._get_collection(collection_type, create_collection_if_not_found=True)
103
128
 
104
129
  def _get_collection(
105
130
  self, table_type: str, create_collection_if_not_found: Optional[bool] = True