agno 1.8.1__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 (590) hide show
  1. agno/__init__.py +8 -0
  2. agno/agent/__init__.py +19 -27
  3. agno/agent/agent.py +3143 -4170
  4. agno/api/agent.py +11 -67
  5. agno/api/api.py +5 -46
  6. agno/api/evals.py +8 -19
  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 +11 -66
  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 +1743 -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 +1432 -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 +882 -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 +1045 -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 +1416 -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 +297 -0
  52. agno/db/postgres/__init__.py +3 -0
  53. agno/db/postgres/postgres.py +1710 -0
  54. agno/db/postgres/schemas.py +124 -0
  55. agno/db/postgres/utils.py +280 -0
  56. agno/db/redis/__init__.py +3 -0
  57. agno/db/redis/redis.py +1367 -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 +1712 -0
  67. agno/db/singlestore/utils.py +326 -0
  68. agno/db/sqlite/__init__.py +3 -0
  69. agno/db/sqlite/schemas.py +119 -0
  70. agno/db/sqlite/sqlite.py +1676 -0
  71. agno/db/sqlite/utils.py +268 -0
  72. agno/db/utils.py +88 -0
  73. agno/eval/__init__.py +14 -0
  74. agno/eval/accuracy.py +154 -48
  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 +15 -11
  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 +1551 -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 +47 -65
  115. agno/knowledge/reader/docx_reader.py +83 -0
  116. agno/{document → knowledge}/reader/firecrawl_reader.py +42 -21
  117. agno/{document → knowledge}/reader/json_reader.py +30 -9
  118. agno/{document → knowledge}/reader/markdown_reader.py +58 -9
  119. agno/{document → knowledge}/reader/pdf_reader.py +71 -126
  120. agno/knowledge/reader/reader_factory.py +268 -0
  121. agno/knowledge/reader/s3_reader.py +101 -0
  122. agno/{document → knowledge}/reader/text_reader.py +31 -10
  123. agno/knowledge/reader/url_reader.py +128 -0
  124. agno/knowledge/reader/web_search_reader.py +366 -0
  125. agno/{document → knowledge}/reader/website_reader.py +37 -10
  126. agno/knowledge/reader/wikipedia_reader.py +59 -0
  127. agno/knowledge/reader/youtube_reader.py +78 -0
  128. agno/knowledge/remote_content/remote_content.py +88 -0
  129. agno/{reranker → knowledge/reranker}/base.py +1 -1
  130. agno/{reranker → knowledge/reranker}/cohere.py +2 -2
  131. agno/{reranker → knowledge/reranker}/infinity.py +2 -2
  132. agno/{reranker → knowledge/reranker}/sentence_transformer.py +2 -2
  133. agno/knowledge/types.py +30 -0
  134. agno/knowledge/utils.py +169 -0
  135. agno/media.py +269 -268
  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 +131 -131
  141. agno/models/aws/bedrock.py +110 -182
  142. agno/models/aws/claude.py +64 -18
  143. agno/models/azure/ai_foundry.py +73 -23
  144. agno/models/base.py +346 -290
  145. agno/models/cerebras/cerebras.py +84 -27
  146. agno/models/cohere/chat.py +106 -98
  147. agno/models/google/gemini.py +105 -46
  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 +46 -151
  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 +85 -47
  158. agno/models/openai/chat.py +154 -37
  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 +15 -9
  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 +497 -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 +77 -33
  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 +32 -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 +29 -0
  184. agno/os/mcp.py +235 -0
  185. agno/os/router.py +1400 -0
  186. agno/os/routers/__init__.py +3 -0
  187. agno/os/routers/evals/__init__.py +3 -0
  188. agno/os/routers/evals/evals.py +393 -0
  189. agno/os/routers/evals/schemas.py +142 -0
  190. agno/os/routers/evals/utils.py +161 -0
  191. agno/os/routers/knowledge/__init__.py +3 -0
  192. agno/os/routers/knowledge/knowledge.py +850 -0
  193. agno/os/routers/knowledge/schemas.py +118 -0
  194. agno/os/routers/memory/__init__.py +3 -0
  195. agno/os/routers/memory/memory.py +410 -0
  196. agno/os/routers/memory/schemas.py +58 -0
  197. agno/os/routers/metrics/__init__.py +3 -0
  198. agno/os/routers/metrics/metrics.py +178 -0
  199. agno/os/routers/metrics/schemas.py +47 -0
  200. agno/os/routers/session/__init__.py +3 -0
  201. agno/os/routers/session/session.py +536 -0
  202. agno/os/schema.py +945 -0
  203. agno/{app/playground → os}/settings.py +7 -15
  204. agno/os/utils.py +270 -0
  205. agno/reasoning/azure_ai_foundry.py +4 -4
  206. agno/reasoning/deepseek.py +4 -4
  207. agno/reasoning/default.py +6 -11
  208. agno/reasoning/groq.py +4 -4
  209. agno/reasoning/helpers.py +4 -6
  210. agno/reasoning/ollama.py +4 -4
  211. agno/reasoning/openai.py +4 -4
  212. agno/run/agent.py +633 -0
  213. agno/run/base.py +53 -77
  214. agno/run/cancel.py +81 -0
  215. agno/run/team.py +243 -96
  216. agno/run/workflow.py +550 -12
  217. agno/session/__init__.py +10 -0
  218. agno/session/agent.py +244 -0
  219. agno/session/summary.py +225 -0
  220. agno/session/team.py +262 -0
  221. agno/{storage/session/v2 → session}/workflow.py +47 -24
  222. agno/team/__init__.py +15 -16
  223. agno/team/team.py +3260 -4824
  224. agno/tools/agentql.py +14 -5
  225. agno/tools/airflow.py +9 -4
  226. agno/tools/api.py +7 -3
  227. agno/tools/apify.py +2 -46
  228. agno/tools/arxiv.py +8 -3
  229. agno/tools/aws_lambda.py +7 -5
  230. agno/tools/aws_ses.py +7 -1
  231. agno/tools/baidusearch.py +4 -1
  232. agno/tools/bitbucket.py +4 -4
  233. agno/tools/brandfetch.py +14 -11
  234. agno/tools/bravesearch.py +4 -1
  235. agno/tools/brightdata.py +43 -23
  236. agno/tools/browserbase.py +13 -4
  237. agno/tools/calcom.py +12 -10
  238. agno/tools/calculator.py +10 -27
  239. agno/tools/cartesia.py +20 -17
  240. agno/tools/{clickup_tool.py → clickup.py} +12 -25
  241. agno/tools/confluence.py +8 -8
  242. agno/tools/crawl4ai.py +7 -1
  243. agno/tools/csv_toolkit.py +9 -8
  244. agno/tools/dalle.py +22 -12
  245. agno/tools/daytona.py +13 -16
  246. agno/tools/decorator.py +6 -3
  247. agno/tools/desi_vocal.py +17 -8
  248. agno/tools/discord.py +11 -8
  249. agno/tools/docker.py +30 -42
  250. agno/tools/duckdb.py +34 -53
  251. agno/tools/duckduckgo.py +8 -7
  252. agno/tools/e2b.py +62 -62
  253. agno/tools/eleven_labs.py +36 -29
  254. agno/tools/email.py +4 -1
  255. agno/tools/evm.py +7 -1
  256. agno/tools/exa.py +19 -14
  257. agno/tools/fal.py +30 -30
  258. agno/tools/file.py +9 -8
  259. agno/tools/financial_datasets.py +25 -44
  260. agno/tools/firecrawl.py +22 -22
  261. agno/tools/function.py +127 -18
  262. agno/tools/giphy.py +23 -11
  263. agno/tools/github.py +48 -126
  264. agno/tools/gmail.py +45 -61
  265. agno/tools/google_bigquery.py +7 -6
  266. agno/tools/google_maps.py +11 -26
  267. agno/tools/googlesearch.py +7 -2
  268. agno/tools/googlesheets.py +21 -17
  269. agno/tools/hackernews.py +9 -5
  270. agno/tools/jina.py +5 -4
  271. agno/tools/jira.py +18 -9
  272. agno/tools/knowledge.py +31 -32
  273. agno/tools/linear.py +19 -34
  274. agno/tools/linkup.py +5 -1
  275. agno/tools/local_file_system.py +8 -5
  276. agno/tools/lumalab.py +32 -20
  277. agno/tools/mcp.py +1 -2
  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 +33 -15
  282. agno/tools/models/gemini.py +59 -32
  283. agno/tools/models/groq.py +30 -23
  284. agno/tools/models/nebius.py +28 -12
  285. agno/tools/models_labs.py +40 -16
  286. agno/tools/moviepy_video.py +7 -6
  287. agno/tools/neo4j.py +10 -8
  288. agno/tools/newspaper.py +7 -2
  289. agno/tools/newspaper4k.py +8 -3
  290. agno/tools/openai.py +58 -32
  291. agno/tools/openbb.py +12 -11
  292. agno/tools/opencv.py +63 -47
  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 +55 -42
  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 +100 -123
  335. agno/utils/gemini.py +32 -2
  336. agno/utils/knowledge.py +29 -0
  337. agno/utils/log.py +54 -4
  338. agno/utils/mcp.py +68 -10
  339. agno/utils/media.py +39 -0
  340. agno/utils/message.py +12 -1
  341. agno/utils/models/aws_claude.py +1 -1
  342. agno/utils/models/claude.py +47 -4
  343. agno/utils/models/cohere.py +1 -1
  344. agno/utils/models/mistral.py +8 -7
  345. agno/utils/models/schema_utils.py +3 -3
  346. agno/utils/models/watsonx.py +1 -1
  347. agno/utils/openai.py +1 -1
  348. agno/utils/pprint.py +33 -32
  349. agno/utils/print_response/agent.py +779 -0
  350. agno/utils/print_response/team.py +1669 -0
  351. agno/utils/print_response/workflow.py +1451 -0
  352. agno/utils/prompts.py +14 -14
  353. agno/utils/reasoning.py +87 -0
  354. agno/utils/response.py +42 -42
  355. agno/utils/streamlit.py +481 -0
  356. agno/utils/string.py +8 -22
  357. agno/utils/team.py +50 -0
  358. agno/utils/timer.py +2 -2
  359. agno/vectordb/base.py +33 -21
  360. agno/vectordb/cassandra/cassandra.py +287 -23
  361. agno/vectordb/chroma/chromadb.py +482 -59
  362. agno/vectordb/clickhouse/clickhousedb.py +270 -63
  363. agno/vectordb/couchbase/couchbase.py +309 -29
  364. agno/vectordb/lancedb/lance_db.py +360 -21
  365. agno/vectordb/langchaindb/__init__.py +5 -0
  366. agno/vectordb/langchaindb/langchaindb.py +145 -0
  367. agno/vectordb/lightrag/__init__.py +5 -0
  368. agno/vectordb/lightrag/lightrag.py +374 -0
  369. agno/vectordb/llamaindex/llamaindexdb.py +127 -0
  370. agno/vectordb/milvus/milvus.py +242 -32
  371. agno/vectordb/mongodb/mongodb.py +200 -24
  372. agno/vectordb/pgvector/pgvector.py +319 -37
  373. agno/vectordb/pineconedb/pineconedb.py +221 -27
  374. agno/vectordb/qdrant/qdrant.py +334 -14
  375. agno/vectordb/singlestore/singlestore.py +286 -29
  376. agno/vectordb/surrealdb/surrealdb.py +187 -7
  377. agno/vectordb/upstashdb/upstashdb.py +342 -26
  378. agno/vectordb/weaviate/weaviate.py +227 -165
  379. agno/workflow/__init__.py +17 -13
  380. agno/workflow/{v2/condition.py → condition.py} +135 -32
  381. agno/workflow/{v2/loop.py → loop.py} +115 -28
  382. agno/workflow/{v2/parallel.py → parallel.py} +138 -108
  383. agno/workflow/{v2/router.py → router.py} +133 -32
  384. agno/workflow/{v2/step.py → step.py} +207 -49
  385. agno/workflow/{v2/steps.py → steps.py} +147 -66
  386. agno/workflow/types.py +482 -0
  387. agno/workflow/workflow.py +2410 -696
  388. agno-2.0.0.dist-info/METADATA +494 -0
  389. agno-2.0.0.dist-info/RECORD +515 -0
  390. agno-2.0.0.dist-info/licenses/LICENSE +201 -0
  391. agno/agent/metrics.py +0 -107
  392. agno/api/app.py +0 -35
  393. agno/api/playground.py +0 -92
  394. agno/api/schemas/app.py +0 -12
  395. agno/api/schemas/playground.py +0 -22
  396. agno/api/schemas/user.py +0 -35
  397. agno/api/schemas/workspace.py +0 -46
  398. agno/api/user.py +0 -160
  399. agno/api/workflows.py +0 -33
  400. agno/api/workspace.py +0 -175
  401. agno/app/agui/__init__.py +0 -3
  402. agno/app/agui/app.py +0 -17
  403. agno/app/agui/sync_router.py +0 -120
  404. agno/app/base.py +0 -186
  405. agno/app/discord/__init__.py +0 -3
  406. agno/app/fastapi/__init__.py +0 -3
  407. agno/app/fastapi/app.py +0 -107
  408. agno/app/fastapi/async_router.py +0 -457
  409. agno/app/fastapi/sync_router.py +0 -448
  410. agno/app/playground/app.py +0 -228
  411. agno/app/playground/async_router.py +0 -1050
  412. agno/app/playground/deploy.py +0 -249
  413. agno/app/playground/operator.py +0 -183
  414. agno/app/playground/schemas.py +0 -220
  415. agno/app/playground/serve.py +0 -55
  416. agno/app/playground/sync_router.py +0 -1042
  417. agno/app/playground/utils.py +0 -46
  418. agno/app/settings.py +0 -15
  419. agno/app/slack/__init__.py +0 -3
  420. agno/app/slack/app.py +0 -19
  421. agno/app/slack/sync_router.py +0 -92
  422. agno/app/utils.py +0 -54
  423. agno/app/whatsapp/__init__.py +0 -3
  424. agno/app/whatsapp/app.py +0 -15
  425. agno/app/whatsapp/sync_router.py +0 -197
  426. agno/cli/auth_server.py +0 -249
  427. agno/cli/config.py +0 -274
  428. agno/cli/console.py +0 -88
  429. agno/cli/credentials.py +0 -23
  430. agno/cli/entrypoint.py +0 -571
  431. agno/cli/operator.py +0 -357
  432. agno/cli/settings.py +0 -96
  433. agno/cli/ws/ws_cli.py +0 -817
  434. agno/constants.py +0 -13
  435. agno/document/__init__.py +0 -5
  436. agno/document/chunking/semantic.py +0 -45
  437. agno/document/chunking/strategy.py +0 -31
  438. agno/document/reader/__init__.py +0 -5
  439. agno/document/reader/base.py +0 -47
  440. agno/document/reader/docx_reader.py +0 -60
  441. agno/document/reader/gcs/pdf_reader.py +0 -44
  442. agno/document/reader/s3/pdf_reader.py +0 -59
  443. agno/document/reader/s3/text_reader.py +0 -63
  444. agno/document/reader/url_reader.py +0 -59
  445. agno/document/reader/youtube_reader.py +0 -58
  446. agno/embedder/__init__.py +0 -5
  447. agno/embedder/langdb.py +0 -80
  448. agno/embedder/mistral.py +0 -82
  449. agno/embedder/openai.py +0 -78
  450. agno/file/__init__.py +0 -5
  451. agno/file/file.py +0 -16
  452. agno/file/local/csv.py +0 -32
  453. agno/file/local/txt.py +0 -19
  454. agno/infra/app.py +0 -240
  455. agno/infra/base.py +0 -144
  456. agno/infra/context.py +0 -20
  457. agno/infra/db_app.py +0 -52
  458. agno/infra/resource.py +0 -205
  459. agno/infra/resources.py +0 -55
  460. agno/knowledge/agent.py +0 -702
  461. agno/knowledge/arxiv.py +0 -33
  462. agno/knowledge/combined.py +0 -36
  463. agno/knowledge/csv.py +0 -144
  464. agno/knowledge/csv_url.py +0 -124
  465. agno/knowledge/document.py +0 -223
  466. agno/knowledge/docx.py +0 -137
  467. agno/knowledge/firecrawl.py +0 -34
  468. agno/knowledge/gcs/__init__.py +0 -0
  469. agno/knowledge/gcs/base.py +0 -39
  470. agno/knowledge/gcs/pdf.py +0 -125
  471. agno/knowledge/json.py +0 -137
  472. agno/knowledge/langchain.py +0 -71
  473. agno/knowledge/light_rag.py +0 -273
  474. agno/knowledge/llamaindex.py +0 -66
  475. agno/knowledge/markdown.py +0 -154
  476. agno/knowledge/pdf.py +0 -164
  477. agno/knowledge/pdf_bytes.py +0 -42
  478. agno/knowledge/pdf_url.py +0 -148
  479. agno/knowledge/s3/__init__.py +0 -0
  480. agno/knowledge/s3/base.py +0 -64
  481. agno/knowledge/s3/pdf.py +0 -33
  482. agno/knowledge/s3/text.py +0 -34
  483. agno/knowledge/text.py +0 -141
  484. agno/knowledge/url.py +0 -46
  485. agno/knowledge/website.py +0 -179
  486. agno/knowledge/wikipedia.py +0 -32
  487. agno/knowledge/youtube.py +0 -35
  488. agno/memory/agent.py +0 -423
  489. agno/memory/classifier.py +0 -104
  490. agno/memory/db/__init__.py +0 -5
  491. agno/memory/db/base.py +0 -42
  492. agno/memory/db/mongodb.py +0 -189
  493. agno/memory/db/postgres.py +0 -203
  494. agno/memory/db/sqlite.py +0 -193
  495. agno/memory/memory.py +0 -22
  496. agno/memory/row.py +0 -36
  497. agno/memory/summarizer.py +0 -201
  498. agno/memory/summary.py +0 -19
  499. agno/memory/team.py +0 -415
  500. agno/memory/v2/__init__.py +0 -2
  501. agno/memory/v2/db/__init__.py +0 -1
  502. agno/memory/v2/db/base.py +0 -42
  503. agno/memory/v2/db/firestore.py +0 -339
  504. agno/memory/v2/db/mongodb.py +0 -196
  505. agno/memory/v2/db/postgres.py +0 -214
  506. agno/memory/v2/db/redis.py +0 -187
  507. agno/memory/v2/db/schema.py +0 -54
  508. agno/memory/v2/db/sqlite.py +0 -209
  509. agno/memory/v2/manager.py +0 -437
  510. agno/memory/v2/memory.py +0 -1097
  511. agno/memory/v2/schema.py +0 -55
  512. agno/memory/v2/summarizer.py +0 -215
  513. agno/memory/workflow.py +0 -38
  514. agno/models/ollama/tools.py +0 -430
  515. agno/models/qwen/__init__.py +0 -5
  516. agno/playground/__init__.py +0 -10
  517. agno/playground/deploy.py +0 -3
  518. agno/playground/playground.py +0 -3
  519. agno/playground/serve.py +0 -3
  520. agno/playground/settings.py +0 -3
  521. agno/reranker/__init__.py +0 -0
  522. agno/run/response.py +0 -467
  523. agno/run/v2/__init__.py +0 -0
  524. agno/run/v2/workflow.py +0 -567
  525. agno/storage/__init__.py +0 -0
  526. agno/storage/agent/__init__.py +0 -0
  527. agno/storage/agent/dynamodb.py +0 -1
  528. agno/storage/agent/json.py +0 -1
  529. agno/storage/agent/mongodb.py +0 -1
  530. agno/storage/agent/postgres.py +0 -1
  531. agno/storage/agent/singlestore.py +0 -1
  532. agno/storage/agent/sqlite.py +0 -1
  533. agno/storage/agent/yaml.py +0 -1
  534. agno/storage/base.py +0 -60
  535. agno/storage/dynamodb.py +0 -673
  536. agno/storage/firestore.py +0 -297
  537. agno/storage/gcs_json.py +0 -261
  538. agno/storage/in_memory.py +0 -234
  539. agno/storage/json.py +0 -237
  540. agno/storage/mongodb.py +0 -328
  541. agno/storage/mysql.py +0 -685
  542. agno/storage/postgres.py +0 -682
  543. agno/storage/redis.py +0 -336
  544. agno/storage/session/__init__.py +0 -16
  545. agno/storage/session/agent.py +0 -64
  546. agno/storage/session/team.py +0 -63
  547. agno/storage/session/v2/__init__.py +0 -5
  548. agno/storage/session/workflow.py +0 -61
  549. agno/storage/singlestore.py +0 -606
  550. agno/storage/sqlite.py +0 -646
  551. agno/storage/workflow/__init__.py +0 -0
  552. agno/storage/workflow/mongodb.py +0 -1
  553. agno/storage/workflow/postgres.py +0 -1
  554. agno/storage/workflow/sqlite.py +0 -1
  555. agno/storage/yaml.py +0 -241
  556. agno/tools/thinking.py +0 -73
  557. agno/utils/defaults.py +0 -57
  558. agno/utils/filesystem.py +0 -39
  559. agno/utils/git.py +0 -52
  560. agno/utils/json_io.py +0 -30
  561. agno/utils/load_env.py +0 -19
  562. agno/utils/py_io.py +0 -19
  563. agno/utils/pyproject.py +0 -18
  564. agno/utils/resource_filter.py +0 -31
  565. agno/workflow/v2/__init__.py +0 -21
  566. agno/workflow/v2/types.py +0 -357
  567. agno/workflow/v2/workflow.py +0 -3312
  568. agno/workspace/__init__.py +0 -0
  569. agno/workspace/config.py +0 -325
  570. agno/workspace/enums.py +0 -6
  571. agno/workspace/helpers.py +0 -52
  572. agno/workspace/operator.py +0 -757
  573. agno/workspace/settings.py +0 -158
  574. agno-1.8.1.dist-info/METADATA +0 -982
  575. agno-1.8.1.dist-info/RECORD +0 -566
  576. agno-1.8.1.dist-info/entry_points.txt +0 -3
  577. agno-1.8.1.dist-info/licenses/LICENSE +0 -375
  578. /agno/{app → db/migrations}/__init__.py +0 -0
  579. /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
  580. /agno/{cli → integrations}/__init__.py +0 -0
  581. /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
  582. /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
  583. /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
  584. /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
  585. /agno/{app → os/interfaces}/slack/security.py +0 -0
  586. /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
  587. /agno/{file/local → utils/print_response}/__init__.py +0 -0
  588. /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
  589. {agno-1.8.1.dist-info → agno-2.0.0.dist-info}/WHEEL +0 -0
  590. {agno-1.8.1.dist-info → agno-2.0.0.dist-info}/top_level.txt +0 -0
