agno 2.1.7__tar.gz → 2.1.8__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 (564) hide show
  1. {agno-2.1.7 → agno-2.1.8}/PKG-INFO +1 -1
  2. {agno-2.1.7 → agno-2.1.8}/agno/agent/agent.py +174 -37
  3. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/knowledge/knowledge.py +4 -4
  4. {agno-2.1.7 → agno-2.1.8}/agno/os/schema.py +6 -6
  5. {agno-2.1.7 → agno-2.1.8}/agno/team/team.py +102 -28
  6. {agno-2.1.7 → agno-2.1.8}/agno/tools/googlecalendar.py +43 -8
  7. {agno-2.1.7 → agno-2.1.8}/agno/tools/jira.py +20 -0
  8. {agno-2.1.7 → agno-2.1.8}/agno/workflow/step.py +51 -27
  9. {agno-2.1.7 → agno-2.1.8}/agno.egg-info/PKG-INFO +1 -1
  10. {agno-2.1.7 → agno-2.1.8}/pyproject.toml +1 -1
  11. {agno-2.1.7 → agno-2.1.8}/LICENSE +0 -0
  12. {agno-2.1.7 → agno-2.1.8}/README.md +0 -0
  13. {agno-2.1.7 → agno-2.1.8}/agno/__init__.py +0 -0
  14. {agno-2.1.7 → agno-2.1.8}/agno/agent/__init__.py +0 -0
  15. {agno-2.1.7 → agno-2.1.8}/agno/api/__init__.py +0 -0
  16. {agno-2.1.7 → agno-2.1.8}/agno/api/agent.py +0 -0
  17. {agno-2.1.7 → agno-2.1.8}/agno/api/api.py +0 -0
  18. {agno-2.1.7 → agno-2.1.8}/agno/api/evals.py +0 -0
  19. {agno-2.1.7 → agno-2.1.8}/agno/api/os.py +0 -0
  20. {agno-2.1.7 → agno-2.1.8}/agno/api/routes.py +0 -0
  21. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/__init__.py +0 -0
  22. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/agent.py +0 -0
  23. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/evals.py +0 -0
  24. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/os.py +0 -0
  25. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/response.py +0 -0
  26. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/team.py +0 -0
  27. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/utils.py +0 -0
  28. {agno-2.1.7 → agno-2.1.8}/agno/api/schemas/workflows.py +0 -0
  29. {agno-2.1.7 → agno-2.1.8}/agno/api/settings.py +0 -0
  30. {agno-2.1.7 → agno-2.1.8}/agno/api/team.py +0 -0
  31. {agno-2.1.7 → agno-2.1.8}/agno/api/workflow.py +0 -0
  32. {agno-2.1.7 → agno-2.1.8}/agno/cloud/aws/base.py +0 -0
  33. {agno-2.1.7 → agno-2.1.8}/agno/cloud/aws/s3/__init__.py +0 -0
  34. {agno-2.1.7 → agno-2.1.8}/agno/cloud/aws/s3/api_client.py +0 -0
  35. {agno-2.1.7 → agno-2.1.8}/agno/cloud/aws/s3/bucket.py +0 -0
  36. {agno-2.1.7 → agno-2.1.8}/agno/cloud/aws/s3/object.py +0 -0
  37. {agno-2.1.7 → agno-2.1.8}/agno/db/__init__.py +0 -0
  38. {agno-2.1.7 → agno-2.1.8}/agno/db/async_postgres/__init__.py +0 -0
  39. {agno-2.1.7 → agno-2.1.8}/agno/db/async_postgres/async_postgres.py +0 -0
  40. {agno-2.1.7 → agno-2.1.8}/agno/db/async_postgres/schemas.py +0 -0
  41. {agno-2.1.7 → agno-2.1.8}/agno/db/async_postgres/utils.py +0 -0
  42. {agno-2.1.7 → agno-2.1.8}/agno/db/base.py +0 -0
  43. {agno-2.1.7 → agno-2.1.8}/agno/db/dynamo/__init__.py +0 -0
  44. {agno-2.1.7 → agno-2.1.8}/agno/db/dynamo/dynamo.py +0 -0
  45. {agno-2.1.7 → agno-2.1.8}/agno/db/dynamo/schemas.py +0 -0
  46. {agno-2.1.7 → agno-2.1.8}/agno/db/dynamo/utils.py +0 -0
  47. {agno-2.1.7 → agno-2.1.8}/agno/db/firestore/__init__.py +0 -0
  48. {agno-2.1.7 → agno-2.1.8}/agno/db/firestore/firestore.py +0 -0
  49. {agno-2.1.7 → agno-2.1.8}/agno/db/firestore/schemas.py +0 -0
  50. {agno-2.1.7 → agno-2.1.8}/agno/db/firestore/utils.py +0 -0
  51. {agno-2.1.7 → agno-2.1.8}/agno/db/gcs_json/__init__.py +0 -0
  52. {agno-2.1.7 → agno-2.1.8}/agno/db/gcs_json/gcs_json_db.py +0 -0
  53. {agno-2.1.7 → agno-2.1.8}/agno/db/gcs_json/utils.py +0 -0
  54. {agno-2.1.7 → agno-2.1.8}/agno/db/in_memory/__init__.py +0 -0
  55. {agno-2.1.7 → agno-2.1.8}/agno/db/in_memory/in_memory_db.py +0 -0
  56. {agno-2.1.7 → agno-2.1.8}/agno/db/in_memory/utils.py +0 -0
  57. {agno-2.1.7 → agno-2.1.8}/agno/db/json/__init__.py +0 -0
  58. {agno-2.1.7 → agno-2.1.8}/agno/db/json/json_db.py +0 -0
  59. {agno-2.1.7 → agno-2.1.8}/agno/db/json/utils.py +0 -0
  60. {agno-2.1.7 → agno-2.1.8}/agno/db/migrations/__init__.py +0 -0
  61. {agno-2.1.7 → agno-2.1.8}/agno/db/migrations/v1_to_v2.py +0 -0
  62. {agno-2.1.7 → agno-2.1.8}/agno/db/mongo/__init__.py +0 -0
  63. {agno-2.1.7 → agno-2.1.8}/agno/db/mongo/mongo.py +0 -0
  64. {agno-2.1.7 → agno-2.1.8}/agno/db/mongo/schemas.py +0 -0
  65. {agno-2.1.7 → agno-2.1.8}/agno/db/mongo/utils.py +0 -0
  66. {agno-2.1.7 → agno-2.1.8}/agno/db/mysql/__init__.py +0 -0
  67. {agno-2.1.7 → agno-2.1.8}/agno/db/mysql/mysql.py +0 -0
  68. {agno-2.1.7 → agno-2.1.8}/agno/db/mysql/schemas.py +0 -0
  69. {agno-2.1.7 → agno-2.1.8}/agno/db/mysql/utils.py +0 -0
  70. {agno-2.1.7 → agno-2.1.8}/agno/db/postgres/__init__.py +0 -0
  71. {agno-2.1.7 → agno-2.1.8}/agno/db/postgres/postgres.py +0 -0
  72. {agno-2.1.7 → agno-2.1.8}/agno/db/postgres/schemas.py +0 -0
  73. {agno-2.1.7 → agno-2.1.8}/agno/db/postgres/utils.py +0 -0
  74. {agno-2.1.7 → agno-2.1.8}/agno/db/redis/__init__.py +0 -0
  75. {agno-2.1.7 → agno-2.1.8}/agno/db/redis/redis.py +0 -0
  76. {agno-2.1.7 → agno-2.1.8}/agno/db/redis/schemas.py +0 -0
  77. {agno-2.1.7 → agno-2.1.8}/agno/db/redis/utils.py +0 -0
  78. {agno-2.1.7 → agno-2.1.8}/agno/db/schemas/__init__.py +0 -0
  79. {agno-2.1.7 → agno-2.1.8}/agno/db/schemas/evals.py +0 -0
  80. {agno-2.1.7 → agno-2.1.8}/agno/db/schemas/knowledge.py +0 -0
  81. {agno-2.1.7 → agno-2.1.8}/agno/db/schemas/memory.py +0 -0
  82. {agno-2.1.7 → agno-2.1.8}/agno/db/schemas/metrics.py +0 -0
  83. {agno-2.1.7 → agno-2.1.8}/agno/db/singlestore/__init__.py +0 -0
  84. {agno-2.1.7 → agno-2.1.8}/agno/db/singlestore/schemas.py +0 -0
  85. {agno-2.1.7 → agno-2.1.8}/agno/db/singlestore/singlestore.py +0 -0
  86. {agno-2.1.7 → agno-2.1.8}/agno/db/singlestore/utils.py +0 -0
  87. {agno-2.1.7 → agno-2.1.8}/agno/db/sqlite/__init__.py +0 -0
  88. {agno-2.1.7 → agno-2.1.8}/agno/db/sqlite/schemas.py +0 -0
  89. {agno-2.1.7 → agno-2.1.8}/agno/db/sqlite/sqlite.py +0 -0
  90. {agno-2.1.7 → agno-2.1.8}/agno/db/sqlite/utils.py +0 -0
  91. {agno-2.1.7 → agno-2.1.8}/agno/db/surrealdb/__init__.py +0 -0
  92. {agno-2.1.7 → agno-2.1.8}/agno/db/surrealdb/metrics.py +0 -0
  93. {agno-2.1.7 → agno-2.1.8}/agno/db/surrealdb/models.py +0 -0
  94. {agno-2.1.7 → agno-2.1.8}/agno/db/surrealdb/queries.py +0 -0
  95. {agno-2.1.7 → agno-2.1.8}/agno/db/surrealdb/surrealdb.py +0 -0
  96. {agno-2.1.7 → agno-2.1.8}/agno/db/surrealdb/utils.py +0 -0
  97. {agno-2.1.7 → agno-2.1.8}/agno/db/utils.py +0 -0
  98. {agno-2.1.7 → agno-2.1.8}/agno/debug.py +0 -0
  99. {agno-2.1.7 → agno-2.1.8}/agno/eval/__init__.py +0 -0
  100. {agno-2.1.7 → agno-2.1.8}/agno/eval/accuracy.py +0 -0
  101. {agno-2.1.7 → agno-2.1.8}/agno/eval/performance.py +0 -0
  102. {agno-2.1.7 → agno-2.1.8}/agno/eval/reliability.py +0 -0
  103. {agno-2.1.7 → agno-2.1.8}/agno/eval/utils.py +0 -0
  104. {agno-2.1.7 → agno-2.1.8}/agno/exceptions.py +0 -0
  105. {agno-2.1.7 → agno-2.1.8}/agno/guardrails/__init__.py +0 -0
  106. {agno-2.1.7 → agno-2.1.8}/agno/guardrails/base.py +0 -0
  107. {agno-2.1.7 → agno-2.1.8}/agno/guardrails/openai.py +0 -0
  108. {agno-2.1.7 → agno-2.1.8}/agno/guardrails/pii.py +0 -0
  109. {agno-2.1.7 → agno-2.1.8}/agno/guardrails/prompt_injection.py +0 -0
  110. {agno-2.1.7 → agno-2.1.8}/agno/integrations/__init__.py +0 -0
  111. {agno-2.1.7 → agno-2.1.8}/agno/integrations/discord/__init__.py +0 -0
  112. {agno-2.1.7 → agno-2.1.8}/agno/integrations/discord/client.py +0 -0
  113. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/__init__.py +0 -0
  114. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/__init__.py +0 -0
  115. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/agentic.py +0 -0
  116. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/document.py +0 -0
  117. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/fixed.py +0 -0
  118. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/markdown.py +0 -0
  119. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/recursive.py +0 -0
  120. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/row.py +0 -0
  121. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/semantic.py +0 -0
  122. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/chunking/strategy.py +0 -0
  123. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/content.py +0 -0
  124. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/document/__init__.py +0 -0
  125. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/document/base.py +0 -0
  126. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/__init__.py +0 -0
  127. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/aws_bedrock.py +0 -0
  128. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/azure_openai.py +0 -0
  129. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/base.py +0 -0
  130. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/cohere.py +0 -0
  131. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/fastembed.py +0 -0
  132. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/fireworks.py +0 -0
  133. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/google.py +0 -0
  134. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/huggingface.py +0 -0
  135. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/jina.py +0 -0
  136. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/langdb.py +0 -0
  137. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/mistral.py +0 -0
  138. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/nebius.py +0 -0
  139. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/ollama.py +0 -0
  140. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/openai.py +0 -0
  141. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/sentence_transformer.py +0 -0
  142. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/together.py +0 -0
  143. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/embedder/voyageai.py +0 -0
  144. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/knowledge.py +0 -0
  145. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/__init__.py +0 -0
  146. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/arxiv_reader.py +0 -0
  147. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/base.py +0 -0
  148. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/csv_reader.py +0 -0
  149. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/docx_reader.py +0 -0
  150. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
  151. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/firecrawl_reader.py +0 -0
  152. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/json_reader.py +0 -0
  153. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/markdown_reader.py +0 -0
  154. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/pdf_reader.py +0 -0
  155. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/reader_factory.py +0 -0
  156. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/s3_reader.py +0 -0
  157. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/text_reader.py +0 -0
  158. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/web_search_reader.py +0 -0
  159. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/website_reader.py +0 -0
  160. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/wikipedia_reader.py +0 -0
  161. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reader/youtube_reader.py +0 -0
  162. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/remote_content/__init__.py +0 -0
  163. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/remote_content/remote_content.py +0 -0
  164. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reranker/__init__.py +0 -0
  165. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reranker/base.py +0 -0
  166. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reranker/cohere.py +0 -0
  167. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reranker/infinity.py +0 -0
  168. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/reranker/sentence_transformer.py +0 -0
  169. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/types.py +0 -0
  170. {agno-2.1.7 → agno-2.1.8}/agno/knowledge/utils.py +0 -0
  171. {agno-2.1.7 → agno-2.1.8}/agno/media.py +0 -0
  172. {agno-2.1.7 → agno-2.1.8}/agno/memory/__init__.py +0 -0
  173. {agno-2.1.7 → agno-2.1.8}/agno/memory/manager.py +0 -0
  174. {agno-2.1.7 → agno-2.1.8}/agno/models/__init__.py +0 -0
  175. {agno-2.1.7 → agno-2.1.8}/agno/models/aimlapi/__init__.py +0 -0
  176. {agno-2.1.7 → agno-2.1.8}/agno/models/aimlapi/aimlapi.py +0 -0
  177. {agno-2.1.7 → agno-2.1.8}/agno/models/anthropic/__init__.py +0 -0
  178. {agno-2.1.7 → agno-2.1.8}/agno/models/anthropic/claude.py +0 -0
  179. {agno-2.1.7 → agno-2.1.8}/agno/models/aws/__init__.py +0 -0
  180. {agno-2.1.7 → agno-2.1.8}/agno/models/aws/bedrock.py +0 -0
  181. {agno-2.1.7 → agno-2.1.8}/agno/models/aws/claude.py +0 -0
  182. {agno-2.1.7 → agno-2.1.8}/agno/models/azure/__init__.py +0 -0
  183. {agno-2.1.7 → agno-2.1.8}/agno/models/azure/ai_foundry.py +0 -0
  184. {agno-2.1.7 → agno-2.1.8}/agno/models/azure/openai_chat.py +0 -0
  185. {agno-2.1.7 → agno-2.1.8}/agno/models/base.py +0 -0
  186. {agno-2.1.7 → agno-2.1.8}/agno/models/cerebras/__init__.py +0 -0
  187. {agno-2.1.7 → agno-2.1.8}/agno/models/cerebras/cerebras.py +0 -0
  188. {agno-2.1.7 → agno-2.1.8}/agno/models/cerebras/cerebras_openai.py +0 -0
  189. {agno-2.1.7 → agno-2.1.8}/agno/models/cohere/__init__.py +0 -0
  190. {agno-2.1.7 → agno-2.1.8}/agno/models/cohere/chat.py +0 -0
  191. {agno-2.1.7 → agno-2.1.8}/agno/models/cometapi/__init__.py +0 -0
  192. {agno-2.1.7 → agno-2.1.8}/agno/models/cometapi/cometapi.py +0 -0
  193. {agno-2.1.7 → agno-2.1.8}/agno/models/dashscope/__init__.py +0 -0
  194. {agno-2.1.7 → agno-2.1.8}/agno/models/dashscope/dashscope.py +0 -0
  195. {agno-2.1.7 → agno-2.1.8}/agno/models/deepinfra/__init__.py +0 -0
  196. {agno-2.1.7 → agno-2.1.8}/agno/models/deepinfra/deepinfra.py +0 -0
  197. {agno-2.1.7 → agno-2.1.8}/agno/models/deepseek/__init__.py +0 -0
  198. {agno-2.1.7 → agno-2.1.8}/agno/models/deepseek/deepseek.py +0 -0
  199. {agno-2.1.7 → agno-2.1.8}/agno/models/defaults.py +0 -0
  200. {agno-2.1.7 → agno-2.1.8}/agno/models/fireworks/__init__.py +0 -0
  201. {agno-2.1.7 → agno-2.1.8}/agno/models/fireworks/fireworks.py +0 -0
  202. {agno-2.1.7 → agno-2.1.8}/agno/models/google/__init__.py +0 -0
  203. {agno-2.1.7 → agno-2.1.8}/agno/models/google/gemini.py +0 -0
  204. {agno-2.1.7 → agno-2.1.8}/agno/models/groq/__init__.py +0 -0
  205. {agno-2.1.7 → agno-2.1.8}/agno/models/groq/groq.py +0 -0
  206. {agno-2.1.7 → agno-2.1.8}/agno/models/huggingface/__init__.py +0 -0
  207. {agno-2.1.7 → agno-2.1.8}/agno/models/huggingface/huggingface.py +0 -0
  208. {agno-2.1.7 → agno-2.1.8}/agno/models/ibm/__init__.py +0 -0
  209. {agno-2.1.7 → agno-2.1.8}/agno/models/ibm/watsonx.py +0 -0
  210. {agno-2.1.7 → agno-2.1.8}/agno/models/internlm/__init__.py +0 -0
  211. {agno-2.1.7 → agno-2.1.8}/agno/models/internlm/internlm.py +0 -0
  212. {agno-2.1.7 → agno-2.1.8}/agno/models/langdb/__init__.py +0 -0
  213. {agno-2.1.7 → agno-2.1.8}/agno/models/langdb/langdb.py +0 -0
  214. {agno-2.1.7 → agno-2.1.8}/agno/models/litellm/__init__.py +0 -0
  215. {agno-2.1.7 → agno-2.1.8}/agno/models/litellm/chat.py +0 -0
  216. {agno-2.1.7 → agno-2.1.8}/agno/models/litellm/litellm_openai.py +0 -0
  217. {agno-2.1.7 → agno-2.1.8}/agno/models/llama_cpp/__init__.py +0 -0
  218. {agno-2.1.7 → agno-2.1.8}/agno/models/llama_cpp/llama_cpp.py +0 -0
  219. {agno-2.1.7 → agno-2.1.8}/agno/models/lmstudio/__init__.py +0 -0
  220. {agno-2.1.7 → agno-2.1.8}/agno/models/lmstudio/lmstudio.py +0 -0
  221. {agno-2.1.7 → agno-2.1.8}/agno/models/message.py +0 -0
  222. {agno-2.1.7 → agno-2.1.8}/agno/models/meta/__init__.py +0 -0
  223. {agno-2.1.7 → agno-2.1.8}/agno/models/meta/llama.py +0 -0
  224. {agno-2.1.7 → agno-2.1.8}/agno/models/meta/llama_openai.py +0 -0
  225. {agno-2.1.7 → agno-2.1.8}/agno/models/metrics.py +0 -0
  226. {agno-2.1.7 → agno-2.1.8}/agno/models/mistral/__init__.py +0 -0
  227. {agno-2.1.7 → agno-2.1.8}/agno/models/mistral/mistral.py +0 -0
  228. {agno-2.1.7 → agno-2.1.8}/agno/models/nebius/__init__.py +0 -0
  229. {agno-2.1.7 → agno-2.1.8}/agno/models/nebius/nebius.py +0 -0
  230. {agno-2.1.7 → agno-2.1.8}/agno/models/nexus/__init__.py +0 -0
  231. {agno-2.1.7 → agno-2.1.8}/agno/models/nexus/nexus.py +0 -0
  232. {agno-2.1.7 → agno-2.1.8}/agno/models/nvidia/__init__.py +0 -0
  233. {agno-2.1.7 → agno-2.1.8}/agno/models/nvidia/nvidia.py +0 -0
  234. {agno-2.1.7 → agno-2.1.8}/agno/models/ollama/__init__.py +0 -0
  235. {agno-2.1.7 → agno-2.1.8}/agno/models/ollama/chat.py +0 -0
  236. {agno-2.1.7 → agno-2.1.8}/agno/models/openai/__init__.py +0 -0
  237. {agno-2.1.7 → agno-2.1.8}/agno/models/openai/chat.py +0 -0
  238. {agno-2.1.7 → agno-2.1.8}/agno/models/openai/like.py +0 -0
  239. {agno-2.1.7 → agno-2.1.8}/agno/models/openai/responses.py +0 -0
  240. {agno-2.1.7 → agno-2.1.8}/agno/models/openrouter/__init__.py +0 -0
  241. {agno-2.1.7 → agno-2.1.8}/agno/models/openrouter/openrouter.py +0 -0
  242. {agno-2.1.7 → agno-2.1.8}/agno/models/perplexity/__init__.py +0 -0
  243. {agno-2.1.7 → agno-2.1.8}/agno/models/perplexity/perplexity.py +0 -0
  244. {agno-2.1.7 → agno-2.1.8}/agno/models/portkey/__init__.py +0 -0
  245. {agno-2.1.7 → agno-2.1.8}/agno/models/portkey/portkey.py +0 -0
  246. {agno-2.1.7 → agno-2.1.8}/agno/models/requesty/__init__.py +0 -0
  247. {agno-2.1.7 → agno-2.1.8}/agno/models/requesty/requesty.py +0 -0
  248. {agno-2.1.7 → agno-2.1.8}/agno/models/response.py +0 -0
  249. {agno-2.1.7 → agno-2.1.8}/agno/models/sambanova/__init__.py +0 -0
  250. {agno-2.1.7 → agno-2.1.8}/agno/models/sambanova/sambanova.py +0 -0
  251. {agno-2.1.7 → agno-2.1.8}/agno/models/siliconflow/__init__.py +0 -0
  252. {agno-2.1.7 → agno-2.1.8}/agno/models/siliconflow/siliconflow.py +0 -0
  253. {agno-2.1.7 → agno-2.1.8}/agno/models/together/__init__.py +0 -0
  254. {agno-2.1.7 → agno-2.1.8}/agno/models/together/together.py +0 -0
  255. {agno-2.1.7 → agno-2.1.8}/agno/models/utils.py +0 -0
  256. {agno-2.1.7 → agno-2.1.8}/agno/models/vercel/__init__.py +0 -0
  257. {agno-2.1.7 → agno-2.1.8}/agno/models/vercel/v0.py +0 -0
  258. {agno-2.1.7 → agno-2.1.8}/agno/models/vertexai/__init__.py +0 -0
  259. {agno-2.1.7 → agno-2.1.8}/agno/models/vertexai/claude.py +0 -0
  260. {agno-2.1.7 → agno-2.1.8}/agno/models/vllm/__init__.py +0 -0
  261. {agno-2.1.7 → agno-2.1.8}/agno/models/vllm/vllm.py +0 -0
  262. {agno-2.1.7 → agno-2.1.8}/agno/models/xai/__init__.py +0 -0
  263. {agno-2.1.7 → agno-2.1.8}/agno/models/xai/xai.py +0 -0
  264. {agno-2.1.7 → agno-2.1.8}/agno/os/__init__.py +0 -0
  265. {agno-2.1.7 → agno-2.1.8}/agno/os/app.py +0 -0
  266. {agno-2.1.7 → agno-2.1.8}/agno/os/auth.py +0 -0
  267. {agno-2.1.7 → agno-2.1.8}/agno/os/config.py +0 -0
  268. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/__init__.py +0 -0
  269. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/a2a/__init__.py +0 -0
  270. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/a2a/a2a.py +0 -0
  271. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/a2a/router.py +0 -0
  272. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/a2a/utils.py +0 -0
  273. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/agui/__init__.py +0 -0
  274. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/agui/agui.py +0 -0
  275. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/agui/router.py +0 -0
  276. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/agui/utils.py +0 -0
  277. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/base.py +0 -0
  278. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/slack/__init__.py +0 -0
  279. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/slack/router.py +0 -0
  280. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/slack/security.py +0 -0
  281. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/slack/slack.py +0 -0
  282. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/whatsapp/__init__.py +0 -0
  283. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/whatsapp/router.py +0 -0
  284. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/whatsapp/security.py +0 -0
  285. {agno-2.1.7 → agno-2.1.8}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
  286. {agno-2.1.7 → agno-2.1.8}/agno/os/mcp.py +0 -0
  287. {agno-2.1.7 → agno-2.1.8}/agno/os/middleware/__init__.py +0 -0
  288. {agno-2.1.7 → agno-2.1.8}/agno/os/middleware/jwt.py +0 -0
  289. {agno-2.1.7 → agno-2.1.8}/agno/os/router.py +0 -0
  290. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/__init__.py +0 -0
  291. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/evals/__init__.py +0 -0
  292. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/evals/evals.py +0 -0
  293. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/evals/schemas.py +0 -0
  294. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/evals/utils.py +0 -0
  295. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/health.py +0 -0
  296. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/home.py +0 -0
  297. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/knowledge/__init__.py +0 -0
  298. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/knowledge/schemas.py +0 -0
  299. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/memory/__init__.py +0 -0
  300. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/memory/memory.py +0 -0
  301. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/memory/schemas.py +0 -0
  302. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/metrics/__init__.py +0 -0
  303. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/metrics/metrics.py +0 -0
  304. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/metrics/schemas.py +0 -0
  305. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/session/__init__.py +0 -0
  306. {agno-2.1.7 → agno-2.1.8}/agno/os/routers/session/session.py +0 -0
  307. {agno-2.1.7 → agno-2.1.8}/agno/os/settings.py +0 -0
  308. {agno-2.1.7 → agno-2.1.8}/agno/os/utils.py +0 -0
  309. {agno-2.1.7 → agno-2.1.8}/agno/py.typed +0 -0
  310. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/__init__.py +0 -0
  311. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/anthropic.py +0 -0
  312. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/azure_ai_foundry.py +0 -0
  313. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/deepseek.py +0 -0
  314. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/default.py +0 -0
  315. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/gemini.py +0 -0
  316. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/groq.py +0 -0
  317. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/helpers.py +0 -0
  318. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/ollama.py +0 -0
  319. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/openai.py +0 -0
  320. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/step.py +0 -0
  321. {agno-2.1.7 → agno-2.1.8}/agno/reasoning/vertexai.py +0 -0
  322. {agno-2.1.7 → agno-2.1.8}/agno/run/__init__.py +0 -0
  323. {agno-2.1.7 → agno-2.1.8}/agno/run/agent.py +0 -0
  324. {agno-2.1.7 → agno-2.1.8}/agno/run/base.py +0 -0
  325. {agno-2.1.7 → agno-2.1.8}/agno/run/cancel.py +0 -0
  326. {agno-2.1.7 → agno-2.1.8}/agno/run/messages.py +0 -0
  327. {agno-2.1.7 → agno-2.1.8}/agno/run/team.py +0 -0
  328. {agno-2.1.7 → agno-2.1.8}/agno/run/workflow.py +0 -0
  329. {agno-2.1.7 → agno-2.1.8}/agno/session/__init__.py +0 -0
  330. {agno-2.1.7 → agno-2.1.8}/agno/session/agent.py +0 -0
  331. {agno-2.1.7 → agno-2.1.8}/agno/session/summary.py +0 -0
  332. {agno-2.1.7 → agno-2.1.8}/agno/session/team.py +0 -0
  333. {agno-2.1.7 → agno-2.1.8}/agno/session/workflow.py +0 -0
  334. {agno-2.1.7 → agno-2.1.8}/agno/team/__init__.py +0 -0
  335. {agno-2.1.7 → agno-2.1.8}/agno/tools/__init__.py +0 -0
  336. {agno-2.1.7 → agno-2.1.8}/agno/tools/agentql.py +0 -0
  337. {agno-2.1.7 → agno-2.1.8}/agno/tools/airflow.py +0 -0
  338. {agno-2.1.7 → agno-2.1.8}/agno/tools/api.py +0 -0
  339. {agno-2.1.7 → agno-2.1.8}/agno/tools/apify.py +0 -0
  340. {agno-2.1.7 → agno-2.1.8}/agno/tools/arxiv.py +0 -0
  341. {agno-2.1.7 → agno-2.1.8}/agno/tools/aws_lambda.py +0 -0
  342. {agno-2.1.7 → agno-2.1.8}/agno/tools/aws_ses.py +0 -0
  343. {agno-2.1.7 → agno-2.1.8}/agno/tools/baidusearch.py +0 -0
  344. {agno-2.1.7 → agno-2.1.8}/agno/tools/bitbucket.py +0 -0
  345. {agno-2.1.7 → agno-2.1.8}/agno/tools/brandfetch.py +0 -0
  346. {agno-2.1.7 → agno-2.1.8}/agno/tools/bravesearch.py +0 -0
  347. {agno-2.1.7 → agno-2.1.8}/agno/tools/brightdata.py +0 -0
  348. {agno-2.1.7 → agno-2.1.8}/agno/tools/browserbase.py +0 -0
  349. {agno-2.1.7 → agno-2.1.8}/agno/tools/calcom.py +0 -0
  350. {agno-2.1.7 → agno-2.1.8}/agno/tools/calculator.py +0 -0
  351. {agno-2.1.7 → agno-2.1.8}/agno/tools/cartesia.py +0 -0
  352. {agno-2.1.7 → agno-2.1.8}/agno/tools/clickup.py +0 -0
  353. {agno-2.1.7 → agno-2.1.8}/agno/tools/confluence.py +0 -0
  354. {agno-2.1.7 → agno-2.1.8}/agno/tools/crawl4ai.py +0 -0
  355. {agno-2.1.7 → agno-2.1.8}/agno/tools/csv_toolkit.py +0 -0
  356. {agno-2.1.7 → agno-2.1.8}/agno/tools/dalle.py +0 -0
  357. {agno-2.1.7 → agno-2.1.8}/agno/tools/daytona.py +0 -0
  358. {agno-2.1.7 → agno-2.1.8}/agno/tools/decorator.py +0 -0
  359. {agno-2.1.7 → agno-2.1.8}/agno/tools/desi_vocal.py +0 -0
  360. {agno-2.1.7 → agno-2.1.8}/agno/tools/discord.py +0 -0
  361. {agno-2.1.7 → agno-2.1.8}/agno/tools/docker.py +0 -0
  362. {agno-2.1.7 → agno-2.1.8}/agno/tools/duckdb.py +0 -0
  363. {agno-2.1.7 → agno-2.1.8}/agno/tools/duckduckgo.py +0 -0
  364. {agno-2.1.7 → agno-2.1.8}/agno/tools/e2b.py +0 -0
  365. {agno-2.1.7 → agno-2.1.8}/agno/tools/eleven_labs.py +0 -0
  366. {agno-2.1.7 → agno-2.1.8}/agno/tools/email.py +0 -0
  367. {agno-2.1.7 → agno-2.1.8}/agno/tools/evm.py +0 -0
  368. {agno-2.1.7 → agno-2.1.8}/agno/tools/exa.py +0 -0
  369. {agno-2.1.7 → agno-2.1.8}/agno/tools/fal.py +0 -0
  370. {agno-2.1.7 → agno-2.1.8}/agno/tools/file.py +0 -0
  371. {agno-2.1.7 → agno-2.1.8}/agno/tools/file_generation.py +0 -0
  372. {agno-2.1.7 → agno-2.1.8}/agno/tools/financial_datasets.py +0 -0
  373. {agno-2.1.7 → agno-2.1.8}/agno/tools/firecrawl.py +0 -0
  374. {agno-2.1.7 → agno-2.1.8}/agno/tools/function.py +0 -0
  375. {agno-2.1.7 → agno-2.1.8}/agno/tools/giphy.py +0 -0
  376. {agno-2.1.7 → agno-2.1.8}/agno/tools/github.py +0 -0
  377. {agno-2.1.7 → agno-2.1.8}/agno/tools/gmail.py +0 -0
  378. {agno-2.1.7 → agno-2.1.8}/agno/tools/google_bigquery.py +0 -0
  379. {agno-2.1.7 → agno-2.1.8}/agno/tools/google_drive.py +0 -0
  380. {agno-2.1.7 → agno-2.1.8}/agno/tools/google_maps.py +0 -0
  381. {agno-2.1.7 → agno-2.1.8}/agno/tools/googlesearch.py +0 -0
  382. {agno-2.1.7 → agno-2.1.8}/agno/tools/googlesheets.py +0 -0
  383. {agno-2.1.7 → agno-2.1.8}/agno/tools/hackernews.py +0 -0
  384. {agno-2.1.7 → agno-2.1.8}/agno/tools/jina.py +0 -0
  385. {agno-2.1.7 → agno-2.1.8}/agno/tools/knowledge.py +0 -0
  386. {agno-2.1.7 → agno-2.1.8}/agno/tools/linear.py +0 -0
  387. {agno-2.1.7 → agno-2.1.8}/agno/tools/linkup.py +0 -0
  388. {agno-2.1.7 → agno-2.1.8}/agno/tools/local_file_system.py +0 -0
  389. {agno-2.1.7 → agno-2.1.8}/agno/tools/lumalab.py +0 -0
  390. {agno-2.1.7 → agno-2.1.8}/agno/tools/mcp.py +0 -0
  391. {agno-2.1.7 → agno-2.1.8}/agno/tools/mcp_toolbox.py +0 -0
  392. {agno-2.1.7 → agno-2.1.8}/agno/tools/mem0.py +0 -0
  393. {agno-2.1.7 → agno-2.1.8}/agno/tools/memori.py +0 -0
  394. {agno-2.1.7 → agno-2.1.8}/agno/tools/memory.py +0 -0
  395. {agno-2.1.7 → agno-2.1.8}/agno/tools/mlx_transcribe.py +0 -0
  396. {agno-2.1.7 → agno-2.1.8}/agno/tools/models/__init__.py +0 -0
  397. {agno-2.1.7 → agno-2.1.8}/agno/tools/models/azure_openai.py +0 -0
  398. {agno-2.1.7 → agno-2.1.8}/agno/tools/models/gemini.py +0 -0
  399. {agno-2.1.7 → agno-2.1.8}/agno/tools/models/groq.py +0 -0
  400. {agno-2.1.7 → agno-2.1.8}/agno/tools/models/morph.py +0 -0
  401. {agno-2.1.7 → agno-2.1.8}/agno/tools/models/nebius.py +0 -0
  402. {agno-2.1.7 → agno-2.1.8}/agno/tools/models_labs.py +0 -0
  403. {agno-2.1.7 → agno-2.1.8}/agno/tools/moviepy_video.py +0 -0
  404. {agno-2.1.7 → agno-2.1.8}/agno/tools/neo4j.py +0 -0
  405. {agno-2.1.7 → agno-2.1.8}/agno/tools/newspaper.py +0 -0
  406. {agno-2.1.7 → agno-2.1.8}/agno/tools/newspaper4k.py +0 -0
  407. {agno-2.1.7 → agno-2.1.8}/agno/tools/openai.py +0 -0
  408. {agno-2.1.7 → agno-2.1.8}/agno/tools/openbb.py +0 -0
  409. {agno-2.1.7 → agno-2.1.8}/agno/tools/opencv.py +0 -0
  410. {agno-2.1.7 → agno-2.1.8}/agno/tools/openweather.py +0 -0
  411. {agno-2.1.7 → agno-2.1.8}/agno/tools/oxylabs.py +0 -0
  412. {agno-2.1.7 → agno-2.1.8}/agno/tools/pandas.py +0 -0
  413. {agno-2.1.7 → agno-2.1.8}/agno/tools/postgres.py +0 -0
  414. {agno-2.1.7 → agno-2.1.8}/agno/tools/pubmed.py +0 -0
  415. {agno-2.1.7 → agno-2.1.8}/agno/tools/python.py +0 -0
  416. {agno-2.1.7 → agno-2.1.8}/agno/tools/reasoning.py +0 -0
  417. {agno-2.1.7 → agno-2.1.8}/agno/tools/reddit.py +0 -0
  418. {agno-2.1.7 → agno-2.1.8}/agno/tools/replicate.py +0 -0
  419. {agno-2.1.7 → agno-2.1.8}/agno/tools/resend.py +0 -0
  420. {agno-2.1.7 → agno-2.1.8}/agno/tools/scrapegraph.py +0 -0
  421. {agno-2.1.7 → agno-2.1.8}/agno/tools/searxng.py +0 -0
  422. {agno-2.1.7 → agno-2.1.8}/agno/tools/serpapi.py +0 -0
  423. {agno-2.1.7 → agno-2.1.8}/agno/tools/serper.py +0 -0
  424. {agno-2.1.7 → agno-2.1.8}/agno/tools/shell.py +0 -0
  425. {agno-2.1.7 → agno-2.1.8}/agno/tools/slack.py +0 -0
  426. {agno-2.1.7 → agno-2.1.8}/agno/tools/sleep.py +0 -0
  427. {agno-2.1.7 → agno-2.1.8}/agno/tools/spider.py +0 -0
  428. {agno-2.1.7 → agno-2.1.8}/agno/tools/sql.py +0 -0
  429. {agno-2.1.7 → agno-2.1.8}/agno/tools/streamlit/__init__.py +0 -0
  430. {agno-2.1.7 → agno-2.1.8}/agno/tools/streamlit/components.py +0 -0
  431. {agno-2.1.7 → agno-2.1.8}/agno/tools/tavily.py +0 -0
  432. {agno-2.1.7 → agno-2.1.8}/agno/tools/telegram.py +0 -0
  433. {agno-2.1.7 → agno-2.1.8}/agno/tools/todoist.py +0 -0
  434. {agno-2.1.7 → agno-2.1.8}/agno/tools/tool_registry.py +0 -0
  435. {agno-2.1.7 → agno-2.1.8}/agno/tools/toolkit.py +0 -0
  436. {agno-2.1.7 → agno-2.1.8}/agno/tools/trafilatura.py +0 -0
  437. {agno-2.1.7 → agno-2.1.8}/agno/tools/trello.py +0 -0
  438. {agno-2.1.7 → agno-2.1.8}/agno/tools/twilio.py +0 -0
  439. {agno-2.1.7 → agno-2.1.8}/agno/tools/user_control_flow.py +0 -0
  440. {agno-2.1.7 → agno-2.1.8}/agno/tools/valyu.py +0 -0
  441. {agno-2.1.7 → agno-2.1.8}/agno/tools/visualization.py +0 -0
  442. {agno-2.1.7 → agno-2.1.8}/agno/tools/webbrowser.py +0 -0
  443. {agno-2.1.7 → agno-2.1.8}/agno/tools/webex.py +0 -0
  444. {agno-2.1.7 → agno-2.1.8}/agno/tools/website.py +0 -0
  445. {agno-2.1.7 → agno-2.1.8}/agno/tools/webtools.py +0 -0
  446. {agno-2.1.7 → agno-2.1.8}/agno/tools/whatsapp.py +0 -0
  447. {agno-2.1.7 → agno-2.1.8}/agno/tools/wikipedia.py +0 -0
  448. {agno-2.1.7 → agno-2.1.8}/agno/tools/workflow.py +0 -0
  449. {agno-2.1.7 → agno-2.1.8}/agno/tools/x.py +0 -0
  450. {agno-2.1.7 → agno-2.1.8}/agno/tools/yfinance.py +0 -0
  451. {agno-2.1.7 → agno-2.1.8}/agno/tools/youtube.py +0 -0
  452. {agno-2.1.7 → agno-2.1.8}/agno/tools/zendesk.py +0 -0
  453. {agno-2.1.7 → agno-2.1.8}/agno/tools/zep.py +0 -0
  454. {agno-2.1.7 → agno-2.1.8}/agno/tools/zoom.py +0 -0
  455. {agno-2.1.7 → agno-2.1.8}/agno/utils/__init__.py +0 -0
  456. {agno-2.1.7 → agno-2.1.8}/agno/utils/audio.py +0 -0
  457. {agno-2.1.7 → agno-2.1.8}/agno/utils/certs.py +0 -0
  458. {agno-2.1.7 → agno-2.1.8}/agno/utils/code_execution.py +0 -0
  459. {agno-2.1.7 → agno-2.1.8}/agno/utils/common.py +0 -0
  460. {agno-2.1.7 → agno-2.1.8}/agno/utils/dttm.py +0 -0
  461. {agno-2.1.7 → agno-2.1.8}/agno/utils/enum.py +0 -0
  462. {agno-2.1.7 → agno-2.1.8}/agno/utils/env.py +0 -0
  463. {agno-2.1.7 → agno-2.1.8}/agno/utils/events.py +0 -0
  464. {agno-2.1.7 → agno-2.1.8}/agno/utils/format_str.py +0 -0
  465. {agno-2.1.7 → agno-2.1.8}/agno/utils/functions.py +0 -0
  466. {agno-2.1.7 → agno-2.1.8}/agno/utils/gemini.py +0 -0
  467. {agno-2.1.7 → agno-2.1.8}/agno/utils/hooks.py +0 -0
  468. {agno-2.1.7 → agno-2.1.8}/agno/utils/http.py +0 -0
  469. {agno-2.1.7 → agno-2.1.8}/agno/utils/json_schema.py +0 -0
  470. {agno-2.1.7 → agno-2.1.8}/agno/utils/knowledge.py +0 -0
  471. {agno-2.1.7 → agno-2.1.8}/agno/utils/location.py +0 -0
  472. {agno-2.1.7 → agno-2.1.8}/agno/utils/log.py +0 -0
  473. {agno-2.1.7 → agno-2.1.8}/agno/utils/mcp.py +0 -0
  474. {agno-2.1.7 → agno-2.1.8}/agno/utils/media.py +0 -0
  475. {agno-2.1.7 → agno-2.1.8}/agno/utils/merge_dict.py +0 -0
  476. {agno-2.1.7 → agno-2.1.8}/agno/utils/message.py +0 -0
  477. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/__init__.py +0 -0
  478. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/ai_foundry.py +0 -0
  479. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/claude.py +0 -0
  480. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/cohere.py +0 -0
  481. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/llama.py +0 -0
  482. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/mistral.py +0 -0
  483. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/openai_responses.py +0 -0
  484. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/schema_utils.py +0 -0
  485. {agno-2.1.7 → agno-2.1.8}/agno/utils/models/watsonx.py +0 -0
  486. {agno-2.1.7 → agno-2.1.8}/agno/utils/openai.py +0 -0
  487. {agno-2.1.7 → agno-2.1.8}/agno/utils/pickle.py +0 -0
  488. {agno-2.1.7 → agno-2.1.8}/agno/utils/pprint.py +0 -0
  489. {agno-2.1.7 → agno-2.1.8}/agno/utils/print_response/__init__.py +0 -0
  490. {agno-2.1.7 → agno-2.1.8}/agno/utils/print_response/agent.py +0 -0
  491. {agno-2.1.7 → agno-2.1.8}/agno/utils/print_response/team.py +0 -0
  492. {agno-2.1.7 → agno-2.1.8}/agno/utils/print_response/workflow.py +0 -0
  493. {agno-2.1.7 → agno-2.1.8}/agno/utils/prompts.py +0 -0
  494. {agno-2.1.7 → agno-2.1.8}/agno/utils/reasoning.py +0 -0
  495. {agno-2.1.7 → agno-2.1.8}/agno/utils/response.py +0 -0
  496. {agno-2.1.7 → agno-2.1.8}/agno/utils/response_iterator.py +0 -0
  497. {agno-2.1.7 → agno-2.1.8}/agno/utils/safe_formatter.py +0 -0
  498. {agno-2.1.7 → agno-2.1.8}/agno/utils/serialize.py +0 -0
  499. {agno-2.1.7 → agno-2.1.8}/agno/utils/shell.py +0 -0
  500. {agno-2.1.7 → agno-2.1.8}/agno/utils/streamlit.py +0 -0
  501. {agno-2.1.7 → agno-2.1.8}/agno/utils/string.py +0 -0
  502. {agno-2.1.7 → agno-2.1.8}/agno/utils/team.py +0 -0
  503. {agno-2.1.7 → agno-2.1.8}/agno/utils/timer.py +0 -0
  504. {agno-2.1.7 → agno-2.1.8}/agno/utils/tools.py +0 -0
  505. {agno-2.1.7 → agno-2.1.8}/agno/utils/web.py +0 -0
  506. {agno-2.1.7 → agno-2.1.8}/agno/utils/whatsapp.py +0 -0
  507. {agno-2.1.7 → agno-2.1.8}/agno/utils/yaml_io.py +0 -0
  508. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/__init__.py +0 -0
  509. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/base.py +0 -0
  510. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/cassandra/__init__.py +0 -0
  511. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/cassandra/cassandra.py +0 -0
  512. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
  513. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/cassandra/index.py +0 -0
  514. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/chroma/__init__.py +0 -0
  515. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/chroma/chromadb.py +0 -0
  516. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/clickhouse/__init__.py +0 -0
  517. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
  518. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/clickhouse/index.py +0 -0
  519. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/couchbase/__init__.py +0 -0
  520. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/couchbase/couchbase.py +0 -0
  521. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/distance.py +0 -0
  522. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/lancedb/__init__.py +0 -0
  523. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/lancedb/lance_db.py +0 -0
  524. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/langchaindb/__init__.py +0 -0
  525. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/langchaindb/langchaindb.py +0 -0
  526. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/lightrag/__init__.py +0 -0
  527. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/lightrag/lightrag.py +0 -0
  528. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/llamaindex/__init__.py +0 -0
  529. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
  530. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/milvus/__init__.py +0 -0
  531. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/milvus/milvus.py +0 -0
  532. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/mongodb/__init__.py +0 -0
  533. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/mongodb/mongodb.py +0 -0
  534. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/pgvector/__init__.py +0 -0
  535. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/pgvector/index.py +0 -0
  536. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/pgvector/pgvector.py +0 -0
  537. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/pineconedb/__init__.py +0 -0
  538. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/pineconedb/pineconedb.py +0 -0
  539. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/qdrant/__init__.py +0 -0
  540. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/qdrant/qdrant.py +0 -0
  541. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/search.py +0 -0
  542. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/singlestore/__init__.py +0 -0
  543. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/singlestore/index.py +0 -0
  544. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/singlestore/singlestore.py +0 -0
  545. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/surrealdb/__init__.py +0 -0
  546. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/surrealdb/surrealdb.py +0 -0
  547. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/upstashdb/__init__.py +0 -0
  548. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/upstashdb/upstashdb.py +0 -0
  549. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/weaviate/__init__.py +0 -0
  550. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/weaviate/index.py +0 -0
  551. {agno-2.1.7 → agno-2.1.8}/agno/vectordb/weaviate/weaviate.py +0 -0
  552. {agno-2.1.7 → agno-2.1.8}/agno/workflow/__init__.py +0 -0
  553. {agno-2.1.7 → agno-2.1.8}/agno/workflow/condition.py +0 -0
  554. {agno-2.1.7 → agno-2.1.8}/agno/workflow/loop.py +0 -0
  555. {agno-2.1.7 → agno-2.1.8}/agno/workflow/parallel.py +0 -0
  556. {agno-2.1.7 → agno-2.1.8}/agno/workflow/router.py +0 -0
  557. {agno-2.1.7 → agno-2.1.8}/agno/workflow/steps.py +0 -0
  558. {agno-2.1.7 → agno-2.1.8}/agno/workflow/types.py +0 -0
  559. {agno-2.1.7 → agno-2.1.8}/agno/workflow/workflow.py +0 -0
  560. {agno-2.1.7 → agno-2.1.8}/agno.egg-info/SOURCES.txt +0 -0
  561. {agno-2.1.7 → agno-2.1.8}/agno.egg-info/dependency_links.txt +0 -0
  562. {agno-2.1.7 → agno-2.1.8}/agno.egg-info/requires.txt +0 -0
  563. {agno-2.1.7 → agno-2.1.8}/agno.egg-info/top_level.txt +0 -0
  564. {agno-2.1.7 → agno-2.1.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.1.7
3
+ Version: 2.1.8
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
@@ -819,6 +819,9 @@ class Agent:
819
819
  hooks=self.pre_hooks, # type: ignore
820
820
  run_response=run_response,
821
821
  run_input=run_input,
822
+ session_state=session_state,
823
+ dependencies=dependencies,
824
+ metadata=metadata,
822
825
  session=session,
823
826
  user_id=user_id,
824
827
  debug_mode=debug_mode,
@@ -902,25 +905,26 @@ class Agent:
902
905
  run_response=run_response, run_messages=run_messages, session=session, user_id=user_id
903
906
  )
