agno 1.8.2__py3-none-any.whl → 2.0.0__py3-none-any.whl

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 (589) hide show
  1. agno/agent/__init__.py +19 -27
  2. agno/agent/agent.py +3143 -4170
  3. agno/api/agent.py +11 -67
  4. agno/api/api.py +5 -46
  5. agno/api/evals.py +8 -19
  6. agno/api/os.py +17 -0
  7. agno/api/routes.py +6 -41
  8. agno/api/schemas/__init__.py +9 -0
  9. agno/api/schemas/agent.py +5 -21
  10. agno/api/schemas/evals.py +7 -16
  11. agno/api/schemas/os.py +14 -0
  12. agno/api/schemas/team.py +5 -21
  13. agno/api/schemas/utils.py +21 -0
  14. agno/api/schemas/workflows.py +11 -7
  15. agno/api/settings.py +53 -0
  16. agno/api/team.py +11 -66
  17. agno/api/workflow.py +28 -0
  18. agno/cloud/aws/base.py +214 -0
  19. agno/cloud/aws/s3/__init__.py +2 -0
  20. agno/cloud/aws/s3/api_client.py +43 -0
  21. agno/cloud/aws/s3/bucket.py +195 -0
  22. agno/cloud/aws/s3/object.py +57 -0
  23. agno/db/__init__.py +24 -0
  24. agno/db/base.py +245 -0
  25. agno/db/dynamo/__init__.py +3 -0
  26. agno/db/dynamo/dynamo.py +1743 -0
  27. agno/db/dynamo/schemas.py +278 -0
  28. agno/db/dynamo/utils.py +684 -0
  29. agno/db/firestore/__init__.py +3 -0
  30. agno/db/firestore/firestore.py +1432 -0
  31. agno/db/firestore/schemas.py +130 -0
  32. agno/db/firestore/utils.py +278 -0
  33. agno/db/gcs_json/__init__.py +3 -0
  34. agno/db/gcs_json/gcs_json_db.py +1001 -0
  35. agno/db/gcs_json/utils.py +194 -0
  36. agno/db/in_memory/__init__.py +3 -0
  37. agno/db/in_memory/in_memory_db.py +882 -0
  38. agno/db/in_memory/utils.py +172 -0
  39. agno/db/json/__init__.py +3 -0
  40. agno/db/json/json_db.py +1045 -0
  41. agno/db/json/utils.py +196 -0
  42. agno/db/migrations/v1_to_v2.py +162 -0
  43. agno/db/mongo/__init__.py +3 -0
  44. agno/db/mongo/mongo.py +1416 -0
  45. agno/db/mongo/schemas.py +77 -0
  46. agno/db/mongo/utils.py +204 -0
  47. agno/db/mysql/__init__.py +3 -0
  48. agno/db/mysql/mysql.py +1719 -0
  49. agno/db/mysql/schemas.py +124 -0
  50. agno/db/mysql/utils.py +297 -0
  51. agno/db/postgres/__init__.py +3 -0
  52. agno/db/postgres/postgres.py +1710 -0
  53. agno/db/postgres/schemas.py +124 -0
  54. agno/db/postgres/utils.py +280 -0
  55. agno/db/redis/__init__.py +3 -0
  56. agno/db/redis/redis.py +1367 -0
  57. agno/db/redis/schemas.py +109 -0
  58. agno/db/redis/utils.py +288 -0
  59. agno/db/schemas/__init__.py +3 -0
  60. agno/db/schemas/evals.py +33 -0
  61. agno/db/schemas/knowledge.py +40 -0
  62. agno/db/schemas/memory.py +46 -0
  63. agno/db/singlestore/__init__.py +3 -0
  64. agno/db/singlestore/schemas.py +116 -0
  65. agno/db/singlestore/singlestore.py +1712 -0
  66. agno/db/singlestore/utils.py +326 -0
  67. agno/db/sqlite/__init__.py +3 -0
  68. agno/db/sqlite/schemas.py +119 -0
  69. agno/db/sqlite/sqlite.py +1676 -0
  70. agno/db/sqlite/utils.py +268 -0
  71. agno/db/utils.py +88 -0
  72. agno/eval/__init__.py +14 -0
  73. agno/eval/accuracy.py +154 -48
  74. agno/eval/performance.py +88 -23
  75. agno/eval/reliability.py +73 -20
  76. agno/eval/utils.py +23 -13
  77. agno/integrations/discord/__init__.py +3 -0
  78. agno/{app → integrations}/discord/client.py +10 -10
  79. agno/knowledge/__init__.py +2 -2
  80. agno/{document → knowledge}/chunking/agentic.py +2 -2
  81. agno/{document → knowledge}/chunking/document.py +2 -2
  82. agno/{document → knowledge}/chunking/fixed.py +3 -3
  83. agno/{document → knowledge}/chunking/markdown.py +2 -2
  84. agno/{document → knowledge}/chunking/recursive.py +2 -2
  85. agno/{document → knowledge}/chunking/row.py +2 -2
  86. agno/knowledge/chunking/semantic.py +59 -0
  87. agno/knowledge/chunking/strategy.py +121 -0
  88. agno/knowledge/content.py +74 -0
  89. agno/knowledge/document/__init__.py +5 -0
  90. agno/{document → knowledge/document}/base.py +12 -2
  91. agno/knowledge/embedder/__init__.py +5 -0
  92. agno/{embedder → knowledge/embedder}/aws_bedrock.py +127 -1
  93. agno/{embedder → knowledge/embedder}/azure_openai.py +65 -1
  94. agno/{embedder → knowledge/embedder}/base.py +6 -0
  95. agno/{embedder → knowledge/embedder}/cohere.py +72 -1
  96. agno/{embedder → knowledge/embedder}/fastembed.py +17 -1
  97. agno/{embedder → knowledge/embedder}/fireworks.py +1 -1
  98. agno/{embedder → knowledge/embedder}/google.py +74 -1
  99. agno/{embedder → knowledge/embedder}/huggingface.py +36 -2
  100. agno/{embedder → knowledge/embedder}/jina.py +48 -2
  101. agno/knowledge/embedder/langdb.py +22 -0
  102. agno/knowledge/embedder/mistral.py +139 -0
  103. agno/{embedder → knowledge/embedder}/nebius.py +1 -1
  104. agno/{embedder → knowledge/embedder}/ollama.py +54 -3
  105. agno/knowledge/embedder/openai.py +223 -0
  106. agno/{embedder → knowledge/embedder}/sentence_transformer.py +16 -1
  107. agno/{embedder → knowledge/embedder}/together.py +1 -1
  108. agno/{embedder → knowledge/embedder}/voyageai.py +49 -1
  109. agno/knowledge/knowledge.py +1551 -0
  110. agno/knowledge/reader/__init__.py +7 -0
  111. agno/{document → knowledge}/reader/arxiv_reader.py +32 -4
  112. agno/knowledge/reader/base.py +88 -0
  113. agno/{document → knowledge}/reader/csv_reader.py +47 -65
  114. agno/knowledge/reader/docx_reader.py +83 -0
  115. agno/{document → knowledge}/reader/firecrawl_reader.py +42 -21
  116. agno/{document → knowledge}/reader/json_reader.py +30 -9
  117. agno/{document → knowledge}/reader/markdown_reader.py +58 -9
  118. agno/{document → knowledge}/reader/pdf_reader.py +71 -126
  119. agno/knowledge/reader/reader_factory.py +268 -0
  120. agno/knowledge/reader/s3_reader.py +101 -0
  121. agno/{document → knowledge}/reader/text_reader.py +31 -10
  122. agno/knowledge/reader/url_reader.py +128 -0
  123. agno/knowledge/reader/web_search_reader.py +366 -0
  124. agno/{document → knowledge}/reader/website_reader.py +37 -10
  125. agno/knowledge/reader/wikipedia_reader.py +59 -0
  126. agno/knowledge/reader/youtube_reader.py +78 -0
  127. agno/knowledge/remote_content/remote_content.py +88 -0
  128. agno/{reranker → knowledge/reranker}/base.py +1 -1
  129. agno/{reranker → knowledge/reranker}/cohere.py +2 -2
  130. agno/{reranker → knowledge/reranker}/infinity.py +2 -2
  131. agno/{reranker → knowledge/reranker}/sentence_transformer.py +2 -2
  132. agno/knowledge/types.py +30 -0
  133. agno/knowledge/utils.py +169 -0
  134. agno/media.py +269 -268
  135. agno/memory/__init__.py +2 -10
  136. agno/memory/manager.py +1003 -148
  137. agno/models/aimlapi/__init__.py +2 -2
  138. agno/models/aimlapi/aimlapi.py +6 -6
  139. agno/models/anthropic/claude.py +128 -72
  140. agno/models/aws/bedrock.py +107 -175
  141. agno/models/aws/claude.py +64 -18
  142. agno/models/azure/ai_foundry.py +73 -23
  143. agno/models/base.py +346 -290
  144. agno/models/cerebras/cerebras.py +84 -27
  145. agno/models/cohere/chat.py +106 -98
  146. agno/models/google/gemini.py +105 -46
  147. agno/models/groq/groq.py +97 -35
  148. agno/models/huggingface/huggingface.py +92 -27
  149. agno/models/ibm/watsonx.py +72 -13
  150. agno/models/litellm/chat.py +85 -13
  151. agno/models/message.py +46 -151
  152. agno/models/meta/llama.py +85 -49
  153. agno/models/metrics.py +120 -0
  154. agno/models/mistral/mistral.py +90 -21
  155. agno/models/ollama/__init__.py +0 -2
  156. agno/models/ollama/chat.py +85 -47
  157. agno/models/openai/chat.py +154 -37
  158. agno/models/openai/responses.py +178 -105
  159. agno/models/perplexity/perplexity.py +26 -2
  160. agno/models/portkey/portkey.py +0 -7
  161. agno/models/response.py +15 -9
  162. agno/models/utils.py +20 -0
  163. agno/models/vercel/__init__.py +2 -2
  164. agno/models/vercel/v0.py +1 -1
  165. agno/models/vllm/__init__.py +2 -2
  166. agno/models/vllm/vllm.py +3 -3
  167. agno/models/xai/xai.py +10 -10
  168. agno/os/__init__.py +3 -0
  169. agno/os/app.py +497 -0
  170. agno/os/auth.py +47 -0
  171. agno/os/config.py +103 -0
  172. agno/os/interfaces/agui/__init__.py +3 -0
  173. agno/os/interfaces/agui/agui.py +31 -0
  174. agno/{app/agui/async_router.py → os/interfaces/agui/router.py} +16 -16
  175. agno/{app → os/interfaces}/agui/utils.py +65 -28
  176. agno/os/interfaces/base.py +21 -0
  177. agno/os/interfaces/slack/__init__.py +3 -0
  178. agno/{app/slack/async_router.py → os/interfaces/slack/router.py} +3 -5
  179. agno/os/interfaces/slack/slack.py +32 -0
  180. agno/os/interfaces/whatsapp/__init__.py +3 -0
  181. agno/{app/whatsapp/async_router.py → os/interfaces/whatsapp/router.py} +4 -7
  182. agno/os/interfaces/whatsapp/whatsapp.py +29 -0
  183. agno/os/mcp.py +235 -0
  184. agno/os/router.py +1400 -0
  185. agno/os/routers/__init__.py +3 -0
  186. agno/os/routers/evals/__init__.py +3 -0
  187. agno/os/routers/evals/evals.py +393 -0
  188. agno/os/routers/evals/schemas.py +142 -0
  189. agno/os/routers/evals/utils.py +161 -0
  190. agno/os/routers/knowledge/__init__.py +3 -0
  191. agno/os/routers/knowledge/knowledge.py +850 -0
  192. agno/os/routers/knowledge/schemas.py +118 -0
  193. agno/os/routers/memory/__init__.py +3 -0
  194. agno/os/routers/memory/memory.py +410 -0
  195. agno/os/routers/memory/schemas.py +58 -0
  196. agno/os/routers/metrics/__init__.py +3 -0
  197. agno/os/routers/metrics/metrics.py +178 -0
  198. agno/os/routers/metrics/schemas.py +47 -0
  199. agno/os/routers/session/__init__.py +3 -0
  200. agno/os/routers/session/session.py +536 -0
  201. agno/os/schema.py +945 -0
  202. agno/{app/playground → os}/settings.py +7 -15
  203. agno/os/utils.py +270 -0
  204. agno/reasoning/azure_ai_foundry.py +4 -4
  205. agno/reasoning/deepseek.py +4 -4
  206. agno/reasoning/default.py +6 -11
  207. agno/reasoning/groq.py +4 -4
  208. agno/reasoning/helpers.py +4 -6
  209. agno/reasoning/ollama.py +4 -4
  210. agno/reasoning/openai.py +4 -4
  211. agno/run/agent.py +633 -0
  212. agno/run/base.py +53 -77
  213. agno/run/cancel.py +81 -0
  214. agno/run/team.py +243 -96
  215. agno/run/workflow.py +550 -12
  216. agno/session/__init__.py +10 -0
  217. agno/session/agent.py +244 -0
  218. agno/session/summary.py +225 -0
  219. agno/session/team.py +262 -0
  220. agno/{storage/session/v2 → session}/workflow.py +47 -24
  221. agno/team/__init__.py +15 -16
  222. agno/team/team.py +3260 -4824
  223. agno/tools/agentql.py +14 -5
  224. agno/tools/airflow.py +9 -4
  225. agno/tools/api.py +7 -3
  226. agno/tools/apify.py +2 -46
  227. agno/tools/arxiv.py +8 -3
  228. agno/tools/aws_lambda.py +7 -5
  229. agno/tools/aws_ses.py +7 -1
  230. agno/tools/baidusearch.py +4 -1
  231. agno/tools/bitbucket.py +4 -4
  232. agno/tools/brandfetch.py +14 -11
  233. agno/tools/bravesearch.py +4 -1
  234. agno/tools/brightdata.py +43 -23
  235. agno/tools/browserbase.py +13 -4
  236. agno/tools/calcom.py +12 -10
  237. agno/tools/calculator.py +10 -27
  238. agno/tools/cartesia.py +20 -17
  239. agno/tools/{clickup_tool.py → clickup.py} +12 -25
  240. agno/tools/confluence.py +8 -8
  241. agno/tools/crawl4ai.py +7 -1
  242. agno/tools/csv_toolkit.py +9 -8
  243. agno/tools/dalle.py +22 -12
  244. agno/tools/daytona.py +13 -16
  245. agno/tools/decorator.py +6 -3
  246. agno/tools/desi_vocal.py +17 -8
  247. agno/tools/discord.py +11 -8
  248. agno/tools/docker.py +30 -42
  249. agno/tools/duckdb.py +34 -53
  250. agno/tools/duckduckgo.py +8 -7
  251. agno/tools/e2b.py +62 -62
  252. agno/tools/eleven_labs.py +36 -29
  253. agno/tools/email.py +4 -1
  254. agno/tools/evm.py +7 -1
  255. agno/tools/exa.py +19 -14
  256. agno/tools/fal.py +30 -30
  257. agno/tools/file.py +9 -8
  258. agno/tools/financial_datasets.py +25 -44
  259. agno/tools/firecrawl.py +17 -18
  260. agno/tools/function.py +127 -18
  261. agno/tools/giphy.py +23 -11
  262. agno/tools/github.py +48 -126
  263. agno/tools/gmail.py +45 -61
  264. agno/tools/google_bigquery.py +7 -6
  265. agno/tools/google_maps.py +11 -26
  266. agno/tools/googlesearch.py +7 -2
  267. agno/tools/googlesheets.py +21 -17
  268. agno/tools/hackernews.py +9 -5
  269. agno/tools/jina.py +5 -4
  270. agno/tools/jira.py +18 -9
  271. agno/tools/knowledge.py +31 -32
  272. agno/tools/linear.py +18 -33
  273. agno/tools/linkup.py +5 -1
  274. agno/tools/local_file_system.py +8 -5
  275. agno/tools/lumalab.py +32 -20
  276. agno/tools/mcp.py +1 -2
  277. agno/tools/mem0.py +18 -12
  278. agno/tools/memori.py +14 -10
  279. agno/tools/mlx_transcribe.py +3 -2
  280. agno/tools/models/azure_openai.py +33 -15
  281. agno/tools/models/gemini.py +59 -32
  282. agno/tools/models/groq.py +30 -23
  283. agno/tools/models/nebius.py +28 -12
  284. agno/tools/models_labs.py +40 -16
  285. agno/tools/moviepy_video.py +7 -6
  286. agno/tools/neo4j.py +10 -8
  287. agno/tools/newspaper.py +7 -2
  288. agno/tools/newspaper4k.py +8 -3
  289. agno/tools/openai.py +58 -32
  290. agno/tools/openbb.py +12 -11
  291. agno/tools/opencv.py +63 -47
  292. agno/tools/openweather.py +14 -12
  293. agno/tools/pandas.py +11 -3
  294. agno/tools/postgres.py +4 -12
  295. agno/tools/pubmed.py +4 -1
  296. agno/tools/python.py +9 -22
  297. agno/tools/reasoning.py +35 -27
  298. agno/tools/reddit.py +11 -26
  299. agno/tools/replicate.py +55 -42
  300. agno/tools/resend.py +4 -1
  301. agno/tools/scrapegraph.py +15 -14
  302. agno/tools/searxng.py +10 -23
  303. agno/tools/serpapi.py +6 -3
  304. agno/tools/serper.py +13 -4
  305. agno/tools/shell.py +9 -2
  306. agno/tools/slack.py +12 -11
  307. agno/tools/sleep.py +3 -2
  308. agno/tools/spider.py +24 -4
  309. agno/tools/sql.py +7 -6
  310. agno/tools/tavily.py +6 -4
  311. agno/tools/telegram.py +12 -4
  312. agno/tools/todoist.py +11 -31
  313. agno/tools/toolkit.py +1 -1
  314. agno/tools/trafilatura.py +22 -6
  315. agno/tools/trello.py +9 -22
  316. agno/tools/twilio.py +10 -3
  317. agno/tools/user_control_flow.py +6 -1
  318. agno/tools/valyu.py +34 -5
  319. agno/tools/visualization.py +19 -28
  320. agno/tools/webbrowser.py +4 -3
  321. agno/tools/webex.py +11 -7
  322. agno/tools/website.py +15 -46
  323. agno/tools/webtools.py +12 -4
  324. agno/tools/whatsapp.py +5 -9
  325. agno/tools/wikipedia.py +20 -13
  326. agno/tools/x.py +14 -13
  327. agno/tools/yfinance.py +13 -40
  328. agno/tools/youtube.py +26 -20
  329. agno/tools/zendesk.py +7 -2
  330. agno/tools/zep.py +10 -7
  331. agno/tools/zoom.py +10 -9
  332. agno/utils/common.py +1 -19
  333. agno/utils/events.py +100 -123
  334. agno/utils/gemini.py +1 -1
  335. agno/utils/knowledge.py +29 -0
  336. agno/utils/log.py +54 -4
  337. agno/utils/mcp.py +68 -10
  338. agno/utils/media.py +39 -0
  339. agno/utils/message.py +12 -1
  340. agno/utils/models/aws_claude.py +1 -1
  341. agno/utils/models/claude.py +6 -12
  342. agno/utils/models/cohere.py +1 -1
  343. agno/utils/models/mistral.py +8 -7
  344. agno/utils/models/schema_utils.py +3 -3
  345. agno/utils/models/watsonx.py +1 -1
  346. agno/utils/openai.py +1 -1
  347. agno/utils/pprint.py +33 -32
  348. agno/utils/print_response/agent.py +779 -0
  349. agno/utils/print_response/team.py +1669 -0
  350. agno/utils/print_response/workflow.py +1451 -0
  351. agno/utils/prompts.py +14 -14
  352. agno/utils/reasoning.py +87 -0
  353. agno/utils/response.py +42 -42
  354. agno/utils/streamlit.py +481 -0
  355. agno/utils/string.py +8 -22
  356. agno/utils/team.py +50 -0
  357. agno/utils/timer.py +2 -2
  358. agno/vectordb/base.py +33 -21
  359. agno/vectordb/cassandra/cassandra.py +287 -23
  360. agno/vectordb/chroma/chromadb.py +482 -59
  361. agno/vectordb/clickhouse/clickhousedb.py +270 -63
  362. agno/vectordb/couchbase/couchbase.py +309 -29
  363. agno/vectordb/lancedb/lance_db.py +360 -21
  364. agno/vectordb/langchaindb/__init__.py +5 -0
  365. agno/vectordb/langchaindb/langchaindb.py +145 -0
  366. agno/vectordb/lightrag/__init__.py +5 -0
  367. agno/vectordb/lightrag/lightrag.py +374 -0
  368. agno/vectordb/llamaindex/llamaindexdb.py +127 -0
  369. agno/vectordb/milvus/milvus.py +242 -32
  370. agno/vectordb/mongodb/mongodb.py +200 -24
  371. agno/vectordb/pgvector/pgvector.py +319 -37
  372. agno/vectordb/pineconedb/pineconedb.py +221 -27
  373. agno/vectordb/qdrant/qdrant.py +334 -14
  374. agno/vectordb/singlestore/singlestore.py +286 -29
  375. agno/vectordb/surrealdb/surrealdb.py +187 -7
  376. agno/vectordb/upstashdb/upstashdb.py +342 -26
  377. agno/vectordb/weaviate/weaviate.py +227 -165
  378. agno/workflow/__init__.py +17 -13
  379. agno/workflow/{v2/condition.py → condition.py} +135 -32
  380. agno/workflow/{v2/loop.py → loop.py} +115 -28
  381. agno/workflow/{v2/parallel.py → parallel.py} +138 -108
  382. agno/workflow/{v2/router.py → router.py} +133 -32
  383. agno/workflow/{v2/step.py → step.py} +207 -49
  384. agno/workflow/{v2/steps.py → steps.py} +147 -66
  385. agno/workflow/types.py +482 -0
  386. agno/workflow/workflow.py +2410 -696
  387. agno-2.0.0.dist-info/METADATA +494 -0
  388. agno-2.0.0.dist-info/RECORD +515 -0
  389. agno-2.0.0.dist-info/licenses/LICENSE +201 -0
  390. agno/agent/metrics.py +0 -110
  391. agno/api/app.py +0 -35
  392. agno/api/playground.py +0 -92
  393. agno/api/schemas/app.py +0 -12
  394. agno/api/schemas/playground.py +0 -22
  395. agno/api/schemas/user.py +0 -35
  396. agno/api/schemas/workspace.py +0 -46
  397. agno/api/user.py +0 -160
  398. agno/api/workflows.py +0 -33
  399. agno/api/workspace.py +0 -175
  400. agno/app/agui/__init__.py +0 -3
  401. agno/app/agui/app.py +0 -17
  402. agno/app/agui/sync_router.py +0 -120
  403. agno/app/base.py +0 -186
  404. agno/app/discord/__init__.py +0 -3
  405. agno/app/fastapi/__init__.py +0 -3
  406. agno/app/fastapi/app.py +0 -107
  407. agno/app/fastapi/async_router.py +0 -457
  408. agno/app/fastapi/sync_router.py +0 -448
  409. agno/app/playground/app.py +0 -228
  410. agno/app/playground/async_router.py +0 -1053
  411. agno/app/playground/deploy.py +0 -249
  412. agno/app/playground/operator.py +0 -183
  413. agno/app/playground/schemas.py +0 -223
  414. agno/app/playground/serve.py +0 -55
  415. agno/app/playground/sync_router.py +0 -1045
  416. agno/app/playground/utils.py +0 -46
  417. agno/app/settings.py +0 -15
  418. agno/app/slack/__init__.py +0 -3
  419. agno/app/slack/app.py +0 -19
  420. agno/app/slack/sync_router.py +0 -92
  421. agno/app/utils.py +0 -54
  422. agno/app/whatsapp/__init__.py +0 -3
  423. agno/app/whatsapp/app.py +0 -15
  424. agno/app/whatsapp/sync_router.py +0 -197
  425. agno/cli/auth_server.py +0 -249
  426. agno/cli/config.py +0 -274
  427. agno/cli/console.py +0 -88
  428. agno/cli/credentials.py +0 -23
  429. agno/cli/entrypoint.py +0 -571
  430. agno/cli/operator.py +0 -357
  431. agno/cli/settings.py +0 -96
  432. agno/cli/ws/ws_cli.py +0 -817
  433. agno/constants.py +0 -13
  434. agno/document/__init__.py +0 -5
  435. agno/document/chunking/semantic.py +0 -45
  436. agno/document/chunking/strategy.py +0 -31
  437. agno/document/reader/__init__.py +0 -5
  438. agno/document/reader/base.py +0 -47
  439. agno/document/reader/docx_reader.py +0 -60
  440. agno/document/reader/gcs/pdf_reader.py +0 -44
  441. agno/document/reader/s3/pdf_reader.py +0 -59
  442. agno/document/reader/s3/text_reader.py +0 -63
  443. agno/document/reader/url_reader.py +0 -59
  444. agno/document/reader/youtube_reader.py +0 -58
  445. agno/embedder/__init__.py +0 -5
  446. agno/embedder/langdb.py +0 -80
  447. agno/embedder/mistral.py +0 -82
  448. agno/embedder/openai.py +0 -78
  449. agno/file/__init__.py +0 -5
  450. agno/file/file.py +0 -16
  451. agno/file/local/csv.py +0 -32
  452. agno/file/local/txt.py +0 -19
  453. agno/infra/app.py +0 -240
  454. agno/infra/base.py +0 -144
  455. agno/infra/context.py +0 -20
  456. agno/infra/db_app.py +0 -52
  457. agno/infra/resource.py +0 -205
  458. agno/infra/resources.py +0 -55
  459. agno/knowledge/agent.py +0 -702
  460. agno/knowledge/arxiv.py +0 -33
  461. agno/knowledge/combined.py +0 -36
  462. agno/knowledge/csv.py +0 -144
  463. agno/knowledge/csv_url.py +0 -124
  464. agno/knowledge/document.py +0 -223
  465. agno/knowledge/docx.py +0 -137
  466. agno/knowledge/firecrawl.py +0 -34
  467. agno/knowledge/gcs/__init__.py +0 -0
  468. agno/knowledge/gcs/base.py +0 -39
  469. agno/knowledge/gcs/pdf.py +0 -125
  470. agno/knowledge/json.py +0 -137
  471. agno/knowledge/langchain.py +0 -71
  472. agno/knowledge/light_rag.py +0 -273
  473. agno/knowledge/llamaindex.py +0 -66
  474. agno/knowledge/markdown.py +0 -154
  475. agno/knowledge/pdf.py +0 -164
  476. agno/knowledge/pdf_bytes.py +0 -42
  477. agno/knowledge/pdf_url.py +0 -148
  478. agno/knowledge/s3/__init__.py +0 -0
  479. agno/knowledge/s3/base.py +0 -64
  480. agno/knowledge/s3/pdf.py +0 -33
  481. agno/knowledge/s3/text.py +0 -34
  482. agno/knowledge/text.py +0 -141
  483. agno/knowledge/url.py +0 -46
  484. agno/knowledge/website.py +0 -179
  485. agno/knowledge/wikipedia.py +0 -32
  486. agno/knowledge/youtube.py +0 -35
  487. agno/memory/agent.py +0 -423
  488. agno/memory/classifier.py +0 -104
  489. agno/memory/db/__init__.py +0 -5
  490. agno/memory/db/base.py +0 -42
  491. agno/memory/db/mongodb.py +0 -189
  492. agno/memory/db/postgres.py +0 -203
  493. agno/memory/db/sqlite.py +0 -193
  494. agno/memory/memory.py +0 -22
  495. agno/memory/row.py +0 -36
  496. agno/memory/summarizer.py +0 -201
  497. agno/memory/summary.py +0 -19
  498. agno/memory/team.py +0 -415
  499. agno/memory/v2/__init__.py +0 -2
  500. agno/memory/v2/db/__init__.py +0 -1
  501. agno/memory/v2/db/base.py +0 -42
  502. agno/memory/v2/db/firestore.py +0 -339
  503. agno/memory/v2/db/mongodb.py +0 -196
  504. agno/memory/v2/db/postgres.py +0 -214
  505. agno/memory/v2/db/redis.py +0 -187
  506. agno/memory/v2/db/schema.py +0 -54
  507. agno/memory/v2/db/sqlite.py +0 -209
  508. agno/memory/v2/manager.py +0 -437
  509. agno/memory/v2/memory.py +0 -1097
  510. agno/memory/v2/schema.py +0 -55
  511. agno/memory/v2/summarizer.py +0 -215
  512. agno/memory/workflow.py +0 -38
  513. agno/models/ollama/tools.py +0 -430
  514. agno/models/qwen/__init__.py +0 -5
  515. agno/playground/__init__.py +0 -10
  516. agno/playground/deploy.py +0 -3
  517. agno/playground/playground.py +0 -3
  518. agno/playground/serve.py +0 -3
  519. agno/playground/settings.py +0 -3
  520. agno/reranker/__init__.py +0 -0
  521. agno/run/response.py +0 -467
  522. agno/run/v2/__init__.py +0 -0
  523. agno/run/v2/workflow.py +0 -567
  524. agno/storage/__init__.py +0 -0
  525. agno/storage/agent/__init__.py +0 -0
  526. agno/storage/agent/dynamodb.py +0 -1
  527. agno/storage/agent/json.py +0 -1
  528. agno/storage/agent/mongodb.py +0 -1
  529. agno/storage/agent/postgres.py +0 -1
  530. agno/storage/agent/singlestore.py +0 -1
  531. agno/storage/agent/sqlite.py +0 -1
  532. agno/storage/agent/yaml.py +0 -1
  533. agno/storage/base.py +0 -60
  534. agno/storage/dynamodb.py +0 -673
  535. agno/storage/firestore.py +0 -297
  536. agno/storage/gcs_json.py +0 -261
  537. agno/storage/in_memory.py +0 -234
  538. agno/storage/json.py +0 -237
  539. agno/storage/mongodb.py +0 -328
  540. agno/storage/mysql.py +0 -685
  541. agno/storage/postgres.py +0 -682
  542. agno/storage/redis.py +0 -336
  543. agno/storage/session/__init__.py +0 -16
  544. agno/storage/session/agent.py +0 -64
  545. agno/storage/session/team.py +0 -63
  546. agno/storage/session/v2/__init__.py +0 -5
  547. agno/storage/session/workflow.py +0 -61
  548. agno/storage/singlestore.py +0 -606
  549. agno/storage/sqlite.py +0 -646
  550. agno/storage/workflow/__init__.py +0 -0
  551. agno/storage/workflow/mongodb.py +0 -1
  552. agno/storage/workflow/postgres.py +0 -1
  553. agno/storage/workflow/sqlite.py +0 -1
  554. agno/storage/yaml.py +0 -241
  555. agno/tools/thinking.py +0 -73
  556. agno/utils/defaults.py +0 -57
  557. agno/utils/filesystem.py +0 -39
  558. agno/utils/git.py +0 -52
  559. agno/utils/json_io.py +0 -30
  560. agno/utils/load_env.py +0 -19
  561. agno/utils/py_io.py +0 -19
  562. agno/utils/pyproject.py +0 -18
  563. agno/utils/resource_filter.py +0 -31
  564. agno/workflow/v2/__init__.py +0 -21
  565. agno/workflow/v2/types.py +0 -357
  566. agno/workflow/v2/workflow.py +0 -3313
  567. agno/workspace/__init__.py +0 -0
  568. agno/workspace/config.py +0 -325
  569. agno/workspace/enums.py +0 -6
  570. agno/workspace/helpers.py +0 -52
  571. agno/workspace/operator.py +0 -757
  572. agno/workspace/settings.py +0 -158
  573. agno-1.8.2.dist-info/METADATA +0 -982
  574. agno-1.8.2.dist-info/RECORD +0 -566
  575. agno-1.8.2.dist-info/entry_points.txt +0 -3
  576. agno-1.8.2.dist-info/licenses/LICENSE +0 -375
  577. /agno/{app → db/migrations}/__init__.py +0 -0
  578. /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
  579. /agno/{cli → integrations}/__init__.py +0 -0
  580. /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
  581. /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
  582. /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
  583. /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
  584. /agno/{app → os/interfaces}/slack/security.py +0 -0
  585. /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
  586. /agno/{file/local → utils/print_response}/__init__.py +0 -0
  587. /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
  588. {agno-1.8.2.dist-info → agno-2.0.0.dist-info}/WHEEL +0 -0
  589. {agno-1.8.2.dist-info → agno-2.0.0.dist-info}/top_level.txt +0 -0