agno/session/team.py ADDED
@@ -0,0 +1,262 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import asdict, dataclass
4
+ from typing import Any, Dict, List, Mapping, Optional, Union
5
+
6
+ from agno.models.message import Message
7
+ from agno.run.agent import RunOutput, RunStatus
8
+ from agno.run.team import TeamRunOutput
9
+ from agno.session.summary import SessionSummary
10
+ from agno.utils.log import log_debug, log_warning
11
+
12
+
13
+ @dataclass
14
+ class TeamSession:
15
+ """Team Session that is stored in the database"""
16
+
17
+ # Session UUID
18
+ session_id: str
19
+
20
+ # ID of the team that this session is associated with
21
+ team_id: Optional[str] = None
22
+ # ID of the user interacting with this team
23
+ user_id: Optional[str] = None
24
+ # ID of the workflow that this session is associated with
25
+ workflow_id: Optional[str] = None
26
+
27
+ # Team Data: agent_id, name and model
28
+ team_data: Optional[Dict[str, Any]] = None
29
+ # Session Data: session_name, session_state, images, videos, audio
30
+ session_data: Optional[Dict[str, Any]] = None
31
+ # Metadata stored with this team
32
+ metadata: Optional[Dict[str, Any]] = None
33
+ # List of all runs in the session
34
+ runs: Optional[list[Union[TeamRunOutput, RunOutput]]] = None
35
+ # Summary of the session
36
+ summary: Optional[SessionSummary] = None
37
+
38
+ # The unix timestamp when this session was created
39
+ created_at: Optional[int] = None
40
+ # The unix timestamp when this session was last updated
41
+ updated_at: Optional[int] = None
42
+
43
+ def to_dict(self) -> Dict[str, Any]:
44
+ session_dict = asdict(self)
45
+
46
+ session_dict["runs"] = [run.to_dict() for run in self.runs] if self.runs else None
47
+ session_dict["summary"] = self.summary.to_dict() if self.summary else None
48
+
49
+ return session_dict
50
+
51
+ @classmethod
52
+ def from_dict(cls, data: Mapping[str, Any]) -> Optional[TeamSession]:
53
+ if data is None or data.get("session_id") is None:
54
+ log_warning("TeamSession is missing session_id")
55
+ return None
56
+
57
+ if data.get("summary") is not None:
58
+ data["summary"] = SessionSummary.from_dict(data["summary"]) # type: ignore
59
+
60
+ runs = data.get("runs", [])
61
+ serialized_runs: List[Union[TeamRunOutput, RunOutput]] = []
62
+ for run in runs:
63
+ if "agent_id" in run:
64
+ serialized_runs.append(RunOutput.from_dict(run))
65
+ elif "team_id" in run:
66
+ serialized_runs.append(TeamRunOutput.from_dict(run))
67
+
68
+ return cls(
69
+ session_id=data.get("session_id"), # type: ignore
70
+ team_id=data.get("team_id"),
71
+ user_id=data.get("user_id"),
72
+ workflow_id=data.get("workflow_id"),
73
+ team_data=data.get("team_data"),
74
+ session_data=data.get("session_data"),
75
+ metadata=data.get("metadata"),
76
+ created_at=data.get("created_at"),
77
+ updated_at=data.get("updated_at"),
78
+ runs=serialized_runs,
79
+ summary=data.get("summary"),
80
+ )
81
+
82
+ def get_run(self, run_id: str) -> Optional[Union[TeamRunOutput, RunOutput]]:
83
+ for run in self.runs or []:
84
+ if run.run_id == run_id:
85
+ return run
86
+ return None
87
+
88
+ def upsert_run(self, run_response: Union[TeamRunOutput, RunOutput]):
89
+ """Adds a RunOutput, together with some calculated data, to the runs list."""
90
+
91
+ messages = run_response.messages
92
+ if messages is None:
93
+ return
94
+
95
+ for m in messages or []:
96
+ if m.metrics is not None:
97
+ m.metrics.duration = None
98
+
99
+ if not self.runs:
100
+ self.runs = []
101
+
102
+ for i, existing_run in enumerate(self.runs or []):
103
+ if existing_run.run_id == run_response.run_id:
104
+ self.runs[i] = run_response
105
+ break
106
+ else:
107
+ self.runs.append(run_response)
108
+
109
+ log_debug("Added RunOutput to Team Session")
110
+
111
+ def get_messages_from_last_n_runs(
112
+ self,
113
+ agent_id: Optional[str] = None,
114
+ team_id: Optional[str] = None,
115
+ last_n: Optional[int] = None,
116
+ skip_role: Optional[str] = None,
117
+ skip_status: Optional[List[RunStatus]] = None,
118
+ skip_history_messages: bool = True,
119
+ member_runs: bool = False,
120
+ ) -> List[Message]:
121
+ """Returns the messages from the last_n runs, excluding previously tagged history messages.
122
+ Args:
123
+
124
+ agent_id: The id of the agent to get the messages from.
125
+ team_id: The id of the team to get the messages from.
126
+ last_n: The number of runs to return from the end of the conversation. Defaults to all runs.
127
+ skip_role: Skip messages with this role.
128
+ skip_status: Skip messages with this status.
129
+ skip_history_messages: Skip messages that were tagged as history in previous runs.
130
+ Returns:
131
+ A list of Messages from the specified runs, excluding history messages.
132
+ """
133
+ if not self.runs:
134
+ return []
135
+
136
+ if skip_status is None:
137
+ skip_status = [RunStatus.paused, RunStatus.cancelled, RunStatus.error]
138
+
139
+ session_runs = self.runs
140
+ # Filter by agent_id and team_id
141
+ if agent_id:
142
+ session_runs = [run for run in session_runs if hasattr(run, "agent_id") and run.agent_id == agent_id] # type: ignore
143
+ if team_id:
144
+ session_runs = [run for run in session_runs if hasattr(run, "team_id") and run.team_id == team_id] # type: ignore
145
+
146
+ if not member_runs:
147
+ # Filter for the main team runs
148
+ session_runs = [run for run in session_runs if run.parent_run_id is None] # type: ignore
149
+
150
+ # Filter by status
151
+ session_runs = [run for run in session_runs if hasattr(run, "status") and run.status not in skip_status] # type: ignore
152
+
153
+ # Filter by last_n
154
+ runs_to_process = session_runs[-last_n:] if last_n is not None else session_runs
155
+ messages_from_history = []
156
+ system_message = None
157
+ for run_response in runs_to_process:
158
+ if not (run_response and run_response.messages):
159
+ continue
160
+
161
+ for message in run_response.messages or []:
162
+ # Skip messages with specified role
163
+ if skip_role and message.role == skip_role:
164
+ continue
165
+ # Skip messages that were tagged as history in previous runs
166
+ if hasattr(message, "from_history") and message.from_history and skip_history_messages:
167
+ continue
168
+ if message.role == "system":
169
+ # Only add the system message once
170
+ if system_message is None:
171
+ system_message = message
172
+ messages_from_history.append(system_message)
173
+ else:
174
+ messages_from_history.append(message)
175
+
176
+ log_debug(f"Getting messages from previous runs: {len(messages_from_history)}")
177
+ return messages_from_history
178
+
179
+ def get_tool_calls(self, num_calls: Optional[int] = None) -> List[Dict[str, Any]]:
180
+ """Returns a list of tool calls from the messages"""
181
+
182
+ tool_calls = []
183
+ session_runs = self.runs
184
+ if session_runs is None:
185
+ return []
186
+
187
+ for run_response in session_runs[::-1]:
188
+ if run_response and run_response.messages:
189
+ for message in run_response.messages or []:
190
+ if message.tool_calls:
191
+ for tool_call in message.tool_calls:
192
+ tool_calls.append(tool_call)
193
+ if num_calls and len(tool_calls) >= num_calls:
194
+ return tool_calls
195
+ return tool_calls
196
+
197
+ def get_messages_for_session(
198
+ self,
199
+ user_role: str = "user",
200
+ assistant_role: Optional[List[str]] = None,
201
+ skip_history_messages: bool = True,
202
+ ) -> List[Message]:
203
+ """Returns a list of messages for the session that iterate through user message and assistant response."""
204
+
205
+ if assistant_role is None:
206
+ # TODO: Check if we still need CHATBOT as a role
207
+ assistant_role = ["assistant", "model", "CHATBOT"]
208
+
209
+ final_messages: List[Message] = []
210
+ session_runs = self.runs
211
+ if session_runs is None:
212
+ return []
213
+
214
+ for run_response in session_runs:
215
+ if run_response and run_response.messages:
216
+ user_message_from_run = None
217
+ assistant_message_from_run = None
218
+
219
+ # Start from the beginning to look for the user message
220
+ for message in run_response.messages or []:
221
+ if hasattr(message, "from_history") and message.from_history and skip_history_messages:
222
+ continue
223
+ if message.role == user_role:
224
+ user_message_from_run = message
225
+ break
226
+
227
+ # Start from the end to look for the assistant response
228
+ for message in run_response.messages[::-1]:
229
+ if hasattr(message, "from_history") and message.from_history and skip_history_messages:
230
+ continue
231
+ if message.role in assistant_role:
232
+ assistant_message_from_run = message
233
+ break
234
+
235
+ if user_message_from_run and assistant_message_from_run:
236
+ final_messages.append(user_message_from_run)
237
+ final_messages.append(assistant_message_from_run)
238
+ return final_messages
239
+
240
+ def get_session_summary(self) -> Optional[SessionSummary]:
241
+ """Get the session summary for the session"""
242
+
243
+ if self.summary is None:
244
+ return None
245
+
246
+ return self.summary # type: ignore
247
+
248
+ # Chat History functions
249
+ def get_chat_history(self) -> List[Message]:
250
+ """Get the chat history for the session"""
251
+
252
+ messages = []
253
+ if self.runs is None:
254
+ return []
255
+
256
+ for run in self.runs or []:
257
+ if run.messages is None:
258
+ continue
259
+
260
+ messages.extend([msg for msg in run.messages or [] if not msg.from_history])
261
+
262
+ return messages
@@ -1,9 +1,10 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import time
3
4
  from dataclasses import dataclass
