agno 1.8.1__py3-none-any.whl → 2.0.0a1__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 (580) hide show
  1. agno/__init__.py +8 -0
  2. agno/agent/__init__.py +19 -27
  3. agno/agent/agent.py +2778 -4123
  4. agno/api/agent.py +9 -65
  5. agno/api/api.py +5 -46
  6. agno/api/evals.py +6 -17
  7. agno/api/os.py +17 -0
  8. agno/api/routes.py +6 -41
  9. agno/api/schemas/__init__.py +9 -0
  10. agno/api/schemas/agent.py +5 -21
  11. agno/api/schemas/evals.py +7 -16
  12. agno/api/schemas/os.py +14 -0
  13. agno/api/schemas/team.py +5 -21
  14. agno/api/schemas/utils.py +21 -0
  15. agno/api/schemas/workflows.py +11 -7
  16. agno/api/settings.py +53 -0
  17. agno/api/team.py +9 -64
  18. agno/api/workflow.py +28 -0
  19. agno/cloud/aws/base.py +214 -0
  20. agno/cloud/aws/s3/__init__.py +2 -0
  21. agno/cloud/aws/s3/api_client.py +43 -0
  22. agno/cloud/aws/s3/bucket.py +195 -0
  23. agno/cloud/aws/s3/object.py +57 -0
  24. agno/db/__init__.py +24 -0
  25. agno/db/base.py +245 -0
  26. agno/db/dynamo/__init__.py +3 -0
  27. agno/db/dynamo/dynamo.py +1749 -0
  28. agno/db/dynamo/schemas.py +278 -0
  29. agno/db/dynamo/utils.py +684 -0
  30. agno/db/firestore/__init__.py +3 -0
  31. agno/db/firestore/firestore.py +1438 -0
  32. agno/db/firestore/schemas.py +130 -0
  33. agno/db/firestore/utils.py +278 -0
  34. agno/db/gcs_json/__init__.py +3 -0
  35. agno/db/gcs_json/gcs_json_db.py +1001 -0
  36. agno/db/gcs_json/utils.py +194 -0
  37. agno/db/in_memory/__init__.py +3 -0
  38. agno/db/in_memory/in_memory_db.py +888 -0
  39. agno/db/in_memory/utils.py +172 -0
  40. agno/db/json/__init__.py +3 -0
  41. agno/db/json/json_db.py +1051 -0
  42. agno/db/json/utils.py +196 -0
  43. agno/db/migrations/v1_to_v2.py +162 -0
  44. agno/db/mongo/__init__.py +3 -0
  45. agno/db/mongo/mongo.py +1417 -0
  46. agno/db/mongo/schemas.py +77 -0
  47. agno/db/mongo/utils.py +204 -0
  48. agno/db/mysql/__init__.py +3 -0
  49. agno/db/mysql/mysql.py +1719 -0
  50. agno/db/mysql/schemas.py +124 -0
  51. agno/db/mysql/utils.py +298 -0
  52. agno/db/postgres/__init__.py +3 -0
  53. agno/db/postgres/postgres.py +1720 -0
  54. agno/db/postgres/schemas.py +124 -0
  55. agno/db/postgres/utils.py +281 -0
  56. agno/db/redis/__init__.py +3 -0
  57. agno/db/redis/redis.py +1371 -0
  58. agno/db/redis/schemas.py +109 -0
  59. agno/db/redis/utils.py +288 -0
  60. agno/db/schemas/__init__.py +3 -0
  61. agno/db/schemas/evals.py +33 -0
  62. agno/db/schemas/knowledge.py +40 -0
  63. agno/db/schemas/memory.py +46 -0
  64. agno/db/singlestore/__init__.py +3 -0
  65. agno/db/singlestore/schemas.py +116 -0
  66. agno/db/singlestore/singlestore.py +1722 -0
  67. agno/db/singlestore/utils.py +327 -0
  68. agno/db/sqlite/__init__.py +3 -0
  69. agno/db/sqlite/schemas.py +119 -0
  70. agno/db/sqlite/sqlite.py +1680 -0
  71. agno/db/sqlite/utils.py +269 -0
  72. agno/db/utils.py +88 -0
  73. agno/eval/__init__.py +14 -0
  74. agno/eval/accuracy.py +142 -43
  75. agno/eval/performance.py +88 -23
  76. agno/eval/reliability.py +73 -20
  77. agno/eval/utils.py +23 -13
  78. agno/integrations/discord/__init__.py +3 -0
  79. agno/{app → integrations}/discord/client.py +10 -10
  80. agno/knowledge/__init__.py +2 -2
  81. agno/{document → knowledge}/chunking/agentic.py +2 -2
  82. agno/{document → knowledge}/chunking/document.py +2 -2
  83. agno/{document → knowledge}/chunking/fixed.py +3 -3
  84. agno/{document → knowledge}/chunking/markdown.py +2 -2
  85. agno/{document → knowledge}/chunking/recursive.py +2 -2
  86. agno/{document → knowledge}/chunking/row.py +2 -2
  87. agno/knowledge/chunking/semantic.py +59 -0
  88. agno/knowledge/chunking/strategy.py +121 -0
  89. agno/knowledge/content.py +74 -0
  90. agno/knowledge/document/__init__.py +5 -0
  91. agno/{document → knowledge/document}/base.py +12 -2
  92. agno/knowledge/embedder/__init__.py +5 -0
  93. agno/{embedder → knowledge/embedder}/aws_bedrock.py +127 -1
  94. agno/{embedder → knowledge/embedder}/azure_openai.py +65 -1
  95. agno/{embedder → knowledge/embedder}/base.py +6 -0
  96. agno/{embedder → knowledge/embedder}/cohere.py +72 -1
  97. agno/{embedder → knowledge/embedder}/fastembed.py +17 -1
  98. agno/{embedder → knowledge/embedder}/fireworks.py +1 -1
  99. agno/{embedder → knowledge/embedder}/google.py +74 -1
  100. agno/{embedder → knowledge/embedder}/huggingface.py +36 -2
  101. agno/{embedder → knowledge/embedder}/jina.py +48 -2
  102. agno/knowledge/embedder/langdb.py +22 -0
  103. agno/knowledge/embedder/mistral.py +139 -0
  104. agno/{embedder → knowledge/embedder}/nebius.py +1 -1
  105. agno/{embedder → knowledge/embedder}/ollama.py +54 -3
  106. agno/knowledge/embedder/openai.py +223 -0
  107. agno/{embedder → knowledge/embedder}/sentence_transformer.py +16 -1
  108. agno/{embedder → knowledge/embedder}/together.py +1 -1
  109. agno/{embedder → knowledge/embedder}/voyageai.py +49 -1
  110. agno/knowledge/knowledge.py +1515 -0
  111. agno/knowledge/reader/__init__.py +7 -0
  112. agno/{document → knowledge}/reader/arxiv_reader.py +32 -4
  113. agno/knowledge/reader/base.py +88 -0
  114. agno/{document → knowledge}/reader/csv_reader.py +68 -15
  115. agno/knowledge/reader/docx_reader.py +83 -0
  116. agno/{document → knowledge}/reader/firecrawl_reader.py +42 -21
  117. agno/knowledge/reader/gcs_reader.py +67 -0
  118. agno/{document → knowledge}/reader/json_reader.py +30 -9
  119. agno/{document → knowledge}/reader/markdown_reader.py +36 -9
  120. agno/{document → knowledge}/reader/pdf_reader.py +79 -21
  121. agno/knowledge/reader/reader_factory.py +275 -0
  122. agno/knowledge/reader/s3_reader.py +171 -0
  123. agno/{document → knowledge}/reader/text_reader.py +31 -10
  124. agno/knowledge/reader/url_reader.py +84 -0
  125. agno/knowledge/reader/web_search_reader.py +389 -0
  126. agno/{document → knowledge}/reader/website_reader.py +37 -10
  127. agno/knowledge/reader/wikipedia_reader.py +59 -0
  128. agno/knowledge/reader/youtube_reader.py +78 -0
  129. agno/knowledge/remote_content/remote_content.py +88 -0
  130. agno/{reranker → knowledge/reranker}/base.py +1 -1
  131. agno/{reranker → knowledge/reranker}/cohere.py +2 -2
  132. agno/{reranker → knowledge/reranker}/infinity.py +2 -2
  133. agno/{reranker → knowledge/reranker}/sentence_transformer.py +2 -2
  134. agno/knowledge/types.py +30 -0
  135. agno/knowledge/utils.py +169 -0
  136. agno/memory/__init__.py +2 -10
  137. agno/memory/manager.py +1003 -148
  138. agno/models/aimlapi/__init__.py +2 -2
  139. agno/models/aimlapi/aimlapi.py +6 -6
  140. agno/models/anthropic/claude.py +129 -82
  141. agno/models/aws/bedrock.py +107 -175
  142. agno/models/aws/claude.py +64 -18
  143. agno/models/azure/ai_foundry.py +73 -23
  144. agno/models/base.py +347 -287
  145. agno/models/cerebras/cerebras.py +84 -27
  146. agno/models/cohere/chat.py +106 -98
  147. agno/models/google/gemini.py +100 -42
  148. agno/models/groq/groq.py +97 -35
  149. agno/models/huggingface/huggingface.py +92 -27
  150. agno/models/ibm/watsonx.py +72 -13
  151. agno/models/litellm/chat.py +85 -13
  152. agno/models/message.py +38 -144
  153. agno/models/meta/llama.py +85 -49
  154. agno/models/metrics.py +120 -0
  155. agno/models/mistral/mistral.py +90 -21
  156. agno/models/ollama/__init__.py +0 -2
  157. agno/models/ollama/chat.py +84 -46
  158. agno/models/openai/chat.py +121 -23
  159. agno/models/openai/responses.py +178 -105
  160. agno/models/perplexity/perplexity.py +26 -2
  161. agno/models/portkey/portkey.py +0 -7
  162. agno/models/response.py +14 -8
  163. agno/models/utils.py +20 -0
  164. agno/models/vercel/__init__.py +2 -2
  165. agno/models/vercel/v0.py +1 -1
  166. agno/models/vllm/__init__.py +2 -2
  167. agno/models/vllm/vllm.py +3 -3
  168. agno/models/xai/xai.py +10 -10
  169. agno/os/__init__.py +3 -0
  170. agno/os/app.py +393 -0
  171. agno/os/auth.py +47 -0
  172. agno/os/config.py +103 -0
  173. agno/os/interfaces/agui/__init__.py +3 -0
  174. agno/os/interfaces/agui/agui.py +31 -0
  175. agno/{app/agui/async_router.py → os/interfaces/agui/router.py} +16 -16
  176. agno/{app → os/interfaces}/agui/utils.py +65 -28
  177. agno/os/interfaces/base.py +21 -0
  178. agno/os/interfaces/slack/__init__.py +3 -0
  179. agno/{app/slack/async_router.py → os/interfaces/slack/router.py} +3 -5
  180. agno/os/interfaces/slack/slack.py +33 -0
  181. agno/os/interfaces/whatsapp/__init__.py +3 -0
  182. agno/{app/whatsapp/async_router.py → os/interfaces/whatsapp/router.py} +4 -7
  183. agno/os/interfaces/whatsapp/whatsapp.py +30 -0
  184. agno/os/router.py +843 -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 +204 -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 +413 -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 +179 -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 +58 -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 +163 -0
  201. agno/os/schema.py +892 -0
  202. agno/{app/playground → os}/settings.py +8 -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/{response.py → agent.py} +144 -72
  212. agno/run/base.py +44 -58
  213. agno/run/cancel.py +83 -0
  214. agno/run/team.py +133 -77
  215. agno/run/workflow.py +537 -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 +2961 -4253
  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 +42 -22
  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 +18 -13
  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 +18 -11
  244. agno/tools/daytona.py +13 -16
  245. agno/tools/decorator.py +6 -3
  246. agno/tools/desi_vocal.py +16 -7
  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 +61 -61
  252. agno/tools/eleven_labs.py +35 -28
  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 +29 -29
  257. agno/tools/file.py +9 -8
  258. agno/tools/financial_datasets.py +25 -44
  259. agno/tools/firecrawl.py +22 -22
  260. agno/tools/function.py +68 -17
  261. agno/tools/giphy.py +22 -10
  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 +31 -19
  276. agno/tools/mem0.py +18 -12
  277. agno/tools/memori.py +14 -10
  278. agno/tools/mlx_transcribe.py +3 -2
  279. agno/tools/models/azure_openai.py +32 -14
  280. agno/tools/models/gemini.py +58 -31
  281. agno/tools/models/groq.py +29 -20
  282. agno/tools/models/nebius.py +27 -11
  283. agno/tools/models_labs.py +39 -15
  284. agno/tools/moviepy_video.py +7 -6
  285. agno/tools/neo4j.py +10 -8
  286. agno/tools/newspaper.py +7 -2
  287. agno/tools/newspaper4k.py +8 -3
  288. agno/tools/openai.py +57 -26
  289. agno/tools/openbb.py +12 -11
  290. agno/tools/opencv.py +62 -46
  291. agno/tools/openweather.py +14 -12
  292. agno/tools/pandas.py +11 -3
  293. agno/tools/postgres.py +4 -12
  294. agno/tools/pubmed.py +4 -1
  295. agno/tools/python.py +9 -22
  296. agno/tools/reasoning.py +35 -27
  297. agno/tools/reddit.py +11 -26
  298. agno/tools/replicate.py +54 -41
  299. agno/tools/resend.py +4 -1
  300. agno/tools/scrapegraph.py +15 -14
  301. agno/tools/searxng.py +10 -23
  302. agno/tools/serpapi.py +6 -3
  303. agno/tools/serper.py +13 -4
  304. agno/tools/shell.py +9 -2
  305. agno/tools/slack.py +12 -11
  306. agno/tools/sleep.py +3 -2
  307. agno/tools/spider.py +24 -4
  308. agno/tools/sql.py +7 -6
  309. agno/tools/tavily.py +6 -4
  310. agno/tools/telegram.py +12 -4
  311. agno/tools/todoist.py +11 -31
  312. agno/tools/toolkit.py +1 -1
  313. agno/tools/trafilatura.py +22 -6
  314. agno/tools/trello.py +9 -22
  315. agno/tools/twilio.py +10 -3
  316. agno/tools/user_control_flow.py +6 -1
  317. agno/tools/valyu.py +34 -5
  318. agno/tools/visualization.py +19 -28
  319. agno/tools/webbrowser.py +4 -3
  320. agno/tools/webex.py +11 -7
  321. agno/tools/website.py +15 -46
  322. agno/tools/webtools.py +12 -4
  323. agno/tools/whatsapp.py +5 -9
  324. agno/tools/wikipedia.py +20 -13
  325. agno/tools/x.py +14 -13
  326. agno/tools/yfinance.py +13 -40
  327. agno/tools/youtube.py +26 -20
  328. agno/tools/zendesk.py +7 -2
  329. agno/tools/zep.py +10 -7
  330. agno/tools/zoom.py +10 -9
  331. agno/utils/common.py +1 -19
  332. agno/utils/events.py +95 -118
  333. agno/utils/knowledge.py +29 -0
  334. agno/utils/log.py +2 -2
  335. agno/utils/mcp.py +11 -5
  336. agno/utils/media.py +39 -0
  337. agno/utils/message.py +12 -1
  338. agno/utils/models/claude.py +6 -4
  339. agno/utils/models/mistral.py +8 -7
  340. agno/utils/models/schema_utils.py +3 -3
  341. agno/utils/pprint.py +33 -32
  342. agno/utils/print_response/agent.py +779 -0
  343. agno/utils/print_response/team.py +1565 -0
  344. agno/utils/print_response/workflow.py +1451 -0
  345. agno/utils/prompts.py +14 -14
  346. agno/utils/reasoning.py +87 -0
  347. agno/utils/response.py +42 -42
  348. agno/utils/string.py +8 -22
  349. agno/utils/team.py +50 -0
  350. agno/utils/timer.py +2 -2
  351. agno/vectordb/base.py +33 -21
  352. agno/vectordb/cassandra/cassandra.py +287 -23
  353. agno/vectordb/chroma/chromadb.py +482 -59
  354. agno/vectordb/clickhouse/clickhousedb.py +270 -63
  355. agno/vectordb/couchbase/couchbase.py +309 -29
  356. agno/vectordb/lancedb/lance_db.py +360 -21
  357. agno/vectordb/langchaindb/__init__.py +5 -0
  358. agno/vectordb/langchaindb/langchaindb.py +145 -0
  359. agno/vectordb/lightrag/__init__.py +5 -0
  360. agno/vectordb/lightrag/lightrag.py +374 -0
  361. agno/vectordb/llamaindex/llamaindexdb.py +127 -0
  362. agno/vectordb/milvus/milvus.py +242 -32
  363. agno/vectordb/mongodb/mongodb.py +200 -24
  364. agno/vectordb/pgvector/pgvector.py +319 -37
  365. agno/vectordb/pineconedb/pineconedb.py +221 -27
  366. agno/vectordb/qdrant/qdrant.py +334 -14
  367. agno/vectordb/singlestore/singlestore.py +286 -29
  368. agno/vectordb/surrealdb/surrealdb.py +187 -7
  369. agno/vectordb/upstashdb/upstashdb.py +342 -26
  370. agno/vectordb/weaviate/weaviate.py +227 -165
  371. agno/workflow/__init__.py +17 -13
  372. agno/workflow/{v2/condition.py → condition.py} +135 -32
  373. agno/workflow/{v2/loop.py → loop.py} +115 -28
  374. agno/workflow/{v2/parallel.py → parallel.py} +138 -108
  375. agno/workflow/{v2/router.py → router.py} +133 -32
  376. agno/workflow/{v2/step.py → step.py} +200 -42
  377. agno/workflow/{v2/steps.py → steps.py} +147 -66
  378. agno/workflow/types.py +482 -0
  379. agno/workflow/workflow.py +2394 -696
  380. agno-2.0.0a1.dist-info/METADATA +355 -0
  381. agno-2.0.0a1.dist-info/RECORD +514 -0
  382. agno/agent/metrics.py +0 -107
  383. agno/api/app.py +0 -35
  384. agno/api/playground.py +0 -92
  385. agno/api/schemas/app.py +0 -12
  386. agno/api/schemas/playground.py +0 -22
  387. agno/api/schemas/user.py +0 -35
  388. agno/api/schemas/workspace.py +0 -46
  389. agno/api/user.py +0 -160
  390. agno/api/workflows.py +0 -33
  391. agno/api/workspace.py +0 -175
  392. agno/app/agui/__init__.py +0 -3
  393. agno/app/agui/app.py +0 -17
  394. agno/app/agui/sync_router.py +0 -120
  395. agno/app/base.py +0 -186
  396. agno/app/discord/__init__.py +0 -3
  397. agno/app/fastapi/__init__.py +0 -3
  398. agno/app/fastapi/app.py +0 -107
  399. agno/app/fastapi/async_router.py +0 -457
  400. agno/app/fastapi/sync_router.py +0 -448
  401. agno/app/playground/app.py +0 -228
  402. agno/app/playground/async_router.py +0 -1050
  403. agno/app/playground/deploy.py +0 -249
  404. agno/app/playground/operator.py +0 -183
  405. agno/app/playground/schemas.py +0 -220
  406. agno/app/playground/serve.py +0 -55
  407. agno/app/playground/sync_router.py +0 -1042
  408. agno/app/playground/utils.py +0 -46
  409. agno/app/settings.py +0 -15
  410. agno/app/slack/__init__.py +0 -3
  411. agno/app/slack/app.py +0 -19
  412. agno/app/slack/sync_router.py +0 -92
  413. agno/app/utils.py +0 -54
  414. agno/app/whatsapp/__init__.py +0 -3
  415. agno/app/whatsapp/app.py +0 -15
  416. agno/app/whatsapp/sync_router.py +0 -197
  417. agno/cli/auth_server.py +0 -249
  418. agno/cli/config.py +0 -274
  419. agno/cli/console.py +0 -88
  420. agno/cli/credentials.py +0 -23
  421. agno/cli/entrypoint.py +0 -571
  422. agno/cli/operator.py +0 -357
  423. agno/cli/settings.py +0 -96
  424. agno/cli/ws/ws_cli.py +0 -817
  425. agno/constants.py +0 -13
  426. agno/document/__init__.py +0 -5
  427. agno/document/chunking/semantic.py +0 -45
  428. agno/document/chunking/strategy.py +0 -31
  429. agno/document/reader/__init__.py +0 -5
  430. agno/document/reader/base.py +0 -47
  431. agno/document/reader/docx_reader.py +0 -60
  432. agno/document/reader/gcs/pdf_reader.py +0 -44
  433. agno/document/reader/s3/pdf_reader.py +0 -59
  434. agno/document/reader/s3/text_reader.py +0 -63
  435. agno/document/reader/url_reader.py +0 -59
  436. agno/document/reader/youtube_reader.py +0 -58
  437. agno/embedder/__init__.py +0 -5
  438. agno/embedder/langdb.py +0 -80
  439. agno/embedder/mistral.py +0 -82
  440. agno/embedder/openai.py +0 -78
  441. agno/file/__init__.py +0 -5
  442. agno/file/file.py +0 -16
  443. agno/file/local/csv.py +0 -32
  444. agno/file/local/txt.py +0 -19
  445. agno/infra/app.py +0 -240
  446. agno/infra/base.py +0 -144
  447. agno/infra/context.py +0 -20
  448. agno/infra/db_app.py +0 -52
  449. agno/infra/resource.py +0 -205
  450. agno/infra/resources.py +0 -55
  451. agno/knowledge/agent.py +0 -702
  452. agno/knowledge/arxiv.py +0 -33
  453. agno/knowledge/combined.py +0 -36
  454. agno/knowledge/csv.py +0 -144
  455. agno/knowledge/csv_url.py +0 -124
  456. agno/knowledge/document.py +0 -223
  457. agno/knowledge/docx.py +0 -137
  458. agno/knowledge/firecrawl.py +0 -34
  459. agno/knowledge/gcs/__init__.py +0 -0
  460. agno/knowledge/gcs/base.py +0 -39
  461. agno/knowledge/gcs/pdf.py +0 -125
  462. agno/knowledge/json.py +0 -137
  463. agno/knowledge/langchain.py +0 -71
  464. agno/knowledge/light_rag.py +0 -273
  465. agno/knowledge/llamaindex.py +0 -66
  466. agno/knowledge/markdown.py +0 -154
  467. agno/knowledge/pdf.py +0 -164
  468. agno/knowledge/pdf_bytes.py +0 -42
  469. agno/knowledge/pdf_url.py +0 -148
  470. agno/knowledge/s3/__init__.py +0 -0
  471. agno/knowledge/s3/base.py +0 -64
  472. agno/knowledge/s3/pdf.py +0 -33
  473. agno/knowledge/s3/text.py +0 -34
  474. agno/knowledge/text.py +0 -141
  475. agno/knowledge/url.py +0 -46
  476. agno/knowledge/website.py +0 -179
  477. agno/knowledge/wikipedia.py +0 -32
  478. agno/knowledge/youtube.py +0 -35
  479. agno/memory/agent.py +0 -423
  480. agno/memory/classifier.py +0 -104
  481. agno/memory/db/__init__.py +0 -5
  482. agno/memory/db/base.py +0 -42
  483. agno/memory/db/mongodb.py +0 -189
  484. agno/memory/db/postgres.py +0 -203
  485. agno/memory/db/sqlite.py +0 -193
  486. agno/memory/memory.py +0 -22
  487. agno/memory/row.py +0 -36
  488. agno/memory/summarizer.py +0 -201
  489. agno/memory/summary.py +0 -19
  490. agno/memory/team.py +0 -415
  491. agno/memory/v2/__init__.py +0 -2
  492. agno/memory/v2/db/__init__.py +0 -1
  493. agno/memory/v2/db/base.py +0 -42
  494. agno/memory/v2/db/firestore.py +0 -339
  495. agno/memory/v2/db/mongodb.py +0 -196
  496. agno/memory/v2/db/postgres.py +0 -214
  497. agno/memory/v2/db/redis.py +0 -187
  498. agno/memory/v2/db/schema.py +0 -54
  499. agno/memory/v2/db/sqlite.py +0 -209
  500. agno/memory/v2/manager.py +0 -437
  501. agno/memory/v2/memory.py +0 -1097
  502. agno/memory/v2/schema.py +0 -55
  503. agno/memory/v2/summarizer.py +0 -215
  504. agno/memory/workflow.py +0 -38
  505. agno/models/ollama/tools.py +0 -430
  506. agno/models/qwen/__init__.py +0 -5
  507. agno/playground/__init__.py +0 -10
  508. agno/playground/deploy.py +0 -3
  509. agno/playground/playground.py +0 -3
  510. agno/playground/serve.py +0 -3
  511. agno/playground/settings.py +0 -3
  512. agno/reranker/__init__.py +0 -0
  513. agno/run/v2/__init__.py +0 -0
  514. agno/run/v2/workflow.py +0 -567
  515. agno/storage/__init__.py +0 -0
  516. agno/storage/agent/__init__.py +0 -0
  517. agno/storage/agent/dynamodb.py +0 -1
  518. agno/storage/agent/json.py +0 -1
  519. agno/storage/agent/mongodb.py +0 -1
  520. agno/storage/agent/postgres.py +0 -1
  521. agno/storage/agent/singlestore.py +0 -1
  522. agno/storage/agent/sqlite.py +0 -1
  523. agno/storage/agent/yaml.py +0 -1
  524. agno/storage/base.py +0 -60
  525. agno/storage/dynamodb.py +0 -673
  526. agno/storage/firestore.py +0 -297
  527. agno/storage/gcs_json.py +0 -261
  528. agno/storage/in_memory.py +0 -234
  529. agno/storage/json.py +0 -237
  530. agno/storage/mongodb.py +0 -328
  531. agno/storage/mysql.py +0 -685
  532. agno/storage/postgres.py +0 -682
  533. agno/storage/redis.py +0 -336
  534. agno/storage/session/__init__.py +0 -16
  535. agno/storage/session/agent.py +0 -64
  536. agno/storage/session/team.py +0 -63
  537. agno/storage/session/v2/__init__.py +0 -5
  538. agno/storage/session/workflow.py +0 -61
  539. agno/storage/singlestore.py +0 -606
  540. agno/storage/sqlite.py +0 -646
  541. agno/storage/workflow/__init__.py +0 -0
  542. agno/storage/workflow/mongodb.py +0 -1
  543. agno/storage/workflow/postgres.py +0 -1
  544. agno/storage/workflow/sqlite.py +0 -1
  545. agno/storage/yaml.py +0 -241
  546. agno/tools/thinking.py +0 -73
  547. agno/utils/defaults.py +0 -57
  548. agno/utils/filesystem.py +0 -39
  549. agno/utils/git.py +0 -52
  550. agno/utils/json_io.py +0 -30
  551. agno/utils/load_env.py +0 -19
  552. agno/utils/py_io.py +0 -19
  553. agno/utils/pyproject.py +0 -18
  554. agno/utils/resource_filter.py +0 -31
  555. agno/workflow/v2/__init__.py +0 -21
  556. agno/workflow/v2/types.py +0 -357
  557. agno/workflow/v2/workflow.py +0 -3312
  558. agno/workspace/__init__.py +0 -0
  559. agno/workspace/config.py +0 -325
  560. agno/workspace/enums.py +0 -6
  561. agno/workspace/helpers.py +0 -52
  562. agno/workspace/operator.py +0 -757
  563. agno/workspace/settings.py +0 -158
  564. agno-1.8.1.dist-info/METADATA +0 -982
  565. agno-1.8.1.dist-info/RECORD +0 -566
  566. agno-1.8.1.dist-info/entry_points.txt +0 -3
  567. /agno/{app → db/migrations}/__init__.py +0 -0
  568. /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
  569. /agno/{cli → integrations}/__init__.py +0 -0
  570. /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
  571. /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
  572. /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
  573. /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
  574. /agno/{app → os/interfaces}/slack/security.py +0 -0
  575. /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
  576. /agno/{file/local → utils/print_response}/__init__.py +0 -0
  577. /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
  578. {agno-1.8.1.dist-info → agno-2.0.0a1.dist-info}/WHEEL +0 -0
  579. {agno-1.8.1.dist-info → agno-2.0.0a1.dist-info}/licenses/LICENSE +0 -0
  580. {agno-1.8.1.dist-info → agno-2.0.0a1.dist-info}/top_level.txt +0 -0