904
907
 
905
- run_response.status = RunStatus.completed
906
-
907
908
  # Convert the response to the structured format if needed
908
909
  self._convert_response_to_structured_format(run_response)
909
910
 
910
- # Stop the timer for the Run duration
911
- if run_response.metrics:
912
- run_response.metrics.stop_timer()
913
-
914
- # 6. Execute post-hooks after output is generated but before response is returned
911
+ # Execute post-hooks after output is generated but before response is returned
915
912
  if self.post_hooks is not None:
916
913
  self._execute_post_hooks(
917
914
  hooks=self.post_hooks, # type: ignore
918
915
  run_output=run_response,
916
+ session_state=session_state,
917
+ dependencies=dependencies,
918
+ metadata=metadata,
919
919
  session=session,
920
920
  user_id=user_id,
921
921
  debug_mode=debug_mode,
922
922
  **kwargs,
923
923
  )
924
+ run_response.status = RunStatus.completed
925
+ # Stop the timer for the Run duration
926
+ if run_response.metrics:
927
+ run_response.metrics.stop_timer()
924
928
 
925
929
  # 7. Calculate session metrics
926
930
  self._update_session_metrics(session=session, run_response=run_response)
@@ -1002,6 +1006,9 @@ class Agent:
1002
1006
  hooks=self.pre_hooks, # type: ignore
