agno 2.2.13__py3-none-any.whl → 2.4.3__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 (383) hide show
  1. agno/agent/__init__.py +6 -0
  2. agno/agent/agent.py +5252 -3145
  3. agno/agent/remote.py +525 -0
  4. agno/api/api.py +2 -0
  5. agno/client/__init__.py +3 -0
  6. agno/client/a2a/__init__.py +10 -0
  7. agno/client/a2a/client.py +554 -0
  8. agno/client/a2a/schemas.py +112 -0
  9. agno/client/a2a/utils.py +369 -0
  10. agno/client/os.py +2669 -0
  11. agno/compression/__init__.py +3 -0
  12. agno/compression/manager.py +247 -0
  13. agno/culture/manager.py +2 -2
  14. agno/db/base.py +927 -6
  15. agno/db/dynamo/dynamo.py +788 -2
  16. agno/db/dynamo/schemas.py +128 -0
  17. agno/db/dynamo/utils.py +26 -3
  18. agno/db/firestore/firestore.py +674 -50
  19. agno/db/firestore/schemas.py +41 -0
  20. agno/db/firestore/utils.py +25 -10
  21. agno/db/gcs_json/gcs_json_db.py +506 -3
  22. agno/db/gcs_json/utils.py +14 -2
  23. agno/db/in_memory/in_memory_db.py +203 -4
  24. agno/db/in_memory/utils.py +14 -2
  25. agno/db/json/json_db.py +498 -2
  26. agno/db/json/utils.py +14 -2
  27. agno/db/migrations/manager.py +199 -0
  28. agno/db/migrations/utils.py +19 -0
  29. agno/db/migrations/v1_to_v2.py +54 -16
  30. agno/db/migrations/versions/__init__.py +0 -0
  31. agno/db/migrations/versions/v2_3_0.py +977 -0
  32. agno/db/mongo/async_mongo.py +1013 -39
  33. agno/db/mongo/mongo.py +684 -4
  34. agno/db/mongo/schemas.py +48 -0
  35. agno/db/mongo/utils.py +17 -0
  36. agno/db/mysql/__init__.py +2 -1
  37. agno/db/mysql/async_mysql.py +2958 -0
  38. agno/db/mysql/mysql.py +722 -53
  39. agno/db/mysql/schemas.py +77 -11
  40. agno/db/mysql/utils.py +151 -8
  41. agno/db/postgres/async_postgres.py +1254 -137
  42. agno/db/postgres/postgres.py +2316 -93
  43. agno/db/postgres/schemas.py +153 -21
  44. agno/db/postgres/utils.py +22 -7
  45. agno/db/redis/redis.py +531 -3
  46. agno/db/redis/schemas.py +36 -0
  47. agno/db/redis/utils.py +31 -15
  48. agno/db/schemas/evals.py +1 -0
  49. agno/db/schemas/memory.py +20 -9
  50. agno/db/singlestore/schemas.py +70 -1
  51. agno/db/singlestore/singlestore.py +737 -74
  52. agno/db/singlestore/utils.py +13 -3
  53. agno/db/sqlite/async_sqlite.py +1069 -89
  54. agno/db/sqlite/schemas.py +133 -1
  55. agno/db/sqlite/sqlite.py +2203 -165
  56. agno/db/sqlite/utils.py +21 -11
  57. agno/db/surrealdb/models.py +25 -0
  58. agno/db/surrealdb/surrealdb.py +603 -1
  59. agno/db/utils.py +60 -0
  60. agno/eval/__init__.py +26 -3
  61. agno/eval/accuracy.py +25 -12
  62. agno/eval/agent_as_judge.py +871 -0
  63. agno/eval/base.py +29 -0
  64. agno/eval/performance.py +10 -4
  65. agno/eval/reliability.py +22 -13
  66. agno/eval/utils.py +2 -1
  67. agno/exceptions.py +42 -0
  68. agno/hooks/__init__.py +3 -0
  69. agno/hooks/decorator.py +164 -0
  70. agno/integrations/discord/client.py +13 -2
  71. agno/knowledge/__init__.py +4 -0
  72. agno/knowledge/chunking/code.py +90 -0
  73. agno/knowledge/chunking/document.py +65 -4
  74. agno/knowledge/chunking/fixed.py +4 -1
  75. agno/knowledge/chunking/markdown.py +102 -11
  76. agno/knowledge/chunking/recursive.py +2 -2
  77. agno/knowledge/chunking/semantic.py +130 -48
  78. agno/knowledge/chunking/strategy.py +18 -0
  79. agno/knowledge/embedder/azure_openai.py +0 -1
  80. agno/knowledge/embedder/google.py +1 -1
  81. agno/knowledge/embedder/mistral.py +1 -1
  82. agno/knowledge/embedder/nebius.py +1 -1
  83. agno/knowledge/embedder/openai.py +16 -12
  84. agno/knowledge/filesystem.py +412 -0
  85. agno/knowledge/knowledge.py +4261 -1199
  86. agno/knowledge/protocol.py +134 -0
  87. agno/knowledge/reader/arxiv_reader.py +3 -2
  88. agno/knowledge/reader/base.py +9 -7
  89. agno/knowledge/reader/csv_reader.py +91 -42
  90. agno/knowledge/reader/docx_reader.py +9 -10
  91. agno/knowledge/reader/excel_reader.py +225 -0
  92. agno/knowledge/reader/field_labeled_csv_reader.py +38 -48
  93. agno/knowledge/reader/firecrawl_reader.py +3 -2
  94. agno/knowledge/reader/json_reader.py +16 -22
  95. agno/knowledge/reader/markdown_reader.py +15 -14
  96. agno/knowledge/reader/pdf_reader.py +33 -28
  97. agno/knowledge/reader/pptx_reader.py +9 -10
  98. agno/knowledge/reader/reader_factory.py +135 -1
  99. agno/knowledge/reader/s3_reader.py +8 -16
  100. agno/knowledge/reader/tavily_reader.py +3 -3
  101. agno/knowledge/reader/text_reader.py +15 -14
  102. agno/knowledge/reader/utils/__init__.py +17 -0
  103. agno/knowledge/reader/utils/spreadsheet.py +114 -0
  104. agno/knowledge/reader/web_search_reader.py +8 -65
  105. agno/knowledge/reader/website_reader.py +16 -13
  106. agno/knowledge/reader/wikipedia_reader.py +36 -3
  107. agno/knowledge/reader/youtube_reader.py +3 -2
  108. agno/knowledge/remote_content/__init__.py +33 -0
  109. agno/knowledge/remote_content/config.py +266 -0
  110. agno/knowledge/remote_content/remote_content.py +105 -17
  111. agno/knowledge/utils.py +76 -22
  112. agno/learn/__init__.py +71 -0
  113. agno/learn/config.py +463 -0
  114. agno/learn/curate.py +185 -0
  115. agno/learn/machine.py +725 -0
  116. agno/learn/schemas.py +1114 -0
  117. agno/learn/stores/__init__.py +38 -0
  118. agno/learn/stores/decision_log.py +1156 -0
  119. agno/learn/stores/entity_memory.py +3275 -0
  120. agno/learn/stores/learned_knowledge.py +1583 -0
  121. agno/learn/stores/protocol.py +117 -0
  122. agno/learn/stores/session_context.py +1217 -0
  123. agno/learn/stores/user_memory.py +1495 -0
  124. agno/learn/stores/user_profile.py +1220 -0
  125. agno/learn/utils.py +209 -0
  126. agno/media.py +22 -6
  127. agno/memory/__init__.py +14 -1
  128. agno/memory/manager.py +223 -8
  129. agno/memory/strategies/__init__.py +15 -0
  130. agno/memory/strategies/base.py +66 -0
  131. agno/memory/strategies/summarize.py +196 -0
  132. agno/memory/strategies/types.py +37 -0
  133. agno/models/aimlapi/aimlapi.py +17 -0
  134. agno/models/anthropic/claude.py +434 -59
  135. agno/models/aws/bedrock.py +121 -20
  136. agno/models/aws/claude.py +131 -274
  137. agno/models/azure/ai_foundry.py +10 -6
  138. agno/models/azure/openai_chat.py +33 -10
  139. agno/models/base.py +1162 -561
  140. agno/models/cerebras/cerebras.py +120 -24
  141. agno/models/cerebras/cerebras_openai.py +21 -2
  142. agno/models/cohere/chat.py +65 -6
  143. agno/models/cometapi/cometapi.py +18 -1
  144. agno/models/dashscope/dashscope.py +2 -3
  145. agno/models/deepinfra/deepinfra.py +18 -1
  146. agno/models/deepseek/deepseek.py +69 -3
  147. agno/models/fireworks/fireworks.py +18 -1
  148. agno/models/google/gemini.py +959 -89
  149. agno/models/google/utils.py +22 -0
  150. agno/models/groq/groq.py +48 -18
  151. agno/models/huggingface/huggingface.py +17 -6
  152. agno/models/ibm/watsonx.py +16 -6
  153. agno/models/internlm/internlm.py +18 -1
  154. agno/models/langdb/langdb.py +13 -1
  155. agno/models/litellm/chat.py +88 -9
  156. agno/models/litellm/litellm_openai.py +18 -1
  157. agno/models/message.py +24 -5
  158. agno/models/meta/llama.py +40 -13
  159. agno/models/meta/llama_openai.py +22 -21
  160. agno/models/metrics.py +12 -0
  161. agno/models/mistral/mistral.py +8 -4
  162. agno/models/n1n/__init__.py +3 -0
  163. agno/models/n1n/n1n.py +57 -0
  164. agno/models/nebius/nebius.py +6 -7
  165. agno/models/nvidia/nvidia.py +20 -3
  166. agno/models/ollama/__init__.py +2 -0
  167. agno/models/ollama/chat.py +17 -6
  168. agno/models/ollama/responses.py +100 -0
  169. agno/models/openai/__init__.py +2 -0
  170. agno/models/openai/chat.py +117 -26
  171. agno/models/openai/open_responses.py +46 -0
  172. agno/models/openai/responses.py +110 -32
  173. agno/models/openrouter/__init__.py +2 -0
  174. agno/models/openrouter/openrouter.py +67 -2
  175. agno/models/openrouter/responses.py +146 -0
  176. agno/models/perplexity/perplexity.py +19 -1
  177. agno/models/portkey/portkey.py +7 -6
  178. agno/models/requesty/requesty.py +19 -2
  179. agno/models/response.py +20 -2
  180. agno/models/sambanova/sambanova.py +20 -3
  181. agno/models/siliconflow/siliconflow.py +19 -2
  182. agno/models/together/together.py +20 -3
  183. agno/models/vercel/v0.py +20 -3
  184. agno/models/vertexai/claude.py +124 -4
  185. agno/models/vllm/vllm.py +19 -14
  186. agno/models/xai/xai.py +19 -2
  187. agno/os/app.py +467 -137
  188. agno/os/auth.py +253 -5
  189. agno/os/config.py +22 -0
  190. agno/os/interfaces/a2a/a2a.py +7 -6
  191. agno/os/interfaces/a2a/router.py +635 -26
  192. agno/os/interfaces/a2a/utils.py +32 -33
  193. agno/os/interfaces/agui/agui.py +5 -3
  194. agno/os/interfaces/agui/router.py +26 -16
  195. agno/os/interfaces/agui/utils.py +97 -57
  196. agno/os/interfaces/base.py +7 -7
  197. agno/os/interfaces/slack/router.py +16 -7
  198. agno/os/interfaces/slack/slack.py +7 -7
  199. agno/os/interfaces/whatsapp/router.py +35 -7
  200. agno/os/interfaces/whatsapp/security.py +3 -1
  201. agno/os/interfaces/whatsapp/whatsapp.py +11 -8
  202. agno/os/managers.py +326 -0
  203. agno/os/mcp.py +652 -79
  204. agno/os/middleware/__init__.py +4 -0
  205. agno/os/middleware/jwt.py +718 -115
  206. agno/os/middleware/trailing_slash.py +27 -0
  207. agno/os/router.py +105 -1558
  208. agno/os/routers/agents/__init__.py +3 -0
  209. agno/os/routers/agents/router.py +655 -0
  210. agno/os/routers/agents/schema.py +288 -0
  211. agno/os/routers/components/__init__.py +3 -0
  212. agno/os/routers/components/components.py +475 -0
  213. agno/os/routers/database.py +155 -0
  214. agno/os/routers/evals/evals.py +111 -18
  215. agno/os/routers/evals/schemas.py +38 -5
  216. agno/os/routers/evals/utils.py +80 -11
  217. agno/os/routers/health.py +3 -3
  218. agno/os/routers/knowledge/knowledge.py +284 -35
  219. agno/os/routers/knowledge/schemas.py +14 -2
  220. agno/os/routers/memory/memory.py +274 -11
  221. agno/os/routers/memory/schemas.py +44 -3
  222. agno/os/routers/metrics/metrics.py +30 -15
  223. agno/os/routers/metrics/schemas.py +10 -6
  224. agno/os/routers/registry/__init__.py +3 -0
  225. agno/os/routers/registry/registry.py +337 -0
  226. agno/os/routers/session/session.py +143 -14
  227. agno/os/routers/teams/__init__.py +3 -0
  228. agno/os/routers/teams/router.py +550 -0
  229. agno/os/routers/teams/schema.py +280 -0
  230. agno/os/routers/traces/__init__.py +3 -0
  231. agno/os/routers/traces/schemas.py +414 -0
  232. agno/os/routers/traces/traces.py +549 -0
  233. agno/os/routers/workflows/__init__.py +3 -0
  234. agno/os/routers/workflows/router.py +757 -0
  235. agno/os/routers/workflows/schema.py +139 -0
  236. agno/os/schema.py +157 -584
  237. agno/os/scopes.py +469 -0
  238. agno/os/settings.py +3 -0
  239. agno/os/utils.py +574 -185
  240. agno/reasoning/anthropic.py +85 -1
  241. agno/reasoning/azure_ai_foundry.py +93 -1
  242. agno/reasoning/deepseek.py +102 -2
  243. agno/reasoning/default.py +6 -7
  244. agno/reasoning/gemini.py +87 -3
  245. agno/reasoning/groq.py +109 -2
  246. agno/reasoning/helpers.py +6 -7
  247. agno/reasoning/manager.py +1238 -0
  248. agno/reasoning/ollama.py +93 -1
  249. agno/reasoning/openai.py +115 -1
  250. agno/reasoning/vertexai.py +85 -1
  251. agno/registry/__init__.py +3 -0
  252. agno/registry/registry.py +68 -0
  253. agno/remote/__init__.py +3 -0
  254. agno/remote/base.py +581 -0
  255. agno/run/__init__.py +2 -4
  256. agno/run/agent.py +134 -19
  257. agno/run/base.py +49 -1
  258. agno/run/cancel.py +65 -52
  259. agno/run/cancellation_management/__init__.py +9 -0
  260. agno/run/cancellation_management/base.py +78 -0
  261. agno/run/cancellation_management/in_memory_cancellation_manager.py +100 -0
  262. agno/run/cancellation_management/redis_cancellation_manager.py +236 -0
  263. agno/run/requirement.py +181 -0
  264. agno/run/team.py +111 -19
  265. agno/run/workflow.py +2 -1
  266. agno/session/agent.py +57 -92
  267. agno/session/summary.py +1 -1
  268. agno/session/team.py +62 -115
  269. agno/session/workflow.py +353 -57
  270. agno/skills/__init__.py +17 -0
  271. agno/skills/agent_skills.py +377 -0
  272. agno/skills/errors.py +32 -0
  273. agno/skills/loaders/__init__.py +4 -0
  274. agno/skills/loaders/base.py +27 -0
  275. agno/skills/loaders/local.py +216 -0
  276. agno/skills/skill.py +65 -0
  277. agno/skills/utils.py +107 -0
  278. agno/skills/validator.py +277 -0
  279. agno/table.py +10 -0
  280. agno/team/__init__.py +5 -1
  281. agno/team/remote.py +447 -0
  282. agno/team/team.py +3769 -2202
  283. agno/tools/brandfetch.py +27 -18
  284. agno/tools/browserbase.py +225 -16
  285. agno/tools/crawl4ai.py +3 -0
  286. agno/tools/duckduckgo.py +25 -71
  287. agno/tools/exa.py +0 -21
  288. agno/tools/file.py +14 -13
  289. agno/tools/file_generation.py +12 -6
  290. agno/tools/firecrawl.py +15 -7
  291. agno/tools/function.py +94 -113
  292. agno/tools/google_bigquery.py +11 -2
  293. agno/tools/google_drive.py +4 -3
  294. agno/tools/knowledge.py +9 -4
  295. agno/tools/mcp/mcp.py +301 -18
  296. agno/tools/mcp/multi_mcp.py +269 -14
  297. agno/tools/mem0.py +11 -10
  298. agno/tools/memory.py +47 -46
  299. agno/tools/mlx_transcribe.py +10 -7
  300. agno/tools/models/nebius.py +5 -5
  301. agno/tools/models_labs.py +20 -10
  302. agno/tools/nano_banana.py +151 -0
  303. agno/tools/parallel.py +0 -7
  304. agno/tools/postgres.py +76 -36
  305. agno/tools/python.py +14 -6
  306. agno/tools/reasoning.py +30 -23
  307. agno/tools/redshift.py +406 -0
  308. agno/tools/shopify.py +1519 -0
  309. agno/tools/spotify.py +919 -0
  310. agno/tools/tavily.py +4 -1
  311. agno/tools/toolkit.py +253 -18
  312. agno/tools/websearch.py +93 -0
  313. agno/tools/website.py +1 -1
  314. agno/tools/wikipedia.py +1 -1
  315. agno/tools/workflow.py +56 -48
  316. agno/tools/yfinance.py +12 -11
  317. agno/tracing/__init__.py +12 -0
  318. agno/tracing/exporter.py +161 -0
  319. agno/tracing/schemas.py +276 -0
  320. agno/tracing/setup.py +112 -0
  321. agno/utils/agent.py +251 -10
  322. agno/utils/cryptography.py +22 -0
  323. agno/utils/dttm.py +33 -0
  324. agno/utils/events.py +264 -7
  325. agno/utils/hooks.py +111 -3
  326. agno/utils/http.py +161 -2
  327. agno/utils/mcp.py +49 -8
  328. agno/utils/media.py +22 -1
  329. agno/utils/models/ai_foundry.py +9 -2
  330. agno/utils/models/claude.py +20 -5
  331. agno/utils/models/cohere.py +9 -2
  332. agno/utils/models/llama.py +9 -2
  333. agno/utils/models/mistral.py +4 -2
  334. agno/utils/os.py +0 -0
  335. agno/utils/print_response/agent.py +99 -16
  336. agno/utils/print_response/team.py +223 -24
  337. agno/utils/print_response/workflow.py +0 -2
  338. agno/utils/prompts.py +8 -6
  339. agno/utils/remote.py +23 -0
  340. agno/utils/response.py +1 -13
  341. agno/utils/string.py +91 -2
  342. agno/utils/team.py +62 -12
  343. agno/utils/tokens.py +657 -0
  344. agno/vectordb/base.py +15 -2
  345. agno/vectordb/cassandra/cassandra.py +1 -1
  346. agno/vectordb/chroma/__init__.py +2 -1
  347. agno/vectordb/chroma/chromadb.py +468 -23
  348. agno/vectordb/clickhouse/clickhousedb.py +1 -1
  349. agno/vectordb/couchbase/couchbase.py +6 -2
  350. agno/vectordb/lancedb/lance_db.py +7 -38
  351. agno/vectordb/lightrag/lightrag.py +7 -6
  352. agno/vectordb/milvus/milvus.py +118 -84
  353. agno/vectordb/mongodb/__init__.py +2 -1
  354. agno/vectordb/mongodb/mongodb.py +14 -31
  355. agno/vectordb/pgvector/pgvector.py +120 -66
  356. agno/vectordb/pineconedb/pineconedb.py +2 -19
  357. agno/vectordb/qdrant/__init__.py +2 -1
  358. agno/vectordb/qdrant/qdrant.py +33 -56
  359. agno/vectordb/redis/__init__.py +2 -1
  360. agno/vectordb/redis/redisdb.py +19 -31
  361. agno/vectordb/singlestore/singlestore.py +17 -9
  362. agno/vectordb/surrealdb/surrealdb.py +2 -38
  363. agno/vectordb/weaviate/__init__.py +2 -1
  364. agno/vectordb/weaviate/weaviate.py +7 -3
  365. agno/workflow/__init__.py +5 -1
  366. agno/workflow/agent.py +2 -2
  367. agno/workflow/condition.py +12 -10
  368. agno/workflow/loop.py +28 -9
  369. agno/workflow/parallel.py +21 -13
  370. agno/workflow/remote.py +362 -0
  371. agno/workflow/router.py +12 -9
  372. agno/workflow/step.py +261 -36
  373. agno/workflow/steps.py +12 -8
  374. agno/workflow/types.py +40 -77
  375. agno/workflow/workflow.py +939 -213
  376. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/METADATA +134 -181
  377. agno-2.4.3.dist-info/RECORD +677 -0
  378. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/WHEEL +1 -1
  379. agno/tools/googlesearch.py +0 -98
  380. agno/tools/memori.py +0 -339
  381. agno-2.2.13.dist-info/RECORD +0 -575
  382. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/licenses/LICENSE +0 -0
  383. {agno-2.2.13.dist-info → agno-2.4.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,280 @@
1
+ from typing import Any, Dict, List, Optional, Union
2
+ from uuid import uuid4
3
+
4
+ from pydantic import BaseModel
5
+
6
+ from agno.agent import Agent
7
+ from agno.os.routers.agents.schema import AgentResponse
8
+ from agno.os.schema import ModelResponse
9
+ from agno.os.utils import (
10
+ format_team_tools,
11
+ )
12
+ from agno.run import RunContext
13
+ from agno.run.team import TeamRunOutput
14
+ from agno.session import TeamSession
15
+ from agno.team.team import Team
16
+ from agno.utils.agent import aexecute_instructions, aexecute_system_message
17
+
18
+
19
+ class TeamResponse(BaseModel):
20
+ id: Optional[str] = None
21
+ name: Optional[str] = None
22
+ db_id: Optional[str] = None
23
+ description: Optional[str] = None
24
+ role: Optional[str] = None
25
+ model: Optional[ModelResponse] = None
26
+ tools: Optional[Dict[str, Any]] = None
27
+ sessions: Optional[Dict[str, Any]] = None
28
+ knowledge: Optional[Dict[str, Any]] = None
29
+ memory: Optional[Dict[str, Any]] = None
30
+ reasoning: Optional[Dict[str, Any]] = None
31
+ default_tools: Optional[Dict[str, Any]] = None
32
+ system_message: Optional[Dict[str, Any]] = None
33
+ response_settings: Optional[Dict[str, Any]] = None
34
+ introduction: Optional[str] = None
35
+ streaming: Optional[Dict[str, Any]] = None
36
+ members: Optional[List[Union[AgentResponse, "TeamResponse"]]] = None
37
+ metadata: Optional[Dict[str, Any]] = None
38
+ input_schema: Optional[Dict[str, Any]] = None
39
+
40
+ @classmethod
41
+ async def from_team(cls, team: Team) -> "TeamResponse":
42
+ def filter_meaningful_config(d: Dict[str, Any], defaults: Dict[str, Any]) -> Optional[Dict[str, Any]]:
43
+ """Filter out fields that match their default values, keeping only meaningful user configurations"""
44
+ filtered = {}
45
+ for key, value in d.items():
46
+ if value is None:
47
+ continue
48
+ # Skip if value matches the default exactly
49
+ if key in defaults and value == defaults[key]:
50
+ continue
51
+ # Keep non-default values
52
+ filtered[key] = value
53
+ return filtered if filtered else None
54
+
55
+ # Define default values for filtering (similar to agent defaults)
56
+ team_defaults = {
57
+ # Sessions defaults
58
+ "add_history_to_context": False,
59
+ "num_history_runs": 3,
60
+ "enable_session_summaries": False,
61
+ "cache_session": False,
62
+ # Knowledge defaults
63
+ "add_references": False,
64
+ "references_format": "json",
65
+ "enable_agentic_knowledge_filters": False,
66
+ # Memory defaults
67
+ "enable_agentic_memory": False,
68
+ "update_memory_on_run": False,
69
+ # Reasoning defaults
70
+ "reasoning": False,
71
+ "reasoning_min_steps": 1,
72
+ "reasoning_max_steps": 10,
73
+ # Default tools defaults
74
+ "search_knowledge": True,
75
+ "read_chat_history": False,
76
+ "get_member_information_tool": False,
77
+ # System message defaults
78
+ "system_message_role": "system",
79
+ "markdown": False,
80
+ "add_datetime_to_context": False,
81
+ "add_location_to_context": False,
82
+ "resolve_in_context": True,
83
+ # Response settings defaults
84
+ "parse_response": True,
85
+ "use_json_mode": False,
86
+ # Streaming defaults
87
+ "stream_events": False,
88
+ "stream_member_events": False,
89
+ }
90
+
91
+ run_id = str(uuid4())
92
+ session_id = str(uuid4())
93
+ _tools = team._determine_tools_for_model(
94
+ model=team.model, # type: ignore
95
+ session=TeamSession(session_id=session_id, session_data={}),
96
+ run_response=TeamRunOutput(run_id=run_id),
97
+ run_context=RunContext(run_id=run_id, session_id=session_id, session_state={}),
98
+ async_mode=True,
99
+ team_run_context={},
100
+ check_mcp_tools=False,
101
+ )
102
+ team_tools = _tools
103
+ formatted_tools = format_team_tools(team_tools) if team_tools else None
104
+
105
+ input_schema_dict = None
106
+ if team.input_schema is not None:
107
+ try:
108
+ input_schema_dict = team.input_schema.model_json_schema()
109
+ except Exception:
110
+ pass
111
+
112
+ model_name = team.model.name or team.model.__class__.__name__ if team.model else None
113
+ model_provider = team.model.provider or team.model.__class__.__name__ if team.model else ""
114
+ model_id = team.model.id if team.model else None
115
+
116
+ if model_provider and model_id:
117
+ model_provider = f"{model_provider} {model_id}"
118
+ elif model_name and model_id:
119
+ model_provider = f"{model_name} {model_id}"
120
+ elif model_id:
121
+ model_provider = model_id
122
+
123
+ session_table = team.db.session_table_name if team.db else None
124
+ knowledge_table = team.db.knowledge_table_name if team.db and team.knowledge else None
125
+
126
+ tools_info = {
127
+ "tools": formatted_tools,
128
+ "tool_call_limit": team.tool_call_limit,
129
+ "tool_choice": team.tool_choice,
130
+ }
131
+
132
+ sessions_info = {
133
+ "session_table": session_table,
134
+ "add_history_to_context": team.add_history_to_context,
135
+ "enable_session_summaries": team.enable_session_summaries,
136
+ "num_history_runs": team.num_history_runs,
137
+ "cache_session": team.cache_session,
138
+ }
139
+
140
+ contents_db = getattr(team.knowledge, "contents_db", None) if team.knowledge else None
141
+ knowledge_info = {
142
+ "db_id": contents_db.id if contents_db else None,
143
+ "knowledge_table": knowledge_table,
144
+ "enable_agentic_knowledge_filters": team.enable_agentic_knowledge_filters,
145
+ "knowledge_filters": team.knowledge_filters,
146
+ "references_format": team.references_format,
147
+ }
148
+
149
+ memory_info: Optional[Dict[str, Any]] = None
150
+ if team.memory_manager is not None:
151
+ memory_info = {
152
+ "enable_agentic_memory": team.enable_agentic_memory,
153
+ "update_memory_on_run": team.update_memory_on_run,
154
+ "enable_user_memories": team.enable_user_memories, # Soon to be deprecated. Use update_memory_on_run
155
+ "metadata": team.metadata,
156
+ "memory_table": team.db.memory_table_name if team.db and team.update_memory_on_run else None,
157
+ }
158
+
159
+ if team.memory_manager.model is not None:
160
+ memory_info["model"] = ModelResponse(
161
+ name=team.memory_manager.model.name,
162
+ model=team.memory_manager.model.id,
163
+ provider=team.memory_manager.model.provider,
164
+ ).model_dump()
165
+
166
+ reasoning_info: Dict[str, Any] = {
167
+ "reasoning": team.reasoning,
168
+ "reasoning_agent_id": team.reasoning_agent.id if team.reasoning_agent else None,
169
+ "reasoning_min_steps": team.reasoning_min_steps,
170
+ "reasoning_max_steps": team.reasoning_max_steps,
171
+ }
172
+
173
+ if team.reasoning_model:
174
+ reasoning_info["reasoning_model"] = ModelResponse(
175
+ name=team.reasoning_model.name,
176
+ model=team.reasoning_model.id,
177
+ provider=team.reasoning_model.provider,
178
+ ).model_dump()
179
+
180
+ default_tools_info = {
181
+ "search_knowledge": team.search_knowledge,
182
+ "read_chat_history": team.read_chat_history,
183
+ "get_member_information_tool": team.get_member_information_tool,
184
+ }
185
+
186
+ team_instructions = team.instructions if team.instructions else None
187
+ if team_instructions and callable(team_instructions):
188
+ team_instructions = await aexecute_instructions(instructions=team_instructions, agent=team, team=team)
189
+
190
+ team_system_message = team.system_message if team.system_message else None
191
+ if team_system_message and callable(team_system_message):
192
+ team_system_message = await aexecute_system_message(
193
+ system_message=team_system_message, agent=team, team=team
194
+ )
195
+
196
+ system_message_info = {
197
+ "system_message": team_system_message,
198
+ "system_message_role": team.system_message_role,
199
+ "description": team.description,
200
+ "instructions": team_instructions,
201
+ "expected_output": team.expected_output,
202
+ "additional_context": team.additional_context,
203
+ "markdown": team.markdown,
204
+ "add_datetime_to_context": team.add_datetime_to_context,
205
+ "add_location_to_context": team.add_location_to_context,
206
+ "resolve_in_context": team.resolve_in_context,
207
+ }
208
+
209
+ # Handle output_schema name for both Pydantic models and JSON schemas
210
+ output_schema_name = None
211
+ if team.output_schema is not None:
212
+ if isinstance(team.output_schema, dict):
213
+ if "json_schema" in team.output_schema:
214
+ output_schema_name = team.output_schema["json_schema"].get("name", "JSONSchema")
215
+ elif "schema" in team.output_schema and isinstance(team.output_schema["schema"], dict):
216
+ output_schema_name = team.output_schema["schema"].get("title", "JSONSchema")
217
+ else:
218
+ output_schema_name = team.output_schema.get("title", "JSONSchema")
219
+ elif hasattr(team.output_schema, "__name__"):
220
+ output_schema_name = team.output_schema.__name__
221
+
222
+ response_settings_info: Dict[str, Any] = {
223
+ "output_schema_name": output_schema_name,
224
+ "parser_model_prompt": team.parser_model_prompt,
225
+ "parse_response": team.parse_response,
226
+ "use_json_mode": team.use_json_mode,
227
+ }
228
+
229
+ if team.parser_model:
230
+ response_settings_info["parser_model"] = ModelResponse(
231
+ name=team.parser_model.name,
232
+ model=team.parser_model.id,
233
+ provider=team.parser_model.provider,
234
+ ).model_dump()
235
+
236
+ streaming_info = {
237
+ "stream": team.stream,
238
+ "stream_events": team.stream_events,
239
+ "stream_member_events": team.stream_member_events,
240
+ }
241
+
242
+ # Build team model only if it has at least one non-null field
243
+ _team_model_data: Dict[str, Any] = {}
244
+ if team.model and team.model.name is not None:
245
+ _team_model_data["name"] = team.model.name
246
+ if team.model and team.model.id is not None:
247
+ _team_model_data["model"] = team.model.id
248
+ if team.model and team.model.provider is not None:
249
+ _team_model_data["provider"] = team.model.provider
250
+
251
+ members: List[Union[AgentResponse, TeamResponse]] = []
252
+ for member in team.members:
253
+ if isinstance(member, Agent):
254
+ agent_response = await AgentResponse.from_agent(member)
255
+ members.append(agent_response)
256
+ if isinstance(member, Team):
257
+ team_response = await TeamResponse.from_team(member)
258
+ members.append(team_response)
259
+
260
+ return TeamResponse(
261
+ id=team.id,
262
+ name=team.name,
263
+ db_id=team.db.id if team.db else None,
264
+ description=team.description,
265
+ role=team.role,
266
+ model=ModelResponse(**_team_model_data) if _team_model_data else None,
267
+ tools=filter_meaningful_config(tools_info, {}),
268
+ sessions=filter_meaningful_config(sessions_info, team_defaults),
269
+ knowledge=filter_meaningful_config(knowledge_info, team_defaults),
270
+ memory=filter_meaningful_config(memory_info, team_defaults) if memory_info else None,
271
+ reasoning=filter_meaningful_config(reasoning_info, team_defaults),
272
+ default_tools=filter_meaningful_config(default_tools_info, team_defaults),
273
+ system_message=filter_meaningful_config(system_message_info, team_defaults),
274
+ response_settings=filter_meaningful_config(response_settings_info, team_defaults),
275
+ introduction=team.introduction,
276
+ streaming=filter_meaningful_config(streaming_info, team_defaults),
277
+ members=members if members else None,
278
+ metadata=team.metadata,
279
+ input_schema=input_schema_dict,
280
+ )
@@ -0,0 +1,3 @@
1
+ from agno.os.routers.traces.traces import get_traces_router
2
+
3
+ __all__ = ["get_traces_router"]