@@ -1,16 +1,17 @@
1
1
  from dataclasses import dataclass
2
2
  from typing import Any, AsyncIterator, Awaitable, Callable, Dict, Iterator, List, Optional, Union
3
+ from uuid import uuid4
3
4
 
4
- from agno.run.response import RunResponseEvent
5
- from agno.run.team import TeamRunResponseEvent
6
- from agno.run.v2.workflow import (
5
+ from agno.run.agent import RunOutputEvent
6
+ from agno.run.team import TeamRunOutputEvent
7
+ from agno.run.workflow import (
7
8
  StepsExecutionCompletedEvent,
8
9
  StepsExecutionStartedEvent,
9
- WorkflowRunResponse,
10
- WorkflowRunResponseEvent,
10
+ WorkflowRunOutput,
11
+ WorkflowRunOutputEvent,
11
12
  )
12
13
  from agno.utils.log import log_debug, logger
13
- from agno.workflow.v2.step import Step, StepInput, StepOutput
14
+ from agno.workflow.step import Step, StepInput, StepOutput, StepType
14
15
 
15
16
  WorkflowSteps = List[
16
17
  Union[
@@ -49,11 +50,11 @@ class Steps:
49
50
  """Prepare the steps for execution - mirrors workflow logic"""
50
51
  from agno.agent.agent import Agent
51
52
  from agno.team.team import Team
52
- from agno.workflow.v2.condition import Condition
53
- from agno.workflow.v2.loop import Loop
54
- from agno.workflow.v2.parallel import Parallel
55
- from agno.workflow.v2.router import Router
56
- from agno.workflow.v2.step import Step
53
+ from agno.workflow.condition import Condition
54
+ from agno.workflow.loop import Loop
55
+ from agno.workflow.parallel import Parallel
56
+ from agno.workflow.router import Router
57
+ from agno.workflow.step import Step
57
58
 
58
59
  prepared_steps: WorkflowSteps = []
59
60
  for step in self.steps:
@@ -101,7 +102,7 @@ class Steps:
101
102
  updated_previous_step_outputs.update(steps_step_outputs)
102
103
 
103
104
  return StepInput(
104
- message=step_input.message,
105
+ input=step_input.input,
105
106
  previous_step_content=previous_step_content,
106
107
  previous_step_outputs=updated_previous_step_outputs,
107
108
  additional_data=step_input.additional_data,
@@ -111,15 +112,23 @@ class Steps:
111
112
  )
112
113
 
113
114
  def execute(
114
- self, step_input: StepInput, session_id: Optional[str] = None, user_id: Optional[str] = None
115
- ) -> List[StepOutput]:
115
+ self,
116
+ step_input: StepInput,
117
+ session_id: Optional[str] = None,
118
+ user_id: Optional[str] = None,
119
+ workflow_run_response: Optional[WorkflowRunOutput] = None,
120
+ session_state: Optional[Dict[str, Any]] = None,
121
+ store_executor_outputs: bool = True,
122
+ ) -> StepOutput:
116
123
  """Execute all steps in sequence and return the final result"""
117
124
  log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
118
125
 
126
+ steps_id = str(uuid4())
127
+
119
128
  self._prepare_steps()
120
129
 
121
130
  if not self.steps:
122
- return [StepOutput(step_name=self.name or "Steps", content="No steps to execute")]
131
+ return StepOutput(step_name=self.name or "Steps", content="No steps to execute")
123
132
 
124
133
  # Track outputs and pass data between steps - following Condition/Router pattern
125
134
  all_results: List[StepOutput] = []
@@ -132,7 +141,14 @@ class Steps:
132
141
  log_debug(f"Steps {self.name}: Executing step {i + 1}/{len(self.steps)} - {step_name}")
133
142
 
134
143
  # Execute step
135
- step_output = step.execute(current_step_input, session_id=session_id, user_id=user_id) # type: ignore
144
+ step_output = step.execute( # type: ignore
145
+ current_step_input,
146
+ session_id=session_id,
147
+ user_id=user_id,
148
+ workflow_run_response=workflow_run_response,
149
+ store_executor_outputs=store_executor_outputs,
150
+ session_state=session_state,
151
+ )
136
152
 
137
153
  # Handle both single StepOutput and List[StepOutput] (from Loop/Condition/Router steps)
138
154
  if isinstance(step_output, list):
@@ -158,31 +174,42 @@ class Steps:
158
174
  )
159
175
 
160
176
  log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
161
- return all_results
177
+
178
+ return StepOutput(
179
+ step_name=self.name,
180
+ step_id=steps_id,
181
+ step_type=StepType.STEPS,
182
+ content=f"Steps {self.name} completed with {len(all_results)} results",
183
+ success=all(result.success for result in all_results) if all_results else True,
184
+ steps=all_results,
185
+ )
162
186
 
163
187
  except Exception as e:
164
188
  logger.error(f"Steps execution failed: {e}")
165
- return [
166
- StepOutput(
167
- step_name=self.name or "Steps",
168
- content=f"Steps execution failed: {str(e)}",
169
- success=False,
170
- error=str(e),
171
- )
172
- ]
189
+ return StepOutput(
190
+ step_name=self.name or "Steps",
191
+ content=f"Steps execution failed: {str(e)}",
192
+ success=False,
193
+ error=str(e),
194
+ )
173
195
 
174
196
  def execute_stream(
175
197
  self,
176
198
  step_input: StepInput,
177
- workflow_run_response: WorkflowRunResponse,
199
+ workflow_run_response: WorkflowRunOutput,
200
+ session_state: Optional[Dict[str, Any]] = None,
178
201
  session_id: Optional[str] = None,
179
202
  user_id: Optional[str] = None,
180
203
  stream_intermediate_steps: bool = False,
181
204
  step_index: Optional[Union[int, tuple]] = None,
182
- ) -> Iterator[Union[WorkflowRunResponseEvent, TeamRunResponseEvent, RunResponseEvent, StepOutput]]:
205
+ store_executor_outputs: bool = True,
206
+ parent_step_id: Optional[str] = None,
207
+ ) -> Iterator[Union[WorkflowRunOutputEvent, TeamRunOutputEvent, RunOutputEvent, StepOutput]]:
183
208
  """Execute all steps in sequence with streaming support"""