1003
1007
  run_response=run_response,
1004
1008
  run_input=run_input,
1009
+ session_state=session_state,
1010
+ dependencies=dependencies,
1011
+ metadata=metadata,
1005
1012
  session=session,
1006
1013
  user_id=user_id,
1007
1014
  debug_mode=debug_mode,
@@ -1115,14 +1122,26 @@ class Agent:
1115
1122
  )
1116
1123
  return
1117
1124
 
1125
+ # Execute post-hooks after output is generated but before response is returned
1126
+ if self.post_hooks is not None:
1127
+ self._execute_post_hooks(
1128
+ hooks=self.post_hooks, # type: ignore
1129
+ run_output=run_response,
1130
+ session_state=session_state,
1131
+ dependencies=dependencies,
1132
+ metadata=metadata,
1133
+ session=session,
1134
+ user_id=user_id,
1135
+ debug_mode=debug_mode,
1136
+ **kwargs,
1137
+ )
1138
+
1118
1139
  run_response.status = RunStatus.completed
1119
1140
 
1120
1141
  # Set the run duration
1121
1142
  if run_response.metrics:
1122
1143
  run_response.metrics.stop_timer()
1123
1144
 
1124
- # TODO: For now we don't run post-hooks during streaming
1125
-
1126
1145
  # 5. Calculate session metrics