4
5
  from typing import Any, Dict, List, Mapping, Optional
5
6
 
6
- from agno.run.v2.workflow import WorkflowRunResponse
7
+ from agno.run.workflow import WorkflowRunOutput
7
8
  from agno.utils.log import logger
8
9
 
9
10
 
@@ -21,15 +22,15 @@ class WorkflowSession:
21
22
  # Workflow name
22
23
  workflow_name: Optional[str] = None
23
24
 
24
- # Workflow runs - stores WorkflowRunResponse objects in memory
25
- runs: Optional[List[WorkflowRunResponse]] = None
25
+ # Workflow runs - stores WorkflowRunOutput objects in memory
26
+ runs: Optional[List[WorkflowRunOutput]] = None
26
27
 
27
28
  # Session Data: session_name, session_state, images, videos, audio
28
29
  session_data: Optional[Dict[str, Any]] = None
29
30
  # Workflow configuration and metadata
30
31
  workflow_data: Optional[Dict[str, Any]] = None
31
- # Extra Data stored with this workflow session
32
- extra_data: Optional[Dict[str, Any]] = None
32
+ # Metadata stored with this workflow session
33
+ metadata: Optional[Dict[str, Any]] = None
33
34
 
34
35
  # The unix timestamp when this session was created
35
36
  created_at: Optional[int] = None