184
209
  log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
185
210
 
211
+ steps_id = str(uuid4())
212
+
186
213
  self._prepare_steps()
187
214
 
188
215
  if stream_intermediate_steps:
@@ -195,6 +222,8 @@ class Steps:
195
222
  step_name=self.name,
196
223
  step_index=step_index,
197
224
  steps_count=len(self.steps),
225
+ step_id=steps_id,
226
+ parent_step_id=parent_step_id,
198
227
  )
199
228
 
200
229
  if not self.steps:
@@ -225,9 +254,12 @@ class Steps:
225
254
  current_step_input,
226
255
  session_id=session_id,
227
256
  user_id=user_id,
257
+ session_state=session_state,
228
258
  stream_intermediate_steps=stream_intermediate_steps,
229
259
  workflow_run_response=workflow_run_response,
230
260
  step_index=child_step_index,
261
+ store_executor_outputs=store_executor_outputs,
262
+ parent_step_id=steps_id,
231
263
  ):
232
264
  if isinstance(event, StepOutput):
233
265
  step_outputs_for_step.append(event)
@@ -274,10 +306,18 @@ class Steps:
274
306
  steps_count=len(self.steps),
275
307
  executed_steps=len(all_results),
276
308
  step_results=all_results,
309
+ step_id=steps_id,
310
+ parent_step_id=parent_step_id,
277
311
  )