1127
1146
  self._update_session_metrics(session=session, run_response=run_response)
1128
1147
 
@@ -1350,7 +1369,6 @@ class Agent:
1350
1369
  self.model = cast(Model, self.model)
1351
1370
 
1352
1371
  # Merge agent metadata with run metadata
1353
-
1354
1372
  if self.metadata is not None:
1355
1373
  if metadata is None:
1356
1374
  metadata = self.metadata
@@ -1534,6 +1552,9 @@ class Agent:
1534
1552
  hooks=self.pre_hooks, # type: ignore
1535
1553
  run_response=run_response,
1536
1554
  run_input=run_input,
1555
+ session_state=session_state,
1556
+ dependencies=dependencies,
1557
+ metadata=metadata,
1537
1558
  session=agent_session,
1538
1559
  user_id=user_id,
1539
1560
  debug_mode=debug_mode,
@@ -1619,27 +1640,30 @@ class Agent:
1619
1640
  # 10. Calculate session metrics
1620
1641
  self._update_session_metrics(session=agent_session, run_response=run_response)
1621
1642
 
1622
- # Set the run status to completed
1623
- run_response.status = RunStatus.completed
1624
-
1625
1643
  # Convert the response to the structured format if needed
1626
1644
  self._convert_response_to_structured_format(run_response)