agno/tools/exa.py CHANGED
@@ -19,11 +19,15 @@ class ExaTools(Toolkit):
19
19
  functionalities to perform categorized searches and retrieve structured results.
20
20
 
21
21
  Args:
22
+ enable_search (bool): Enable search functionality. Default is True.
23
+ enable_get_contents (bool): Enable get contents functionality. Default is True.
24
+ enable_find_similar (bool): Enable find similar functionality. Default is True.
25
+ enable_answer (bool): Enable answer generation. Default is True.
26
+ enable_research (bool): Enable research tool functionality. Default is False.
27
+ all (bool): Enable all tools. Overrides individual flags when True. Default is False.
22
28
  text (bool): Retrieve text content from results. Default is True.
23
29
  text_length_limit (int): Max length of text content per result. Default is 1000.
24
30
  highlights (bool): Include highlighted snippets. Default is True.
25
- answer (bool): Enable answer generation. Default is True.
26
- research (bool): Enable research tool functionality. Default is True.
27
31
  api_key (Optional[str]): Exa API key. Retrieved from `EXA_API_KEY` env variable if not provided.
28
32
  num_results (Optional[int]): Default number of search results. Overrides individual searches if set.
29
33
  start_crawl_date (Optional[str]): Include results crawled on/after this date (`YYYY-MM-DD`).