@@ -40,7 +41,28 @@ class WorkflowSession:
40
41
  if self.runs is None:
41
42
  self.runs = []
42
43
 
43
- def upsert_run(self, run: WorkflowRunResponse) -> None:
44
+ # Ensure session_data, workflow_data, and metadata are dictionaries, not None
45
+ if self.session_data is None:
46
+ self.session_data = {}
47
+ if self.workflow_data is None:
48
+ self.workflow_data = {}
49
+ if self.metadata is None:
50
+ self.metadata = {}
51
+
52
+ # Set timestamps if they're not already set
53
+ current_time = int(time.time())
54
+ if self.created_at is None:
55
+ self.created_at = current_time
56
+ if self.updated_at is None:
57
+ self.updated_at = current_time
58
+
59
+ def get_run(self, run_id: str) -> Optional[WorkflowRunOutput]:
60
+ for run in self.runs or []:
61
+ if run.run_id == run_id:
62
+ return run
63
+ return None
64
+
65
+ def upsert_run(self, run: WorkflowRunOutput) -> None:
44
66
  """Add or update a workflow run (upsert behavior)"""
45
67
  if self.runs is None:
46
68
  self.runs = []
@@ -48,12 +70,10 @@ class WorkflowSession:
48
70
  # Find existing run and update it, or append new one