1627
1645
 
1628
- # Set the run duration
1629
- if run_response.metrics:
1630
- run_response.metrics.stop_timer()
1631
-
1632
- # 10. Execute post-hooks (after output is generated but before response is returned)
1646
+ # Execute post-hooks (after output is generated but before response is returned)
1633
1647
  if self.post_hooks is not None:
1634
1648
  await self._aexecute_post_hooks(
1635
1649
  hooks=self.post_hooks, # type: ignore
1636
1650
  run_output=run_response,
1651
+ session_state=session_state,
1652
+ dependencies=dependencies,
1653
+ metadata=metadata,
1637
1654
  session=agent_session,
1638
1655
  user_id=user_id,
1639
1656
  debug_mode=debug_mode,
1640
1657
  **kwargs,
1641
1658
  )
1642
1659
 
1660
+ # Set the run status to completed
1661
+ run_response.status = RunStatus.completed
1662
+
1663
+ # Set the run duration
1664
+ if run_response.metrics:
1665
+ run_response.metrics.stop_timer()
1666
+
1643
1667
  # Optional: Save output to file if save_response_to_file is set
1644
1668
  self.save_run_response_to_file(
1645
1669
  run_response=run_response,
@@ -1872,6 +1896,20 @@ class Agent:
1872
1896
  yield item
1873
1897
  return
1874
1898
 
1899
+ # Execute post-hooks (after output is generated but before response is returned)
1900
+ if self.post_hooks is not None:
1901
+ await self._aexecute_post_hooks(
1902
+ hooks=self.post_hooks, # type: ignore
1903
+ run_output=run_response,
1904
+ session_state=session_state,
1905
+ dependencies=dependencies,
1906
+ metadata=metadata,
1907
+ session=agent_session,
1908
+ user_id=user_id,
1909
+ debug_mode=debug_mode,
1910
+ **kwargs,
1911
+ )
1912
+
1875
1913
  # Set the run status to completed
1876
1914
  run_response.status = RunStatus.completed
1877
1915
 
@@ -2219,6 +2257,7 @@ class Agent:
2219
2257
  retries: Optional[int] = None,
2220
2258
  knowledge_filters: Optional[Dict[str, Any]] = None,
2221
2259
  dependencies: Optional[Dict[str, Any]] = None,
2260
+ metadata: Optional[Dict[str, Any]] = None,
2222
2261
  debug_mode: Optional[bool] = None,
2223
2262
  ) -> RunOutput: ...