@@ -42,11 +46,12 @@ class ExaTools(Toolkit):
42
46
 
43
47
  def __init__(
44
48
  self,
45
- search: bool = True,
46
- get_contents: bool = True,
47
- find_similar: bool = True,
48
- answer: bool = True,
49
- research: bool = False,
49
+ enable_search: bool = True,
50
+ enable_get_contents: bool = True,
51
+ enable_find_similar: bool = True,
52
+ enable_answer: bool = True,
53
+ enable_research: bool = False,
54
+ all: bool = False,
50
55
  text: bool = True,
51
56
  text_length_limit: int = 1000,
52
57
  highlights: bool = True,
@@ -96,15 +101,15 @@ class ExaTools(Toolkit):
96
101
  self.research_model: Literal["exa-research", "exa-research-pro"] = research_model
97
102
 
98
103
  tools: List[Any] = []
99
- if search:
104
+ if all or enable_search:
100
105
  tools.append(self.search_exa)
101
- if get_contents:
106
+ if all or enable_get_contents:
102
107
  tools.append(self.get_contents)
103
- if find_similar:
108
+ if all or enable_find_similar:
104
109
  tools.append(self.find_similar)
105
- if answer:
110
+ if all or enable_answer:
106
111
  tools.append(self.exa_answer)
107
- if research:
112
+ if all or enable_research:
108
113
  tools.append(self.research)
109
114
 
110
115
  super().__init__(name="exa", tools=tools, **kwargs)
@@ -353,14 +358,14 @@ class ExaTools(Toolkit):
353
358
  else:
354
359
  task_kwargs["output_infer_schema"] = True
355
360
 
356
- task_result = self._execute_with_timeout(self.exa.research.create_task, **task_kwargs)
361
+ task_result = self._execute_with_timeout(self.exa.research.create_task, **task_kwargs) # type: ignore
357
362
  task_id = task_result.id
358
363
 
359
364
  if self.show_results:
360
365
  log_info(f"Research task created with ID: {task_id}")
361
366
 
362
367
  # Step 2: Poll until complete (using default polling settings)
363
- task = self.exa.research.poll_task(task_id)
368
+ task = self.exa.research.poll_task(task_id) # type: ignore
364
369
 
365
370
  # Step 3: Format and return results
366
371
  result: Dict[str, Any] = {"data": task.data, "citations": {}}
agno/tools/fal.py CHANGED
@@ -7,9 +7,10 @@ from typing import Optional, Union
7
7
  from uuid import uuid4
8
8
 
9
9
  from agno.agent import Agent
10
- from agno.media import ImageArtifact, VideoArtifact
10
+ from agno.media import Image, Video
11
11
  from agno.team.team import Team
12
12
  from agno.tools import Toolkit
13
+ from agno.tools.function import ToolResult
13
14
  from agno.utils.log import log_info, logger
14
15
 
15
16
  try:
@@ -23,16 +24,22 @@ class FalTools(Toolkit):
23
24
  self,
24
25
  api_key: Optional[str] = None,
25
26
  model: str = "fal-ai/hunyuan-video",
27
+ enable_generate_media: bool = True,
28
+ enable_image_to_image: bool = False,
29
+ all: bool = False,
26
30
  **kwargs,
27
31
  ):