49
71
  for i, existing_run in enumerate(self.runs):
50
72
  if existing_run.run_id == run.run_id:
51
- # Update existing run
52
73
  self.runs[i] = run
53
- return
54
-
55
- # Run not found, append new one
56
- self.runs.append(run)
74
+ break
75
+ else:
76
+ self.runs.append(run)
57
77
 
58
78
  def to_dict(self) -> Dict[str, Any]:
59
79
  """Convert to dictionary for storage, serializing runs to dicts"""
@@ -65,14 +85,7 @@ class WorkflowSession:
65
85
  try:
66
86
  runs_data.append(run.to_dict())
67
87
  except Exception as e:
68
- # If run serialization fails, create a minimal representation
69
- runs_data.append(
70
- {
71
- "run_id": getattr(run, "run_id", "unknown"),
72
- "status": str(getattr(run, "status", "unknown")),
73
- "error": f"Serialization failed: {str(e)}",
74
- }
75
- )
88
+ raise ValueError(f"Serialization failed: {str(e)}")
76
89
  return {
77
90
  "session_id": self.session_id,
78
91
  "user_id": self.user_id,
@@ -81,7 +94,7 @@ class WorkflowSession:
81
94
  "runs": runs_data,
82
95
  "session_data": self.session_data,
83
96
  "workflow_data": self.workflow_data,
84
- "extra_data": self.extra_data,
97
+ "metadata": self.metadata,
85
98
  "created_at": self.created_at,
86
99
  "updated_at": self.updated_at,
87
100
  }
@@ -93,11 +106,21 @@ class WorkflowSession:
93
106
  logger.warning("WorkflowSession is missing session_id")
94
107
  return None
95
108
 
96
- # Deserialize runs from dictionaries back to WorkflowRunResponse objects
109
+ # Deserialize runs from dictionaries back to WorkflowRunOutput objects
97
110
  runs_data = data.get("runs")
98
- runs: Optional[List[WorkflowRunResponse]] = None
111
+ runs: Optional[List[WorkflowRunOutput]] = None
112
+
99
113
  if runs_data is not None:
100
- runs = [WorkflowRunResponse.from_dict(run_dict) for run_dict in runs_data]
114
+ runs = []
115
+ for run_item in runs_data:
116
+ if isinstance(run_item, WorkflowRunOutput):
117
+ # Already a WorkflowRunOutput object (from deserialize_session_json_fields)
118
+ runs.append(run_item)
119
+ elif isinstance(run_item, dict):
120
+ # Still a dictionary, needs to be converted
121
+ runs.append(WorkflowRunOutput.from_dict(run_item))
122
+ else:
123
+ logger.warning(f"Unexpected run item type: {type(run_item)}")
101
124
 
102
125
  return cls(
103
126
  session_id=data.get("session_id"), # type: ignore
@@ -107,7 +130,7 @@ class WorkflowSession:
107
130
  runs=runs,
108
131
  session_data=data.get("session_data"),
109
132
  workflow_data=data.get("workflow_data"),
110
- extra_data=data.get("extra_data"),
133
+ metadata=data.get("metadata"),
111
134
  created_at=data.get("created_at"),
112
135
  updated_at=data.get("updated_at"),
113
136
  )