2224
2263
 
@@ -2236,6 +2275,7 @@ class Agent:
2236
2275
  retries: Optional[int] = None,
2237
2276
  knowledge_filters: Optional[Dict[str, Any]] = None,
2238
2277
  dependencies: Optional[Dict[str, Any]] = None,
2278
+ metadata: Optional[Dict[str, Any]] = None,
2239
2279
  debug_mode: Optional[bool] = None,
2240
2280
  ) -> Iterator[RunOutputEvent]: ...
2241
2281
 
@@ -2252,6 +2292,7 @@ class Agent:
2252
2292
  retries: Optional[int] = None,
2253
2293
  knowledge_filters: Optional[Dict[str, Any]] = None,
2254
2294
  dependencies: Optional[Dict[str, Any]] = None,
2295
+ metadata: Optional[Dict[str, Any]] = None,
2255
2296
  debug_mode: Optional[bool] = None,
2256
2297
  **kwargs,
2257
2298
  ) -> Union[RunOutput, Iterator[RunOutputEvent]]:
@@ -2308,6 +2349,13 @@ class Agent:
2308
2349
  if self.knowledge_filters or knowledge_filters:
2309
2350
  effective_filters = self._get_effective_filters(knowledge_filters)
2310
2351
 
2352
+ # Merge agent metadata with run metadata
2353
+ if self.metadata is not None:
2354
+ if metadata is None:
2355
+ metadata = self.metadata
2356
+ else:
2357
+ merge_dictionaries(metadata, self.metadata)
2358
+
2311
2359
  # If no retries are set, use the agent's default retries
2312
2360
  retries = retries if retries is not None else self.retries
2313
2361
 
@@ -2383,8 +2431,13 @@ class Agent:
2383
2431
  run_messages=run_messages,
2384
2432
  user_id=user_id,
2385
2433
  session=agent_session,
2434
+ session_state=session_state,
2435
+ dependencies=run_dependencies,
2436
+ metadata=metadata,
2386
2437
  response_format=response_format,
2387
2438
  stream_intermediate_steps=stream_intermediate_steps,
2439
+ debug_mode=debug_mode,
2440
+ **kwargs,
2388
2441
  )
2389
2442
  return response_iterator
2390
2443
  else:
@@ -2393,6 +2446,9 @@ class Agent:
2393
2446
  run_messages=run_messages,
2394
2447
  user_id=user_id,
2395
2448
  session=agent_session,
2449
+ session_state=session_state,
2450
+ dependencies=run_dependencies,
2451
+ metadata=metadata,
2396
2452
  response_format=response_format,
2397
2453
  debug_mode=debug_mode,
2398
2454
  **kwargs,
@@ -2440,6 +2496,9 @@ class Agent:
2440
2496
  run_response: RunOutput,
2441
2497
  run_messages: RunMessages,
2442
2498
  session: AgentSession,
2499
+ session_state: Optional[Dict[str, Any]] = None,
2500
+ dependencies: Optional[Dict[str, Any]] = None,
2501
+ metadata: Optional[Dict[str, Any]] = None,
2443
2502
  user_id: Optional[str] = None,
2444
2503
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
2445
2504
  debug_mode: Optional[bool] = None,
@@ -2483,25 +2542,27 @@ class Agent:
2483
2542
  # 3. Calculate session metrics