278
312
 
279
- for result in all_results:
280
- yield result
313
+ yield StepOutput(
314
+ step_name=self.name,
315
+ step_id=steps_id,
316
+ step_type=StepType.STEPS,
317
+ content=f"Steps {self.name} completed with {len(all_results)} results",
318
+ success=all(result.success for result in all_results) if all_results else True,
319
+ steps=all_results,
320
+ )
281
321
 
282
322
  except Exception as e:
283
323
  logger.error(f"Steps streaming failed: {e}")
@@ -290,15 +330,23 @@ class Steps:
290
330
  yield error_result
291
331
 
292
332
  async def aexecute(
293
- self, step_input: StepInput, session_id: Optional[str] = None, user_id: Optional[str] = None
294
- ) -> List[StepOutput]:
333
+ self,
334
+ step_input: StepInput,
335
+ session_id: Optional[str] = None,
336
+ user_id: Optional[str] = None,
337
+ workflow_run_response: Optional[WorkflowRunOutput] = None,
338
+ session_state: Optional[Dict[str, Any]] = None,
339
+ store_executor_outputs: bool = True,
340
+ ) -> StepOutput:
295
341
  """Execute all steps in sequence asynchronously and return the final result"""
296
342
  log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
297
343
 
344
+ steps_id = str(uuid4())
345
+
298
346
  self._prepare_steps()
