agno 1.8.0__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 (583) hide show
  1. agno/__init__.py +8 -0
  2. agno/agent/__init__.py +19 -27
  3. agno/agent/agent.py +2781 -4126
  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/media.py +2 -2
  137. agno/memory/__init__.py +2 -10
  138. agno/memory/manager.py +1003 -148
  139. agno/models/aimlapi/__init__.py +2 -2
  140. agno/models/aimlapi/aimlapi.py +6 -6
  141. agno/models/anthropic/claude.py +129 -82
  142. agno/models/aws/bedrock.py +107 -175
  143. agno/models/aws/claude.py +64 -18
  144. agno/models/azure/ai_foundry.py +73 -23
  145. agno/models/base.py +347 -287
  146. agno/models/cerebras/cerebras.py +84 -27
  147. agno/models/cohere/chat.py +106 -98
  148. agno/models/dashscope/dashscope.py +14 -5
  149. agno/models/google/gemini.py +123 -53
  150. agno/models/groq/groq.py +97 -35
  151. agno/models/huggingface/huggingface.py +92 -27
  152. agno/models/ibm/watsonx.py +72 -13
  153. agno/models/litellm/chat.py +85 -13
  154. agno/models/message.py +38 -144
  155. agno/models/meta/llama.py +85 -49
  156. agno/models/metrics.py +120 -0
  157. agno/models/mistral/mistral.py +90 -21
  158. agno/models/ollama/__init__.py +0 -2
  159. agno/models/ollama/chat.py +84 -46
  160. agno/models/openai/chat.py +135 -27
  161. agno/models/openai/responses.py +233 -115
  162. agno/models/perplexity/perplexity.py +26 -2
  163. agno/models/portkey/portkey.py +0 -7
  164. agno/models/response.py +14 -8
  165. agno/models/utils.py +20 -0
  166. agno/models/vercel/__init__.py +2 -2
  167. agno/models/vercel/v0.py +1 -1
  168. agno/models/vllm/__init__.py +2 -2
  169. agno/models/vllm/vllm.py +3 -3
  170. agno/models/xai/xai.py +10 -10
  171. agno/os/__init__.py +3 -0
  172. agno/os/app.py +393 -0
  173. agno/os/auth.py +47 -0
  174. agno/os/config.py +103 -0
  175. agno/os/interfaces/agui/__init__.py +3 -0
  176. agno/os/interfaces/agui/agui.py +31 -0
  177. agno/{app/agui/async_router.py → os/interfaces/agui/router.py} +16 -16
  178. agno/{app → os/interfaces}/agui/utils.py +65 -28
  179. agno/os/interfaces/base.py +21 -0
  180. agno/os/interfaces/slack/__init__.py +3 -0
  181. agno/{app/slack/async_router.py → os/interfaces/slack/router.py} +3 -5
  182. agno/os/interfaces/slack/slack.py +33 -0
  183. agno/os/interfaces/whatsapp/__init__.py +3 -0
  184. agno/{app/whatsapp/async_router.py → os/interfaces/whatsapp/router.py} +4 -7
  185. agno/os/interfaces/whatsapp/whatsapp.py +30 -0
  186. agno/os/router.py +843 -0
  187. agno/os/routers/__init__.py +3 -0
  188. agno/os/routers/evals/__init__.py +3 -0
  189. agno/os/routers/evals/evals.py +204 -0
  190. agno/os/routers/evals/schemas.py +142 -0
  191. agno/os/routers/evals/utils.py +161 -0
  192. agno/os/routers/knowledge/__init__.py +3 -0
  193. agno/os/routers/knowledge/knowledge.py +413 -0
  194. agno/os/routers/knowledge/schemas.py +118 -0
  195. agno/os/routers/memory/__init__.py +3 -0
  196. agno/os/routers/memory/memory.py +179 -0
  197. agno/os/routers/memory/schemas.py +58 -0
  198. agno/os/routers/metrics/__init__.py +3 -0
  199. agno/os/routers/metrics/metrics.py +58 -0
  200. agno/os/routers/metrics/schemas.py +47 -0
  201. agno/os/routers/session/__init__.py +3 -0
  202. agno/os/routers/session/session.py +163 -0
  203. agno/os/schema.py +892 -0
  204. agno/{app/playground → os}/settings.py +8 -15
  205. agno/os/utils.py +270 -0
  206. agno/reasoning/azure_ai_foundry.py +4 -4
  207. agno/reasoning/deepseek.py +4 -4
  208. agno/reasoning/default.py +6 -11
  209. agno/reasoning/groq.py +4 -4
  210. agno/reasoning/helpers.py +4 -6
  211. agno/reasoning/ollama.py +4 -4
  212. agno/reasoning/openai.py +4 -4
  213. agno/run/{response.py → agent.py} +144 -72
  214. agno/run/base.py +44 -58
  215. agno/run/cancel.py +83 -0
  216. agno/run/team.py +133 -77
  217. agno/run/workflow.py +537 -12
  218. agno/session/__init__.py +10 -0
  219. agno/session/agent.py +244 -0
  220. agno/session/summary.py +225 -0
  221. agno/session/team.py +262 -0
  222. agno/{storage/session/v2 → session}/workflow.py +47 -24
  223. agno/team/__init__.py +15 -16
  224. agno/team/team.py +2967 -4243
  225. agno/tools/agentql.py +14 -5
  226. agno/tools/airflow.py +9 -4
  227. agno/tools/api.py +7 -3
  228. agno/tools/apify.py +2 -46
  229. agno/tools/arxiv.py +8 -3
  230. agno/tools/aws_lambda.py +7 -5
  231. agno/tools/aws_ses.py +7 -1
  232. agno/tools/baidusearch.py +4 -1
  233. agno/tools/bitbucket.py +4 -4
  234. agno/tools/brandfetch.py +14 -11
  235. agno/tools/bravesearch.py +4 -1
  236. agno/tools/brightdata.py +42 -22
  237. agno/tools/browserbase.py +13 -4
  238. agno/tools/calcom.py +12 -10
  239. agno/tools/calculator.py +10 -27
  240. agno/tools/cartesia.py +18 -13
  241. agno/tools/{clickup_tool.py → clickup.py} +12 -25
  242. agno/tools/confluence.py +71 -18
  243. agno/tools/crawl4ai.py +7 -1
  244. agno/tools/csv_toolkit.py +9 -8
  245. agno/tools/dalle.py +18 -11
  246. agno/tools/daytona.py +13 -16
  247. agno/tools/decorator.py +6 -3
  248. agno/tools/desi_vocal.py +16 -7
  249. agno/tools/discord.py +11 -8
  250. agno/tools/docker.py +30 -42
  251. agno/tools/duckdb.py +34 -53
  252. agno/tools/duckduckgo.py +8 -7
  253. agno/tools/e2b.py +62 -62
  254. agno/tools/eleven_labs.py +35 -28
  255. agno/tools/email.py +4 -1
  256. agno/tools/evm.py +7 -1
  257. agno/tools/exa.py +19 -14
  258. agno/tools/fal.py +29 -29
  259. agno/tools/file.py +9 -8
  260. agno/tools/financial_datasets.py +25 -44
  261. agno/tools/firecrawl.py +22 -22
  262. agno/tools/function.py +68 -17
  263. agno/tools/giphy.py +22 -10
  264. agno/tools/github.py +48 -126
  265. agno/tools/gmail.py +46 -62
  266. agno/tools/google_bigquery.py +7 -6
  267. agno/tools/google_maps.py +11 -26
  268. agno/tools/googlesearch.py +7 -2
  269. agno/tools/googlesheets.py +21 -17
  270. agno/tools/hackernews.py +9 -5
  271. agno/tools/jina.py +5 -4
  272. agno/tools/jira.py +18 -9
  273. agno/tools/knowledge.py +31 -32
  274. agno/tools/linear.py +18 -33
  275. agno/tools/linkup.py +5 -1
  276. agno/tools/local_file_system.py +8 -5
  277. agno/tools/lumalab.py +31 -19
  278. agno/tools/mem0.py +18 -12
  279. agno/tools/memori.py +14 -10
  280. agno/tools/mlx_transcribe.py +3 -2
  281. agno/tools/models/azure_openai.py +32 -14
  282. agno/tools/models/gemini.py +58 -31
  283. agno/tools/models/groq.py +29 -20
  284. agno/tools/models/nebius.py +27 -11
  285. agno/tools/models_labs.py +39 -15
  286. agno/tools/moviepy_video.py +7 -6
  287. agno/tools/neo4j.py +134 -0
  288. agno/tools/newspaper.py +7 -2
  289. agno/tools/newspaper4k.py +8 -3
  290. agno/tools/openai.py +57 -26
  291. agno/tools/openbb.py +12 -11
  292. agno/tools/opencv.py +62 -46
  293. agno/tools/openweather.py +14 -12
  294. agno/tools/pandas.py +11 -3
  295. agno/tools/postgres.py +4 -12
  296. agno/tools/pubmed.py +4 -1
  297. agno/tools/python.py +9 -22
  298. agno/tools/reasoning.py +35 -27
  299. agno/tools/reddit.py +11 -26
  300. agno/tools/replicate.py +54 -41
  301. agno/tools/resend.py +4 -1
  302. agno/tools/scrapegraph.py +15 -14
  303. agno/tools/searxng.py +10 -23
  304. agno/tools/serpapi.py +6 -3
  305. agno/tools/serper.py +13 -4
  306. agno/tools/shell.py +9 -2
  307. agno/tools/slack.py +12 -11
  308. agno/tools/sleep.py +3 -2
  309. agno/tools/spider.py +24 -4
  310. agno/tools/sql.py +7 -6
  311. agno/tools/tavily.py +6 -4
  312. agno/tools/telegram.py +12 -4
  313. agno/tools/todoist.py +11 -31
  314. agno/tools/toolkit.py +1 -1
  315. agno/tools/trafilatura.py +22 -6
  316. agno/tools/trello.py +9 -22
  317. agno/tools/twilio.py +10 -3
  318. agno/tools/user_control_flow.py +6 -1
  319. agno/tools/valyu.py +34 -5
  320. agno/tools/visualization.py +19 -28
  321. agno/tools/webbrowser.py +4 -3
  322. agno/tools/webex.py +11 -7
  323. agno/tools/website.py +15 -46
  324. agno/tools/webtools.py +12 -4
  325. agno/tools/whatsapp.py +5 -9
  326. agno/tools/wikipedia.py +20 -13
  327. agno/tools/x.py +14 -13
  328. agno/tools/yfinance.py +13 -40
  329. agno/tools/youtube.py +26 -20
  330. agno/tools/zendesk.py +7 -2
  331. agno/tools/zep.py +10 -7
  332. agno/tools/zoom.py +10 -9
  333. agno/utils/common.py +1 -19
  334. agno/utils/events.py +95 -118
  335. agno/utils/knowledge.py +29 -0
  336. agno/utils/location.py +2 -2
  337. agno/utils/log.py +2 -2
  338. agno/utils/mcp.py +11 -5
  339. agno/utils/media.py +39 -0
  340. agno/utils/message.py +12 -1
  341. agno/utils/models/claude.py +6 -4
  342. agno/utils/models/mistral.py +8 -7
  343. agno/utils/models/schema_utils.py +3 -3
  344. agno/utils/pprint.py +33 -32
  345. agno/utils/print_response/agent.py +779 -0
  346. agno/utils/print_response/team.py +1565 -0
  347. agno/utils/print_response/workflow.py +1451 -0
  348. agno/utils/prompts.py +14 -14
  349. agno/utils/reasoning.py +87 -0
  350. agno/utils/response.py +42 -42
  351. agno/utils/string.py +8 -22
  352. agno/utils/team.py +50 -0
  353. agno/utils/timer.py +2 -2
  354. agno/vectordb/base.py +33 -21
  355. agno/vectordb/cassandra/cassandra.py +287 -23
  356. agno/vectordb/chroma/chromadb.py +482 -59
  357. agno/vectordb/clickhouse/clickhousedb.py +270 -63
  358. agno/vectordb/couchbase/couchbase.py +309 -29
  359. agno/vectordb/lancedb/lance_db.py +360 -21
  360. agno/vectordb/langchaindb/__init__.py +5 -0
  361. agno/vectordb/langchaindb/langchaindb.py +145 -0
  362. agno/vectordb/lightrag/__init__.py +5 -0
  363. agno/vectordb/lightrag/lightrag.py +374 -0
  364. agno/vectordb/llamaindex/llamaindexdb.py +127 -0
  365. agno/vectordb/milvus/milvus.py +242 -32
  366. agno/vectordb/mongodb/mongodb.py +200 -24
  367. agno/vectordb/pgvector/pgvector.py +319 -37
  368. agno/vectordb/pineconedb/pineconedb.py +221 -27
  369. agno/vectordb/qdrant/qdrant.py +356 -14
  370. agno/vectordb/singlestore/singlestore.py +286 -29
  371. agno/vectordb/surrealdb/surrealdb.py +187 -7
  372. agno/vectordb/upstashdb/upstashdb.py +342 -26
  373. agno/vectordb/weaviate/weaviate.py +227 -165
  374. agno/workflow/__init__.py +17 -13
  375. agno/workflow/{v2/condition.py → condition.py} +135 -32
  376. agno/workflow/{v2/loop.py → loop.py} +115 -28
  377. agno/workflow/{v2/parallel.py → parallel.py} +138 -108
  378. agno/workflow/{v2/router.py → router.py} +133 -32
  379. agno/workflow/{v2/step.py → step.py} +200 -42
  380. agno/workflow/{v2/steps.py → steps.py} +147 -66
  381. agno/workflow/types.py +482 -0
  382. agno/workflow/workflow.py +2394 -696
  383. agno-2.0.0a1.dist-info/METADATA +355 -0
  384. agno-2.0.0a1.dist-info/RECORD +514 -0
  385. agno/agent/metrics.py +0 -107
  386. agno/api/app.py +0 -35
  387. agno/api/playground.py +0 -92
  388. agno/api/schemas/app.py +0 -12
  389. agno/api/schemas/playground.py +0 -22
  390. agno/api/schemas/user.py +0 -35
  391. agno/api/schemas/workspace.py +0 -46
  392. agno/api/user.py +0 -160
  393. agno/api/workflows.py +0 -33
  394. agno/api/workspace.py +0 -175
  395. agno/app/agui/__init__.py +0 -3
  396. agno/app/agui/app.py +0 -17
  397. agno/app/agui/sync_router.py +0 -120
  398. agno/app/base.py +0 -186
  399. agno/app/discord/__init__.py +0 -3
  400. agno/app/fastapi/__init__.py +0 -3
  401. agno/app/fastapi/app.py +0 -107
  402. agno/app/fastapi/async_router.py +0 -457
  403. agno/app/fastapi/sync_router.py +0 -448
  404. agno/app/playground/app.py +0 -228
  405. agno/app/playground/async_router.py +0 -1050
  406. agno/app/playground/deploy.py +0 -249
  407. agno/app/playground/operator.py +0 -183
  408. agno/app/playground/schemas.py +0 -220
  409. agno/app/playground/serve.py +0 -55
  410. agno/app/playground/sync_router.py +0 -1042
  411. agno/app/playground/utils.py +0 -46
  412. agno/app/settings.py +0 -15
  413. agno/app/slack/__init__.py +0 -3
  414. agno/app/slack/app.py +0 -19
  415. agno/app/slack/sync_router.py +0 -92
  416. agno/app/utils.py +0 -54
  417. agno/app/whatsapp/__init__.py +0 -3
  418. agno/app/whatsapp/app.py +0 -15
  419. agno/app/whatsapp/sync_router.py +0 -197
  420. agno/cli/auth_server.py +0 -249
  421. agno/cli/config.py +0 -274
  422. agno/cli/console.py +0 -88
  423. agno/cli/credentials.py +0 -23
  424. agno/cli/entrypoint.py +0 -571
  425. agno/cli/operator.py +0 -357
  426. agno/cli/settings.py +0 -96
  427. agno/cli/ws/ws_cli.py +0 -817
  428. agno/constants.py +0 -13
  429. agno/document/__init__.py +0 -5
  430. agno/document/chunking/semantic.py +0 -45
  431. agno/document/chunking/strategy.py +0 -31
  432. agno/document/reader/__init__.py +0 -5
  433. agno/document/reader/base.py +0 -47
  434. agno/document/reader/docx_reader.py +0 -60
  435. agno/document/reader/gcs/pdf_reader.py +0 -44
  436. agno/document/reader/s3/pdf_reader.py +0 -59
  437. agno/document/reader/s3/text_reader.py +0 -63
  438. agno/document/reader/url_reader.py +0 -59
  439. agno/document/reader/youtube_reader.py +0 -58
  440. agno/embedder/__init__.py +0 -5
  441. agno/embedder/langdb.py +0 -80
  442. agno/embedder/mistral.py +0 -82
  443. agno/embedder/openai.py +0 -78
  444. agno/file/__init__.py +0 -5
  445. agno/file/file.py +0 -16
  446. agno/file/local/csv.py +0 -32
  447. agno/file/local/txt.py +0 -19
  448. agno/infra/app.py +0 -240
  449. agno/infra/base.py +0 -144
  450. agno/infra/context.py +0 -20
  451. agno/infra/db_app.py +0 -52
  452. agno/infra/resource.py +0 -205
  453. agno/infra/resources.py +0 -55
  454. agno/knowledge/agent.py +0 -698
  455. agno/knowledge/arxiv.py +0 -33
  456. agno/knowledge/combined.py +0 -36
  457. agno/knowledge/csv.py +0 -144
  458. agno/knowledge/csv_url.py +0 -124
  459. agno/knowledge/document.py +0 -223
  460. agno/knowledge/docx.py +0 -137
  461. agno/knowledge/firecrawl.py +0 -34
  462. agno/knowledge/gcs/__init__.py +0 -0
  463. agno/knowledge/gcs/base.py +0 -39
  464. agno/knowledge/gcs/pdf.py +0 -125
  465. agno/knowledge/json.py +0 -137
  466. agno/knowledge/langchain.py +0 -71
  467. agno/knowledge/light_rag.py +0 -273
  468. agno/knowledge/llamaindex.py +0 -66
  469. agno/knowledge/markdown.py +0 -154
  470. agno/knowledge/pdf.py +0 -164
  471. agno/knowledge/pdf_bytes.py +0 -42
  472. agno/knowledge/pdf_url.py +0 -148
  473. agno/knowledge/s3/__init__.py +0 -0
  474. agno/knowledge/s3/base.py +0 -64
  475. agno/knowledge/s3/pdf.py +0 -33
  476. agno/knowledge/s3/text.py +0 -34
  477. agno/knowledge/text.py +0 -141
  478. agno/knowledge/url.py +0 -46
  479. agno/knowledge/website.py +0 -179
  480. agno/knowledge/wikipedia.py +0 -32
  481. agno/knowledge/youtube.py +0 -35
  482. agno/memory/agent.py +0 -423
  483. agno/memory/classifier.py +0 -104
  484. agno/memory/db/__init__.py +0 -5
  485. agno/memory/db/base.py +0 -42
  486. agno/memory/db/mongodb.py +0 -189
  487. agno/memory/db/postgres.py +0 -203
  488. agno/memory/db/sqlite.py +0 -193
  489. agno/memory/memory.py +0 -22
  490. agno/memory/row.py +0 -36
  491. agno/memory/summarizer.py +0 -201
  492. agno/memory/summary.py +0 -19
  493. agno/memory/team.py +0 -415
  494. agno/memory/v2/__init__.py +0 -2
  495. agno/memory/v2/db/__init__.py +0 -1
  496. agno/memory/v2/db/base.py +0 -42
  497. agno/memory/v2/db/firestore.py +0 -339
  498. agno/memory/v2/db/mongodb.py +0 -196
  499. agno/memory/v2/db/postgres.py +0 -214
  500. agno/memory/v2/db/redis.py +0 -187
  501. agno/memory/v2/db/schema.py +0 -54
  502. agno/memory/v2/db/sqlite.py +0 -209
  503. agno/memory/v2/manager.py +0 -437
  504. agno/memory/v2/memory.py +0 -1097
  505. agno/memory/v2/schema.py +0 -55
  506. agno/memory/v2/summarizer.py +0 -215
  507. agno/memory/workflow.py +0 -38
  508. agno/models/ollama/tools.py +0 -430
  509. agno/models/qwen/__init__.py +0 -5
  510. agno/playground/__init__.py +0 -10
  511. agno/playground/deploy.py +0 -3
  512. agno/playground/playground.py +0 -3
  513. agno/playground/serve.py +0 -3
  514. agno/playground/settings.py +0 -3
  515. agno/reranker/__init__.py +0 -0
  516. agno/run/v2/__init__.py +0 -0
  517. agno/run/v2/workflow.py +0 -567
  518. agno/storage/__init__.py +0 -0
  519. agno/storage/agent/__init__.py +0 -0
  520. agno/storage/agent/dynamodb.py +0 -1
  521. agno/storage/agent/json.py +0 -1
  522. agno/storage/agent/mongodb.py +0 -1
  523. agno/storage/agent/postgres.py +0 -1
  524. agno/storage/agent/singlestore.py +0 -1
  525. agno/storage/agent/sqlite.py +0 -1
  526. agno/storage/agent/yaml.py +0 -1
  527. agno/storage/base.py +0 -60
  528. agno/storage/dynamodb.py +0 -673
  529. agno/storage/firestore.py +0 -297
  530. agno/storage/gcs_json.py +0 -261
  531. agno/storage/in_memory.py +0 -234
  532. agno/storage/json.py +0 -237
  533. agno/storage/mongodb.py +0 -328
  534. agno/storage/mysql.py +0 -685
  535. agno/storage/postgres.py +0 -682
  536. agno/storage/redis.py +0 -336
  537. agno/storage/session/__init__.py +0 -16
  538. agno/storage/session/agent.py +0 -64
  539. agno/storage/session/team.py +0 -63
  540. agno/storage/session/v2/__init__.py +0 -5
  541. agno/storage/session/workflow.py +0 -61
  542. agno/storage/singlestore.py +0 -606
  543. agno/storage/sqlite.py +0 -646
  544. agno/storage/workflow/__init__.py +0 -0
  545. agno/storage/workflow/mongodb.py +0 -1
  546. agno/storage/workflow/postgres.py +0 -1
  547. agno/storage/workflow/sqlite.py +0 -1
  548. agno/storage/yaml.py +0 -241
  549. agno/tools/thinking.py +0 -73
  550. agno/utils/defaults.py +0 -57
  551. agno/utils/filesystem.py +0 -39
  552. agno/utils/git.py +0 -52
  553. agno/utils/json_io.py +0 -30
  554. agno/utils/load_env.py +0 -19
  555. agno/utils/py_io.py +0 -19
  556. agno/utils/pyproject.py +0 -18
  557. agno/utils/resource_filter.py +0 -31
  558. agno/workflow/v2/__init__.py +0 -21
  559. agno/workflow/v2/types.py +0 -357
  560. agno/workflow/v2/workflow.py +0 -3312
  561. agno/workspace/__init__.py +0 -0
  562. agno/workspace/config.py +0 -325
  563. agno/workspace/enums.py +0 -6
  564. agno/workspace/helpers.py +0 -52
  565. agno/workspace/operator.py +0 -757
  566. agno/workspace/settings.py +0 -158
  567. agno-1.8.0.dist-info/METADATA +0 -979
  568. agno-1.8.0.dist-info/RECORD +0 -565
  569. agno-1.8.0.dist-info/entry_points.txt +0 -3
  570. /agno/{app → db/migrations}/__init__.py +0 -0
  571. /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
  572. /agno/{cli → integrations}/__init__.py +0 -0
  573. /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
  574. /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
  575. /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
  576. /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
  577. /agno/{app → os/interfaces}/slack/security.py +0 -0
  578. /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
  579. /agno/{file/local → utils/print_response}/__init__.py +0 -0
  580. /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
  581. {agno-1.8.0.dist-info → agno-2.0.0a1.dist-info}/WHEEL +0 -0
  582. {agno-1.8.0.dist-info → agno-2.0.0a1.dist-info}/licenses/LICENSE +0 -0
  583. {agno-1.8.0.dist-info → agno-2.0.0a1.dist-info}/top_level.txt +0 -0