2484
2543
  self._update_session_metrics(session=session, run_response=run_response)
2485
2544
 
2486
- run_response.status = RunStatus.completed
2487
-
2488
2545
  # Convert the response to the structured format if needed
2489
2546
  self._convert_response_to_structured_format(run_response)
2490
2547
 
2491
- # Set the run duration
2492
- if run_response.metrics:
2493
- run_response.metrics.stop_timer()
2494
-
2495
2548
  if self.post_hooks is not None:
2496
2549
  self._execute_post_hooks(
2497
2550
  hooks=self.post_hooks, # type: ignore
2498
2551
  run_output=run_response,
2552
+ session_state=session_state,
2553
+ dependencies=dependencies,
2554
+ metadata=metadata,
2499
2555
  session=session,
2500
2556
  user_id=user_id,
2501
2557
  debug_mode=debug_mode,
2502
2558
  **kwargs,
2503
2559
  )
2504
2560
 
2561
+ run_response.status = RunStatus.completed
2562
+ # Set the run duration
2563
+ if run_response.metrics:
2564
+ run_response.metrics.stop_timer()
2565
+
2505
2566
  # 4. Save output to file if save_response_to_file is set
2506
2567
  self.save_run_response_to_file(
2507
2568
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
@@ -2530,10 +2591,14 @@ class Agent:
2530
2591
  run_response: RunOutput,
2531
2592
  run_messages: RunMessages,
2532
2593
  session: AgentSession,
2594
+ session_state: Optional[Dict[str, Any]] = None,
2595
+ metadata: Optional[Dict[str, Any]] = None,
2533
2596
  user_id: Optional[str] = None,
2534
2597
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
2535
2598
  stream_intermediate_steps: bool = False,
2536
2599
  dependencies: Optional[Dict[str, Any]] = None,
2600
+ debug_mode: Optional[bool] = None,
2601
+ **kwargs,
2537
2602
  ) -> Iterator[RunOutputEvent]:
2538
2603
  """Continue a previous run.
2539
2604
 
@@ -2575,8 +2640,18 @@ class Agent:
2575
2640
  )
2576
2641
  return
2577
2642
 
2578
- # 3. Calculate session metrics
2579
- self._update_session_metrics(session=session, run_response=run_response)
2643
+ if self.post_hooks is not None:
2644
+ self._execute_post_hooks(
2645
+ hooks=self.post_hooks, # type: ignore
2646
+ run_output=run_response,
2647
+ session_state=session_state,
2648
+ dependencies=dependencies,
2649
+ metadata=metadata,
2650
+ session=session,
2651
+ user_id=user_id,
2652
+ debug_mode=debug_mode,
2653
+ **kwargs,
2654
+ )
2580
2655
 
2581
2656
  run_response.status = RunStatus.completed
2582
2657
 
@@ -2584,6 +2659,9 @@ class Agent:
2584
2659
  if run_response.metrics:
2585
2660
  run_response.metrics.stop_timer()
2586
2661
 
2662
+ # 3. Calculate session metrics
2663
+ self._update_session_metrics(session=session, run_response=run_response)
2664
+
2587
2665
  # 4. Save output to file if save_response_to_file is set
2588
2666
  self.save_run_response_to_file(
2589
2667
  run_response=run_response, input=run_messages.user_message, session_id=session.session_id, user_id=user_id
@@ -2625,6 +2703,7 @@ class Agent:
2625
2703
  retries: Optional[int] = None,
2626
2704
  knowledge_filters: Optional[Dict[str, Any]] = None,
2627
2705
  dependencies: Optional[Dict[str, Any]] = None,
2706
+ metadata: Optional[Dict[str, Any]] = None,
2628
2707
  debug_mode: Optional[bool] = None,
2629
2708
  ) -> RunOutput: ...
2630
2709
 
@@ -2642,6 +2721,7 @@ class Agent:
2642
2721
  retries: Optional[int] = None,
2643
2722
  knowledge_filters: Optional[Dict[str, Any]] = None,
2644
2723
  dependencies: Optional[Dict[str, Any]] = None,
2724
+ metadata: Optional[Dict[str, Any]] = None,
2645
2725
  debug_mode: Optional[bool] = None,
2646
2726
  ) -> AsyncIterator[Union[RunOutputEvent, RunOutput]]: ...
2647
2727
 
@@ -2658,6 +2738,7 @@ class Agent:
2658
2738
  retries: Optional[int] = None,
2659
2739
  knowledge_filters: Optional[Dict[str, Any]] = None,
2660
2740
  dependencies: Optional[Dict[str, Any]] = None,
2741
+ metadata: Optional[Dict[str, Any]] = None,
2661
2742
  debug_mode: Optional[bool] = None,
2662
2743
  yield_run_response: bool = False,
2663
2744
  **kwargs,
@@ -2718,6 +2799,13 @@ class Agent:
2718
2799
  if self.knowledge_filters or knowledge_filters:
2719
2800
  effective_filters = self._get_effective_filters(knowledge_filters)
2720
2801
 
2802
+ # Merge agent metadata with run metadata
2803
+ if self.metadata is not None:
2804
+ if metadata is None:
2805
+ metadata = self.metadata
2806
+ else:
2807
+ merge_dictionaries(metadata, self.metadata)
2808
+
2721
2809
  # Prepare arguments for the model
2722
2810
  response_format = self._get_response_format()
2723
2811
  self.model = cast(Model, self.model)
@@ -2737,8 +2825,11 @@ class Agent:
2737
2825
  session_id=session_id,
2738
2826
  response_format=response_format,
2739
2827
  dependencies=run_dependencies,
2828
+ metadata=metadata,
2740
2829
  stream_intermediate_steps=stream_intermediate_steps,
2741
2830
  yield_run_response=yield_run_response,
2831
+ debug_mode=debug_mode,
2832
+ **kwargs,
2742
2833
  )
2743
2834
  else:
2744
2835
  return self._acontinue_run( # type: ignore
@@ -2751,6 +2842,7 @@ class Agent:
2751
2842
  user_id=user_id,
2752
2843
  response_format=response_format,
2753
2844
  dependencies=run_dependencies,
2845
+ metadata=metadata,
2754
2846
  debug_mode=debug_mode,
2755
2847
  **kwargs,
2756
2848
  )
@@ -2802,6 +2894,7 @@ class Agent:
2802
2894
  user_id: Optional[str] = None,
2803
2895
  response_format: Optional[Union[Dict, Type[BaseModel]]] = None,
2804
2896
  dependencies: Optional[Dict[str, Any]] = None,
2897
+ metadata: Optional[Dict[str, Any]] = None,
2805
2898
  debug_mode: Optional[bool] = None,
2806
2899
  **kwargs,
2807
2900
  ) -> RunOutput:
@@ -2822,7 +2915,7 @@ class Agent:
2822
2915
  12. Update Agent Memory
2823
2916
  13. Save session to storage
2824
2917
  """
2825
- log_debug(f"Agent Run Continue: {run_response.run_id}", center=True) # type: ignore
2918
+ log_debug(f"Agent Run Continue: {run_response.run_id if run_response else run_id}", center=True) # type: ignore
2826
2919
 
2827
2920
  # 1. Read existing session from db
2828
2921
  if self._has_async_db():
@@ -2923,7 +3016,8 @@ class Agent:
2923
3016
  # 10. Calculate session metrics
2924
3017
  self._update_session_metrics(session=agent_session, run_response=run_response)
2925
3018
 
2926
- run_response.status = RunStatus.completed
3019
+ # Convert the response to the structured format if needed
3020
+ self._convert_response_to_structured_format(run_response)
2927
3021
 
2928
3022
  # 11. Execute post-hooks
2929
3023
  if self.post_hooks is not None:
@@ -2933,11 +3027,13 @@ class Agent:
2933
3027
  session=agent_session,
2934
3028
  user_id=user_id,
2935
3029
  debug_mode=debug_mode,
3030
+ session_state=session_state,
3031
+ dependencies=dependencies,
3032
+ metadata=metadata,
2936
3033
  **kwargs,
2937
3034
  )
2938
3035
 
2939
- # Convert the response to the structured format if needed
2940
- self._convert_response_to_structured_format(run_response)
3036
+ run_response.status = RunStatus.completed
2941
3037
 
2942
3038
  if run_response.metrics:
2943
3039
  run_response.metrics.stop_timer()
@@ -3002,6 +3098,9 @@ class Agent:
3002
3098
  stream_intermediate_steps: bool = False,
3003
3099
  yield_run_response: Optional[bool] = None,
3004
3100
  dependencies: Optional[Dict[str, Any]] = None,
3101
+ metadata: Optional[Dict[str, Any]] = None,
3102
+ debug_mode: Optional[bool] = None,
3103
+ **kwargs,
3005
3104
  ) -> AsyncIterator[Union[RunOutputEvent, RunOutput]]:
3006
3105
  """Continue a previous run.
3007
3106
 
@@ -3021,7 +3120,7 @@ class Agent:
3021
3120
  13. Add the RunOutput to Agent Session
3022
3121
  14. Save session to storage
3023
3122
  """
3024
- log_debug(f"Agent Run Continue: {run_response.run_id}", center=True) # type: ignore
3123
+ log_debug(f"Agent Run Continue: {run_response.run_id if run_response else run_id}", center=True) # type: ignore
3025
3124
 
3026
3125
  # 1. Resolve dependencies
3027
3126
  if dependencies is not None:
@@ -3144,16 +3243,30 @@ class Agent:
3144
3243
  yield item
3145
3244
  return
3146
3245
 
3147
- run_response.status = RunStatus.completed
3148
-
3149
3246
  # 9. Create the run completed event
3150
3247
  completed_event = self._handle_event(create_run_completed_event(run_response), run_response)
3151
3248
 