28
- self.api_key = api_key or getenv("FAL_KEY")
32
+ self.api_key = api_key or getenv("FAL_API_KEY")
29
33
  if not self.api_key:
30
- logger.error("FAL_KEY not set. Please set the FAL_KEY environment variable.")
34
+ logger.error("FAL_API_KEY not set. Please set the FAL_API_KEY environment variable.")
31
35
  self.model = model
32
36
  self.seen_logs: set[str] = set()
33
37
 
34
38
  tools = []
35
- tools.append(self.generate_media)
39
+ if all or enable_generate_media:
40
+ tools.append(self.generate_media)
41
+ if all or enable_image_to_image:
42
+ tools.append(self.image_to_image)
36
43
 
37
44
  super().__init__(name="fal-tools", tools=tools, **kwargs)
38
45
 
@@ -44,14 +51,14 @@ class FalTools(Toolkit):
44
51
  log_info(message)
45
52
  self.seen_logs.add(message)
46
53
 
47
- def generate_media(self, agent: Union[Agent, Team], prompt: str) -> str:
54
+ def generate_media(self, agent: Union[Agent, Team], prompt: str) -> ToolResult:
48
55
  """
49
56
  Use this function to run a model with a given prompt.
50
57
 
51
58
  Args:
52
59
  prompt (str): A text description of the task.
53
60
  Returns:
54
- str: Return the result of the model.
61
+ ToolResult: Contains the generated media and success message.
55
62
  """