agno/run/team.py CHANGED
@@ -7,17 +7,19 @@ from pydantic import BaseModel
7
7
 
8
8
  from agno.media import AudioArtifact, AudioResponse, ImageArtifact, VideoArtifact
9
9
  from agno.models.message import Citations, Message
10
+ from agno.models.metrics import Metrics
10
11
  from agno.models.response import ToolExecution
11
- from agno.run.base import BaseRunResponseEvent, RunResponseExtraData, RunStatus
12
- from agno.run.response import RunEvent, RunResponse, RunResponseEvent, run_response_event_from_dict
12
+ from agno.reasoning.step import ReasoningStep
13
+ from agno.run.agent import RunEvent, RunOutput, RunOutputEvent, run_output_event_from_dict
14
+ from agno.run.base import BaseRunOutputEvent, MessageReferences, RunStatus
13
15
 
14
16
 
15
17
  class TeamRunEvent(str, Enum):
16
18
  """Events that can be sent by the run() functions"""
17
19
 
18
20
  run_started = "TeamRunStarted"
19
- run_response_content = "TeamRunResponseContent"
20
- run_intermediate_response_content = "TeamRunIntermediateResponseContent"
21
+ run_content = "TeamRunContent"
22
+ run_intermediate_content = "TeamRunIntermediateContent"
21
23
  run_completed = "TeamRunCompleted"
