agno 1.8.2__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.
- agno/agent/__init__.py +19 -27
- agno/agent/agent.py +3143 -4170
- agno/api/agent.py +11 -67
- agno/api/api.py +5 -46
- agno/api/evals.py +8 -19
- agno/api/os.py +17 -0
- agno/api/routes.py +6 -41
- agno/api/schemas/__init__.py +9 -0
- agno/api/schemas/agent.py +5 -21
- agno/api/schemas/evals.py +7 -16
- agno/api/schemas/os.py +14 -0
- agno/api/schemas/team.py +5 -21
- agno/api/schemas/utils.py +21 -0
- agno/api/schemas/workflows.py +11 -7
- agno/api/settings.py +53 -0
- agno/api/team.py +11 -66
- agno/api/workflow.py +28 -0
- agno/cloud/aws/base.py +214 -0
- agno/cloud/aws/s3/__init__.py +2 -0
- agno/cloud/aws/s3/api_client.py +43 -0
- agno/cloud/aws/s3/bucket.py +195 -0
- agno/cloud/aws/s3/object.py +57 -0
- agno/db/__init__.py +24 -0
- agno/db/base.py +245 -0
- agno/db/dynamo/__init__.py +3 -0
- agno/db/dynamo/dynamo.py +1743 -0
- agno/db/dynamo/schemas.py +278 -0
- agno/db/dynamo/utils.py +684 -0
- agno/db/firestore/__init__.py +3 -0
- agno/db/firestore/firestore.py +1432 -0
- agno/db/firestore/schemas.py +130 -0
- agno/db/firestore/utils.py +278 -0
- agno/db/gcs_json/__init__.py +3 -0
- agno/db/gcs_json/gcs_json_db.py +1001 -0
- agno/db/gcs_json/utils.py +194 -0
- agno/db/in_memory/__init__.py +3 -0
- agno/db/in_memory/in_memory_db.py +882 -0
- agno/db/in_memory/utils.py +172 -0
- agno/db/json/__init__.py +3 -0
- agno/db/json/json_db.py +1045 -0
- agno/db/json/utils.py +196 -0
- agno/db/migrations/v1_to_v2.py +162 -0
- agno/db/mongo/__init__.py +3 -0
- agno/db/mongo/mongo.py +1416 -0
- agno/db/mongo/schemas.py +77 -0
- agno/db/mongo/utils.py +204 -0
- agno/db/mysql/__init__.py +3 -0
- agno/db/mysql/mysql.py +1719 -0
- agno/db/mysql/schemas.py +124 -0
- agno/db/mysql/utils.py +297 -0
- agno/db/postgres/__init__.py +3 -0
- agno/db/postgres/postgres.py +1710 -0
- agno/db/postgres/schemas.py +124 -0
- agno/db/postgres/utils.py +280 -0
- agno/db/redis/__init__.py +3 -0
- agno/db/redis/redis.py +1367 -0
- agno/db/redis/schemas.py +109 -0
- agno/db/redis/utils.py +288 -0
- agno/db/schemas/__init__.py +3 -0
- agno/db/schemas/evals.py +33 -0
- agno/db/schemas/knowledge.py +40 -0
- agno/db/schemas/memory.py +46 -0
- agno/db/singlestore/__init__.py +3 -0
- agno/db/singlestore/schemas.py +116 -0
- agno/db/singlestore/singlestore.py +1712 -0
- agno/db/singlestore/utils.py +326 -0
- agno/db/sqlite/__init__.py +3 -0
- agno/db/sqlite/schemas.py +119 -0
- agno/db/sqlite/sqlite.py +1676 -0
- agno/db/sqlite/utils.py +268 -0
- agno/db/utils.py +88 -0
- agno/eval/__init__.py +14 -0
- agno/eval/accuracy.py +154 -48
- agno/eval/performance.py +88 -23
- agno/eval/reliability.py +73 -20
- agno/eval/utils.py +23 -13
- agno/integrations/discord/__init__.py +3 -0
- agno/{app → integrations}/discord/client.py +10 -10
- agno/knowledge/__init__.py +2 -2
- agno/{document → knowledge}/chunking/agentic.py +2 -2
- agno/{document → knowledge}/chunking/document.py +2 -2
- agno/{document → knowledge}/chunking/fixed.py +3 -3
- agno/{document → knowledge}/chunking/markdown.py +2 -2
- agno/{document → knowledge}/chunking/recursive.py +2 -2
- agno/{document → knowledge}/chunking/row.py +2 -2
- agno/knowledge/chunking/semantic.py +59 -0
- agno/knowledge/chunking/strategy.py +121 -0
- agno/knowledge/content.py +74 -0
- agno/knowledge/document/__init__.py +5 -0
- agno/{document → knowledge/document}/base.py +12 -2
- agno/knowledge/embedder/__init__.py +5 -0
- agno/{embedder → knowledge/embedder}/aws_bedrock.py +127 -1
- agno/{embedder → knowledge/embedder}/azure_openai.py +65 -1
- agno/{embedder → knowledge/embedder}/base.py +6 -0
- agno/{embedder → knowledge/embedder}/cohere.py +72 -1
- agno/{embedder → knowledge/embedder}/fastembed.py +17 -1
- agno/{embedder → knowledge/embedder}/fireworks.py +1 -1
- agno/{embedder → knowledge/embedder}/google.py +74 -1
- agno/{embedder → knowledge/embedder}/huggingface.py +36 -2
- agno/{embedder → knowledge/embedder}/jina.py +48 -2
- agno/knowledge/embedder/langdb.py +22 -0
- agno/knowledge/embedder/mistral.py +139 -0
- agno/{embedder → knowledge/embedder}/nebius.py +1 -1
- agno/{embedder → knowledge/embedder}/ollama.py +54 -3
- agno/knowledge/embedder/openai.py +223 -0
- agno/{embedder → knowledge/embedder}/sentence_transformer.py +16 -1
- agno/{embedder → knowledge/embedder}/together.py +1 -1
- agno/{embedder → knowledge/embedder}/voyageai.py +49 -1
- agno/knowledge/knowledge.py +1551 -0
- agno/knowledge/reader/__init__.py +7 -0
- agno/{document → knowledge}/reader/arxiv_reader.py +32 -4
- agno/knowledge/reader/base.py +88 -0
- agno/{document → knowledge}/reader/csv_reader.py +47 -65
- agno/knowledge/reader/docx_reader.py +83 -0
- agno/{document → knowledge}/reader/firecrawl_reader.py +42 -21
- agno/{document → knowledge}/reader/json_reader.py +30 -9
- agno/{document → knowledge}/reader/markdown_reader.py +58 -9
- agno/{document → knowledge}/reader/pdf_reader.py +71 -126
- agno/knowledge/reader/reader_factory.py +268 -0
- agno/knowledge/reader/s3_reader.py +101 -0
- agno/{document → knowledge}/reader/text_reader.py +31 -10
- agno/knowledge/reader/url_reader.py +128 -0
- agno/knowledge/reader/web_search_reader.py +366 -0
- agno/{document → knowledge}/reader/website_reader.py +37 -10
- agno/knowledge/reader/wikipedia_reader.py +59 -0
- agno/knowledge/reader/youtube_reader.py +78 -0
- agno/knowledge/remote_content/remote_content.py +88 -0
- agno/{reranker → knowledge/reranker}/base.py +1 -1
- agno/{reranker → knowledge/reranker}/cohere.py +2 -2
- agno/{reranker → knowledge/reranker}/infinity.py +2 -2
- agno/{reranker → knowledge/reranker}/sentence_transformer.py +2 -2
- agno/knowledge/types.py +30 -0
- agno/knowledge/utils.py +169 -0
- agno/media.py +269 -268
- agno/memory/__init__.py +2 -10
- agno/memory/manager.py +1003 -148
- agno/models/aimlapi/__init__.py +2 -2
- agno/models/aimlapi/aimlapi.py +6 -6
- agno/models/anthropic/claude.py +128 -72
- agno/models/aws/bedrock.py +107 -175
- agno/models/aws/claude.py +64 -18
- agno/models/azure/ai_foundry.py +73 -23
- agno/models/base.py +346 -290
- agno/models/cerebras/cerebras.py +84 -27
- agno/models/cohere/chat.py +106 -98
- agno/models/google/gemini.py +105 -46
- agno/models/groq/groq.py +97 -35
- agno/models/huggingface/huggingface.py +92 -27
- agno/models/ibm/watsonx.py +72 -13
- agno/models/litellm/chat.py +85 -13
- agno/models/message.py +46 -151
- agno/models/meta/llama.py +85 -49
- agno/models/metrics.py +120 -0
- agno/models/mistral/mistral.py +90 -21
- agno/models/ollama/__init__.py +0 -2
- agno/models/ollama/chat.py +85 -47
- agno/models/openai/chat.py +154 -37
- agno/models/openai/responses.py +178 -105
- agno/models/perplexity/perplexity.py +26 -2
- agno/models/portkey/portkey.py +0 -7
- agno/models/response.py +15 -9
- agno/models/utils.py +20 -0
- agno/models/vercel/__init__.py +2 -2
- agno/models/vercel/v0.py +1 -1
- agno/models/vllm/__init__.py +2 -2
- agno/models/vllm/vllm.py +3 -3
- agno/models/xai/xai.py +10 -10
- agno/os/__init__.py +3 -0
- agno/os/app.py +497 -0
- agno/os/auth.py +47 -0
- agno/os/config.py +103 -0
- agno/os/interfaces/agui/__init__.py +3 -0
- agno/os/interfaces/agui/agui.py +31 -0
- agno/{app/agui/async_router.py → os/interfaces/agui/router.py} +16 -16
- agno/{app → os/interfaces}/agui/utils.py +65 -28
- agno/os/interfaces/base.py +21 -0
- agno/os/interfaces/slack/__init__.py +3 -0
- agno/{app/slack/async_router.py → os/interfaces/slack/router.py} +3 -5
- agno/os/interfaces/slack/slack.py +32 -0
- agno/os/interfaces/whatsapp/__init__.py +3 -0
- agno/{app/whatsapp/async_router.py → os/interfaces/whatsapp/router.py} +4 -7
- agno/os/interfaces/whatsapp/whatsapp.py +29 -0
- agno/os/mcp.py +235 -0
- agno/os/router.py +1400 -0
- agno/os/routers/__init__.py +3 -0
- agno/os/routers/evals/__init__.py +3 -0
- agno/os/routers/evals/evals.py +393 -0
- agno/os/routers/evals/schemas.py +142 -0
- agno/os/routers/evals/utils.py +161 -0
- agno/os/routers/knowledge/__init__.py +3 -0
- agno/os/routers/knowledge/knowledge.py +850 -0
- agno/os/routers/knowledge/schemas.py +118 -0
- agno/os/routers/memory/__init__.py +3 -0
- agno/os/routers/memory/memory.py +410 -0
- agno/os/routers/memory/schemas.py +58 -0
- agno/os/routers/metrics/__init__.py +3 -0
- agno/os/routers/metrics/metrics.py +178 -0
- agno/os/routers/metrics/schemas.py +47 -0
- agno/os/routers/session/__init__.py +3 -0
- agno/os/routers/session/session.py +536 -0
- agno/os/schema.py +945 -0
- agno/{app/playground → os}/settings.py +7 -15
- agno/os/utils.py +270 -0
- agno/reasoning/azure_ai_foundry.py +4 -4
- agno/reasoning/deepseek.py +4 -4
- agno/reasoning/default.py +6 -11
- agno/reasoning/groq.py +4 -4
- agno/reasoning/helpers.py +4 -6
- agno/reasoning/ollama.py +4 -4
- agno/reasoning/openai.py +4 -4
- agno/run/agent.py +633 -0
- agno/run/base.py +53 -77
- agno/run/cancel.py +81 -0
- agno/run/team.py +243 -96
- agno/run/workflow.py +550 -12
- agno/session/__init__.py +10 -0
- agno/session/agent.py +244 -0
- agno/session/summary.py +225 -0
- agno/session/team.py +262 -0
- agno/{storage/session/v2 → session}/workflow.py +47 -24
- agno/team/__init__.py +15 -16
- agno/team/team.py +3260 -4824
- agno/tools/agentql.py +14 -5
- agno/tools/airflow.py +9 -4
- agno/tools/api.py +7 -3
- agno/tools/apify.py +2 -46
- agno/tools/arxiv.py +8 -3
- agno/tools/aws_lambda.py +7 -5
- agno/tools/aws_ses.py +7 -1
- agno/tools/baidusearch.py +4 -1
- agno/tools/bitbucket.py +4 -4
- agno/tools/brandfetch.py +14 -11
- agno/tools/bravesearch.py +4 -1
- agno/tools/brightdata.py +43 -23
- agno/tools/browserbase.py +13 -4
- agno/tools/calcom.py +12 -10
- agno/tools/calculator.py +10 -27
- agno/tools/cartesia.py +20 -17
- agno/tools/{clickup_tool.py → clickup.py} +12 -25
- agno/tools/confluence.py +8 -8
- agno/tools/crawl4ai.py +7 -1
- agno/tools/csv_toolkit.py +9 -8
- agno/tools/dalle.py +22 -12
- agno/tools/daytona.py +13 -16
- agno/tools/decorator.py +6 -3
- agno/tools/desi_vocal.py +17 -8
- agno/tools/discord.py +11 -8
- agno/tools/docker.py +30 -42
- agno/tools/duckdb.py +34 -53
- agno/tools/duckduckgo.py +8 -7
- agno/tools/e2b.py +62 -62
- agno/tools/eleven_labs.py +36 -29
- agno/tools/email.py +4 -1
- agno/tools/evm.py +7 -1
- agno/tools/exa.py +19 -14
- agno/tools/fal.py +30 -30
- agno/tools/file.py +9 -8
- agno/tools/financial_datasets.py +25 -44
- agno/tools/firecrawl.py +17 -18
- agno/tools/function.py +127 -18
- agno/tools/giphy.py +23 -11
- agno/tools/github.py +48 -126
- agno/tools/gmail.py +45 -61
- agno/tools/google_bigquery.py +7 -6
- agno/tools/google_maps.py +11 -26
- agno/tools/googlesearch.py +7 -2
- agno/tools/googlesheets.py +21 -17
- agno/tools/hackernews.py +9 -5
- agno/tools/jina.py +5 -4
- agno/tools/jira.py +18 -9
- agno/tools/knowledge.py +31 -32
- agno/tools/linear.py +18 -33
- agno/tools/linkup.py +5 -1
- agno/tools/local_file_system.py +8 -5
- agno/tools/lumalab.py +32 -20
- agno/tools/mcp.py +1 -2
- agno/tools/mem0.py +18 -12
- agno/tools/memori.py +14 -10
- agno/tools/mlx_transcribe.py +3 -2
- agno/tools/models/azure_openai.py +33 -15
- agno/tools/models/gemini.py +59 -32
- agno/tools/models/groq.py +30 -23
- agno/tools/models/nebius.py +28 -12
- agno/tools/models_labs.py +40 -16
- agno/tools/moviepy_video.py +7 -6
- agno/tools/neo4j.py +10 -8
- agno/tools/newspaper.py +7 -2
- agno/tools/newspaper4k.py +8 -3
- agno/tools/openai.py +58 -32
- agno/tools/openbb.py +12 -11
- agno/tools/opencv.py +63 -47
- agno/tools/openweather.py +14 -12
- agno/tools/pandas.py +11 -3
- agno/tools/postgres.py +4 -12
- agno/tools/pubmed.py +4 -1
- agno/tools/python.py +9 -22
- agno/tools/reasoning.py +35 -27
- agno/tools/reddit.py +11 -26
- agno/tools/replicate.py +55 -42
- agno/tools/resend.py +4 -1
- agno/tools/scrapegraph.py +15 -14
- agno/tools/searxng.py +10 -23
- agno/tools/serpapi.py +6 -3
- agno/tools/serper.py +13 -4
- agno/tools/shell.py +9 -2
- agno/tools/slack.py +12 -11
- agno/tools/sleep.py +3 -2
- agno/tools/spider.py +24 -4
- agno/tools/sql.py +7 -6
- agno/tools/tavily.py +6 -4
- agno/tools/telegram.py +12 -4
- agno/tools/todoist.py +11 -31
- agno/tools/toolkit.py +1 -1
- agno/tools/trafilatura.py +22 -6
- agno/tools/trello.py +9 -22
- agno/tools/twilio.py +10 -3
- agno/tools/user_control_flow.py +6 -1
- agno/tools/valyu.py +34 -5
- agno/tools/visualization.py +19 -28
- agno/tools/webbrowser.py +4 -3
- agno/tools/webex.py +11 -7
- agno/tools/website.py +15 -46
- agno/tools/webtools.py +12 -4
- agno/tools/whatsapp.py +5 -9
- agno/tools/wikipedia.py +20 -13
- agno/tools/x.py +14 -13
- agno/tools/yfinance.py +13 -40
- agno/tools/youtube.py +26 -20
- agno/tools/zendesk.py +7 -2
- agno/tools/zep.py +10 -7
- agno/tools/zoom.py +10 -9
- agno/utils/common.py +1 -19
- agno/utils/events.py +100 -123
- agno/utils/gemini.py +1 -1
- agno/utils/knowledge.py +29 -0
- agno/utils/log.py +54 -4
- agno/utils/mcp.py +68 -10
- agno/utils/media.py +39 -0
- agno/utils/message.py +12 -1
- agno/utils/models/aws_claude.py +1 -1
- agno/utils/models/claude.py +6 -12
- agno/utils/models/cohere.py +1 -1
- agno/utils/models/mistral.py +8 -7
- agno/utils/models/schema_utils.py +3 -3
- agno/utils/models/watsonx.py +1 -1
- agno/utils/openai.py +1 -1
- agno/utils/pprint.py +33 -32
- agno/utils/print_response/agent.py +779 -0
- agno/utils/print_response/team.py +1669 -0
- agno/utils/print_response/workflow.py +1451 -0
- agno/utils/prompts.py +14 -14
- agno/utils/reasoning.py +87 -0
- agno/utils/response.py +42 -42
- agno/utils/streamlit.py +481 -0
- agno/utils/string.py +8 -22
- agno/utils/team.py +50 -0
- agno/utils/timer.py +2 -2
- agno/vectordb/base.py +33 -21
- agno/vectordb/cassandra/cassandra.py +287 -23
- agno/vectordb/chroma/chromadb.py +482 -59
- agno/vectordb/clickhouse/clickhousedb.py +270 -63
- agno/vectordb/couchbase/couchbase.py +309 -29
- agno/vectordb/lancedb/lance_db.py +360 -21
- agno/vectordb/langchaindb/__init__.py +5 -0
- agno/vectordb/langchaindb/langchaindb.py +145 -0
- agno/vectordb/lightrag/__init__.py +5 -0
- agno/vectordb/lightrag/lightrag.py +374 -0
- agno/vectordb/llamaindex/llamaindexdb.py +127 -0
- agno/vectordb/milvus/milvus.py +242 -32
- agno/vectordb/mongodb/mongodb.py +200 -24
- agno/vectordb/pgvector/pgvector.py +319 -37
- agno/vectordb/pineconedb/pineconedb.py +221 -27
- agno/vectordb/qdrant/qdrant.py +334 -14
- agno/vectordb/singlestore/singlestore.py +286 -29
- agno/vectordb/surrealdb/surrealdb.py +187 -7
- agno/vectordb/upstashdb/upstashdb.py +342 -26
- agno/vectordb/weaviate/weaviate.py +227 -165
- agno/workflow/__init__.py +17 -13
- agno/workflow/{v2/condition.py → condition.py} +135 -32
- agno/workflow/{v2/loop.py → loop.py} +115 -28
- agno/workflow/{v2/parallel.py → parallel.py} +138 -108
- agno/workflow/{v2/router.py → router.py} +133 -32
- agno/workflow/{v2/step.py → step.py} +207 -49
- agno/workflow/{v2/steps.py → steps.py} +147 -66
- agno/workflow/types.py +482 -0
- agno/workflow/workflow.py +2410 -696
- agno-2.0.0.dist-info/METADATA +494 -0
- agno-2.0.0.dist-info/RECORD +515 -0
- agno-2.0.0.dist-info/licenses/LICENSE +201 -0
- agno/agent/metrics.py +0 -110
- agno/api/app.py +0 -35
- agno/api/playground.py +0 -92
- agno/api/schemas/app.py +0 -12
- agno/api/schemas/playground.py +0 -22
- agno/api/schemas/user.py +0 -35
- agno/api/schemas/workspace.py +0 -46
- agno/api/user.py +0 -160
- agno/api/workflows.py +0 -33
- agno/api/workspace.py +0 -175
- agno/app/agui/__init__.py +0 -3
- agno/app/agui/app.py +0 -17
- agno/app/agui/sync_router.py +0 -120
- agno/app/base.py +0 -186
- agno/app/discord/__init__.py +0 -3
- agno/app/fastapi/__init__.py +0 -3
- agno/app/fastapi/app.py +0 -107
- agno/app/fastapi/async_router.py +0 -457
- agno/app/fastapi/sync_router.py +0 -448
- agno/app/playground/app.py +0 -228
- agno/app/playground/async_router.py +0 -1053
- agno/app/playground/deploy.py +0 -249
- agno/app/playground/operator.py +0 -183
- agno/app/playground/schemas.py +0 -223
- agno/app/playground/serve.py +0 -55
- agno/app/playground/sync_router.py +0 -1045
- agno/app/playground/utils.py +0 -46
- agno/app/settings.py +0 -15
- agno/app/slack/__init__.py +0 -3
- agno/app/slack/app.py +0 -19
- agno/app/slack/sync_router.py +0 -92
- agno/app/utils.py +0 -54
- agno/app/whatsapp/__init__.py +0 -3
- agno/app/whatsapp/app.py +0 -15
- agno/app/whatsapp/sync_router.py +0 -197
- agno/cli/auth_server.py +0 -249
- agno/cli/config.py +0 -274
- agno/cli/console.py +0 -88
- agno/cli/credentials.py +0 -23
- agno/cli/entrypoint.py +0 -571
- agno/cli/operator.py +0 -357
- agno/cli/settings.py +0 -96
- agno/cli/ws/ws_cli.py +0 -817
- agno/constants.py +0 -13
- agno/document/__init__.py +0 -5
- agno/document/chunking/semantic.py +0 -45
- agno/document/chunking/strategy.py +0 -31
- agno/document/reader/__init__.py +0 -5
- agno/document/reader/base.py +0 -47
- agno/document/reader/docx_reader.py +0 -60
- agno/document/reader/gcs/pdf_reader.py +0 -44
- agno/document/reader/s3/pdf_reader.py +0 -59
- agno/document/reader/s3/text_reader.py +0 -63
- agno/document/reader/url_reader.py +0 -59
- agno/document/reader/youtube_reader.py +0 -58
- agno/embedder/__init__.py +0 -5
- agno/embedder/langdb.py +0 -80
- agno/embedder/mistral.py +0 -82
- agno/embedder/openai.py +0 -78
- agno/file/__init__.py +0 -5
- agno/file/file.py +0 -16
- agno/file/local/csv.py +0 -32
- agno/file/local/txt.py +0 -19
- agno/infra/app.py +0 -240
- agno/infra/base.py +0 -144
- agno/infra/context.py +0 -20
- agno/infra/db_app.py +0 -52
- agno/infra/resource.py +0 -205
- agno/infra/resources.py +0 -55
- agno/knowledge/agent.py +0 -702
- agno/knowledge/arxiv.py +0 -33
- agno/knowledge/combined.py +0 -36
- agno/knowledge/csv.py +0 -144
- agno/knowledge/csv_url.py +0 -124
- agno/knowledge/document.py +0 -223
- agno/knowledge/docx.py +0 -137
- agno/knowledge/firecrawl.py +0 -34
- agno/knowledge/gcs/__init__.py +0 -0
- agno/knowledge/gcs/base.py +0 -39
- agno/knowledge/gcs/pdf.py +0 -125
- agno/knowledge/json.py +0 -137
- agno/knowledge/langchain.py +0 -71
- agno/knowledge/light_rag.py +0 -273
- agno/knowledge/llamaindex.py +0 -66
- agno/knowledge/markdown.py +0 -154
- agno/knowledge/pdf.py +0 -164
- agno/knowledge/pdf_bytes.py +0 -42
- agno/knowledge/pdf_url.py +0 -148
- agno/knowledge/s3/__init__.py +0 -0
- agno/knowledge/s3/base.py +0 -64
- agno/knowledge/s3/pdf.py +0 -33
- agno/knowledge/s3/text.py +0 -34
- agno/knowledge/text.py +0 -141
- agno/knowledge/url.py +0 -46
- agno/knowledge/website.py +0 -179
- agno/knowledge/wikipedia.py +0 -32
- agno/knowledge/youtube.py +0 -35
- agno/memory/agent.py +0 -423
- agno/memory/classifier.py +0 -104
- agno/memory/db/__init__.py +0 -5
- agno/memory/db/base.py +0 -42
- agno/memory/db/mongodb.py +0 -189
- agno/memory/db/postgres.py +0 -203
- agno/memory/db/sqlite.py +0 -193
- agno/memory/memory.py +0 -22
- agno/memory/row.py +0 -36
- agno/memory/summarizer.py +0 -201
- agno/memory/summary.py +0 -19
- agno/memory/team.py +0 -415
- agno/memory/v2/__init__.py +0 -2
- agno/memory/v2/db/__init__.py +0 -1
- agno/memory/v2/db/base.py +0 -42
- agno/memory/v2/db/firestore.py +0 -339
- agno/memory/v2/db/mongodb.py +0 -196
- agno/memory/v2/db/postgres.py +0 -214
- agno/memory/v2/db/redis.py +0 -187
- agno/memory/v2/db/schema.py +0 -54
- agno/memory/v2/db/sqlite.py +0 -209
- agno/memory/v2/manager.py +0 -437
- agno/memory/v2/memory.py +0 -1097
- agno/memory/v2/schema.py +0 -55
- agno/memory/v2/summarizer.py +0 -215
- agno/memory/workflow.py +0 -38
- agno/models/ollama/tools.py +0 -430
- agno/models/qwen/__init__.py +0 -5
- agno/playground/__init__.py +0 -10
- agno/playground/deploy.py +0 -3
- agno/playground/playground.py +0 -3
- agno/playground/serve.py +0 -3
- agno/playground/settings.py +0 -3
- agno/reranker/__init__.py +0 -0
- agno/run/response.py +0 -467
- agno/run/v2/__init__.py +0 -0
- agno/run/v2/workflow.py +0 -567
- agno/storage/__init__.py +0 -0
- agno/storage/agent/__init__.py +0 -0
- agno/storage/agent/dynamodb.py +0 -1
- agno/storage/agent/json.py +0 -1
- agno/storage/agent/mongodb.py +0 -1
- agno/storage/agent/postgres.py +0 -1
- agno/storage/agent/singlestore.py +0 -1
- agno/storage/agent/sqlite.py +0 -1
- agno/storage/agent/yaml.py +0 -1
- agno/storage/base.py +0 -60
- agno/storage/dynamodb.py +0 -673
- agno/storage/firestore.py +0 -297
- agno/storage/gcs_json.py +0 -261
- agno/storage/in_memory.py +0 -234
- agno/storage/json.py +0 -237
- agno/storage/mongodb.py +0 -328
- agno/storage/mysql.py +0 -685
- agno/storage/postgres.py +0 -682
- agno/storage/redis.py +0 -336
- agno/storage/session/__init__.py +0 -16
- agno/storage/session/agent.py +0 -64
- agno/storage/session/team.py +0 -63
- agno/storage/session/v2/__init__.py +0 -5
- agno/storage/session/workflow.py +0 -61
- agno/storage/singlestore.py +0 -606
- agno/storage/sqlite.py +0 -646
- agno/storage/workflow/__init__.py +0 -0
- agno/storage/workflow/mongodb.py +0 -1
- agno/storage/workflow/postgres.py +0 -1
- agno/storage/workflow/sqlite.py +0 -1
- agno/storage/yaml.py +0 -241
- agno/tools/thinking.py +0 -73
- agno/utils/defaults.py +0 -57
- agno/utils/filesystem.py +0 -39
- agno/utils/git.py +0 -52
- agno/utils/json_io.py +0 -30
- agno/utils/load_env.py +0 -19
- agno/utils/py_io.py +0 -19
- agno/utils/pyproject.py +0 -18
- agno/utils/resource_filter.py +0 -31
- agno/workflow/v2/__init__.py +0 -21
- agno/workflow/v2/types.py +0 -357
- agno/workflow/v2/workflow.py +0 -3313
- agno/workspace/__init__.py +0 -0
- agno/workspace/config.py +0 -325
- agno/workspace/enums.py +0 -6
- agno/workspace/helpers.py +0 -52
- agno/workspace/operator.py +0 -757
- agno/workspace/settings.py +0 -158
- agno-1.8.2.dist-info/METADATA +0 -982
- agno-1.8.2.dist-info/RECORD +0 -566
- agno-1.8.2.dist-info/entry_points.txt +0 -3
- agno-1.8.2.dist-info/licenses/LICENSE +0 -375
- /agno/{app → db/migrations}/__init__.py +0 -0
- /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
- /agno/{cli → integrations}/__init__.py +0 -0
- /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
- /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
- /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
- /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
- /agno/{app → os/interfaces}/slack/security.py +0 -0
- /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
- /agno/{file/local → utils/print_response}/__init__.py +0 -0
- /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
- {agno-1.8.2.dist-info → agno-2.0.0.dist-info}/WHEEL +0 -0
- {agno-1.8.2.dist-info → agno-2.0.0.dist-info}/top_level.txt +0 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import inspect
|
|
2
2
|
from dataclasses import dataclass
|
|
3
|
-
from typing import AsyncIterator, Awaitable, Callable, Dict, Iterator, List, Optional, Union
|
|
3
|
+
from typing import Any, AsyncIterator, Awaitable, Callable, Dict, Iterator, List, Optional, Union
|
|
4
|
+
from uuid import uuid4
|
|
4
5
|
|
|
5
|
-
from agno.run.
|
|
6
|
-
from agno.run.team import
|
|
7
|
-
from agno.run.
|
|
6
|
+
from agno.run.agent import RunOutputEvent
|
|
7
|
+
from agno.run.team import TeamRunOutputEvent
|
|
8
|
+
from agno.run.workflow import (
|
|
8
9
|
RouterExecutionCompletedEvent,
|
|
9
10
|
RouterExecutionStartedEvent,
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
WorkflowRunOutput,
|
|
12
|
+
WorkflowRunOutputEvent,
|
|
12
13
|
)
|
|
13
14
|
from agno.utils.log import log_debug, logger
|
|
14
|
-
from agno.workflow.
|
|
15
|
-
from agno.workflow.
|
|
15
|
+
from agno.workflow.step import Step
|
|
16
|
+
from agno.workflow.types import StepInput, StepOutput, StepType
|
|
16
17
|
|
|
17
18
|
WorkflowSteps = List[
|
|
18
19
|
Union[
|
|
@@ -47,11 +48,11 @@ class Router:
|
|
|
47
48
|
"""Prepare the steps for execution - mirrors workflow logic"""
|
|
48
49
|
from agno.agent.agent import Agent
|
|
49
50
|
from agno.team.team import Team
|
|
50
|
-
from agno.workflow.
|
|
51
|
-
from agno.workflow.
|
|
52
|
-
from agno.workflow.
|
|
53
|
-
from agno.workflow.
|
|
54
|
-
from agno.workflow.
|
|
51
|
+
from agno.workflow.condition import Condition
|
|
52
|
+
from agno.workflow.loop import Loop
|
|
53
|
+
from agno.workflow.parallel import Parallel
|
|
54
|
+
from agno.workflow.step import Step
|
|
55
|
+
from agno.workflow.steps import Steps
|
|
55
56
|
|
|
56
57
|
prepared_steps: WorkflowSteps = []
|
|
57
58
|
for step in self.choices:
|
|
@@ -97,7 +98,7 @@ class Router:
|
|
|
97
98
|
updated_previous_step_outputs.update(router_step_outputs)
|
|
98
99
|
|
|
99
100
|
return StepInput(
|
|
100
|
-
|
|
101
|
+
input=step_input.input,
|
|
101
102
|
previous_step_content=previous_step_content,
|
|
102
103
|
previous_step_outputs=updated_previous_step_outputs,
|
|
103
104
|
additional_data=step_input.additional_data,
|
|
@@ -142,11 +143,19 @@ class Router:
|
|
|
142
143
|
return []
|
|
143
144
|
|
|
144
145
|
def execute(
|
|
145
|
-
self,
|
|
146
|
-
|
|
146
|
+
self,
|
|
147
|
+
step_input: StepInput,
|
|
148
|
+
session_id: Optional[str] = None,
|
|
149
|
+
user_id: Optional[str] = None,
|
|
150
|
+
workflow_run_response: Optional[WorkflowRunOutput] = None,
|
|
151
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
152
|
+
store_executor_outputs: bool = True,
|
|
153
|
+
) -> StepOutput:
|
|
147
154
|
"""Execute the router and its selected steps with sequential chaining"""
|
|
148
155
|
log_debug(f"Router Start: {self.name}", center=True, symbol="-")
|
|
149
156
|
|
|
157
|
+
router_step_id = str(uuid4())
|
|
158
|
+
|
|
150
159
|
self._prepare_steps()
|
|
151
160
|
|
|
152
161
|
# Route to appropriate steps
|
|
@@ -154,7 +163,13 @@ class Router:
|
|
|
154
163
|
log_debug(f"Router {self.name}: Selected {len(steps_to_execute)} steps to execute")
|
|
155
164
|
|
|
156
165
|
if not steps_to_execute:
|
|
157
|
-
return
|
|
166
|
+
return StepOutput(
|
|
167
|
+
step_name=self.name,
|
|
168
|
+
step_id=router_step_id,
|
|
169
|
+
step_type=StepType.ROUTER,
|
|
170
|
+
content=f"Router {self.name} completed with 0 results (no steps selected)",
|
|
171
|
+
success=True,
|
|
172
|
+
)
|
|
158
173
|
|
|
159
174
|
all_results: List[StepOutput] = []
|
|
160
175
|
current_step_input = step_input
|
|
@@ -162,7 +177,14 @@ class Router:
|
|
|
162
177
|
|
|
163
178
|
for i, step in enumerate(steps_to_execute):
|
|
164
179
|
try:
|
|
165
|
-
step_output = step.execute(
|
|
180
|
+
step_output = step.execute(
|
|
181
|
+
current_step_input,
|
|
182
|
+
session_id=session_id,
|
|
183
|
+
user_id=user_id,
|
|
184
|
+
workflow_run_response=workflow_run_response,
|
|
185
|
+
store_executor_outputs=store_executor_outputs,
|
|
186
|
+
session_state=session_state,
|
|
187
|
+
)
|
|
166
188
|
|
|
167
189
|
# Handle both single StepOutput and List[StepOutput]
|
|
168
190
|
if isinstance(step_output, list):
|
|
@@ -200,22 +222,35 @@ class Router:
|
|
|
200
222
|
break
|
|
201
223
|
|
|
202
224
|
log_debug(f"Router End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
203
|
-
|
|
225
|
+
|
|
226
|
+
return StepOutput(
|
|
227
|
+
step_name=self.name,
|
|
228
|
+
step_id=router_step_id,
|
|
229
|
+
step_type=StepType.ROUTER,
|
|
230
|
+
content=f"Router {self.name} completed with {len(all_results)} results",
|
|
231
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
232
|
+
steps=all_results,
|
|
233
|
+
)
|
|
204
234
|
|
|
205
235
|
def execute_stream(
|
|
206
236
|
self,
|
|
207
237
|
step_input: StepInput,
|
|
208
238
|
session_id: Optional[str] = None,
|
|
209
239
|
user_id: Optional[str] = None,
|
|
240
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
210
241
|
stream_intermediate_steps: bool = False,
|
|
211
|
-
workflow_run_response: Optional[
|
|
242
|
+
workflow_run_response: Optional[WorkflowRunOutput] = None,
|
|
212
243
|
step_index: Optional[Union[int, tuple]] = None,
|
|
213
|
-
|
|
244
|
+
store_executor_outputs: bool = True,
|
|
245
|
+
parent_step_id: Optional[str] = None,
|
|
246
|
+
) -> Iterator[Union[WorkflowRunOutputEvent, StepOutput]]:
|
|
214
247
|
"""Execute the router with streaming support"""
|
|
215
248
|
log_debug(f"Router Start: {self.name}", center=True, symbol="-")
|
|
216
249
|
|
|
217
250
|
self._prepare_steps()
|
|
218
251
|
|
|
252
|
+
router_step_id = str(uuid4())
|
|
253
|
+
|
|
219
254
|
# Route to appropriate steps
|
|
220
255
|
steps_to_execute = self._route_steps(step_input)
|
|
221
256
|
log_debug(f"Router {self.name}: Selected {len(steps_to_execute)} steps to execute")
|
|
@@ -230,6 +265,8 @@ class Router:
|
|
|
230
265
|
step_name=self.name,
|
|
231
266
|
step_index=step_index,
|
|
232
267
|
selected_steps=[getattr(step, "name", f"step_{i}") for i, step in enumerate(steps_to_execute)],
|
|
268
|
+
step_id=router_step_id,
|
|
269
|
+
parent_step_id=parent_step_id,
|
|
233
270
|
)
|
|
234
271
|
|
|
235
272
|
if not steps_to_execute:
|
|
@@ -245,6 +282,8 @@ class Router:
|
|
|
245
282
|
selected_steps=[],
|
|
246
283
|
executed_steps=0,
|
|
247
284
|
step_results=[],
|
|
285
|
+
step_id=router_step_id,
|
|
286
|
+
parent_step_id=parent_step_id,
|
|
248
287
|
)
|
|
249
288
|
return
|
|
250
289
|
|
|
@@ -263,6 +302,9 @@ class Router:
|
|
|
263
302
|
stream_intermediate_steps=stream_intermediate_steps,
|
|
264
303
|
workflow_run_response=workflow_run_response,
|
|
265
304
|
step_index=step_index,
|
|
305
|
+
store_executor_outputs=store_executor_outputs,
|
|
306
|
+
session_state=session_state,
|
|
307
|
+
parent_step_id=router_step_id,
|
|
266
308
|
):
|
|
267
309
|
if isinstance(event, StepOutput):
|
|
268
310
|
step_outputs_for_step.append(event)
|
|
@@ -323,17 +365,33 @@ class Router:
|
|
|
323
365
|
selected_steps=[getattr(step, "name", f"step_{i}") for i, step in enumerate(steps_to_execute)],
|
|
324
366
|
executed_steps=len(steps_to_execute),
|
|
325
367
|
step_results=all_results,
|
|
368
|
+
step_id=router_step_id,
|
|
369
|
+
parent_step_id=parent_step_id,
|
|
326
370
|
)
|
|
327
371
|
|
|
328
|
-
|
|
329
|
-
|
|
372
|
+
yield StepOutput(
|
|
373
|
+
step_name=self.name,
|
|
374
|
+
step_id=router_step_id,
|
|
375
|
+
step_type=StepType.ROUTER,
|
|
376
|
+
content=f"Router {self.name} completed with {len(all_results)} results",
|
|
377
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
378
|
+
steps=all_results,
|
|
379
|
+
)
|
|
330
380
|
|
|
331
381
|
async def aexecute(
|
|
332
|
-
self,
|
|
333
|
-
|
|
382
|
+
self,
|
|
383
|
+
step_input: StepInput,
|
|
384
|
+
session_id: Optional[str] = None,
|
|
385
|
+
user_id: Optional[str] = None,
|
|
386
|
+
workflow_run_response: Optional[WorkflowRunOutput] = None,
|
|
387
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
388
|
+
store_executor_outputs: bool = True,
|
|
389
|
+
) -> StepOutput:
|
|
334
390
|
"""Async execute the router and its selected steps with sequential chaining"""
|
|
335
391
|
log_debug(f"Router Start: {self.name}", center=True, symbol="-")
|
|
336
392
|
|
|
393
|
+
router_step_id = str(uuid4())
|
|
394
|
+
|
|
337
395
|
self._prepare_steps()
|
|
338
396
|
|
|
339
397
|
# Route to appropriate steps
|
|
@@ -341,7 +399,13 @@ class Router:
|
|
|
341
399
|
log_debug(f"Router {self.name} selected: {len(steps_to_execute)} steps to execute")
|
|
342
400
|
|
|
343
401
|
if not steps_to_execute:
|
|
344
|
-
return
|
|
402
|
+
return StepOutput(
|
|
403
|
+
step_name=self.name,
|
|
404
|
+
step_id=router_step_id,
|
|
405
|
+
step_type=StepType.ROUTER,
|
|
406
|
+
content=f"Router {self.name} completed with 0 results (no steps selected)",
|
|
407
|
+
success=True,
|
|
408
|
+
)
|
|
345
409
|
|
|
346
410
|
# Chain steps sequentially like Loop does
|
|
347
411
|
all_results: List[StepOutput] = []
|
|
@@ -350,7 +414,14 @@ class Router:
|
|
|
350
414
|
|
|
351
415
|
for i, step in enumerate(steps_to_execute):
|
|
352
416
|
try:
|
|
353
|
-
step_output = await step.aexecute(
|
|
417
|
+
step_output = await step.aexecute(
|
|
418
|
+
current_step_input,
|
|
419
|
+
session_id=session_id,
|
|
420
|
+
user_id=user_id,
|
|
421
|
+
workflow_run_response=workflow_run_response,
|
|
422
|
+
store_executor_outputs=store_executor_outputs,
|
|
423
|
+
session_state=session_state,
|
|
424
|
+
)
|
|
354
425
|
# Handle both single StepOutput and List[StepOutput]
|
|
355
426
|
if isinstance(step_output, list):
|
|
356
427
|
all_results.extend(step_output)
|
|
@@ -390,22 +461,35 @@ class Router:
|
|
|
390
461
|
break # Stop on first error
|
|
391
462
|
|
|
392
463
|
log_debug(f"Router End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
393
|
-
|
|
464
|
+
|
|
465
|
+
return StepOutput(
|
|
466
|
+
step_name=self.name,
|
|
467
|
+
step_id=router_step_id,
|
|
468
|
+
step_type=StepType.ROUTER,
|
|
469
|
+
content=f"Router {self.name} completed with {len(all_results)} results",
|
|
470
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
471
|
+
steps=all_results,
|
|
472
|
+
)
|
|
394
473
|
|
|
395
474
|
async def aexecute_stream(
|
|
396
475
|
self,
|
|
397
476
|
step_input: StepInput,
|
|
398
477
|
session_id: Optional[str] = None,
|
|
399
478
|
user_id: Optional[str] = None,
|
|
479
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
400
480
|
stream_intermediate_steps: bool = False,
|
|
401
|
-
workflow_run_response: Optional[
|
|
481
|
+
workflow_run_response: Optional[WorkflowRunOutput] = None,
|
|
402
482
|
step_index: Optional[Union[int, tuple]] = None,
|
|
403
|
-
|
|
483
|
+
store_executor_outputs: bool = True,
|
|
484
|
+
parent_step_id: Optional[str] = None,
|
|
485
|
+
) -> AsyncIterator[Union[WorkflowRunOutputEvent, TeamRunOutputEvent, RunOutputEvent, StepOutput]]:
|
|
404
486
|
"""Async execute the router with streaming support"""
|
|
405
487
|
log_debug(f"Router Start: {self.name}", center=True, symbol="-")
|
|
406
488
|
|
|
407
489
|
self._prepare_steps()
|
|
408
490
|
|
|
491
|
+
router_step_id = str(uuid4())
|
|
492
|
+
|
|
409
493
|
# Route to appropriate steps
|
|
410
494
|
steps_to_execute = await self._aroute_steps(step_input)
|
|
411
495
|
log_debug(f"Router {self.name} selected: {len(steps_to_execute)} steps to execute")
|
|
@@ -420,6 +504,8 @@ class Router:
|
|
|
420
504
|
step_name=self.name,
|
|
421
505
|
step_index=step_index,
|
|
422
506
|
selected_steps=[getattr(step, "name", f"step_{i}") for i, step in enumerate(steps_to_execute)],
|
|
507
|
+
step_id=router_step_id,
|
|
508
|
+
parent_step_id=parent_step_id,
|
|
423
509
|
)
|
|
424
510
|
|
|
425
511
|
if not steps_to_execute:
|
|
@@ -435,6 +521,8 @@ class Router:
|
|
|
435
521
|
selected_steps=[],
|
|
436
522
|
executed_steps=0,
|
|
437
523
|
step_results=[],
|
|
524
|
+
step_id=router_step_id,
|
|
525
|
+
parent_step_id=parent_step_id,
|
|
438
526
|
)
|
|
439
527
|
return
|
|
440
528
|
|
|
@@ -455,6 +543,9 @@ class Router:
|
|
|
455
543
|
stream_intermediate_steps=stream_intermediate_steps,
|
|
456
544
|
workflow_run_response=workflow_run_response,
|
|
457
545
|
step_index=step_index,
|
|
546
|
+
store_executor_outputs=store_executor_outputs,
|
|
547
|
+
session_state=session_state,
|
|
548
|
+
parent_step_id=router_step_id,
|
|
458
549
|
):
|
|
459
550
|
if isinstance(event, StepOutput):
|
|
460
551
|
step_outputs_for_step.append(event)
|
|
@@ -515,7 +606,17 @@ class Router:
|
|
|
515
606
|
selected_steps=[getattr(step, "name", f"step_{i}") for i, step in enumerate(steps_to_execute)],
|
|
516
607
|
executed_steps=len(steps_to_execute),
|
|
517
608
|
step_results=all_results,
|
|
609
|
+
step_id=router_step_id,
|
|
610
|
+
parent_step_id=parent_step_id,
|
|
518
611
|
)
|
|
519
612
|
|
|
520
|
-
|
|
521
|
-
|
|
613
|
+
yield StepOutput(
|
|
614
|
+
step_name=self.name,
|
|
615
|
+
step_id=router_step_id,
|
|
616
|
+
step_type=StepType.ROUTER,
|
|
617
|
+
content=f"Router {self.name} completed with {len(all_results)} results",
|
|
618
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
619
|
+
error=None,
|
|
620
|
+
stop=False,
|
|
621
|
+
steps=all_results,
|
|
622
|
+
)
|