299
347
 
300
348
  if not self.steps:
301
- return [StepOutput(step_name=self.name or "Steps", content="No steps to execute")]
349
+ return StepOutput(step_name=self.name or "Steps", content="No steps to execute")
302
350
 
303
351
  # Track outputs and pass data between steps - following Condition/Router pattern
304
352
  all_results: List[StepOutput] = []
@@ -311,7 +359,14 @@ class Steps:
311
359
  log_debug(f"Steps {self.name}: Executing async step {i + 1}/{len(self.steps)} - {step_name}")
312
360
 
313
361
  # Execute step
314
- step_output = await step.aexecute(current_step_input, session_id=session_id, user_id=user_id) # type: ignore
362
+ step_output = await step.aexecute( # type: ignore
363
+ current_step_input,
364
+ session_id=session_id,
365
+ user_id=user_id,
366
+ workflow_run_response=workflow_run_response,
367
+ store_executor_outputs=store_executor_outputs,
368
+ session_state=session_state,
369
+ )
315
370
 
316
371
  # Handle both single StepOutput and List[StepOutput] (from Loop/Condition/Router steps)
317
372
  if isinstance(step_output, list):
@@ -336,43 +391,57 @@ class Steps:
336
391
  )
337
392
 
338
393
  log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
339
- return all_results
394
+
395
+ return StepOutput(
396
+ step_name=self.name,
397
+ step_id=steps_id,
398
+ step_type=StepType.STEPS,
399
+ content=f"Steps {self.name} completed with {len(all_results)} results",
400
+ success=all(result.success for result in all_results) if all_results else True,
401
+ steps=all_results,
402
+ )
340
403
 
