agno 2.4.6__tar.gz → 2.4.7__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 (688) hide show
  1. {agno-2.4.6 → agno-2.4.7}/PKG-INFO +2 -2
  2. {agno-2.4.6 → agno-2.4.7}/agno/db/singlestore/singlestore.py +4 -5
  3. agno-2.4.7/agno/knowledge/embedder/aws_bedrock.py +562 -0
  4. agno-2.4.7/agno/knowledge/reranker/aws_bedrock.py +299 -0
  5. {agno-2.4.6 → agno-2.4.7}/agno/learn/machine.py +5 -6
  6. {agno-2.4.6 → agno-2.4.7}/agno/run/workflow.py +3 -0
  7. {agno-2.4.6 → agno-2.4.7}/agno/tools/mcp/mcp.py +26 -1
  8. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/lancedb/lance_db.py +9 -9
  9. {agno-2.4.6 → agno-2.4.7}/agno/workflow/condition.py +135 -56
  10. {agno-2.4.6 → agno-2.4.7}/agno.egg-info/PKG-INFO +2 -2
  11. {agno-2.4.6 → agno-2.4.7}/agno.egg-info/SOURCES.txt +1 -0
  12. {agno-2.4.6 → agno-2.4.7}/agno.egg-info/requires.txt +1 -1
  13. {agno-2.4.6 → agno-2.4.7}/pyproject.toml +2 -2
  14. agno-2.4.6/agno/knowledge/embedder/aws_bedrock.py +0 -343
  15. {agno-2.4.6 → agno-2.4.7}/LICENSE +0 -0
  16. {agno-2.4.6 → agno-2.4.7}/README.md +0 -0
  17. {agno-2.4.6 → agno-2.4.7}/agno/__init__.py +0 -0
  18. {agno-2.4.6 → agno-2.4.7}/agno/agent/__init__.py +0 -0
  19. {agno-2.4.6 → agno-2.4.7}/agno/agent/agent.py +0 -0
  20. {agno-2.4.6 → agno-2.4.7}/agno/agent/remote.py +0 -0
  21. {agno-2.4.6 → agno-2.4.7}/agno/api/__init__.py +0 -0
  22. {agno-2.4.6 → agno-2.4.7}/agno/api/agent.py +0 -0
  23. {agno-2.4.6 → agno-2.4.7}/agno/api/api.py +0 -0
  24. {agno-2.4.6 → agno-2.4.7}/agno/api/evals.py +0 -0
  25. {agno-2.4.6 → agno-2.4.7}/agno/api/os.py +0 -0
  26. {agno-2.4.6 → agno-2.4.7}/agno/api/routes.py +0 -0
  27. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/__init__.py +0 -0
  28. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/agent.py +0 -0
  29. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/evals.py +0 -0
  30. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/os.py +0 -0
  31. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/response.py +0 -0
  32. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/team.py +0 -0
  33. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/utils.py +0 -0
  34. {agno-2.4.6 → agno-2.4.7}/agno/api/schemas/workflows.py +0 -0
  35. {agno-2.4.6 → agno-2.4.7}/agno/api/settings.py +0 -0
  36. {agno-2.4.6 → agno-2.4.7}/agno/api/team.py +0 -0
  37. {agno-2.4.6 → agno-2.4.7}/agno/api/workflow.py +0 -0
  38. {agno-2.4.6 → agno-2.4.7}/agno/client/__init__.py +0 -0
  39. {agno-2.4.6 → agno-2.4.7}/agno/client/a2a/__init__.py +0 -0
  40. {agno-2.4.6 → agno-2.4.7}/agno/client/a2a/client.py +0 -0
  41. {agno-2.4.6 → agno-2.4.7}/agno/client/a2a/schemas.py +0 -0
  42. {agno-2.4.6 → agno-2.4.7}/agno/client/a2a/utils.py +0 -0
  43. {agno-2.4.6 → agno-2.4.7}/agno/client/os.py +0 -0
  44. {agno-2.4.6 → agno-2.4.7}/agno/cloud/aws/base.py +0 -0
  45. {agno-2.4.6 → agno-2.4.7}/agno/cloud/aws/s3/__init__.py +0 -0
  46. {agno-2.4.6 → agno-2.4.7}/agno/cloud/aws/s3/api_client.py +0 -0
  47. {agno-2.4.6 → agno-2.4.7}/agno/cloud/aws/s3/bucket.py +0 -0
  48. {agno-2.4.6 → agno-2.4.7}/agno/cloud/aws/s3/object.py +0 -0
  49. {agno-2.4.6 → agno-2.4.7}/agno/compression/__init__.py +0 -0
  50. {agno-2.4.6 → agno-2.4.7}/agno/compression/manager.py +0 -0
  51. {agno-2.4.6 → agno-2.4.7}/agno/culture/__init__.py +0 -0
  52. {agno-2.4.6 → agno-2.4.7}/agno/culture/manager.py +0 -0
  53. {agno-2.4.6 → agno-2.4.7}/agno/db/__init__.py +0 -0
  54. {agno-2.4.6 → agno-2.4.7}/agno/db/async_postgres/__init__.py +0 -0
  55. {agno-2.4.6 → agno-2.4.7}/agno/db/base.py +0 -0
  56. {agno-2.4.6 → agno-2.4.7}/agno/db/dynamo/__init__.py +0 -0
  57. {agno-2.4.6 → agno-2.4.7}/agno/db/dynamo/dynamo.py +0 -0
  58. {agno-2.4.6 → agno-2.4.7}/agno/db/dynamo/schemas.py +0 -0
  59. {agno-2.4.6 → agno-2.4.7}/agno/db/dynamo/utils.py +0 -0
  60. {agno-2.4.6 → agno-2.4.7}/agno/db/firestore/__init__.py +0 -0
  61. {agno-2.4.6 → agno-2.4.7}/agno/db/firestore/firestore.py +0 -0
  62. {agno-2.4.6 → agno-2.4.7}/agno/db/firestore/schemas.py +0 -0
  63. {agno-2.4.6 → agno-2.4.7}/agno/db/firestore/utils.py +0 -0
  64. {agno-2.4.6 → agno-2.4.7}/agno/db/gcs_json/__init__.py +0 -0
  65. {agno-2.4.6 → agno-2.4.7}/agno/db/gcs_json/gcs_json_db.py +0 -0
  66. {agno-2.4.6 → agno-2.4.7}/agno/db/gcs_json/utils.py +0 -0
  67. {agno-2.4.6 → agno-2.4.7}/agno/db/in_memory/__init__.py +0 -0
  68. {agno-2.4.6 → agno-2.4.7}/agno/db/in_memory/in_memory_db.py +0 -0
  69. {agno-2.4.6 → agno-2.4.7}/agno/db/in_memory/utils.py +0 -0
  70. {agno-2.4.6 → agno-2.4.7}/agno/db/json/__init__.py +0 -0
  71. {agno-2.4.6 → agno-2.4.7}/agno/db/json/json_db.py +0 -0
  72. {agno-2.4.6 → agno-2.4.7}/agno/db/json/utils.py +0 -0
  73. {agno-2.4.6 → agno-2.4.7}/agno/db/migrations/__init__.py +0 -0
  74. {agno-2.4.6 → agno-2.4.7}/agno/db/migrations/manager.py +0 -0
  75. {agno-2.4.6 → agno-2.4.7}/agno/db/migrations/utils.py +0 -0
  76. {agno-2.4.6 → agno-2.4.7}/agno/db/migrations/v1_to_v2.py +0 -0
  77. {agno-2.4.6 → agno-2.4.7}/agno/db/migrations/versions/__init__.py +0 -0
  78. {agno-2.4.6 → agno-2.4.7}/agno/db/migrations/versions/v2_3_0.py +0 -0
  79. {agno-2.4.6 → agno-2.4.7}/agno/db/mongo/__init__.py +0 -0
  80. {agno-2.4.6 → agno-2.4.7}/agno/db/mongo/async_mongo.py +0 -0
  81. {agno-2.4.6 → agno-2.4.7}/agno/db/mongo/mongo.py +0 -0
  82. {agno-2.4.6 → agno-2.4.7}/agno/db/mongo/schemas.py +0 -0
  83. {agno-2.4.6 → agno-2.4.7}/agno/db/mongo/utils.py +0 -0
  84. {agno-2.4.6 → agno-2.4.7}/agno/db/mysql/__init__.py +0 -0
  85. {agno-2.4.6 → agno-2.4.7}/agno/db/mysql/async_mysql.py +0 -0
  86. {agno-2.4.6 → agno-2.4.7}/agno/db/mysql/mysql.py +0 -0
  87. {agno-2.4.6 → agno-2.4.7}/agno/db/mysql/schemas.py +0 -0
  88. {agno-2.4.6 → agno-2.4.7}/agno/db/mysql/utils.py +0 -0
  89. {agno-2.4.6 → agno-2.4.7}/agno/db/postgres/__init__.py +0 -0
  90. {agno-2.4.6 → agno-2.4.7}/agno/db/postgres/async_postgres.py +0 -0
  91. {agno-2.4.6 → agno-2.4.7}/agno/db/postgres/postgres.py +0 -0
  92. {agno-2.4.6 → agno-2.4.7}/agno/db/postgres/schemas.py +0 -0
  93. {agno-2.4.6 → agno-2.4.7}/agno/db/postgres/utils.py +0 -0
  94. {agno-2.4.6 → agno-2.4.7}/agno/db/redis/__init__.py +0 -0
  95. {agno-2.4.6 → agno-2.4.7}/agno/db/redis/redis.py +0 -0
  96. {agno-2.4.6 → agno-2.4.7}/agno/db/redis/schemas.py +0 -0
  97. {agno-2.4.6 → agno-2.4.7}/agno/db/redis/utils.py +0 -0
  98. {agno-2.4.6 → agno-2.4.7}/agno/db/schemas/__init__.py +0 -0
  99. {agno-2.4.6 → agno-2.4.7}/agno/db/schemas/culture.py +0 -0
  100. {agno-2.4.6 → agno-2.4.7}/agno/db/schemas/evals.py +0 -0
  101. {agno-2.4.6 → agno-2.4.7}/agno/db/schemas/knowledge.py +0 -0
  102. {agno-2.4.6 → agno-2.4.7}/agno/db/schemas/memory.py +0 -0
  103. {agno-2.4.6 → agno-2.4.7}/agno/db/schemas/metrics.py +0 -0
  104. {agno-2.4.6 → agno-2.4.7}/agno/db/singlestore/__init__.py +0 -0
  105. {agno-2.4.6 → agno-2.4.7}/agno/db/singlestore/schemas.py +0 -0
  106. {agno-2.4.6 → agno-2.4.7}/agno/db/singlestore/utils.py +0 -0
  107. {agno-2.4.6 → agno-2.4.7}/agno/db/sqlite/__init__.py +0 -0
  108. {agno-2.4.6 → agno-2.4.7}/agno/db/sqlite/async_sqlite.py +0 -0
  109. {agno-2.4.6 → agno-2.4.7}/agno/db/sqlite/schemas.py +0 -0
  110. {agno-2.4.6 → agno-2.4.7}/agno/db/sqlite/sqlite.py +0 -0
  111. {agno-2.4.6 → agno-2.4.7}/agno/db/sqlite/utils.py +0 -0
  112. {agno-2.4.6 → agno-2.4.7}/agno/db/surrealdb/__init__.py +0 -0
  113. {agno-2.4.6 → agno-2.4.7}/agno/db/surrealdb/metrics.py +0 -0
  114. {agno-2.4.6 → agno-2.4.7}/agno/db/surrealdb/models.py +0 -0
  115. {agno-2.4.6 → agno-2.4.7}/agno/db/surrealdb/queries.py +0 -0
  116. {agno-2.4.6 → agno-2.4.7}/agno/db/surrealdb/surrealdb.py +0 -0
  117. {agno-2.4.6 → agno-2.4.7}/agno/db/surrealdb/utils.py +0 -0
  118. {agno-2.4.6 → agno-2.4.7}/agno/db/utils.py +0 -0
  119. {agno-2.4.6 → agno-2.4.7}/agno/debug.py +0 -0
  120. {agno-2.4.6 → agno-2.4.7}/agno/eval/__init__.py +0 -0
  121. {agno-2.4.6 → agno-2.4.7}/agno/eval/accuracy.py +0 -0
  122. {agno-2.4.6 → agno-2.4.7}/agno/eval/agent_as_judge.py +0 -0
  123. {agno-2.4.6 → agno-2.4.7}/agno/eval/base.py +0 -0
  124. {agno-2.4.6 → agno-2.4.7}/agno/eval/performance.py +0 -0
  125. {agno-2.4.6 → agno-2.4.7}/agno/eval/reliability.py +0 -0
  126. {agno-2.4.6 → agno-2.4.7}/agno/eval/utils.py +0 -0
  127. {agno-2.4.6 → agno-2.4.7}/agno/exceptions.py +0 -0
  128. {agno-2.4.6 → agno-2.4.7}/agno/filters.py +0 -0
  129. {agno-2.4.6 → agno-2.4.7}/agno/guardrails/__init__.py +0 -0
  130. {agno-2.4.6 → agno-2.4.7}/agno/guardrails/base.py +0 -0
  131. {agno-2.4.6 → agno-2.4.7}/agno/guardrails/openai.py +0 -0
  132. {agno-2.4.6 → agno-2.4.7}/agno/guardrails/pii.py +0 -0
  133. {agno-2.4.6 → agno-2.4.7}/agno/guardrails/prompt_injection.py +0 -0
  134. {agno-2.4.6 → agno-2.4.7}/agno/hooks/__init__.py +0 -0
  135. {agno-2.4.6 → agno-2.4.7}/agno/hooks/decorator.py +0 -0
  136. {agno-2.4.6 → agno-2.4.7}/agno/integrations/__init__.py +0 -0
  137. {agno-2.4.6 → agno-2.4.7}/agno/integrations/discord/__init__.py +0 -0
  138. {agno-2.4.6 → agno-2.4.7}/agno/integrations/discord/client.py +0 -0
  139. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/__init__.py +0 -0
  140. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/__init__.py +0 -0
  141. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/agentic.py +0 -0
  142. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/code.py +0 -0
  143. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/document.py +0 -0
  144. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/fixed.py +0 -0
  145. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/markdown.py +0 -0
  146. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/recursive.py +0 -0
  147. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/row.py +0 -0
  148. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/semantic.py +0 -0
  149. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/chunking/strategy.py +0 -0
  150. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/content.py +0 -0
  151. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/document/__init__.py +0 -0
  152. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/document/base.py +0 -0
  153. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/__init__.py +0 -0
  154. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/azure_openai.py +0 -0
  155. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/base.py +0 -0
  156. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/cohere.py +0 -0
  157. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/fastembed.py +0 -0
  158. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/fireworks.py +0 -0
  159. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/google.py +0 -0
  160. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/huggingface.py +0 -0
  161. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/jina.py +0 -0
  162. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/langdb.py +0 -0
  163. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/mistral.py +0 -0
  164. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/nebius.py +0 -0
  165. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/ollama.py +0 -0
  166. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/openai.py +0 -0
  167. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/sentence_transformer.py +0 -0
  168. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/together.py +0 -0
  169. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/vllm.py +0 -0
  170. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/embedder/voyageai.py +0 -0
  171. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/filesystem.py +0 -0
  172. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/knowledge.py +0 -0
  173. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/protocol.py +0 -0
  174. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/__init__.py +0 -0
  175. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/arxiv_reader.py +0 -0
  176. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/base.py +0 -0
  177. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/csv_reader.py +0 -0
  178. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/docx_reader.py +0 -0
  179. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/excel_reader.py +0 -0
  180. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
  181. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/firecrawl_reader.py +0 -0
  182. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/json_reader.py +0 -0
  183. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/markdown_reader.py +0 -0
  184. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/pdf_reader.py +0 -0
  185. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/pptx_reader.py +0 -0
  186. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/reader_factory.py +0 -0
  187. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/s3_reader.py +0 -0
  188. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/tavily_reader.py +0 -0
  189. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/text_reader.py +0 -0
  190. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/utils/__init__.py +0 -0
  191. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/utils/spreadsheet.py +0 -0
  192. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/web_search_reader.py +0 -0
  193. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/website_reader.py +0 -0
  194. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/wikipedia_reader.py +0 -0
  195. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reader/youtube_reader.py +0 -0
  196. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/remote_content/__init__.py +0 -0
  197. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/remote_content/config.py +0 -0
  198. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/remote_content/remote_content.py +0 -0
  199. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reranker/__init__.py +0 -0
  200. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reranker/base.py +0 -0
  201. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reranker/cohere.py +0 -0
  202. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reranker/infinity.py +0 -0
  203. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/reranker/sentence_transformer.py +0 -0
  204. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/types.py +0 -0
  205. {agno-2.4.6 → agno-2.4.7}/agno/knowledge/utils.py +0 -0
  206. {agno-2.4.6 → agno-2.4.7}/agno/learn/__init__.py +0 -0
  207. {agno-2.4.6 → agno-2.4.7}/agno/learn/config.py +0 -0
  208. {agno-2.4.6 → agno-2.4.7}/agno/learn/curate.py +0 -0
  209. {agno-2.4.6 → agno-2.4.7}/agno/learn/schemas.py +0 -0
  210. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/__init__.py +0 -0
  211. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/decision_log.py +0 -0
  212. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/entity_memory.py +0 -0
  213. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/learned_knowledge.py +0 -0
  214. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/protocol.py +0 -0
  215. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/session_context.py +0 -0
  216. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/user_memory.py +0 -0
  217. {agno-2.4.6 → agno-2.4.7}/agno/learn/stores/user_profile.py +0 -0
  218. {agno-2.4.6 → agno-2.4.7}/agno/learn/utils.py +0 -0
  219. {agno-2.4.6 → agno-2.4.7}/agno/media.py +0 -0
  220. {agno-2.4.6 → agno-2.4.7}/agno/memory/__init__.py +0 -0
  221. {agno-2.4.6 → agno-2.4.7}/agno/memory/manager.py +0 -0
  222. {agno-2.4.6 → agno-2.4.7}/agno/memory/strategies/__init__.py +0 -0
  223. {agno-2.4.6 → agno-2.4.7}/agno/memory/strategies/base.py +0 -0
  224. {agno-2.4.6 → agno-2.4.7}/agno/memory/strategies/summarize.py +0 -0
  225. {agno-2.4.6 → agno-2.4.7}/agno/memory/strategies/types.py +0 -0
  226. {agno-2.4.6 → agno-2.4.7}/agno/models/__init__.py +0 -0
  227. {agno-2.4.6 → agno-2.4.7}/agno/models/aimlapi/__init__.py +0 -0
  228. {agno-2.4.6 → agno-2.4.7}/agno/models/aimlapi/aimlapi.py +0 -0
  229. {agno-2.4.6 → agno-2.4.7}/agno/models/anthropic/__init__.py +0 -0
  230. {agno-2.4.6 → agno-2.4.7}/agno/models/anthropic/claude.py +0 -0
  231. {agno-2.4.6 → agno-2.4.7}/agno/models/aws/__init__.py +0 -0
  232. {agno-2.4.6 → agno-2.4.7}/agno/models/aws/bedrock.py +0 -0
  233. {agno-2.4.6 → agno-2.4.7}/agno/models/aws/claude.py +0 -0
  234. {agno-2.4.6 → agno-2.4.7}/agno/models/azure/__init__.py +0 -0
  235. {agno-2.4.6 → agno-2.4.7}/agno/models/azure/ai_foundry.py +0 -0
  236. {agno-2.4.6 → agno-2.4.7}/agno/models/azure/openai_chat.py +0 -0
  237. {agno-2.4.6 → agno-2.4.7}/agno/models/base.py +0 -0
  238. {agno-2.4.6 → agno-2.4.7}/agno/models/cerebras/__init__.py +0 -0
  239. {agno-2.4.6 → agno-2.4.7}/agno/models/cerebras/cerebras.py +0 -0
  240. {agno-2.4.6 → agno-2.4.7}/agno/models/cerebras/cerebras_openai.py +0 -0
  241. {agno-2.4.6 → agno-2.4.7}/agno/models/cohere/__init__.py +0 -0
  242. {agno-2.4.6 → agno-2.4.7}/agno/models/cohere/chat.py +0 -0
  243. {agno-2.4.6 → agno-2.4.7}/agno/models/cometapi/__init__.py +0 -0
  244. {agno-2.4.6 → agno-2.4.7}/agno/models/cometapi/cometapi.py +0 -0
  245. {agno-2.4.6 → agno-2.4.7}/agno/models/dashscope/__init__.py +0 -0
  246. {agno-2.4.6 → agno-2.4.7}/agno/models/dashscope/dashscope.py +0 -0
  247. {agno-2.4.6 → agno-2.4.7}/agno/models/deepinfra/__init__.py +0 -0
  248. {agno-2.4.6 → agno-2.4.7}/agno/models/deepinfra/deepinfra.py +0 -0
  249. {agno-2.4.6 → agno-2.4.7}/agno/models/deepseek/__init__.py +0 -0
  250. {agno-2.4.6 → agno-2.4.7}/agno/models/deepseek/deepseek.py +0 -0
  251. {agno-2.4.6 → agno-2.4.7}/agno/models/defaults.py +0 -0
  252. {agno-2.4.6 → agno-2.4.7}/agno/models/fireworks/__init__.py +0 -0
  253. {agno-2.4.6 → agno-2.4.7}/agno/models/fireworks/fireworks.py +0 -0
  254. {agno-2.4.6 → agno-2.4.7}/agno/models/google/__init__.py +0 -0
  255. {agno-2.4.6 → agno-2.4.7}/agno/models/google/gemini.py +0 -0
  256. {agno-2.4.6 → agno-2.4.7}/agno/models/google/utils.py +0 -0
  257. {agno-2.4.6 → agno-2.4.7}/agno/models/groq/__init__.py +0 -0
  258. {agno-2.4.6 → agno-2.4.7}/agno/models/groq/groq.py +0 -0
  259. {agno-2.4.6 → agno-2.4.7}/agno/models/huggingface/__init__.py +0 -0
  260. {agno-2.4.6 → agno-2.4.7}/agno/models/huggingface/huggingface.py +0 -0
  261. {agno-2.4.6 → agno-2.4.7}/agno/models/ibm/__init__.py +0 -0
  262. {agno-2.4.6 → agno-2.4.7}/agno/models/ibm/watsonx.py +0 -0
  263. {agno-2.4.6 → agno-2.4.7}/agno/models/internlm/__init__.py +0 -0
  264. {agno-2.4.6 → agno-2.4.7}/agno/models/internlm/internlm.py +0 -0
  265. {agno-2.4.6 → agno-2.4.7}/agno/models/langdb/__init__.py +0 -0
  266. {agno-2.4.6 → agno-2.4.7}/agno/models/langdb/langdb.py +0 -0
  267. {agno-2.4.6 → agno-2.4.7}/agno/models/litellm/__init__.py +0 -0
  268. {agno-2.4.6 → agno-2.4.7}/agno/models/litellm/chat.py +0 -0
  269. {agno-2.4.6 → agno-2.4.7}/agno/models/litellm/litellm_openai.py +0 -0
  270. {agno-2.4.6 → agno-2.4.7}/agno/models/llama_cpp/__init__.py +0 -0
  271. {agno-2.4.6 → agno-2.4.7}/agno/models/llama_cpp/llama_cpp.py +0 -0
  272. {agno-2.4.6 → agno-2.4.7}/agno/models/lmstudio/__init__.py +0 -0
  273. {agno-2.4.6 → agno-2.4.7}/agno/models/lmstudio/lmstudio.py +0 -0
  274. {agno-2.4.6 → agno-2.4.7}/agno/models/message.py +0 -0
  275. {agno-2.4.6 → agno-2.4.7}/agno/models/meta/__init__.py +0 -0
  276. {agno-2.4.6 → agno-2.4.7}/agno/models/meta/llama.py +0 -0
  277. {agno-2.4.6 → agno-2.4.7}/agno/models/meta/llama_openai.py +0 -0
  278. {agno-2.4.6 → agno-2.4.7}/agno/models/metrics.py +0 -0
  279. {agno-2.4.6 → agno-2.4.7}/agno/models/mistral/__init__.py +0 -0
  280. {agno-2.4.6 → agno-2.4.7}/agno/models/mistral/mistral.py +0 -0
  281. {agno-2.4.6 → agno-2.4.7}/agno/models/moonshot/__init__.py +0 -0
  282. {agno-2.4.6 → agno-2.4.7}/agno/models/moonshot/moonshot.py +0 -0
  283. {agno-2.4.6 → agno-2.4.7}/agno/models/n1n/__init__.py +0 -0
  284. {agno-2.4.6 → agno-2.4.7}/agno/models/n1n/n1n.py +0 -0
  285. {agno-2.4.6 → agno-2.4.7}/agno/models/nebius/__init__.py +0 -0
  286. {agno-2.4.6 → agno-2.4.7}/agno/models/nebius/nebius.py +0 -0
  287. {agno-2.4.6 → agno-2.4.7}/agno/models/nexus/__init__.py +0 -0
  288. {agno-2.4.6 → agno-2.4.7}/agno/models/nexus/nexus.py +0 -0
  289. {agno-2.4.6 → agno-2.4.7}/agno/models/nvidia/__init__.py +0 -0
  290. {agno-2.4.6 → agno-2.4.7}/agno/models/nvidia/nvidia.py +0 -0
  291. {agno-2.4.6 → agno-2.4.7}/agno/models/ollama/__init__.py +0 -0
  292. {agno-2.4.6 → agno-2.4.7}/agno/models/ollama/chat.py +0 -0
  293. {agno-2.4.6 → agno-2.4.7}/agno/models/ollama/responses.py +0 -0
  294. {agno-2.4.6 → agno-2.4.7}/agno/models/openai/__init__.py +0 -0
  295. {agno-2.4.6 → agno-2.4.7}/agno/models/openai/chat.py +0 -0
  296. {agno-2.4.6 → agno-2.4.7}/agno/models/openai/like.py +0 -0
  297. {agno-2.4.6 → agno-2.4.7}/agno/models/openai/open_responses.py +0 -0
  298. {agno-2.4.6 → agno-2.4.7}/agno/models/openai/responses.py +0 -0
  299. {agno-2.4.6 → agno-2.4.7}/agno/models/openrouter/__init__.py +0 -0
  300. {agno-2.4.6 → agno-2.4.7}/agno/models/openrouter/openrouter.py +0 -0
  301. {agno-2.4.6 → agno-2.4.7}/agno/models/openrouter/responses.py +0 -0
  302. {agno-2.4.6 → agno-2.4.7}/agno/models/perplexity/__init__.py +0 -0
  303. {agno-2.4.6 → agno-2.4.7}/agno/models/perplexity/perplexity.py +0 -0
  304. {agno-2.4.6 → agno-2.4.7}/agno/models/portkey/__init__.py +0 -0
  305. {agno-2.4.6 → agno-2.4.7}/agno/models/portkey/portkey.py +0 -0
  306. {agno-2.4.6 → agno-2.4.7}/agno/models/requesty/__init__.py +0 -0
  307. {agno-2.4.6 → agno-2.4.7}/agno/models/requesty/requesty.py +0 -0
  308. {agno-2.4.6 → agno-2.4.7}/agno/models/response.py +0 -0
  309. {agno-2.4.6 → agno-2.4.7}/agno/models/sambanova/__init__.py +0 -0
  310. {agno-2.4.6 → agno-2.4.7}/agno/models/sambanova/sambanova.py +0 -0
  311. {agno-2.4.6 → agno-2.4.7}/agno/models/siliconflow/__init__.py +0 -0
  312. {agno-2.4.6 → agno-2.4.7}/agno/models/siliconflow/siliconflow.py +0 -0
  313. {agno-2.4.6 → agno-2.4.7}/agno/models/together/__init__.py +0 -0
  314. {agno-2.4.6 → agno-2.4.7}/agno/models/together/together.py +0 -0
  315. {agno-2.4.6 → agno-2.4.7}/agno/models/utils.py +0 -0
  316. {agno-2.4.6 → agno-2.4.7}/agno/models/vercel/__init__.py +0 -0
  317. {agno-2.4.6 → agno-2.4.7}/agno/models/vercel/v0.py +0 -0
  318. {agno-2.4.6 → agno-2.4.7}/agno/models/vertexai/__init__.py +0 -0
  319. {agno-2.4.6 → agno-2.4.7}/agno/models/vertexai/claude.py +0 -0
  320. {agno-2.4.6 → agno-2.4.7}/agno/models/vllm/__init__.py +0 -0
  321. {agno-2.4.6 → agno-2.4.7}/agno/models/vllm/vllm.py +0 -0
  322. {agno-2.4.6 → agno-2.4.7}/agno/models/xai/__init__.py +0 -0
  323. {agno-2.4.6 → agno-2.4.7}/agno/models/xai/xai.py +0 -0
  324. {agno-2.4.6 → agno-2.4.7}/agno/os/__init__.py +0 -0
  325. {agno-2.4.6 → agno-2.4.7}/agno/os/app.py +0 -0
  326. {agno-2.4.6 → agno-2.4.7}/agno/os/auth.py +0 -0
  327. {agno-2.4.6 → agno-2.4.7}/agno/os/config.py +0 -0
  328. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/__init__.py +0 -0
  329. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/a2a/__init__.py +0 -0
  330. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/a2a/a2a.py +0 -0
  331. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/a2a/router.py +0 -0
  332. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/a2a/utils.py +0 -0
  333. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/agui/__init__.py +0 -0
  334. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/agui/agui.py +0 -0
  335. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/agui/router.py +0 -0
  336. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/agui/utils.py +0 -0
  337. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/base.py +0 -0
  338. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/slack/__init__.py +0 -0
  339. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/slack/router.py +0 -0
  340. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/slack/security.py +0 -0
  341. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/slack/slack.py +0 -0
  342. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/whatsapp/__init__.py +0 -0
  343. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/whatsapp/router.py +0 -0
  344. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/whatsapp/security.py +0 -0
  345. {agno-2.4.6 → agno-2.4.7}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
  346. {agno-2.4.6 → agno-2.4.7}/agno/os/managers.py +0 -0
  347. {agno-2.4.6 → agno-2.4.7}/agno/os/mcp.py +0 -0
  348. {agno-2.4.6 → agno-2.4.7}/agno/os/middleware/__init__.py +0 -0
  349. {agno-2.4.6 → agno-2.4.7}/agno/os/middleware/jwt.py +0 -0
  350. {agno-2.4.6 → agno-2.4.7}/agno/os/middleware/trailing_slash.py +0 -0
  351. {agno-2.4.6 → agno-2.4.7}/agno/os/router.py +0 -0
  352. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/__init__.py +0 -0
  353. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/agents/__init__.py +0 -0
  354. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/agents/router.py +0 -0
  355. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/agents/schema.py +0 -0
  356. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/components/__init__.py +0 -0
  357. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/components/components.py +0 -0
  358. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/database.py +0 -0
  359. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/evals/__init__.py +0 -0
  360. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/evals/evals.py +0 -0
  361. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/evals/schemas.py +0 -0
  362. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/evals/utils.py +0 -0
  363. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/health.py +0 -0
  364. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/home.py +0 -0
  365. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/knowledge/__init__.py +0 -0
  366. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/knowledge/knowledge.py +0 -0
  367. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/knowledge/schemas.py +0 -0
  368. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/memory/__init__.py +0 -0
  369. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/memory/memory.py +0 -0
  370. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/memory/schemas.py +0 -0
  371. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/metrics/__init__.py +0 -0
  372. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/metrics/metrics.py +0 -0
  373. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/metrics/schemas.py +0 -0
  374. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/registry/__init__.py +0 -0
  375. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/registry/registry.py +0 -0
  376. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/session/__init__.py +0 -0
  377. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/session/session.py +0 -0
  378. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/teams/__init__.py +0 -0
  379. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/teams/router.py +0 -0
  380. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/teams/schema.py +0 -0
  381. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/traces/__init__.py +0 -0
  382. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/traces/schemas.py +0 -0
  383. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/traces/traces.py +0 -0
  384. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/workflows/__init__.py +0 -0
  385. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/workflows/router.py +0 -0
  386. {agno-2.4.6 → agno-2.4.7}/agno/os/routers/workflows/schema.py +0 -0
  387. {agno-2.4.6 → agno-2.4.7}/agno/os/schema.py +0 -0
  388. {agno-2.4.6 → agno-2.4.7}/agno/os/scopes.py +0 -0
  389. {agno-2.4.6 → agno-2.4.7}/agno/os/settings.py +0 -0
  390. {agno-2.4.6 → agno-2.4.7}/agno/os/utils.py +0 -0
  391. {agno-2.4.6 → agno-2.4.7}/agno/py.typed +0 -0
  392. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/__init__.py +0 -0
  393. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/anthropic.py +0 -0
  394. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/azure_ai_foundry.py +0 -0
  395. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/deepseek.py +0 -0
  396. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/default.py +0 -0
  397. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/gemini.py +0 -0
  398. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/groq.py +0 -0
  399. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/helpers.py +0 -0
  400. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/manager.py +0 -0
  401. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/ollama.py +0 -0
  402. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/openai.py +0 -0
  403. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/step.py +0 -0
  404. {agno-2.4.6 → agno-2.4.7}/agno/reasoning/vertexai.py +0 -0
  405. {agno-2.4.6 → agno-2.4.7}/agno/registry/__init__.py +0 -0
  406. {agno-2.4.6 → agno-2.4.7}/agno/registry/registry.py +0 -0
  407. {agno-2.4.6 → agno-2.4.7}/agno/remote/__init__.py +0 -0
  408. {agno-2.4.6 → agno-2.4.7}/agno/remote/base.py +0 -0
  409. {agno-2.4.6 → agno-2.4.7}/agno/run/__init__.py +0 -0
  410. {agno-2.4.6 → agno-2.4.7}/agno/run/agent.py +0 -0
  411. {agno-2.4.6 → agno-2.4.7}/agno/run/base.py +0 -0
  412. {agno-2.4.6 → agno-2.4.7}/agno/run/cancel.py +0 -0
  413. {agno-2.4.6 → agno-2.4.7}/agno/run/cancellation_management/__init__.py +0 -0
  414. {agno-2.4.6 → agno-2.4.7}/agno/run/cancellation_management/base.py +0 -0
  415. {agno-2.4.6 → agno-2.4.7}/agno/run/cancellation_management/in_memory_cancellation_manager.py +0 -0
  416. {agno-2.4.6 → agno-2.4.7}/agno/run/cancellation_management/redis_cancellation_manager.py +0 -0
  417. {agno-2.4.6 → agno-2.4.7}/agno/run/messages.py +0 -0
  418. {agno-2.4.6 → agno-2.4.7}/agno/run/requirement.py +0 -0
  419. {agno-2.4.6 → agno-2.4.7}/agno/run/team.py +0 -0
  420. {agno-2.4.6 → agno-2.4.7}/agno/session/__init__.py +0 -0
  421. {agno-2.4.6 → agno-2.4.7}/agno/session/agent.py +0 -0
  422. {agno-2.4.6 → agno-2.4.7}/agno/session/summary.py +0 -0
  423. {agno-2.4.6 → agno-2.4.7}/agno/session/team.py +0 -0
  424. {agno-2.4.6 → agno-2.4.7}/agno/session/workflow.py +0 -0
  425. {agno-2.4.6 → agno-2.4.7}/agno/skills/__init__.py +0 -0
  426. {agno-2.4.6 → agno-2.4.7}/agno/skills/agent_skills.py +0 -0
  427. {agno-2.4.6 → agno-2.4.7}/agno/skills/errors.py +0 -0
  428. {agno-2.4.6 → agno-2.4.7}/agno/skills/loaders/__init__.py +0 -0
  429. {agno-2.4.6 → agno-2.4.7}/agno/skills/loaders/base.py +0 -0
  430. {agno-2.4.6 → agno-2.4.7}/agno/skills/loaders/local.py +0 -0
  431. {agno-2.4.6 → agno-2.4.7}/agno/skills/skill.py +0 -0
  432. {agno-2.4.6 → agno-2.4.7}/agno/skills/utils.py +0 -0
  433. {agno-2.4.6 → agno-2.4.7}/agno/skills/validator.py +0 -0
  434. {agno-2.4.6 → agno-2.4.7}/agno/table.py +0 -0
  435. {agno-2.4.6 → agno-2.4.7}/agno/team/__init__.py +0 -0
  436. {agno-2.4.6 → agno-2.4.7}/agno/team/remote.py +0 -0
  437. {agno-2.4.6 → agno-2.4.7}/agno/team/team.py +0 -0
  438. {agno-2.4.6 → agno-2.4.7}/agno/tools/__init__.py +0 -0
  439. {agno-2.4.6 → agno-2.4.7}/agno/tools/agentql.py +0 -0
  440. {agno-2.4.6 → agno-2.4.7}/agno/tools/airflow.py +0 -0
  441. {agno-2.4.6 → agno-2.4.7}/agno/tools/api.py +0 -0
  442. {agno-2.4.6 → agno-2.4.7}/agno/tools/apify.py +0 -0
  443. {agno-2.4.6 → agno-2.4.7}/agno/tools/arxiv.py +0 -0
  444. {agno-2.4.6 → agno-2.4.7}/agno/tools/aws_lambda.py +0 -0
  445. {agno-2.4.6 → agno-2.4.7}/agno/tools/aws_ses.py +0 -0
  446. {agno-2.4.6 → agno-2.4.7}/agno/tools/baidusearch.py +0 -0
  447. {agno-2.4.6 → agno-2.4.7}/agno/tools/bitbucket.py +0 -0
  448. {agno-2.4.6 → agno-2.4.7}/agno/tools/brandfetch.py +0 -0
  449. {agno-2.4.6 → agno-2.4.7}/agno/tools/bravesearch.py +0 -0
  450. {agno-2.4.6 → agno-2.4.7}/agno/tools/brightdata.py +0 -0
  451. {agno-2.4.6 → agno-2.4.7}/agno/tools/browserbase.py +0 -0
  452. {agno-2.4.6 → agno-2.4.7}/agno/tools/calcom.py +0 -0
  453. {agno-2.4.6 → agno-2.4.7}/agno/tools/calculator.py +0 -0
  454. {agno-2.4.6 → agno-2.4.7}/agno/tools/cartesia.py +0 -0
  455. {agno-2.4.6 → agno-2.4.7}/agno/tools/clickup.py +0 -0
  456. {agno-2.4.6 → agno-2.4.7}/agno/tools/confluence.py +0 -0
  457. {agno-2.4.6 → agno-2.4.7}/agno/tools/crawl4ai.py +0 -0
  458. {agno-2.4.6 → agno-2.4.7}/agno/tools/csv_toolkit.py +0 -0
  459. {agno-2.4.6 → agno-2.4.7}/agno/tools/dalle.py +0 -0
  460. {agno-2.4.6 → agno-2.4.7}/agno/tools/daytona.py +0 -0
  461. {agno-2.4.6 → agno-2.4.7}/agno/tools/decorator.py +0 -0
  462. {agno-2.4.6 → agno-2.4.7}/agno/tools/desi_vocal.py +0 -0
  463. {agno-2.4.6 → agno-2.4.7}/agno/tools/discord.py +0 -0
  464. {agno-2.4.6 → agno-2.4.7}/agno/tools/docker.py +0 -0
  465. {agno-2.4.6 → agno-2.4.7}/agno/tools/duckdb.py +0 -0
  466. {agno-2.4.6 → agno-2.4.7}/agno/tools/duckduckgo.py +0 -0
  467. {agno-2.4.6 → agno-2.4.7}/agno/tools/e2b.py +0 -0
  468. {agno-2.4.6 → agno-2.4.7}/agno/tools/eleven_labs.py +0 -0
  469. {agno-2.4.6 → agno-2.4.7}/agno/tools/email.py +0 -0
  470. {agno-2.4.6 → agno-2.4.7}/agno/tools/evm.py +0 -0
  471. {agno-2.4.6 → agno-2.4.7}/agno/tools/exa.py +0 -0
  472. {agno-2.4.6 → agno-2.4.7}/agno/tools/fal.py +0 -0
  473. {agno-2.4.6 → agno-2.4.7}/agno/tools/file.py +0 -0
  474. {agno-2.4.6 → agno-2.4.7}/agno/tools/file_generation.py +0 -0
  475. {agno-2.4.6 → agno-2.4.7}/agno/tools/financial_datasets.py +0 -0
  476. {agno-2.4.6 → agno-2.4.7}/agno/tools/firecrawl.py +0 -0
  477. {agno-2.4.6 → agno-2.4.7}/agno/tools/function.py +0 -0
  478. {agno-2.4.6 → agno-2.4.7}/agno/tools/giphy.py +0 -0
  479. {agno-2.4.6 → agno-2.4.7}/agno/tools/github.py +0 -0
  480. {agno-2.4.6 → agno-2.4.7}/agno/tools/gmail.py +0 -0
  481. {agno-2.4.6 → agno-2.4.7}/agno/tools/google_bigquery.py +0 -0
  482. {agno-2.4.6 → agno-2.4.7}/agno/tools/google_drive.py +0 -0
  483. {agno-2.4.6 → agno-2.4.7}/agno/tools/google_maps.py +0 -0
  484. {agno-2.4.6 → agno-2.4.7}/agno/tools/googlecalendar.py +0 -0
  485. {agno-2.4.6 → agno-2.4.7}/agno/tools/googlesheets.py +0 -0
  486. {agno-2.4.6 → agno-2.4.7}/agno/tools/hackernews.py +0 -0
  487. {agno-2.4.6 → agno-2.4.7}/agno/tools/jina.py +0 -0
  488. {agno-2.4.6 → agno-2.4.7}/agno/tools/jira.py +0 -0
  489. {agno-2.4.6 → agno-2.4.7}/agno/tools/knowledge.py +0 -0
  490. {agno-2.4.6 → agno-2.4.7}/agno/tools/linear.py +0 -0
  491. {agno-2.4.6 → agno-2.4.7}/agno/tools/linkup.py +0 -0
  492. {agno-2.4.6 → agno-2.4.7}/agno/tools/local_file_system.py +0 -0
  493. {agno-2.4.6 → agno-2.4.7}/agno/tools/lumalab.py +0 -0
  494. {agno-2.4.6 → agno-2.4.7}/agno/tools/mcp/__init__.py +0 -0
  495. {agno-2.4.6 → agno-2.4.7}/agno/tools/mcp/multi_mcp.py +0 -0
  496. {agno-2.4.6 → agno-2.4.7}/agno/tools/mcp/params.py +0 -0
  497. {agno-2.4.6 → agno-2.4.7}/agno/tools/mcp_toolbox.py +0 -0
  498. {agno-2.4.6 → agno-2.4.7}/agno/tools/mem0.py +0 -0
  499. {agno-2.4.6 → agno-2.4.7}/agno/tools/memory.py +0 -0
  500. {agno-2.4.6 → agno-2.4.7}/agno/tools/mlx_transcribe.py +0 -0
  501. {agno-2.4.6 → agno-2.4.7}/agno/tools/models/__init__.py +0 -0
  502. {agno-2.4.6 → agno-2.4.7}/agno/tools/models/azure_openai.py +0 -0
  503. {agno-2.4.6 → agno-2.4.7}/agno/tools/models/gemini.py +0 -0
  504. {agno-2.4.6 → agno-2.4.7}/agno/tools/models/groq.py +0 -0
  505. {agno-2.4.6 → agno-2.4.7}/agno/tools/models/morph.py +0 -0
  506. {agno-2.4.6 → agno-2.4.7}/agno/tools/models/nebius.py +0 -0
  507. {agno-2.4.6 → agno-2.4.7}/agno/tools/models_labs.py +0 -0
  508. {agno-2.4.6 → agno-2.4.7}/agno/tools/moviepy_video.py +0 -0
  509. {agno-2.4.6 → agno-2.4.7}/agno/tools/nano_banana.py +0 -0
  510. {agno-2.4.6 → agno-2.4.7}/agno/tools/neo4j.py +0 -0
  511. {agno-2.4.6 → agno-2.4.7}/agno/tools/newspaper.py +0 -0
  512. {agno-2.4.6 → agno-2.4.7}/agno/tools/newspaper4k.py +0 -0
  513. {agno-2.4.6 → agno-2.4.7}/agno/tools/notion.py +0 -0
  514. {agno-2.4.6 → agno-2.4.7}/agno/tools/openai.py +0 -0
  515. {agno-2.4.6 → agno-2.4.7}/agno/tools/openbb.py +0 -0
  516. {agno-2.4.6 → agno-2.4.7}/agno/tools/opencv.py +0 -0
  517. {agno-2.4.6 → agno-2.4.7}/agno/tools/openweather.py +0 -0
  518. {agno-2.4.6 → agno-2.4.7}/agno/tools/oxylabs.py +0 -0
  519. {agno-2.4.6 → agno-2.4.7}/agno/tools/pandas.py +0 -0
  520. {agno-2.4.6 → agno-2.4.7}/agno/tools/parallel.py +0 -0
  521. {agno-2.4.6 → agno-2.4.7}/agno/tools/postgres.py +0 -0
  522. {agno-2.4.6 → agno-2.4.7}/agno/tools/pubmed.py +0 -0
  523. {agno-2.4.6 → agno-2.4.7}/agno/tools/python.py +0 -0
  524. {agno-2.4.6 → agno-2.4.7}/agno/tools/reasoning.py +0 -0
  525. {agno-2.4.6 → agno-2.4.7}/agno/tools/reddit.py +0 -0
  526. {agno-2.4.6 → agno-2.4.7}/agno/tools/redshift.py +0 -0
  527. {agno-2.4.6 → agno-2.4.7}/agno/tools/replicate.py +0 -0
  528. {agno-2.4.6 → agno-2.4.7}/agno/tools/resend.py +0 -0
  529. {agno-2.4.6 → agno-2.4.7}/agno/tools/scrapegraph.py +0 -0
  530. {agno-2.4.6 → agno-2.4.7}/agno/tools/searxng.py +0 -0
  531. {agno-2.4.6 → agno-2.4.7}/agno/tools/seltz.py +0 -0
  532. {agno-2.4.6 → agno-2.4.7}/agno/tools/serpapi.py +0 -0
  533. {agno-2.4.6 → agno-2.4.7}/agno/tools/serper.py +0 -0
  534. {agno-2.4.6 → agno-2.4.7}/agno/tools/shell.py +0 -0
  535. {agno-2.4.6 → agno-2.4.7}/agno/tools/shopify.py +0 -0
  536. {agno-2.4.6 → agno-2.4.7}/agno/tools/slack.py +0 -0
  537. {agno-2.4.6 → agno-2.4.7}/agno/tools/sleep.py +0 -0
  538. {agno-2.4.6 → agno-2.4.7}/agno/tools/spider.py +0 -0
  539. {agno-2.4.6 → agno-2.4.7}/agno/tools/spotify.py +0 -0
  540. {agno-2.4.6 → agno-2.4.7}/agno/tools/sql.py +0 -0
  541. {agno-2.4.6 → agno-2.4.7}/agno/tools/streamlit/__init__.py +0 -0
  542. {agno-2.4.6 → agno-2.4.7}/agno/tools/streamlit/components.py +0 -0
  543. {agno-2.4.6 → agno-2.4.7}/agno/tools/tavily.py +0 -0
  544. {agno-2.4.6 → agno-2.4.7}/agno/tools/telegram.py +0 -0
  545. {agno-2.4.6 → agno-2.4.7}/agno/tools/todoist.py +0 -0
  546. {agno-2.4.6 → agno-2.4.7}/agno/tools/tool_registry.py +0 -0
  547. {agno-2.4.6 → agno-2.4.7}/agno/tools/toolkit.py +0 -0
  548. {agno-2.4.6 → agno-2.4.7}/agno/tools/trafilatura.py +0 -0
  549. {agno-2.4.6 → agno-2.4.7}/agno/tools/trello.py +0 -0
  550. {agno-2.4.6 → agno-2.4.7}/agno/tools/twilio.py +0 -0
  551. {agno-2.4.6 → agno-2.4.7}/agno/tools/unsplash.py +0 -0
  552. {agno-2.4.6 → agno-2.4.7}/agno/tools/user_control_flow.py +0 -0
  553. {agno-2.4.6 → agno-2.4.7}/agno/tools/valyu.py +0 -0
  554. {agno-2.4.6 → agno-2.4.7}/agno/tools/visualization.py +0 -0
  555. {agno-2.4.6 → agno-2.4.7}/agno/tools/webbrowser.py +0 -0
  556. {agno-2.4.6 → agno-2.4.7}/agno/tools/webex.py +0 -0
  557. {agno-2.4.6 → agno-2.4.7}/agno/tools/websearch.py +0 -0
  558. {agno-2.4.6 → agno-2.4.7}/agno/tools/website.py +0 -0
  559. {agno-2.4.6 → agno-2.4.7}/agno/tools/webtools.py +0 -0
  560. {agno-2.4.6 → agno-2.4.7}/agno/tools/whatsapp.py +0 -0
  561. {agno-2.4.6 → agno-2.4.7}/agno/tools/wikipedia.py +0 -0
  562. {agno-2.4.6 → agno-2.4.7}/agno/tools/workflow.py +0 -0
  563. {agno-2.4.6 → agno-2.4.7}/agno/tools/x.py +0 -0
  564. {agno-2.4.6 → agno-2.4.7}/agno/tools/yfinance.py +0 -0
  565. {agno-2.4.6 → agno-2.4.7}/agno/tools/youtube.py +0 -0
  566. {agno-2.4.6 → agno-2.4.7}/agno/tools/zendesk.py +0 -0
  567. {agno-2.4.6 → agno-2.4.7}/agno/tools/zep.py +0 -0
  568. {agno-2.4.6 → agno-2.4.7}/agno/tools/zoom.py +0 -0
  569. {agno-2.4.6 → agno-2.4.7}/agno/tracing/__init__.py +0 -0
  570. {agno-2.4.6 → agno-2.4.7}/agno/tracing/exporter.py +0 -0
  571. {agno-2.4.6 → agno-2.4.7}/agno/tracing/schemas.py +0 -0
  572. {agno-2.4.6 → agno-2.4.7}/agno/tracing/setup.py +0 -0
  573. {agno-2.4.6 → agno-2.4.7}/agno/utils/__init__.py +0 -0
  574. {agno-2.4.6 → agno-2.4.7}/agno/utils/agent.py +0 -0
  575. {agno-2.4.6 → agno-2.4.7}/agno/utils/audio.py +0 -0
  576. {agno-2.4.6 → agno-2.4.7}/agno/utils/certs.py +0 -0
  577. {agno-2.4.6 → agno-2.4.7}/agno/utils/code_execution.py +0 -0
  578. {agno-2.4.6 → agno-2.4.7}/agno/utils/common.py +0 -0
  579. {agno-2.4.6 → agno-2.4.7}/agno/utils/cryptography.py +0 -0
  580. {agno-2.4.6 → agno-2.4.7}/agno/utils/dttm.py +0 -0
  581. {agno-2.4.6 → agno-2.4.7}/agno/utils/enum.py +0 -0
  582. {agno-2.4.6 → agno-2.4.7}/agno/utils/env.py +0 -0
  583. {agno-2.4.6 → agno-2.4.7}/agno/utils/events.py +0 -0
  584. {agno-2.4.6 → agno-2.4.7}/agno/utils/format_str.py +0 -0
  585. {agno-2.4.6 → agno-2.4.7}/agno/utils/functions.py +0 -0
  586. {agno-2.4.6 → agno-2.4.7}/agno/utils/gemini.py +0 -0
  587. {agno-2.4.6 → agno-2.4.7}/agno/utils/hooks.py +0 -0
  588. {agno-2.4.6 → agno-2.4.7}/agno/utils/http.py +0 -0
  589. {agno-2.4.6 → agno-2.4.7}/agno/utils/json_schema.py +0 -0
  590. {agno-2.4.6 → agno-2.4.7}/agno/utils/knowledge.py +0 -0
  591. {agno-2.4.6 → agno-2.4.7}/agno/utils/location.py +0 -0
  592. {agno-2.4.6 → agno-2.4.7}/agno/utils/log.py +0 -0
  593. {agno-2.4.6 → agno-2.4.7}/agno/utils/mcp.py +0 -0
  594. {agno-2.4.6 → agno-2.4.7}/agno/utils/media.py +0 -0
  595. {agno-2.4.6 → agno-2.4.7}/agno/utils/merge_dict.py +0 -0
  596. {agno-2.4.6 → agno-2.4.7}/agno/utils/message.py +0 -0
  597. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/__init__.py +0 -0
  598. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/ai_foundry.py +0 -0
  599. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/claude.py +0 -0
  600. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/cohere.py +0 -0
  601. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/llama.py +0 -0
  602. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/mistral.py +0 -0
  603. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/openai_responses.py +0 -0
  604. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/schema_utils.py +0 -0
  605. {agno-2.4.6 → agno-2.4.7}/agno/utils/models/watsonx.py +0 -0
  606. {agno-2.4.6 → agno-2.4.7}/agno/utils/openai.py +0 -0
  607. {agno-2.4.6 → agno-2.4.7}/agno/utils/os.py +0 -0
  608. {agno-2.4.6 → agno-2.4.7}/agno/utils/pickle.py +0 -0
  609. {agno-2.4.6 → agno-2.4.7}/agno/utils/pprint.py +0 -0
  610. {agno-2.4.6 → agno-2.4.7}/agno/utils/print_response/__init__.py +0 -0
  611. {agno-2.4.6 → agno-2.4.7}/agno/utils/print_response/agent.py +0 -0
  612. {agno-2.4.6 → agno-2.4.7}/agno/utils/print_response/team.py +0 -0
  613. {agno-2.4.6 → agno-2.4.7}/agno/utils/print_response/workflow.py +0 -0
  614. {agno-2.4.6 → agno-2.4.7}/agno/utils/prompts.py +0 -0
  615. {agno-2.4.6 → agno-2.4.7}/agno/utils/reasoning.py +0 -0
  616. {agno-2.4.6 → agno-2.4.7}/agno/utils/remote.py +0 -0
  617. {agno-2.4.6 → agno-2.4.7}/agno/utils/response.py +0 -0
  618. {agno-2.4.6 → agno-2.4.7}/agno/utils/response_iterator.py +0 -0
  619. {agno-2.4.6 → agno-2.4.7}/agno/utils/safe_formatter.py +0 -0
  620. {agno-2.4.6 → agno-2.4.7}/agno/utils/serialize.py +0 -0
  621. {agno-2.4.6 → agno-2.4.7}/agno/utils/shell.py +0 -0
  622. {agno-2.4.6 → agno-2.4.7}/agno/utils/streamlit.py +0 -0
  623. {agno-2.4.6 → agno-2.4.7}/agno/utils/string.py +0 -0
  624. {agno-2.4.6 → agno-2.4.7}/agno/utils/team.py +0 -0
  625. {agno-2.4.6 → agno-2.4.7}/agno/utils/timer.py +0 -0
  626. {agno-2.4.6 → agno-2.4.7}/agno/utils/tokens.py +0 -0
  627. {agno-2.4.6 → agno-2.4.7}/agno/utils/tools.py +0 -0
  628. {agno-2.4.6 → agno-2.4.7}/agno/utils/web.py +0 -0
  629. {agno-2.4.6 → agno-2.4.7}/agno/utils/whatsapp.py +0 -0
  630. {agno-2.4.6 → agno-2.4.7}/agno/utils/yaml_io.py +0 -0
  631. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/__init__.py +0 -0
  632. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/base.py +0 -0
  633. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/cassandra/__init__.py +0 -0
  634. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/cassandra/cassandra.py +0 -0
  635. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
  636. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/cassandra/index.py +0 -0
  637. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/chroma/__init__.py +0 -0
  638. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/chroma/chromadb.py +0 -0
  639. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/clickhouse/__init__.py +0 -0
  640. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
  641. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/clickhouse/index.py +0 -0
  642. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/couchbase/__init__.py +0 -0
  643. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/couchbase/couchbase.py +0 -0
  644. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/distance.py +0 -0
  645. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/lancedb/__init__.py +0 -0
  646. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/langchaindb/__init__.py +0 -0
  647. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/langchaindb/langchaindb.py +0 -0
  648. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/lightrag/__init__.py +0 -0
  649. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/lightrag/lightrag.py +0 -0
  650. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/llamaindex/__init__.py +0 -0
  651. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
  652. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/milvus/__init__.py +0 -0
  653. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/milvus/milvus.py +0 -0
  654. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/mongodb/__init__.py +0 -0
  655. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/mongodb/mongodb.py +0 -0
  656. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/pgvector/__init__.py +0 -0
  657. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/pgvector/index.py +0 -0
  658. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/pgvector/pgvector.py +0 -0
  659. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/pineconedb/__init__.py +0 -0
  660. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/pineconedb/pineconedb.py +0 -0
  661. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/qdrant/__init__.py +0 -0
  662. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/qdrant/qdrant.py +0 -0
  663. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/redis/__init__.py +0 -0
  664. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/redis/redisdb.py +0 -0
  665. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/search.py +0 -0
  666. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/singlestore/__init__.py +0 -0
  667. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/singlestore/index.py +0 -0
  668. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/singlestore/singlestore.py +0 -0
  669. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/surrealdb/__init__.py +0 -0
  670. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/surrealdb/surrealdb.py +0 -0
  671. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/upstashdb/__init__.py +0 -0
  672. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/upstashdb/upstashdb.py +0 -0
  673. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/weaviate/__init__.py +0 -0
  674. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/weaviate/index.py +0 -0
  675. {agno-2.4.6 → agno-2.4.7}/agno/vectordb/weaviate/weaviate.py +0 -0
  676. {agno-2.4.6 → agno-2.4.7}/agno/workflow/__init__.py +0 -0
  677. {agno-2.4.6 → agno-2.4.7}/agno/workflow/agent.py +0 -0
  678. {agno-2.4.6 → agno-2.4.7}/agno/workflow/loop.py +0 -0
  679. {agno-2.4.6 → agno-2.4.7}/agno/workflow/parallel.py +0 -0
  680. {agno-2.4.6 → agno-2.4.7}/agno/workflow/remote.py +0 -0
  681. {agno-2.4.6 → agno-2.4.7}/agno/workflow/router.py +0 -0
  682. {agno-2.4.6 → agno-2.4.7}/agno/workflow/step.py +0 -0
  683. {agno-2.4.6 → agno-2.4.7}/agno/workflow/steps.py +0 -0
  684. {agno-2.4.6 → agno-2.4.7}/agno/workflow/types.py +0 -0
  685. {agno-2.4.6 → agno-2.4.7}/agno/workflow/workflow.py +0 -0
  686. {agno-2.4.6 → agno-2.4.7}/agno.egg-info/dependency_links.txt +0 -0
  687. {agno-2.4.6 → agno-2.4.7}/agno.egg-info/top_level.txt +0 -0
  688. {agno-2.4.6 → agno-2.4.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agno
3
- Version: 2.4.6
3
+ Version: 2.4.7
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
@@ -225,7 +225,7 @@ Requires-Dist: pgvector; extra == "pgvector"
225
225
  Provides-Extra: chromadb
226
226
  Requires-Dist: chromadb; extra == "chromadb"
227
227
  Provides-Extra: lancedb
228
- Requires-Dist: lancedb==0.24.0; extra == "lancedb"
228
+ Requires-Dist: lancedb>=0.26.0; extra == "lancedb"
229
229
  Requires-Dist: tantivy; extra == "lancedb"
230
230
  Provides-Extra: pylance
231
231
  Requires-Dist: pylance; extra == "pylance"
@@ -173,8 +173,7 @@ class SingleStoreDb(BaseDb):
173
173
  column_kwargs["unique"] = True
174
174
  columns.append(Column(*column_args, **column_kwargs))
175
175
 
176
- # Create the table object without constraints to avoid autoload issues
177
- table = Table(table_name, self.metadata, *columns, schema=self.db_schema)
176
+ table = Table(table_name, self.metadata, *columns, schema=self.db_schema, extend_existing=True)
178
177
 
179
178
  return table
180
179
 
@@ -240,8 +239,7 @@ class SingleStoreDb(BaseDb):
240
239
 
241
240
  columns.append(Column(*column_args, **column_kwargs))
242
241
 
243
- # Create the table object
244
- table = Table(table_name, self.metadata, *columns, schema=self.db_schema)
242
+ table = Table(table_name, self.metadata, *columns, schema=self.db_schema, extend_existing=True)
245
243
 
246
244
  # Add multi-column unique constraints with table-specific names
247
245
  for constraint in schema_unique_constraints:
@@ -396,7 +394,8 @@ class SingleStoreDb(BaseDb):
396
394
 
397
395
  if table_type == "spans":
398
396
  # Ensure traces table exists first (for foreign key)
399
- self._get_table(table_type="traces", create_table_if_not_found=create_table_if_not_found)
397
+ if create_table_if_not_found:
398
+ self._get_table(table_type="traces", create_table_if_not_found=True)
400
399
  self.spans_table = self._get_or_create_table(
401
400
  table_name=self.span_table_name,
402
401
  table_type="spans",
@@ -0,0 +1,562 @@
1
+ import json
2
+ from dataclasses import dataclass
3
+ from os import getenv
4
+ from typing import Any, Dict, List, Literal, Optional, Tuple
5
+
6
+ from agno.exceptions import AgnoError, ModelProviderError
7
+ from agno.knowledge.embedder.base import Embedder
8
+ from agno.utils.log import log_error, log_warning
9
+
10
+ try:
11
+ from boto3 import client as AwsClient
12
+ from boto3.session import Session
13
+ from botocore.exceptions import ClientError
14
+ except ImportError:
15
+ log_error("`boto3` not installed. Please install it via `pip install boto3`.")
16
+ raise
17
+
18
+ try:
19
+ import aioboto3
20
+ except ImportError:
21
+ log_warning("`aioboto3` not installed. Async methods will not be available. Install via `pip install aioboto3`.")
22
+ aioboto3 = None
23
+
24
+
25
+ # Type aliases for clarity
26
+ InputType = Literal["search_document", "search_query", "classification", "clustering"]
27
+ EmbeddingType = Literal["float", "int8", "uint8", "binary", "ubinary"]
28
+ TruncateV3 = Literal["NONE", "START", "END"]
29
+ TruncateV4 = Literal["NONE", "LEFT", "RIGHT"]
30
+ OutputDimension = Literal[256, 512, 1024, 1536]
31
+
32
+
33
+ @dataclass
34
+ class AwsBedrockEmbedder(Embedder):
35
+ """
36
+ AWS Bedrock embedder supporting Cohere Embed v3 and v4 models.
37
+
38
+ To use this embedder, you need to either:
39
+ 1. Set the following environment variables:
40
+ - AWS_ACCESS_KEY_ID
41
+ - AWS_SECRET_ACCESS_KEY
42
+ - AWS_REGION
43
+ 2. Or provide a boto3 Session object
44
+
45
+ Args:
46
+ id (str): The model ID to use. Default is 'cohere.embed-multilingual-v3'.
47
+ - v3 models: 'cohere.embed-multilingual-v3', 'cohere.embed-english-v3'
48
+ - v4 model: 'cohere.embed-v4:0'
49
+ dimensions (Optional[int]): The dimensions of the embeddings.
50
+ - v3: Fixed at 1024
51
+ - v4: Configurable via output_dimension (256, 512, 1024, 1536). Default 1536.
52
+ input_type (str): Prepends special tokens to differentiate types. Options:
53
+ 'search_document', 'search_query', 'classification', 'clustering'. Default is 'search_query'.
54
+ truncate (Optional[str]): How to handle inputs longer than the maximum token length.
55
+ - v3: 'NONE', 'START', 'END'
56
+ - v4: 'NONE', 'LEFT', 'RIGHT'
57
+ embedding_types (Optional[List[str]]): Types of embeddings to return. Options:
58
+ 'float', 'int8', 'uint8', 'binary', 'ubinary'. Default is ['float'].
59
+ output_dimension (Optional[int]): (v4 only) Vector length. Options: 256, 512, 1024, 1536.
60
+ Default is 1536 if unspecified.
61
+ max_tokens (Optional[int]): (v4 only) Truncation budget per input object.
62
+ The model supports up to ~128,000 tokens.
63
+ aws_region (Optional[str]): The AWS region to use.
64
+ aws_access_key_id (Optional[str]): The AWS access key ID to use.
65
+ aws_secret_access_key (Optional[str]): The AWS secret access key to use.
66
+ session (Optional[Session]): A boto3 Session object to use for authentication.
67
+ request_params (Optional[Dict[str, Any]]): Additional parameters to pass to the API requests.
68
+ client_params (Optional[Dict[str, Any]]): Additional parameters to pass to the boto3 client.
69
+ """
70
+
71
+ id: str = "cohere.embed-multilingual-v3"
72
+ dimensions: int = 1024 # v3: 1024, v4: 1536 default (set in __post_init__)
73
+ input_type: InputType = "search_query"
74
+ truncate: Optional[str] = None # v3: 'NONE'|'START'|'END', v4: 'NONE'|'LEFT'|'RIGHT'
75
+ embedding_types: Optional[List[EmbeddingType]] = None # 'float', 'int8', 'uint8', etc.
76
+
77
+ # v4-specific parameters
78
+ output_dimension: Optional[OutputDimension] = None # 256, 512, 1024, 1536
79
+ max_tokens: Optional[int] = None # Up to 128000 for v4
80
+
81
+ aws_region: Optional[str] = None
82
+ aws_access_key_id: Optional[str] = None
83
+ aws_secret_access_key: Optional[str] = None
84
+ session: Optional[Session] = None
85
+
86
+ request_params: Optional[Dict[str, Any]] = None
87
+ client_params: Optional[Dict[str, Any]] = None
88
+ client: Optional[AwsClient] = None
89
+
90
+ def __post_init__(self):
91
+ if self.enable_batch:
92
+ log_warning("AwsBedrockEmbedder does not support batch embeddings, setting enable_batch to False")
93
+ self.enable_batch = False
94
+
95
+ # Set appropriate default dimensions based on model version
96
+ if self._is_v4_model():
97
+ # v4 default is 1536, but can be overridden by output_dimension
98
+ if self.output_dimension:
99
+ self.dimensions = self.output_dimension
100
+ else:
101
+ self.dimensions = 1536
102
+ else:
103
+ # v3 models are fixed at 1024
104
+ self.dimensions = 1024
105
+
106
+ def _is_v4_model(self) -> bool:
107
+ """Check if the current model is a Cohere Embed v4 model."""
108
+ return "embed-v4" in self.id.lower()
109
+
110
+ def get_client(self) -> AwsClient:
111
+ """
112
+ Returns an AWS Bedrock client.
113
+
114
+ Credentials are resolved in the following order:
115
+ 1. Explicit session parameter
116
+ 2. Explicit aws_access_key_id and aws_secret_access_key parameters
117
+ 3. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
118
+ 4. Default boto3 credential chain (~/.aws/credentials, SSO, IAM role, etc.)
119
+
120
+ Returns:
121
+ AwsClient: An instance of the AWS Bedrock client.
122
+ """
123
+ if self.client is not None:
124
+ return self.client
125
+
126
+ if self.session:
127
+ self.client = self.session.client("bedrock-runtime")
128
+ return self.client
129
+
130
+ # Try explicit credentials or environment variables
131
+ self.aws_access_key_id = self.aws_access_key_id or getenv("AWS_ACCESS_KEY_ID")
132
+ self.aws_secret_access_key = self.aws_secret_access_key or getenv("AWS_SECRET_ACCESS_KEY")
133
+ self.aws_region = self.aws_region or getenv("AWS_REGION")
134
+
135
+ if self.aws_access_key_id and self.aws_secret_access_key:
136
+ # Use explicit credentials
137
+ self.client = AwsClient(
138
+ service_name="bedrock-runtime",
139
+ region_name=self.aws_region,
140
+ aws_access_key_id=self.aws_access_key_id,
141
+ aws_secret_access_key=self.aws_secret_access_key,
142
+ **(self.client_params or {}),
143
+ )
144
+ else:
145
+ # Fall back to default credential chain (SSO, credentials file, IAM role, etc.)
146
+ self.client = AwsClient(
147
+ service_name="bedrock-runtime",
148
+ region_name=self.aws_region,
149
+ **(self.client_params or {}),
150
+ )
151
+ return self.client
152
+
153
+ def get_async_client(self):
154
+ """
155
+ Returns an async AWS Bedrock client using aioboto3.
156
+
157
+ Credentials are resolved in the following order:
158
+ 1. Explicit session parameter
159
+ 2. Explicit aws_access_key_id and aws_secret_access_key parameters
160
+ 3. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
161
+ 4. Default credential chain (~/.aws/credentials, SSO, IAM role, etc.)
162
+
163
+ Returns:
164
+ An aioboto3 bedrock-runtime client context manager.
165
+ """
166
+ if aioboto3 is None:
167
+ raise AgnoError(
168
+ message="aioboto3 not installed. Please install it via `pip install aioboto3`.",
169
+ status_code=400,
170
+ )
171
+
172
+ if self.session:
173
+ # Convert boto3 session to aioboto3 session
174
+ aio_session = aioboto3.Session(
175
+ aws_access_key_id=self.session.get_credentials().access_key,
176
+ aws_secret_access_key=self.session.get_credentials().secret_key,
177
+ aws_session_token=self.session.get_credentials().token,
178
+ region_name=self.session.region_name,
179
+ )
180
+ else:
181
+ # Try explicit credentials or environment variables
182
+ self.aws_access_key_id = self.aws_access_key_id or getenv("AWS_ACCESS_KEY_ID")
183
+ self.aws_secret_access_key = self.aws_secret_access_key or getenv("AWS_SECRET_ACCESS_KEY")
184
+ self.aws_region = self.aws_region or getenv("AWS_REGION")
185
+
186
+ if self.aws_access_key_id and self.aws_secret_access_key:
187
+ # Use explicit credentials
188
+ aio_session = aioboto3.Session(
189
+ aws_access_key_id=self.aws_access_key_id,
190
+ aws_secret_access_key=self.aws_secret_access_key,
191
+ region_name=self.aws_region,
192
+ )
193
+ else:
194
+ # Fall back to default credential chain (SSO, credentials file, IAM role, etc.)
195
+ aio_session = aioboto3.Session(region_name=self.aws_region)
196
+
197
+ return aio_session.client("bedrock-runtime", **(self.client_params or {}))
198
+
199
+ def _format_request_body(self, text: str) -> str:
200
+ """
201
+ Format the request body for the embedder.
202
+
203
+ Args:
204
+ text (str): The text to embed.
205
+
206
+ Returns:
207
+ str: The formatted request body as a JSON string.
208
+ """
209
+ request_body: Dict[str, Any] = {
210
+ "texts": [text],
211
+ "input_type": self.input_type,
212
+ }
213
+
214
+ if self.truncate:
215
+ request_body["truncate"] = self.truncate
216
+
217
+ if self.embedding_types:
218
+ request_body["embedding_types"] = self.embedding_types
219
+
220
+ # v4-specific parameters
221
+ if self._is_v4_model():
222
+ if self.output_dimension:
223
+ request_body["output_dimension"] = self.output_dimension
224
+ if self.max_tokens:
225
+ request_body["max_tokens"] = self.max_tokens
226
+
227
+ # Add additional request parameters if provided
228
+ if self.request_params:
229
+ request_body.update(self.request_params)
230
+
231
+ return json.dumps(request_body)
232
+
233
+ def _format_multimodal_request_body(
234
+ self,
235
+ texts: Optional[List[str]] = None,
236
+ images: Optional[List[str]] = None,
237
+ inputs: Optional[List[Dict[str, Any]]] = None,
238
+ ) -> str:
239
+ """
240
+ Format a multimodal request body for v4 models.
241
+
242
+ Args:
243
+ texts: List of text strings to embed (text-only mode)
244
+ images: List of base64 data URIs for images (image-only mode)
245
+ inputs: List of interleaved content items for mixed modality
246
+
247
+ Returns:
248
+ str: The formatted request body as a JSON string.
249
+ """
250
+ if not self._is_v4_model():
251
+ raise AgnoError(
252
+ message="Multimodal embeddings are only supported with Cohere Embed v4 models.",
253
+ status_code=400,
254
+ )
255
+
256
+ request_body: Dict[str, Any] = {
257
+ "input_type": self.input_type,
258
+ }
259
+
260
+ # Set the appropriate input field
261
+ if inputs:
262
+ request_body["inputs"] = inputs
263
+ elif images:
264
+ request_body["images"] = images
265
+ elif texts:
266
+ request_body["texts"] = texts
267
+ else:
268
+ raise AgnoError(
269
+ message="At least one of texts, images, or inputs must be provided.",
270
+ status_code=400,
271
+ )
272
+
273
+ if self.truncate:
274
+ request_body["truncate"] = self.truncate
275
+
276
+ if self.embedding_types:
277
+ request_body["embedding_types"] = self.embedding_types
278
+
279
+ if self.output_dimension:
280
+ request_body["output_dimension"] = self.output_dimension
281
+
282
+ if self.max_tokens:
283
+ request_body["max_tokens"] = self.max_tokens
284
+
285
+ if self.request_params:
286
+ request_body.update(self.request_params)
287
+
288
+ return json.dumps(request_body)
289
+
290
+ def _extract_embeddings(self, response_body: Dict[str, Any]) -> List[float]:
291
+ """
292
+ Extract embeddings from the response body, handling both v3 and v4 formats.
293
+
294
+ Args:
295
+ response_body: The parsed response body from the API.
296
+
297
+ Returns:
298
+ List[float]: The embedding vector.
299
+ """
300
+ try:
301
+ if "embeddings" in response_body:
302
+ embeddings = response_body["embeddings"]
303
+
304
+ # Handle list format (single embedding type or v3 default)
305
+ if isinstance(embeddings, list):
306
+ return embeddings[0] if embeddings else []
307
+
308
+ # Handle dict format (multiple embedding types requested)
309
+ if isinstance(embeddings, dict):
310
+ # Prefer float embeddings
311
+ if "float" in embeddings:
312
+ return embeddings["float"][0]
313
+ # Fallback to first available type
314
+ for embedding_type in embeddings:
315
+ if embeddings[embedding_type]:
316
+ return embeddings[embedding_type][0]
317
+
318
+ log_warning("No embeddings found in response")
319
+ return []
320
+ except Exception as e:
321
+ log_warning(f"Error extracting embeddings: {e}")
322
+ return []
323
+
324
+ def response(self, text: str) -> Dict[str, Any]:
325
+ """
326
+ Get embeddings from AWS Bedrock for the given text.
327
+
328
+ Args:
329
+ text (str): The text to embed.
330
+
331
+ Returns:
332
+ Dict[str, Any]: The response from the API.
333
+ """
334
+ try:
335
+ body = self._format_request_body(text)
336
+ response = self.get_client().invoke_model(
337
+ modelId=self.id,
338
+ body=body,
339
+ contentType="application/json",
340
+ accept="application/json",
341
+ )
342
+ response_body = json.loads(response["body"].read().decode("utf-8"))
343
+ return response_body
344
+ except ClientError as e:
345
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
346
+ raise ModelProviderError(message=str(e.response), model_name="AwsBedrockEmbedder", model_id=self.id) from e
347
+ except Exception as e:
348
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
349
+ raise ModelProviderError(message=str(e), model_name="AwsBedrockEmbedder", model_id=self.id) from e
350
+
351
+ def get_embedding(self, text: str) -> List[float]:
352
+ """
353
+ Get embeddings for the given text.
354
+
355
+ Args:
356
+ text (str): The text to embed.
357
+
358
+ Returns:
359
+ List[float]: The embedding vector.
360
+ """
361
+ response = self.response(text=text)
362
+ return self._extract_embeddings(response)
363
+
364
+ def get_embedding_and_usage(self, text: str) -> Tuple[List[float], Optional[Dict[str, Any]]]:
365
+ """
366
+ Get embeddings and usage information for the given text.
367
+
368
+ Args:
369
+ text (str): The text to embed.
370
+
371
+ Returns:
372
+ Tuple[List[float], Optional[Dict[str, Any]]]: The embedding vector and usage information.
373
+ """
374
+ response = self.response(text=text)
375
+ embedding = self._extract_embeddings(response)
376
+ usage = response.get("usage")
377
+ return embedding, usage
378
+
379
+ def get_image_embedding(self, image_data_uri: str) -> List[float]:
380
+ """
381
+ Get embeddings for an image (v4 only).
382
+
383
+ Args:
384
+ image_data_uri (str): Base64 data URI of the image
385
+ (e.g., "data:image/png;base64,...")
386
+
387
+ Returns:
388
+ List[float]: The embedding vector.
389
+ """
390
+ if not self._is_v4_model():
391
+ raise AgnoError(
392
+ message="Image embeddings are only supported with Cohere Embed v4 models.",
393
+ status_code=400,
394
+ )
395
+
396
+ try:
397
+ body = self._format_multimodal_request_body(images=[image_data_uri])
398
+ response = self.get_client().invoke_model(
399
+ modelId=self.id,
400
+ body=body,
401
+ contentType="application/json",
402
+ accept="application/json",
403
+ )
404
+ response_body = json.loads(response["body"].read().decode("utf-8"))
405
+ return self._extract_embeddings(response_body)
406
+ except ClientError as e:
407
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
408
+ raise ModelProviderError(message=str(e.response), model_name="AwsBedrockEmbedder", model_id=self.id) from e
409
+ except Exception as e:
410
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
411
+ raise ModelProviderError(message=str(e), model_name="AwsBedrockEmbedder", model_id=self.id) from e
412
+
413
+ def get_multimodal_embedding(
414
+ self,
415
+ content: List[Dict[str, str]],
416
+ ) -> List[float]:
417
+ """
418
+ Get embeddings for interleaved text and image content (v4 only).
419
+
420
+ Args:
421
+ content: List of content parts, each being either:
422
+ - {"type": "text", "text": "..."}
423
+ - {"type": "image_url", "image_url": "data:image/png;base64,..."}
424
+
425
+ Returns:
426
+ List[float]: The embedding vector.
427
+
428
+ Example:
429
+ embedder.get_multimodal_embedding([
430
+ {"type": "text", "text": "Product description"},
431
+ {"type": "image_url", "image_url": "data:image/png;base64,..."}
432
+ ])
433
+ """
434
+ if not self._is_v4_model():
435
+ raise AgnoError(
436
+ message="Multimodal embeddings are only supported with Cohere Embed v4 models.",
437
+ status_code=400,
438
+ )
439
+
440
+ try:
441
+ inputs = [{"content": content}]
442
+ body = self._format_multimodal_request_body(inputs=inputs)
443
+ response = self.get_client().invoke_model(
444
+ modelId=self.id,
445
+ body=body,
446
+ contentType="application/json",
447
+ accept="application/json",
448
+ )
449
+ response_body = json.loads(response["body"].read().decode("utf-8"))
450
+ return self._extract_embeddings(response_body)
451
+ except ClientError as e:
452
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
453
+ raise ModelProviderError(message=str(e.response), model_name="AwsBedrockEmbedder", model_id=self.id) from e
454
+ except Exception as e:
455
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
456
+ raise ModelProviderError(message=str(e), model_name="AwsBedrockEmbedder", model_id=self.id) from e
457
+
458
+ async def async_get_embedding(self, text: str) -> List[float]:
459
+ """
460
+ Async version of get_embedding() using native aioboto3 async client.
461
+ """
462
+ try:
463
+ body = self._format_request_body(text)
464
+ async with self.get_async_client() as client:
465
+ response = await client.invoke_model(
466
+ modelId=self.id,
467
+ body=body,
468
+ contentType="application/json",
469
+ accept="application/json",
470
+ )
471
+ response_body = json.loads((await response["body"].read()).decode("utf-8"))
472
+ return self._extract_embeddings(response_body)
473
+ except ClientError as e:
474
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
475
+ raise ModelProviderError(message=str(e.response), model_name="AwsBedrockEmbedder", model_id=self.id) from e
476
+ except Exception as e:
477
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
478
+ raise ModelProviderError(message=str(e), model_name="AwsBedrockEmbedder", model_id=self.id) from e
479
+
480
+ async def async_get_embedding_and_usage(self, text: str) -> Tuple[List[float], Optional[Dict[str, Any]]]:
481
+ """
482
+ Async version of get_embedding_and_usage() using native aioboto3 async client.
483
+ """
484
+ try:
485
+ body = self._format_request_body(text)
486
+ async with self.get_async_client() as client:
487
+ response = await client.invoke_model(
488
+ modelId=self.id,
489
+ body=body,
490
+ contentType="application/json",
491
+ accept="application/json",
492
+ )
493
+ response_body = json.loads((await response["body"].read()).decode("utf-8"))
494
+ embedding = self._extract_embeddings(response_body)
495
+ usage = response_body.get("usage")
496
+ return embedding, usage
497
+ except ClientError as e:
498
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
499
+ raise ModelProviderError(message=str(e.response), model_name="AwsBedrockEmbedder", model_id=self.id) from e
500
+ except Exception as e:
501
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
502
+ raise ModelProviderError(message=str(e), model_name="AwsBedrockEmbedder", model_id=self.id) from e
503
+
504
+ async def async_get_image_embedding(self, image_data_uri: str) -> List[float]:
505
+ """
506
+ Async version of get_image_embedding() (v4 only).
507
+ """
508
+ if not self._is_v4_model():
509
+ raise AgnoError(
510
+ message="Image embeddings are only supported with Cohere Embed v4 models.",
511
+ status_code=400,
512
+ )
513
+
514
+ try:
515
+ body = self._format_multimodal_request_body(images=[image_data_uri])
516
+ async with self.get_async_client() as client:
517
+ response = await client.invoke_model(
518
+ modelId=self.id,
519
+ body=body,
520
+ contentType="application/json",
521
+ accept="application/json",
522
+ )
523
+ response_body = json.loads((await response["body"].read()).decode("utf-8"))
524
+ return self._extract_embeddings(response_body)
525
+ except ClientError as e:
526
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
527
+ raise ModelProviderError(message=str(e.response), model_name="AwsBedrockEmbedder", model_id=self.id) from e
528
+ except Exception as e:
529
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
530
+ raise ModelProviderError(message=str(e), model_name="AwsBedrockEmbedder", model_id=self.id) from e
531
+
532
+ async def async_get_multimodal_embedding(
533
+ self,
534
+ content: List[Dict[str, str]],
535
+ ) -> List[float]:
536
+ """
537
+ Async version of get_multimodal_embedding() (v4 only).
538
+ """
539
+ if not self._is_v4_model():
540
+ raise AgnoError(
541
+ message="Multimodal embeddings are only supported with Cohere Embed v4 models.",
542
+ status_code=400,
543
+ )
544
+
545
+ try:
546
+ inputs = [{"content": content}]
547
+ body = self._format_multimodal_request_body(inputs=inputs)
548
+ async with self.get_async_client() as client:
549
+ response = await client.invoke_model(
550
+ modelId=self.id,
551
+ body=body,
552
+ contentType="application/json",
553
+ accept="application/json",
554
+ )
555
+ response_body = json.loads((await response["body"].read()).decode("utf-8"))
556
+ return self._extract_embeddings(response_body)
557
+ except ClientError as e:
558
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
559
+ raise ModelProviderError(message=str(e.response), model_name="AwsBedrockEmbedder", model_id=self.id) from e
560
+ except Exception as e:
561
+ log_error(f"Unexpected error calling Bedrock API: {str(e)}")
562
+ raise ModelProviderError(message=str(e), model_name="AwsBedrockEmbedder", model_id=self.id) from e