22
24
  run_error = "TeamRunError"
23
25
  run_cancelled = "TeamRunCancelled"
@@ -40,30 +42,34 @@ class TeamRunEvent(str, Enum):
40
42
 
41
43
 
42
44
  @dataclass
43
- class BaseTeamRunResponseEvent(BaseRunResponseEvent):
45
+ class BaseTeamRunEvent(BaseRunOutputEvent):
44
46
  created_at: int = field(default_factory=lambda: int(time()))
45
47
  event: str = ""
46
48
  team_id: str = ""
47
49
  team_name: str = ""
48
50
  run_id: Optional[str] = None
49
51
  session_id: Optional[str] = None
50
- # If the team is a member of a team, this will be the session id of the parent team
51
- team_session_id: Optional[str] = None
52
+
53
+ workflow_id: Optional[str] = None
54
+ workflow_run_id: Optional[str] = None # This is the workflow's run_id
55
+ step_id: Optional[str] = None
56
+ step_name: Optional[str] = None
57
+ step_index: Optional[int] = None
52
58
 
53
59
  # For backwards compatibility
54
60
  content: Optional[Any] = None
55
61
 
56
62
  @classmethod
57
- def from_dict(cls, data: Dict[str, Any]) -> "BaseTeamRunResponseEvent":
63
+ def from_dict(cls, data: Dict[str, Any]) -> "BaseTeamRunEvent":
58
64
  member_responses = data.pop("member_responses", None)
