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,16 +1,17 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
2
|
from typing import Any, AsyncIterator, Awaitable, Callable, Dict, Iterator, List, Optional, Union
|
|
3
|
+
from uuid import uuid4
|
|
3
4
|
|
|
4
|
-
from agno.run.
|
|
5
|
-
from agno.run.team import
|
|
6
|
-
from agno.run.
|
|
5
|
+
from agno.run.agent import RunOutputEvent
|
|
6
|
+
from agno.run.team import TeamRunOutputEvent
|
|
7
|
+
from agno.run.workflow import (
|
|
7
8
|
StepsExecutionCompletedEvent,
|
|
8
9
|
StepsExecutionStartedEvent,
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
WorkflowRunOutput,
|
|
11
|
+
WorkflowRunOutputEvent,
|
|
11
12
|
)
|
|
12
13
|
from agno.utils.log import log_debug, logger
|
|
13
|
-
from agno.workflow.
|
|
14
|
+
from agno.workflow.step import Step, StepInput, StepOutput, StepType
|
|
14
15
|
|
|
15
16
|
WorkflowSteps = List[
|
|
16
17
|
Union[
|
|
@@ -49,11 +50,11 @@ class Steps:
|
|
|
49
50
|
"""Prepare the steps for execution - mirrors workflow logic"""
|
|
50
51
|
from agno.agent.agent import Agent
|
|
51
52
|
from agno.team.team import Team
|
|
52
|
-
from agno.workflow.
|
|
53
|
-
from agno.workflow.
|
|
54
|
-
from agno.workflow.
|
|
55
|
-
from agno.workflow.
|
|
56
|
-
from agno.workflow.
|
|
53
|
+
from agno.workflow.condition import Condition
|
|
54
|
+
from agno.workflow.loop import Loop
|
|
55
|
+
from agno.workflow.parallel import Parallel
|
|
56
|
+
from agno.workflow.router import Router
|
|
57
|
+
from agno.workflow.step import Step
|
|
57
58
|
|
|
58
59
|
prepared_steps: WorkflowSteps = []
|
|
59
60
|
for step in self.steps:
|
|
@@ -101,7 +102,7 @@ class Steps:
|
|
|
101
102
|
updated_previous_step_outputs.update(steps_step_outputs)
|
|
102
103
|
|
|
103
104
|
return StepInput(
|
|
104
|
-
|
|
105
|
+
input=step_input.input,
|
|
105
106
|
previous_step_content=previous_step_content,
|
|
106
107
|
previous_step_outputs=updated_previous_step_outputs,
|
|
107
108
|
additional_data=step_input.additional_data,
|
|
@@ -111,15 +112,23 @@ class Steps:
|
|
|
111
112
|
)
|
|
112
113
|
|
|
113
114
|
def execute(
|
|
114
|
-
self,
|
|
115
|
-
|
|
115
|
+
self,
|
|
116
|
+
step_input: StepInput,
|
|
117
|
+
session_id: Optional[str] = None,
|
|
118
|
+
user_id: Optional[str] = None,
|
|
119
|
+
workflow_run_response: Optional[WorkflowRunOutput] = None,
|
|
120
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
121
|
+
store_executor_outputs: bool = True,
|
|
122
|
+
) -> StepOutput:
|
|
116
123
|
"""Execute all steps in sequence and return the final result"""
|
|
117
124
|
log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
|
|
118
125
|
|
|
126
|
+
steps_id = str(uuid4())
|
|
127
|
+
|
|
119
128
|
self._prepare_steps()
|
|
120
129
|
|
|
121
130
|
if not self.steps:
|
|
122
|
-
return
|
|
131
|
+
return StepOutput(step_name=self.name or "Steps", content="No steps to execute")
|
|
123
132
|
|
|
124
133
|
# Track outputs and pass data between steps - following Condition/Router pattern
|
|
125
134
|
all_results: List[StepOutput] = []
|
|
@@ -132,7 +141,14 @@ class Steps:
|
|
|
132
141
|
log_debug(f"Steps {self.name}: Executing step {i + 1}/{len(self.steps)} - {step_name}")
|
|
133
142
|
|
|
134
143
|
# Execute step
|
|
135
|
-
step_output = step.execute(
|
|
144
|
+
step_output = step.execute( # type: ignore
|
|
145
|
+
current_step_input,
|
|
146
|
+
session_id=session_id,
|
|
147
|
+
user_id=user_id,
|
|
148
|
+
workflow_run_response=workflow_run_response,
|
|
149
|
+
store_executor_outputs=store_executor_outputs,
|
|
150
|
+
session_state=session_state,
|
|
151
|
+
)
|
|
136
152
|
|
|
137
153
|
# Handle both single StepOutput and List[StepOutput] (from Loop/Condition/Router steps)
|
|
138
154
|
if isinstance(step_output, list):
|
|
@@ -158,31 +174,42 @@ class Steps:
|
|
|
158
174
|
)
|
|
159
175
|
|
|
160
176
|
log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
161
|
-
|
|
177
|
+
|
|
178
|
+
return StepOutput(
|
|
179
|
+
step_name=self.name,
|
|
180
|
+
step_id=steps_id,
|
|
181
|
+
step_type=StepType.STEPS,
|
|
182
|
+
content=f"Steps {self.name} completed with {len(all_results)} results",
|
|
183
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
184
|
+
steps=all_results,
|
|
185
|
+
)
|
|
162
186
|
|
|
163
187
|
except Exception as e:
|
|
164
188
|
logger.error(f"Steps execution failed: {e}")
|
|
165
|
-
return
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
)
|
|
172
|
-
]
|
|
189
|
+
return StepOutput(
|
|
190
|
+
step_name=self.name or "Steps",
|
|
191
|
+
content=f"Steps execution failed: {str(e)}",
|
|
192
|
+
success=False,
|
|
193
|
+
error=str(e),
|
|
194
|
+
)
|
|
173
195
|
|
|
174
196
|
def execute_stream(
|
|
175
197
|
self,
|
|
176
198
|
step_input: StepInput,
|
|
177
|
-
workflow_run_response:
|
|
199
|
+
workflow_run_response: WorkflowRunOutput,
|
|
200
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
178
201
|
session_id: Optional[str] = None,
|
|
179
202
|
user_id: Optional[str] = None,
|
|
180
203
|
stream_intermediate_steps: bool = False,
|
|
181
204
|
step_index: Optional[Union[int, tuple]] = None,
|
|
182
|
-
|
|
205
|
+
store_executor_outputs: bool = True,
|
|
206
|
+
parent_step_id: Optional[str] = None,
|
|
207
|
+
) -> Iterator[Union[WorkflowRunOutputEvent, TeamRunOutputEvent, RunOutputEvent, StepOutput]]:
|
|
183
208
|
"""Execute all steps in sequence with streaming support"""
|
|
184
209
|
log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
|
|
185
210
|
|
|
211
|
+
steps_id = str(uuid4())
|
|
212
|
+
|
|
186
213
|
self._prepare_steps()
|
|
187
214
|
|
|
188
215
|
if stream_intermediate_steps:
|
|
@@ -195,6 +222,8 @@ class Steps:
|
|
|
195
222
|
step_name=self.name,
|
|
196
223
|
step_index=step_index,
|
|
197
224
|
steps_count=len(self.steps),
|
|
225
|
+
step_id=steps_id,
|
|
226
|
+
parent_step_id=parent_step_id,
|
|
198
227
|
)
|
|
199
228
|
|
|
200
229
|
if not self.steps:
|
|
@@ -225,9 +254,12 @@ class Steps:
|
|
|
225
254
|
current_step_input,
|
|
226
255
|
session_id=session_id,
|
|
227
256
|
user_id=user_id,
|
|
257
|
+
session_state=session_state,
|
|
228
258
|
stream_intermediate_steps=stream_intermediate_steps,
|
|
229
259
|
workflow_run_response=workflow_run_response,
|
|
230
260
|
step_index=child_step_index,
|
|
261
|
+
store_executor_outputs=store_executor_outputs,
|
|
262
|
+
parent_step_id=steps_id,
|
|
231
263
|
):
|
|
232
264
|
if isinstance(event, StepOutput):
|
|
233
265
|
step_outputs_for_step.append(event)
|
|
@@ -274,10 +306,18 @@ class Steps:
|
|
|
274
306
|
steps_count=len(self.steps),
|
|
275
307
|
executed_steps=len(all_results),
|
|
276
308
|
step_results=all_results,
|
|
309
|
+
step_id=steps_id,
|
|
310
|
+
parent_step_id=parent_step_id,
|
|
277
311
|
)
|
|
278
312
|
|
|
279
|
-
|
|
280
|
-
|
|
313
|
+
yield StepOutput(
|
|
314
|
+
step_name=self.name,
|
|
315
|
+
step_id=steps_id,
|
|
316
|
+
step_type=StepType.STEPS,
|
|
317
|
+
content=f"Steps {self.name} completed with {len(all_results)} results",
|
|
318
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
319
|
+
steps=all_results,
|
|
320
|
+
)
|
|
281
321
|
|
|
282
322
|
except Exception as e:
|
|
283
323
|
logger.error(f"Steps streaming failed: {e}")
|
|
@@ -290,15 +330,23 @@ class Steps:
|
|
|
290
330
|
yield error_result
|
|
291
331
|
|
|
292
332
|
async def aexecute(
|
|
293
|
-
self,
|
|
294
|
-
|
|
333
|
+
self,
|
|
334
|
+
step_input: StepInput,
|
|
335
|
+
session_id: Optional[str] = None,
|
|
336
|
+
user_id: Optional[str] = None,
|
|
337
|
+
workflow_run_response: Optional[WorkflowRunOutput] = None,
|
|
338
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
339
|
+
store_executor_outputs: bool = True,
|
|
340
|
+
) -> StepOutput:
|
|
295
341
|
"""Execute all steps in sequence asynchronously and return the final result"""
|
|
296
342
|
log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
|
|
297
343
|
|
|
344
|
+
steps_id = str(uuid4())
|
|
345
|
+
|
|
298
346
|
self._prepare_steps()
|
|
299
347
|
|
|
300
348
|
if not self.steps:
|
|
301
|
-
return
|
|
349
|
+
return StepOutput(step_name=self.name or "Steps", content="No steps to execute")
|
|
302
350
|
|
|
303
351
|
# Track outputs and pass data between steps - following Condition/Router pattern
|
|
304
352
|
all_results: List[StepOutput] = []
|
|
@@ -311,7 +359,14 @@ class Steps:
|
|
|
311
359
|
log_debug(f"Steps {self.name}: Executing async step {i + 1}/{len(self.steps)} - {step_name}")
|
|
312
360
|
|
|
313
361
|
# Execute step
|
|
314
|
-
step_output = await step.aexecute(
|
|
362
|
+
step_output = await step.aexecute( # type: ignore
|
|
363
|
+
current_step_input,
|
|
364
|
+
session_id=session_id,
|
|
365
|
+
user_id=user_id,
|
|
366
|
+
workflow_run_response=workflow_run_response,
|
|
367
|
+
store_executor_outputs=store_executor_outputs,
|
|
368
|
+
session_state=session_state,
|
|
369
|
+
)
|
|
315
370
|
|
|
316
371
|
# Handle both single StepOutput and List[StepOutput] (from Loop/Condition/Router steps)
|
|
317
372
|
if isinstance(step_output, list):
|
|
@@ -336,43 +391,57 @@ class Steps:
|
|
|
336
391
|
)
|
|
337
392
|
|
|
338
393
|
log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
339
|
-
|
|
394
|
+
|
|
395
|
+
return StepOutput(
|
|
396
|
+
step_name=self.name,
|
|
397
|
+
step_id=steps_id,
|
|
398
|
+
step_type=StepType.STEPS,
|
|
399
|
+
content=f"Steps {self.name} completed with {len(all_results)} results",
|
|
400
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
401
|
+
steps=all_results,
|
|
402
|
+
)
|
|
340
403
|
|
|
341
404
|
except Exception as e:
|
|
342
405
|
logger.error(f"Async steps execution failed: {e}")
|
|
343
|
-
return
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
)
|
|
350
|
-
]
|
|
406
|
+
return StepOutput(
|
|
407
|
+
step_name=self.name or "Steps",
|
|
408
|
+
content=f"Steps execution failed: {str(e)}",
|
|
409
|
+
success=False,
|
|
410
|
+
error=str(e),
|
|
411
|
+
)
|
|
351
412
|
|
|
352
413
|
async def aexecute_stream(
|
|
353
414
|
self,
|
|
354
415
|
step_input: StepInput,
|
|
355
|
-
workflow_run_response:
|
|
416
|
+
workflow_run_response: WorkflowRunOutput,
|
|
417
|
+
session_state: Optional[Dict[str, Any]] = None,
|
|
356
418
|
session_id: Optional[str] = None,
|
|
357
419
|
user_id: Optional[str] = None,
|
|
358
420
|
stream_intermediate_steps: bool = False,
|
|
359
421
|
step_index: Optional[Union[int, tuple]] = None,
|
|
360
|
-
|
|
422
|
+
store_executor_outputs: bool = True,
|
|
423
|
+
parent_step_id: Optional[str] = None,
|
|
424
|
+
) -> AsyncIterator[Union[WorkflowRunOutputEvent, TeamRunOutputEvent, RunOutputEvent, StepOutput]]:
|
|
361
425
|
"""Execute all steps in sequence with async streaming support"""
|
|
362
426
|
log_debug(f"Steps Start: {self.name} ({len(self.steps)} steps)", center=True, symbol="-")
|
|
363
427
|
|
|
428
|
+
steps_id = str(uuid4())
|
|
429
|
+
|
|
364
430
|
self._prepare_steps()
|
|
365
431
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
432
|
+
if stream_intermediate_steps:
|
|
433
|
+
# Yield steps execution started event
|
|
434
|
+
yield StepsExecutionStartedEvent(
|
|
435
|
+
run_id=workflow_run_response.run_id or "",
|
|
436
|
+
workflow_name=workflow_run_response.workflow_name or "",
|
|
437
|
+
workflow_id=workflow_run_response.workflow_id or "",
|
|
438
|
+
session_id=workflow_run_response.session_id or "",
|
|
439
|
+
step_name=self.name,
|
|
440
|
+
step_index=step_index,
|
|
441
|
+
steps_count=len(self.steps),
|
|
442
|
+
step_id=steps_id,
|
|
443
|
+
parent_step_id=parent_step_id,
|
|
444
|
+
)
|
|
376
445
|
|
|
377
446
|
if not self.steps:
|
|
378
447
|
yield StepOutput(step_name=self.name or "Steps", content="No steps to execute")
|
|
@@ -402,9 +471,12 @@ class Steps:
|
|
|
402
471
|
current_step_input,
|
|
403
472
|
session_id=session_id,
|
|
404
473
|
user_id=user_id,
|
|
474
|
+
session_state=session_state,
|
|
405
475
|
stream_intermediate_steps=stream_intermediate_steps,
|
|
406
476
|
workflow_run_response=workflow_run_response,
|
|
407
477
|
step_index=child_step_index,
|
|
478
|
+
store_executor_outputs=store_executor_outputs,
|
|
479
|
+
parent_step_id=steps_id,
|
|
408
480
|
):
|
|
409
481
|
if isinstance(event, StepOutput):
|
|
410
482
|
step_outputs_for_step.append(event)
|
|
@@ -439,21 +511,30 @@ class Steps:
|
|
|
439
511
|
|
|
440
512
|
log_debug(f"Steps End: {self.name} ({len(all_results)} results)", center=True, symbol="-")
|
|
441
513
|
# Yield steps execution completed event
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
514
|
+
if stream_intermediate_steps:
|
|
515
|
+
yield StepsExecutionCompletedEvent(
|
|
516
|
+
run_id=workflow_run_response.run_id or "",
|
|
517
|
+
workflow_name=workflow_run_response.workflow_name or "",
|
|
518
|
+
workflow_id=workflow_run_response.workflow_id or "",
|
|
519
|
+
session_id=workflow_run_response.session_id or "",
|
|
520
|
+
step_name=self.name,
|
|
521
|
+
step_index=step_index,
|
|
522
|
+
steps_count=len(self.steps),
|
|
523
|
+
executed_steps=len(all_results),
|
|
524
|
+
step_results=all_results,
|
|
525
|
+
step_id=steps_id,
|
|
526
|
+
parent_step_id=parent_step_id,
|
|
527
|
+
)
|
|
528
|
+
|
|
529
|
+
yield StepOutput(
|
|
447
530
|
step_name=self.name,
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
531
|
+
step_id=steps_id,
|
|
532
|
+
step_type=StepType.STEPS,
|
|
533
|
+
content=f"Steps {self.name} completed with {len(all_results)} results",
|
|
534
|
+
success=all(result.success for result in all_results) if all_results else True,
|
|
535
|
+
steps=all_results,
|
|
452
536
|
)
|
|
453
537
|
|
|
454
|
-
for result in all_results:
|
|
455
|
-
yield result
|
|
456
|
-
|
|
457
538
|
except Exception as e:
|
|
458
539
|
logger.error(f"Async steps streaming failed: {e}")
|
|
459
540
|
error_result = StepOutput(
|