341
404
  except Exception as e:
342
405
  logger.error(f"Async steps execution failed: {e}")
343
- return [
344
- StepOutput(
345
- step_name=self.name or "Steps",
346
- content=f"Steps execution failed: {str(e)}",
347
- success=False,
348
- error=str(e),
349
- )
350
- ]
406
+ return StepOutput(
407
+ step_name=self.name or "Steps",
408
+ content=f"Steps execution failed: {str(e)}",
409
+ success=False,
410
+ error=str(e),
411
+ )
351
412
 
352
413
  async def aexecute_stream(
353
414
  self,
354
415
  step_input: StepInput,
355
- workflow_run_response: WorkflowRunResponse,
416
+ workflow_run_response: WorkflowRunOutput,
417
+ session_state: Optional[Dict[str, Any]] = None,
356
418
  session_id: Optional[str] = None,
357
419
  user_id: Optional[str] = None,
358
420
  stream_intermediate_steps: bool = False,
359
421
  step_index: Optional[Union[int, tuple]] = None,
360
- ) -> AsyncIterator[Union[WorkflowRunResponseEvent, TeamRunResponseEvent, RunResponseEvent, StepOutput]]:
422
+ store_executor_outputs: bool = True,
423
+ parent_step_id: Optional[str] = None,
424
+ ) -> AsyncIterator[Union[WorkflowRunOutputEvent, TeamRunOutputEvent, RunOutputEvent, StepOutput]]:
361
425
  """Execute all steps in sequence with async streaming support"""