59
65
  event = super().from_dict(data)
60
66
 
61
67
  member_responses_final = []
62
68
  for response in member_responses or []:
63
69
  if "agent_id" in response:
64
- run_response_parsed = RunResponse.from_dict(response)
70
+ run_response_parsed = RunOutput.from_dict(response)
65
71
  else:
66
- run_response_parsed = TeamRunResponse.from_dict(response) # type: ignore
72
+ run_response_parsed = TeamRunOutput.from_dict(response) # type: ignore
67
73
  member_responses_final.append(run_response_parsed)
68
74
 
69
75
  if member_responses_final:
@@ -73,7 +79,7 @@ class BaseTeamRunResponseEvent(BaseRunResponseEvent):
73
79
 
74
80
 
75
81
  @dataclass
76
- class RunResponseStartedEvent(BaseTeamRunResponseEvent):
82
+ class RunStartedEvent(BaseTeamRunEvent):
77
83
  """Event sent when the run starts"""
78
84
 
79
85
  event: str = TeamRunEvent.run_started.value
@@ -82,71 +88,82 @@ class RunResponseStartedEvent(BaseTeamRunResponseEvent):
82
88
 
83
89
 
84
90
  @dataclass
85
- class RunResponseContentEvent(BaseTeamRunResponseEvent):
86
- """Main event for each delta of the RunResponse"""
91
+ class RunContentEvent(BaseTeamRunEvent):
92
+ """Main event for each delta of the RunOutput"""
87
93
 