3249
+ # 10. Execute post-hooks
3250
+ if self.post_hooks is not None:
3251
+ await self._aexecute_post_hooks(
3252
+ hooks=self.post_hooks, # type: ignore
3253
+ run_output=run_response,
3254
+ session=agent_session,
3255
+ user_id=user_id,
3256
+ debug_mode=debug_mode,
3257
+ session_state=session_state,
3258
+ dependencies=dependencies,
3259
+ metadata=metadata,
3260
+ **kwargs,
3261
+ )
3262
+
3263
+ run_response.status = RunStatus.completed
3264
+
3152
3265
  # Set the run duration
3153
3266
  if run_response.metrics:
3154
3267
  run_response.metrics.stop_timer()
3155
3268
 
3156
- # 10. Add the run to memory
3269
+ # 11. Add the run to memory
3157
3270
  agent_session.upsert_run(run=run_response)
3158
3271
 
3159
3272
  # Optional: Save output to file if save_response_to_file is set
@@ -3217,6 +3330,9 @@ class Agent:
3217
3330
  run_response: RunOutput,
3218
3331
  run_input: RunInput,
3219
3332
  session: AgentSession,
3333
+ session_state: Optional[Dict[str, Any]] = None,
3334
+ dependencies: Optional[Dict[str, Any]] = None,
3335
+ metadata: Optional[Dict[str, Any]] = None,
3220
3336
  user_id: Optional[str] = None,
3221
3337
  debug_mode: Optional[bool] = None,
3222
3338
  **kwargs: Any,
@@ -3230,6 +3346,9 @@ class Agent:
3230
3346
  "run_input": run_input,
3231
3347
  "agent": self,
3232
3348
  "session": session,
3349
+ "session_state": session_state,
3350
+ "dependencies": dependencies,
3351
+ "metadata": metadata,
3233
3352
  "user_id": user_id,
3234
3353
  "debug_mode": debug_mode or self.debug_mode,
3235
3354
  }
@@ -3273,6 +3392,9 @@ class Agent:
3273
3392
  run_response: RunOutput,
3274
3393
  run_input: RunInput,
3275
3394
  session: AgentSession,
3395
+ session_state: Optional[Dict[str, Any]] = None,
3396
+ dependencies: Optional[Dict[str, Any]] = None,
3397
+ metadata: Optional[Dict[str, Any]] = None,
3276
3398
  user_id: Optional[str] = None,
3277
3399
  debug_mode: Optional[bool] = None,
3278
3400
  **kwargs: Any,
@@ -3286,6 +3408,9 @@ class Agent:
3286
3408
  "run_input": run_input,
3287
3409
  "agent": self,
3288
3410
  "session": session,
3411
+ "session_state": session_state,
3412
+ "dependencies": dependencies,
3413
+ "metadata": metadata,
3289
3414
  "user_id": user_id,
3290
3415
  "debug_mode": debug_mode or self.debug_mode,
3291
3416
  }
@@ -3332,6 +3457,9 @@ class Agent:
3332
3457
  hooks: Optional[List[Callable[..., Any]]],
3333
3458
  run_output: RunOutput,
3334
3459
  session: AgentSession,
3460
+ session_state: Optional[Dict[str, Any]] = None,
3461
+ dependencies: Optional[Dict[str, Any]] = None,
3462
+ metadata: Optional[Dict[str, Any]] = None,
3335
3463
  user_id: Optional[str] = None,
3336
3464
  debug_mode: Optional[bool] = None,
3337
3465
  **kwargs: Any,
@@ -3346,6 +3474,9 @@ class Agent:
3346
3474
  "agent": self,
3347
3475
  "session": session,
3348
3476
  "user_id": user_id,
3477
+ "session_state": session_state,
3478
+ "dependencies": dependencies,
3479
+ "metadata": metadata,
3349
3480
  "debug_mode": debug_mode or self.debug_mode,
3350
3481
  }
3351
3482
  all_args.update(kwargs)
@@ -3370,6 +3501,9 @@ class Agent:
3370
3501
  hooks: Optional[List[Callable[..., Any]]],
3371
3502
  run_output: RunOutput,
3372
3503
  session: AgentSession,
3504
+ session_state: Optional[Dict[str, Any]] = None,
3505
+ dependencies: Optional[Dict[str, Any]] = None,
3506
+ metadata: Optional[Dict[str, Any]] = None,
3373
3507
  user_id: Optional[str] = None,
3374
3508
  debug_mode: Optional[bool] = None,
3375
3509
  **kwargs: Any,
@@ -3384,6 +3518,9 @@ class Agent:
3384
3518
  "agent": self,
3385
3519
  "session": session,
3386
3520
  "user_id": user_id,
3521
+ "session_state": session_state,
3522
+ "dependencies": dependencies,
3523
+ "metadata": metadata,
3387
3524
  "debug_mode": debug_mode or self.debug_mode,
3388
3525
  }
3389
3526
  all_args.update(kwargs)
@@ -6608,7 +6745,7 @@ class Agent:
6608
6745
  files: Optional[Sequence[File]] = None,
6609
6746
  knowledge_filters: Optional[Dict[str, Any]] = None,
6610
6747
  add_history_to_context: Optional[bool] = None,
6611
- run_dependencies: Optional[Dict[str, Any]] = None,
6748
+ dependencies: Optional[Dict[str, Any]] = None,
6612
6749
  add_dependencies_to_context: Optional[bool] = None,
6613
6750
  add_session_state_to_context: Optional[bool] = None,
6614
6751
  metadata: Optional[Dict[str, Any]] = None,
@@ -6646,7 +6783,7 @@ class Agent:
6646
6783
  session=session,
6647
6784
  session_state=session_state,
6648
6785
  user_id=user_id,
6649
- dependencies=run_dependencies,
6786
+ dependencies=dependencies,
6650
6787
  metadata=metadata,
6651
6788
  )
6652
6789
  if system_message is not None:
@@ -6726,7 +6863,7 @@ class Agent:
6726
6863
  videos=videos,
6727
6864
  files=files,
6728
6865
  knowledge_filters=knowledge_filters,
6729
- run_dependencies=run_dependencies,
6866
+ dependencies=dependencies,
6730
6867
  add_dependencies_to_context=add_dependencies_to_context,
6731
6868
  metadata=metadata,
6732
6869
  **kwargs,
@@ -518,9 +518,9 @@ def attach_routes(router: APIRouter, knowledge_instances: List[Knowledge]) -> AP
518
518
  @router.post(
519
519
  "/knowledge/search",
520
520
  status_code=200,
521
- operation_id="search_vectors",
522
- summary="Search Vectors",
523
- description="Search the knowledge base for relevant vectors using query, filters and search type.",
521
+ operation_id="search_knowledge",
522
+ summary="Search Knowledge",
523
+ description="Search the knowledge base for relevant documents using query, filters and search type.",
524
524
  response_model=PaginatedResponse[VectorSearchResult],
525
525
  responses={
526
526
  200: {
@@ -548,7 +548,7 @@ def attach_routes(router: APIRouter, knowledge_instances: List[Knowledge]) -> AP
548
548
  404: {"description": "No documents found"},
549
549
  },
550
550
  )
551
- def search_vectors(request: VectorSearchRequestSchema) -> PaginatedResponse[VectorSearchResult]:
551
+ def search_knowledge(request: VectorSearchRequestSchema) -> PaginatedResponse[VectorSearchResult]:
552
552
  import time
553
553
 
554
554
  start_time = time.time()
@@ -846,7 +846,7 @@ class RunSchema(BaseModel):
846
846
  videos: Optional[List[dict]]
847
847
  audio: Optional[List[dict]]
848
848
  files: Optional[List[dict]]
849
- response_audio: Optional[List[dict]]
849
+ response_audio: Optional[dict]
850
850
  input_media: Optional[Dict[str, Any]]
851
851
 
852
852
  @classmethod
@@ -873,7 +873,7 @@ class RunSchema(BaseModel):
873
873
  videos=run_dict.get("videos", []),
874
874
  audio=run_dict.get("audio", []),
875
875
  files=run_dict.get("files", []),
876
- response_audio=run_dict.get("response_audio", []),
876
+ response_audio=run_dict.get("response_audio", None),
877
877
  input_media=extract_input_media(run_dict),
878
878
  created_at=datetime.fromtimestamp(run_dict.get("created_at", 0), tz=timezone.utc)
879
879
  if run_dict.get("created_at") is not None
@@ -902,7 +902,7 @@ class TeamRunSchema(BaseModel):
902
902
  videos: Optional[List[dict]]
903
903
  audio: Optional[List[dict]]
904
904
  files: Optional[List[dict]]
905
- response_audio: Optional[List[dict]]
905
+ response_audio: Optional[dict]
906
906
 
907
907
  @classmethod
908
908
  def from_dict(cls, run_dict: Dict[str, Any]) -> "TeamRunSchema":
@@ -930,7 +930,7 @@ class TeamRunSchema(BaseModel):
930
930
  videos=run_dict.get("videos", []),
931
931
  audio=run_dict.get("audio", []),
932
932
  files=run_dict.get("files", []),
933
- response_audio=run_dict.get("response_audio", []),
933
+ response_audio=run_dict.get("response_audio", None),
934
934
  input_media=extract_input_media(run_dict),
935
935
  )
936
936
 
@@ -956,7 +956,7 @@ class WorkflowRunSchema(BaseModel):
956
956
  videos: Optional[List[dict]]
957
957
  audio: Optional[List[dict]]
958
958
  files: Optional[List[dict]]
959
- response_audio: Optional[List[dict]]
959
+ response_audio: Optional[dict]
960
960
 
961
961
  @classmethod
962
962
  def from_dict(cls, run_response: Dict[str, Any]) -> "WorkflowRunSchema":
@@ -982,7 +982,7 @@ class WorkflowRunSchema(BaseModel):
982
982
  videos=run_response.get("videos", []),
983
983
  audio=run_response.get("audio", []),
984
984
  files=run_response.get("files", []),
985
- response_audio=run_response.get("response_audio", []),
985
+ response_audio=run_response.get("response_audio", None),
986
986
  )
987
987
 
988
988