56
63
  try:
57
64
  result = fal_client.subscribe(
@@ -65,32 +72,27 @@ class FalTools(Toolkit):
65
72
 
66
73
  if "image" in result:
67
74
  url = result.get("image", {}).get("url", "")
68
- agent.add_image(
69
- ImageArtifact(
70
- id=media_id,
71
- url=url,
72
- )
75
+ image_artifact = Image(
76
+ id=media_id,
77
+ url=url,
73
78
  )
74
- media_type = "image"
79
+ return ToolResult(content=f"Image generated successfully at {url}", images=[image_artifact])
75
80
  elif "video" in result:
76
81
  url = result.get("video", {}).get("url", "")
77
- agent.add_video(
78
- VideoArtifact(
79
- id=media_id,
80
- url=url,
81
- )
82
+ video_artifact = Video(
83
+ id=media_id,
84
+ url=url,
82
85
  )
83
- media_type = "video"
86
+ return ToolResult(content=f"Video generated successfully at {url}", videos=[video_artifact])
84
87
  else:
85
88
  logger.error(f"Unsupported type in result: {result}")
86
- return f"Unsupported type in result: {result}"
89
+ return ToolResult(content=f"Unsupported type in result: {result}")
87
90
 
88
- return f"{media_type.capitalize()} generated successfully at {url}"
89
91
  except Exception as e:
90
92
  logger.error(f"Failed to run model: {e}")
91
- return f"Error: {e}"
93
+ return ToolResult(content=f"Error: {e}")
92
94
 
93
- def image_to_image(self, agent: Union[Agent, Team], prompt: str, image_url: Optional[str] = None) -> str:
95
+ def image_to_image(self, agent: Union[Agent, Team], prompt: str, image_url: Optional[str] = None) -> ToolResult:
94
96
  """
95
97
  Use this function to transform an input image based on a text prompt using the Fal AI image-to-image model.
96
98
  The model takes an existing image and generates a new version modified according to your prompt.
@@ -101,7 +103,7 @@ class FalTools(Toolkit):
101
103
  image_url (str): The URL of the image to use for the generation.
102
104
 
103
105
  Returns:
104
- str: Return the result of the model.
106
+ ToolResult: Contains the generated image and success message.
105
107
  """
106
108
 
107
109
  try:
@@ -113,15 +115,13 @@ class FalTools(Toolkit):
113
115
  )
114
116
  url = result.get("images", [{}])[0].get("url", "")
115
117
  media_id = str(uuid4())
116
- agent.add_image(
117
- ImageArtifact(
118
- id=media_id,
119
- url=url,
120
- )
118
+ image_artifact = Image(
119
+ id=media_id,
120
+ url=url,
121
121
  )
122
122
 
123
- return f"Image generated successfully at {url}"
123
+ return ToolResult(content=f"Image generated successfully at {url}", images=[image_artifact])
124
124
 
125
125
  except Exception as e:
126
126
  logger.error(f"Failed to generate image: {e}")
127
- return f"Error: {e}"
127
+ return ToolResult(content=f"Error: {e}")
agno/tools/file.py CHANGED
@@ -10,22 +10,23 @@ class FileTools(Toolkit):
10
10
  def __init__(
11
11
  self,
12
12
  base_dir: Optional[Path] = None,
13
- save_files: bool = True,
14
- read_files: bool = True,
15
- list_files: bool = True,
16
- search_files: bool = True,
13
+ enable_save_file: bool = True,
14
+ enable_read_file: bool = True,
15
+ enable_list_files: bool = True,
16
+ enable_search_files: bool = True,
17
+ all: bool = False,
17
18
  **kwargs,
18
19
  ):
19
20
  self.base_dir: Path = base_dir or Path.cwd()
20
21
 
21
22
  tools: List[Any] = []
22
- if save_files:
23
+ if all or enable_save_file:
23
24
  tools.append(self.save_file)
24
- if read_files:
25
+ if all or enable_read_file:
25
26
  tools.append(self.read_file)
26
- if list_files:
27
+ if all or enable_list_files:
27
28
  tools.append(self.list_files)
28
- if search_files:
29
+ if all or enable_search_files:
29
30
  tools.append(self.search_files)
30
31
 
31
32
  super().__init__(name="file_tools", tools=tools, **kwargs)
@@ -11,29 +11,12 @@ class FinancialDatasetsTools(Toolkit):
11
11
  def __init__(
12
12
  self,
13
13
  api_key: Optional[str] = None,
14
- enable_financial_statements: bool = True,
15
- enable_company_info: bool = True,
16
- enable_market_data: bool = True,
17
- enable_ownership_data: bool = True,
18
- enable_news: bool = True,
19
- enable_sec_filings: bool = True,
20
- enable_crypto: bool = True,
21
- enable_search: bool = True,
22
14
  **kwargs,
23
15
  ):
24
- """
25
- Initialize the Financial Datasets Tools with feature flags.
16
+ """Initialize the Financial Datasets Tools.
26
17
 
27
18
  Args:
28
19
  api_key: API key for Financial Datasets API (optional, can be set via environment variable)
29
- enable_financial_statements: Enable financial statement related functions (income statements, balance sheets, etc.)
30
- enable_company_info: Enable company information related functions
31
- enable_market_data: Enable market data related functions (stock prices, earnings, metrics)
32
- enable_ownership_data: Enable ownership data related functions (insider trades, institutional ownership)
33
- enable_news: Enable news related functions
34
- enable_sec_filings: Enable SEC filings related functions
35
- enable_crypto: Enable cryptocurrency related functions
36
- enable_search: Enable search related functions
37
20
  """
38
21
 
39
22
  self.api_key: Optional[str] = api_key or getenv("FINANCIAL_DATASETS_API_KEY")
@@ -44,32 +27,30 @@ class FinancialDatasetsTools(Toolkit):
44
27
 
45
28
  self.base_url = "https://api.financialdatasets.ai"
46
29
 
47
- tools: List[Any] = []
48
-
49
- if enable_financial_statements:
50
- tools.extend(
51
- [
52
- self.get_income_statements,
53
- self.get_balance_sheets,
54
- self.get_cash_flow_statements,
55
- self.get_segmented_financials,
56
- self.get_financial_metrics,
57
- ]
58
- )
59
- if enable_company_info:
60
- tools.append(self.get_company_info)
61
- if enable_market_data:
62
- tools.extend([self.get_stock_prices, self.get_earnings])
63
- if enable_ownership_data:
64
- tools.extend([self.get_insider_trades, self.get_institutional_ownership])
65
- if enable_news:
66
- tools.append(self.get_news)
67
- if enable_sec_filings:
68
- tools.append(self.get_sec_filings)
69
- if enable_crypto:
70
- tools.append(self.get_crypto_prices)
71
- if enable_search:
72
- tools.append(self.search_tickers)
30
+ tools: List[Any] = [
31
+ # Financial statements
32
+ self.get_income_statements,
33
+ self.get_balance_sheets,
34
+ self.get_cash_flow_statements,
35
+ self.get_segmented_financials,
36
+ self.get_financial_metrics,
37
+ # Company info
38
+ self.get_company_info,
39
+ # Market data
40
+ self.get_stock_prices,
41
+ self.get_earnings,
42
+ # Ownership data
43
+ self.get_insider_trades,
44
+ self.get_institutional_ownership,
45
+ # News
46
+ self.get_news,
47
+ # SEC filings
48
+ self.get_sec_filings,
49
+ # Crypto
50
+ self.get_crypto_prices,
51
+ # Search
52
+ self.search_tickers,
53
+ ]
73
54
 
74
55
  super().__init__(name="financial_datasets_tools", tools=tools, **kwargs)
75
56
 
agno/tools/firecrawl.py CHANGED
@@ -25,26 +25,32 @@ class CustomJSONEncoder(json.JSONEncoder):
25
25
  class FirecrawlTools(Toolkit):
26
26
  """
27
27
  Firecrawl is a tool for scraping and crawling websites.
28
+
28
29
  Args:
29
30
  api_key (Optional[str]): The API key to use for the Firecrawl app.
31
+ enable_scrape (bool): Enable website scraping functionality. Default is True.
32
+ enable_crawl (bool): Enable website crawling functionality. Default is False.
33
+ enable_mapping (bool): Enable website mapping functionality. Default is False.
34
+ enable_search (bool): Enable web search functionality. Default is False.
35
+ all (bool): Enable all tools. Overrides individual flags when True. Default is False.
30
36
  formats (Optional[List[str]]): The formats to use for the Firecrawl app.
31
37
  limit (int): The maximum number of pages to crawl.
32
- scrape (bool): Whether to scrape the website.
33
- crawl (bool): Whether to crawl the website.
34
- mapping (bool): Whether to map the website.
38
+ poll_interval (int): Polling interval for crawl operations.
39
+ search_params (Optional[Dict[str, Any]]): Parameters for search operations.
35
40
  api_url (Optional[str]): The API URL to use for the Firecrawl app.
36
41
  """
37
42
 
38
43
  def __init__(
39
44
  self,
40
45
  api_key: Optional[str] = None,
46
+ enable_scrape: bool = True,
47
+ enable_crawl: bool = False,
48
+ enable_mapping: bool = False,
49
+ enable_search: bool = False,
50
+ all: bool = False,
41
51
  formats: Optional[List[str]] = None,
42
52
  limit: int = 10,
43
53
  poll_interval: int = 30,
44
- scrape: bool = True,
45
- crawl: bool = False,
46
- mapping: bool = False,
47
- search: bool = False,
48
54
  search_params: Optional[Dict[str, Any]] = None,
49
55
  api_url: Optional[str] = "https://api.firecrawl.dev",
50
56
  **kwargs,
@@ -59,21 +65,14 @@ class FirecrawlTools(Toolkit):
59
65
  self.app: FirecrawlApp = FirecrawlApp(api_key=self.api_key, api_url=api_url)
60
66
  self.search_params = search_params
61
67
 
62
- # Start with scrape by default. But if crawl is set, then set scrape to False.
63
- if crawl:
64
- scrape = False
65
- mapping = False
66
- elif not scrape:
67
- crawl = True
68
-
69
68
  tools: List[Any] = []
70
- if scrape:
69
+ if all or enable_scrape:
71
70
  tools.append(self.scrape_website)
72
- if crawl:
71
+ if all or enable_crawl:
73
72
  tools.append(self.crawl_website)
74
- if mapping:
73
+ if all or enable_mapping:
75
74
  tools.append(self.map_website)
76
- if search:
75
+ if all or enable_search:
77
76
  tools.append(self.search)
78
77
 
79
78
  super().__init__(name="firecrawl_tools", tools=tools, **kwargs)