88
- event: str = TeamRunEvent.run_response_content.value
94
+ event: str = TeamRunEvent.run_content.value
89
95
  content: Optional[Any] = None
90
96
  content_type: str = "str"
91
- thinking: Optional[str] = None
97
+ reasoning_content: Optional[str] = None
92
98
  citations: Optional[Citations] = None
93
99
  response_audio: Optional[AudioResponse] = None # Model audio response
94
100
  image: Optional[ImageArtifact] = None # Image attached to the response
95
- extra_data: Optional[RunResponseExtraData] = None
101
+ references: Optional[List[MessageReferences]] = None
102
+ additional_input: Optional[List[Message]] = None
103
+ reasoning_steps: Optional[List[ReasoningStep]] = None
104
+ reasoning_messages: Optional[List[Message]] = None
96
105
 
97
106
 
98
107
  @dataclass
99
- class IntermediateRunResponseContentEvent(BaseTeamRunResponseEvent):
100
- event: str = TeamRunEvent.run_intermediate_response_content.value
108
+ class IntermediateRunContentEvent(BaseTeamRunEvent):
109
+ event: str = TeamRunEvent.run_intermediate_content.value
101
110
  content: Optional[Any] = None
102
111
  content_type: str = "str"
103
112
 
104
113
 
105
114
  @dataclass