362
426
  log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
363
427
 
428
+ steps_id = str(uuid4())
429
+
364
430
  self._prepare_steps()
365
431
 
366
- # Yield steps execution started event
367
- yield StepsExecutionStartedEvent(
368
- run_id=workflow_run_response.run_id or "",
369
- workflow_name=workflow_run_response.workflow_name or "",
370
- workflow_id=workflow_run_response.workflow_id or "",
371
- session_id=workflow_run_response.session_id or "",
372
- step_name=self.name,
373
- step_index=step_index,
374
- steps_count=len(self.steps),
375
- )
432
+ if stream_intermediate_steps:
433
+ # Yield steps execution started event
434
+ yield StepsExecutionStartedEvent(
435
+ run_id=workflow_run_response.run_id or "",
436
+ workflow_name=workflow_run_response.workflow_name or "",
437
+ workflow_id=workflow_run_response.workflow_id or "",
438
+ session_id=workflow_run_response.session_id or "",
439
+ step_name=self.name,
440
+ step_index=step_index,
441
+ steps_count=len(self.steps),
442
+ step_id=steps_id,
443
+ parent_step_id=parent_step_id,
444
+ )
376
445
 
377
446
  if not self.steps:
378
447
  yield StepOutput(step_name=self.name or "Steps", content="No steps to execute")
