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
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",