106
- class RunResponseCompletedEvent(BaseTeamRunResponseEvent):
115
+ class RunCompletedEvent(BaseTeamRunEvent):
107
116
  event: str = TeamRunEvent.run_completed.value
108
117
  content: Optional[Any] = None
109
118
  content_type: str = "str"
110
119
  reasoning_content: Optional[str] = None
111
- thinking: Optional[str] = None
112
120
  citations: Optional[Citations] = None
113
121
  images: Optional[List[ImageArtifact]] = None # Images attached to the response
114
122
  videos: Optional[List[VideoArtifact]] = None # Videos attached to the response
115
123
  audio: Optional[List[AudioArtifact]] = None # Audio attached to the response
116
124
  response_audio: Optional[AudioResponse] = None # Model audio response
117
- extra_data: Optional[RunResponseExtraData] = None
118
- member_responses: List[Union["TeamRunResponse", RunResponse]] = field(default_factory=list)
125
+ references: Optional[List[MessageReferences]] = None
126
+ additional_input: Optional[List[Message]] = None
127
+ reasoning_steps: Optional[List[ReasoningStep]] = None
128
+ reasoning_messages: Optional[List[Message]] = None
129
+ member_responses: List[Union["TeamRunOutput", RunOutput]] = field(default_factory=list)
130
+ metadata: Optional[Dict[str, Any]] = None
131
+ metrics: Optional[Metrics] = None
119
132
 
120
133
 
121
134
  @dataclass
122
- class RunResponseErrorEvent(BaseTeamRunResponseEvent):
135
+ class RunErrorEvent(BaseTeamRunEvent):
123
136
  event: str = TeamRunEvent.run_error.value
124
137
  content: Optional[str] = None
125
138
 
126
139
 
127
140
  @dataclass
128
- class RunResponseCancelledEvent(BaseTeamRunResponseEvent):
141
+ class RunCancelledEvent(BaseTeamRunEvent):
129
142
  event: str = TeamRunEvent.run_cancelled.value
130
143
  reason: Optional[str] = None
131
144
 
145
+ @property
146
+ def is_cancelled(self):
147
+ return True
148
+
132
149
 
133
150
  @dataclass
134
- class MemoryUpdateStartedEvent(BaseTeamRunResponseEvent):
151
+ class MemoryUpdateStartedEvent(BaseTeamRunEvent):
135
152
  event: str = TeamRunEvent.memory_update_started.value
136
153
 
137
154
 
138
155
  @dataclass
139
- class MemoryUpdateCompletedEvent(BaseTeamRunResponseEvent):
156
+ class MemoryUpdateCompletedEvent(BaseTeamRunEvent):
140
157
  event: str = TeamRunEvent.memory_update_completed.value
141
158
 
142
159
 
143
160
  @dataclass
144
- class ReasoningStartedEvent(BaseTeamRunResponseEvent):
161
+ class ReasoningStartedEvent(BaseTeamRunEvent):
145
162
  event: str = TeamRunEvent.reasoning_started.value
146
163
 
147
164
 
148
165
  @dataclass
149
- class ReasoningStepEvent(BaseTeamRunResponseEvent):
166
+ class ReasoningStepEvent(BaseTeamRunEvent):
150
167
  event: str = TeamRunEvent.reasoning_step.value
151
168
  content: Optional[Any] = None
152
169
  content_type: str = "str"
@@ -154,20 +171,20 @@ class ReasoningStepEvent(BaseTeamRunResponseEvent):
154
171
 
155
172
 
156
173
  @dataclass
157
- class ReasoningCompletedEvent(BaseTeamRunResponseEvent):
174
+ class ReasoningCompletedEvent(BaseTeamRunEvent):
158
175
  event: str = TeamRunEvent.reasoning_completed.value
159
176
  content: Optional[Any] = None
160
177
  content_type: str = "str"
161
178
 
162
179
 
163
180
  @dataclass
164
- class ToolCallStartedEvent(BaseTeamRunResponseEvent):
181
+ class ToolCallStartedEvent(BaseTeamRunEvent):
165
182
  event: str = TeamRunEvent.tool_call_started.value
166
183
  tool: Optional[ToolExecution] = None
167
184
 
168
185
 
169
186
  @dataclass
170
- class ToolCallCompletedEvent(BaseTeamRunResponseEvent):
187
+ class ToolCallCompletedEvent(BaseTeamRunEvent):
171
188
  event: str = TeamRunEvent.tool_call_completed.value
172
189
  tool: Optional[ToolExecution] = None
173
190
  content: Optional[Any] = None
@@ -177,32 +194,32 @@ class ToolCallCompletedEvent(BaseTeamRunResponseEvent):
177
194
 
178
195
 
179
196
  @dataclass
180
- class ParserModelResponseStartedEvent(BaseTeamRunResponseEvent):
197
+ class ParserModelResponseStartedEvent(BaseTeamRunEvent):
181
198
  event: str = TeamRunEvent.parser_model_response_started.value
182
199
 
183
200
 
184
201
  @dataclass
185
- class ParserModelResponseCompletedEvent(BaseTeamRunResponseEvent):
202
+ class ParserModelResponseCompletedEvent(BaseTeamRunEvent):
186
203
  event: str = TeamRunEvent.parser_model_response_completed.value
187
204
 
188
205
 
189
206
  @dataclass
190
- class OutputModelResponseStartedEvent(BaseTeamRunResponseEvent):
207
+ class OutputModelResponseStartedEvent(BaseTeamRunEvent):
191
208
  event: str = TeamRunEvent.output_model_response_started.value
192
209
 