@@ -402,9 +471,12 @@ class Steps:
402
471
  current_step_input,
403
472
  session_id=session_id,
404
473
  user_id=user_id,
474
+ session_state=session_state,
405
475
  stream_intermediate_steps=stream_intermediate_steps,
406
476
  workflow_run_response=workflow_run_response,
407
477
  step_index=child_step_index,
478
+ store_executor_outputs=store_executor_outputs,
479
+ parent_step_id=steps_id,
408
480
  ):
409
481
  if isinstance(event, StepOutput):
410
482
  step_outputs_for_step.append(event)
@@ -439,21 +511,30 @@ class Steps:
439
511
 
440
512
  log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
441
513
  # Yield steps execution completed event
442
- yield StepsExecutionCompletedEvent(
443
- run_id=workflow_run_response.run_id or "",
444
- workflow_name=workflow_run_response.workflow_name or "",
445
- workflow_id=workflow_run_response.workflow_id or "",
446
- session_id=workflow_run_response.session_id or "",
514
+ if stream_intermediate_steps:
515
+ yield StepsExecutionCompletedEvent(
516
+ run_id=workflow_run_response.run_id or "",
517
+ workflow_name=workflow_run_response.workflow_name or "",
518
+ workflow_id=workflow_run_response.workflow_id or "",
519
+ session_id=workflow_run_response.session_id or "",
520
+ step_name=self.name,
521
+ step_index=step_index,
522
+ steps_count=len(self.steps),
523
+ executed_steps=len(all_results),
524
+ step_results=all_results,
525
+ step_id=steps_id,
526
+ parent_step_id=parent_step_id,
527
+ )
528
+
529
+ yield StepOutput(
447
530
  step_name=self.name,
448
- step_index=step_index,
449
- steps_count=len(self.steps),
450
- executed_steps=len(all_results),
451
- step_results=all_results,
531
+ step_id=steps_id,
532
+ step_type=StepType.STEPS,
533
+ content=f"Steps {self.name} completed with {len(all_results)} results",
534
+ success=all(result.success for result in all_results) if all_results else True,
535
+ steps=all_results,
452
536
  )
453
537
 
454
- for result in all_results:
455
- yield result
456
-
457
538
  except Exception as e:
458
539
  logger.error(f"Async steps streaming failed: {e}")
459
540
  error_result = StepOutput(