agno/team/__init__.py CHANGED
@@ -4,30 +4,29 @@ from agno.run.team import (
4
4
  ReasoningCompletedEvent,
5
5
  ReasoningStartedEvent,
6
6
  ReasoningStepEvent,
7
- RunResponseCancelledEvent,
8
- RunResponseCompletedEvent,
9
- RunResponseContentEvent,
10
- RunResponseErrorEvent,
11
- RunResponseStartedEvent,
7
+ RunCancelledEvent,
8
+ RunCompletedEvent,
9
+ RunContentEvent,
10
+ RunErrorEvent,
11
+ RunStartedEvent,
12
12
  TeamRunEvent,
13
- TeamRunResponse,
14
- TeamRunResponseEvent,
13
+ TeamRunOutput,
14
+ TeamRunOutputEvent,
15
15
  ToolCallCompletedEvent,
16
16
  ToolCallStartedEvent,
17
17
  )
18
- from agno.team.team import RunResponse, Team
18
+ from agno.team.team import Team
19
19
 
20
20
  __all__ = [
21
21
  "Team",
22
- "RunResponse",
23
- "TeamRunResponse",
24
- "TeamRunResponseEvent",
22
+ "TeamRunOutput",
23
+ "TeamRunOutputEvent",
25
24
  "TeamRunEvent",
26
- "RunResponseContentEvent",
27
- "RunResponseCancelledEvent",
28
- "RunResponseErrorEvent",
29
- "RunResponseStartedEvent",
30
- "RunResponseCompletedEvent",
25
+ "RunContentEvent",
26
+ "RunCancelledEvent",
27
+ "RunErrorEvent",
28
+ "RunStartedEvent",
29
+ "RunCompletedEvent",
31
30
  "MemoryUpdateStartedEvent",
32
31
  "MemoryUpdateCompletedEvent",
33
32
  "ReasoningStartedEvent",