193
210
 
194
211
  @dataclass
195
- class OutputModelResponseCompletedEvent(BaseTeamRunResponseEvent):
212
+ class OutputModelResponseCompletedEvent(BaseTeamRunEvent):
196
213
  event: str = TeamRunEvent.output_model_response_completed.value
197
214
 
198
215
 
199
- TeamRunResponseEvent = Union[
200
- RunResponseStartedEvent,
201
- RunResponseContentEvent,
202
- IntermediateRunResponseContentEvent,
203
- RunResponseCompletedEvent,
204
- RunResponseErrorEvent,
205
- RunResponseCancelledEvent,
216
+ TeamRunOutputEvent = Union[
217
+ RunStartedEvent,
218
+ RunContentEvent,
219
+ IntermediateRunContentEvent,
220
+ RunCompletedEvent,
221
+ RunErrorEvent,
222
+ RunCancelledEvent,
206
223
  ReasoningStartedEvent,
207
224
  ReasoningStepEvent,
208
225
  ReasoningCompletedEvent,
@@ -218,12 +235,12 @@ TeamRunResponseEvent = Union[
218
235
 
219
236
  # Map event string to dataclass for team events
220
237
  TEAM_RUN_EVENT_TYPE_REGISTRY = {
221
- TeamRunEvent.run_started.value: RunResponseStartedEvent,
222
- TeamRunEvent.run_response_content.value: RunResponseContentEvent,
223
- TeamRunEvent.run_intermediate_response_content.value: IntermediateRunResponseContentEvent,
224
- TeamRunEvent.run_completed.value: RunResponseCompletedEvent,
225
- TeamRunEvent.run_error.value: RunResponseErrorEvent,
226
- TeamRunEvent.run_cancelled.value: RunResponseCancelledEvent,
238
+ TeamRunEvent.run_started.value: RunStartedEvent,
239
+ TeamRunEvent.run_content.value: RunContentEvent,
240
+ TeamRunEvent.run_intermediate_content.value: IntermediateRunContentEvent,
241
+ TeamRunEvent.run_completed.value: RunCompletedEvent,
242
+ TeamRunEvent.run_error.value: RunErrorEvent,
243
+ TeamRunEvent.run_cancelled.value: RunCancelledEvent,
227
244
  TeamRunEvent.reasoning_started.value: ReasoningStartedEvent,
228
245
  TeamRunEvent.reasoning_step.value: ReasoningStepEvent,
229
246
  TeamRunEvent.reasoning_completed.value: ReasoningCompletedEvent,
@@ -238,10 +255,10 @@ TEAM_RUN_EVENT_TYPE_REGISTRY = {
238
255
  }
239
256
 
240
257
 
241
- def team_run_response_event_from_dict(data: dict) -> BaseTeamRunResponseEvent:
258
+ def team_run_output_event_from_dict(data: dict) -> BaseTeamRunEvent:
242
259
  event_type = data.get("event", "")
243
260
  if event_type in {e.value for e in RunEvent}:
244
- return run_response_event_from_dict(data) # type: ignore
261
+ return run_output_event_from_dict(data) # type: ignore
245
262
  else:
246
263
  event_class = TEAM_RUN_EVENT_TYPE_REGISTRY.get(event_type)
247
264
  if not event_class:
@@ -250,28 +267,25 @@ def team_run_response_event_from_dict(data: dict) -> BaseTeamRunResponseEvent:
250
267
 
251
268
 
252
269
  @dataclass
253
- class TeamRunResponse:
270
+ class TeamRunOutput:
254
271
  """Response returned by Team.run() functions"""
255
272
 
256
273
  content: Optional[Any] = None
257
274
  content_type: str = "str"
258
- thinking: Optional[str] = None
259
275
  messages: Optional[List[Message]] = None
260
- metrics: Optional[Dict[str, Any]] = None
276
+ metrics: Optional[Metrics] = None
261
277
  model: Optional[str] = None
262
278
  model_provider: Optional[str] = None
263
279
 
264
- member_responses: List[Union["TeamRunResponse", RunResponse]] = field(default_factory=list)
280
+ member_responses: List[Union["TeamRunOutput", RunOutput]] = field(default_factory=list)
265
281
 
266
282
  run_id: Optional[str] = None
267
283
  team_id: Optional[str] = None
268
284
  team_name: Optional[str] = None
269
285
  session_id: Optional[str] = None
270
- # If the team is a member of a team, this will be the session id of the parent team
271
- team_session_id: Optional[str] = None
286
+ parent_run_id: Optional[str] = None
272
287
 
273
288
  tools: Optional[List[ToolExecution]] = None
274
- formatted_tool_calls: Optional[List[str]] = None
275
289
 
276
290
  images: Optional[List[ImageArtifact]] = None # Images from member runs
277
291
  videos: Optional[List[VideoArtifact]] = None # Videos from member runs
@@ -283,13 +297,23 @@ class TeamRunResponse:
283
297
 
284
298
  citations: Optional[Citations] = None
285
299
 
286
- extra_data: Optional[RunResponseExtraData] = None
300
+ metadata: Optional[Dict[str, Any]] = None
301
+
302
+ references: Optional[List[MessageReferences]] = None
303
+ additional_input: Optional[List[Message]] = None
304
+ reasoning_steps: Optional[List[ReasoningStep]] = None
305
+ reasoning_messages: Optional[List[Message]] = None
287
306
  created_at: int = field(default_factory=lambda: int(time()))
288
307
 
289
- events: Optional[List[Union[RunResponseEvent, TeamRunResponseEvent]]] = None
308
+ events: Optional[List[Union[RunOutputEvent, TeamRunOutputEvent]]] = None
290
309
 
291
310
  status: RunStatus = RunStatus.running
292
311
 
312
+ # === FOREIGN KEY RELATIONSHIPS ===
313
+ # These fields establish relationships to parent workflow/step structures
314
+ # and should be treated as foreign keys for data integrity
315
+ workflow_step_id: Optional[str] = None # FK: Points to StepOutput.step_id
316
+
293
317
  @property
294
318
  def is_paused(self):
295
319
  return self.status == RunStatus.paused
@@ -308,13 +332,17 @@ class TeamRunResponse:
308
332
  "messages",
309
333
  "status",
310
334
  "tools",
311
- "extra_data",
335
+ "metadata",
312
336
  "images",
313
337
  "videos",
314
338
  "audio",
315
339
  "response_audio",
316
340
  "citations",
317
341
  "events",
342
+ "additional_input",
343
+ "reasoning_steps",
344
+ "reasoning_messages",
345
+ "references",
318
346
  ]
319
347
  }
320
348
  if self.events is not None:
@@ -326,8 +354,20 @@ class TeamRunResponse:
326
354
  if self.messages is not None:
327
355
  _dict["messages"] = [m.to_dict() for m in self.messages]
328
356
 
329
- if self.extra_data is not None:
330
- _dict["extra_data"] = self.extra_data.to_dict()
357
+ if self.metadata is not None:
358
+ _dict["metadata"] = self.metadata
359
+
360
+ if self.additional_input is not None:
361
+ _dict["additional_input"] = [m.to_dict() for m in self.additional_input]
362
+
363
+ if self.reasoning_messages is not None:
364
+ _dict["reasoning_messages"] = [m.to_dict() for m in self.reasoning_messages]
365
+
366
+ if self.reasoning_steps is not None:
367
+ _dict["reasoning_steps"] = [rs.model_dump() for rs in self.reasoning_steps]
368
+
369
+ if self.references is not None:
370
+ _dict["references"] = [r.model_dump() for r in self.references]
331
371
 
332
372
  if self.images is not None:
333
373
  _dict["images"] = [img.to_dict() for img in self.images]
@@ -371,17 +411,17 @@ class TeamRunResponse:
371
411
  return json.dumps(_dict, indent=2)
372
412
 
373
413
  @classmethod
374
- def from_dict(cls, data: Dict[str, Any]) -> "TeamRunResponse":
414
+ def from_dict(cls, data: Dict[str, Any]) -> "TeamRunOutput":
375
415
  events = data.pop("events", None)
376
416
  final_events = []
377
417
  for event in events or []:
378
418
  if "agent_id" in event:
379
419
  # Use the factory from response.py for agent events
380
- from agno.run.response import run_response_event_from_dict
420
+ from agno.run.agent import run_output_event_from_dict
381
421
 
382
- event = run_response_event_from_dict(event)
422
+ event = run_output_event_from_dict(event)
383
423
  else:
384
- event = team_run_response_event_from_dict(event)
424
+ event = team_run_output_event_from_dict(event)
385
425
  final_events.append(event)
386
426
  events = final_events
387
427
 
@@ -389,17 +429,29 @@ class TeamRunResponse:
389
429
  messages = [Message.model_validate(message) for message in messages] if messages else None
390
430
 
391
431
  member_responses = data.pop("member_responses", [])
392
- parsed_member_responses: List[Union["TeamRunResponse", RunResponse]] = []
432
+ parsed_member_responses: List[Union["TeamRunOutput", RunOutput]] = []
393
433
  if member_responses:
394
434
  for response in member_responses:
395
435
  if "agent_id" in response:
396
- parsed_member_responses.append(RunResponse.from_dict(response))
436
+ parsed_member_responses.append(RunOutput.from_dict(response))
397
437
  else:
398
438
  parsed_member_responses.append(cls.from_dict(response))
399
439
 
400
- extra_data = data.pop("extra_data", None)
401
- if extra_data is not None:
402
- extra_data = RunResponseExtraData.from_dict(extra_data)
440
+ additional_input = data.pop("additional_input", None)
441
+ if additional_input is not None:
442
+ additional_input = [Message.model_validate(message) for message in additional_input]
443
+
444
+ reasoning_steps = data.pop("reasoning_steps", None)
445
+ if reasoning_steps is not None:
446
+ reasoning_steps = [ReasoningStep.model_validate(step) for step in reasoning_steps]
447
+
448
+ reasoning_messages = data.pop("reasoning_messages", None)
449
+ if reasoning_messages is not None:
450
+ reasoning_messages = [Message.model_validate(message) for message in reasoning_messages]
451
+
452
+ references = data.pop("references", None)
453
+ if references is not None:
454
+ references = [MessageReferences.model_validate(reference) for reference in references]
403
455
 
404
456
  images = data.pop("images", [])
405
457
  images = [ImageArtifact.model_validate(image) for image in images] if images else None
@@ -416,17 +468,21 @@ class TeamRunResponse:
416
468
  response_audio = data.pop("response_audio", None)
417
469
  response_audio = AudioResponse.model_validate(response_audio) if response_audio else None
418
470
 
471
+ metrics = data.pop("metrics", None)
472
+ if metrics:
473
+ metrics = Metrics(**metrics)
474
+
419
475
  citations = data.pop("citations", None)
420
476
  citations = Citations.model_validate(citations) if citations else None
421
477
 
422
- # To make it backwards compatible
423
- if "event" in data:
424
- data.pop("event")
425
-
426
478
  return cls(
427
479
  messages=messages,
480
+ metrics=metrics,
428
481
  member_responses=parsed_member_responses,
429
- extra_data=extra_data,
482
+ additional_input=additional_input,
483
+ reasoning_steps=reasoning_steps,
484
+ reasoning_messages=reasoning_messages,
485
+ references=references,
430
486
  images=images,
431
487
  videos=videos,
432
488
  audio=audio,
@@ -449,7 +505,7 @@ class TeamRunResponse:
449
505
  else:
450
506
  return json.dumps(self.content, **kwargs)
451
507
 
452
- def add_member_run(self, run_response: Union["TeamRunResponse", RunResponse]) -> None:
508
+ def add_member_run(self, run_response: Union["TeamRunOutput", RunOutput]) -> None:
453
509
  self.member_responses.append(run_response)
454
510
  if run_response.images is not None:
455
511
  if self.images is None: