agno 2.3.8__tar.gz → 2.3.10__tar.gz
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-2.3.8 → agno-2.3.10}/PKG-INFO +7 -2
- {agno-2.3.8 → agno-2.3.10}/README.md +3 -1
- {agno-2.3.8 → agno-2.3.10}/agno/agent/agent.py +134 -94
- agno-2.3.10/agno/db/mysql/__init__.py +4 -0
- agno-2.3.10/agno/db/mysql/async_mysql.py +2888 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/mysql/mysql.py +17 -8
- {agno-2.3.8 → agno-2.3.10}/agno/db/mysql/utils.py +139 -6
- {agno-2.3.8 → agno-2.3.10}/agno/db/postgres/async_postgres.py +10 -5
- {agno-2.3.8 → agno-2.3.10}/agno/db/postgres/postgres.py +7 -2
- {agno-2.3.8 → agno-2.3.10}/agno/db/schemas/evals.py +1 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/singlestore/singlestore.py +5 -1
- {agno-2.3.8 → agno-2.3.10}/agno/db/sqlite/async_sqlite.py +3 -3
- {agno-2.3.8 → agno-2.3.10}/agno/eval/__init__.py +10 -0
- {agno-2.3.8 → agno-2.3.10}/agno/eval/accuracy.py +11 -8
- agno-2.3.10/agno/eval/agent_as_judge.py +861 -0
- agno-2.3.10/agno/eval/base.py +29 -0
- {agno-2.3.8 → agno-2.3.10}/agno/eval/utils.py +2 -1
- {agno-2.3.8 → agno-2.3.10}/agno/exceptions.py +7 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/openai.py +8 -8
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/knowledge.py +1142 -176
- {agno-2.3.8 → agno-2.3.10}/agno/media.py +22 -6
- {agno-2.3.8 → agno-2.3.10}/agno/models/aws/claude.py +8 -7
- {agno-2.3.8 → agno-2.3.10}/agno/models/base.py +61 -2
- agno-2.3.10/agno/models/deepseek/deepseek.py +127 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/google/gemini.py +134 -51
- agno-2.3.10/agno/models/google/utils.py +22 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/message.py +5 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/openai/chat.py +4 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/app.py +64 -74
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/a2a/router.py +3 -4
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/agui/router.py +2 -0
- agno-2.3.10/agno/os/router.py +259 -0
- agno-2.3.10/agno/os/routers/agents/__init__.py +3 -0
- agno-2.3.10/agno/os/routers/agents/router.py +581 -0
- agno-2.3.10/agno/os/routers/agents/schema.py +261 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/evals/evals.py +26 -6
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/evals/schemas.py +34 -2
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/evals/utils.py +77 -18
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/knowledge/knowledge.py +1 -1
- agno-2.3.10/agno/os/routers/teams/__init__.py +3 -0
- agno-2.3.10/agno/os/routers/teams/router.py +496 -0
- agno-2.3.10/agno/os/routers/teams/schema.py +257 -0
- agno-2.3.10/agno/os/routers/workflows/__init__.py +3 -0
- agno-2.3.10/agno/os/routers/workflows/router.py +545 -0
- agno-2.3.10/agno/os/routers/workflows/schema.py +75 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/schema.py +1 -559
- {agno-2.3.8 → agno-2.3.10}/agno/os/utils.py +139 -2
- {agno-2.3.8 → agno-2.3.10}/agno/team/team.py +87 -24
- {agno-2.3.8 → agno-2.3.10}/agno/tools/file_generation.py +12 -6
- {agno-2.3.8 → agno-2.3.10}/agno/tools/firecrawl.py +15 -7
- {agno-2.3.8 → agno-2.3.10}/agno/tools/function.py +37 -23
- agno-2.3.10/agno/tools/shopify.py +1519 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/spotify.py +2 -5
- {agno-2.3.8 → agno-2.3.10}/agno/utils/hooks.py +64 -5
- {agno-2.3.8 → agno-2.3.10}/agno/utils/http.py +2 -2
- {agno-2.3.8 → agno-2.3.10}/agno/utils/media.py +11 -1
- {agno-2.3.8 → agno-2.3.10}/agno/utils/print_response/agent.py +8 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/print_response/team.py +8 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/pgvector/pgvector.py +88 -51
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/parallel.py +5 -3
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/step.py +14 -2
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/types.py +38 -2
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/workflow.py +12 -4
- {agno-2.3.8 → agno-2.3.10}/agno.egg-info/PKG-INFO +7 -2
- {agno-2.3.8 → agno-2.3.10}/agno.egg-info/SOURCES.txt +14 -0
- {agno-2.3.8 → agno-2.3.10}/agno.egg-info/requires.txt +4 -0
- {agno-2.3.8 → agno-2.3.10}/pyproject.toml +2 -1
- agno-2.3.8/agno/db/mysql/__init__.py +0 -3
- agno-2.3.8/agno/models/deepseek/deepseek.py +0 -60
- agno-2.3.8/agno/os/router.py +0 -1863
- {agno-2.3.8 → agno-2.3.10}/LICENSE +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/agent/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/agent.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/api.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/evals.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/os.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/routes.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/agent.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/evals.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/os.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/response.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/team.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/schemas/workflows.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/settings.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/team.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/api/workflow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/cloud/aws/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/cloud/aws/s3/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/cloud/aws/s3/api_client.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/cloud/aws/s3/bucket.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/cloud/aws/s3/object.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/compression/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/compression/manager.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/culture/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/culture/manager.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/async_postgres/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/dynamo/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/dynamo/dynamo.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/dynamo/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/dynamo/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/firestore/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/firestore/firestore.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/firestore/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/firestore/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/gcs_json/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/gcs_json/gcs_json_db.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/gcs_json/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/in_memory/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/in_memory/in_memory_db.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/in_memory/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/json/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/json/json_db.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/json/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/migrations/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/migrations/manager.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/migrations/v1_to_v2.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/migrations/versions/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/migrations/versions/v2_3_0.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/mongo/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/mongo/async_mongo.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/mongo/mongo.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/mongo/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/mongo/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/mysql/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/postgres/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/postgres/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/postgres/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/redis/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/redis/redis.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/redis/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/redis/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/schemas/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/schemas/culture.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/schemas/knowledge.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/schemas/memory.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/schemas/metrics.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/singlestore/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/singlestore/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/singlestore/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/sqlite/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/sqlite/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/sqlite/sqlite.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/sqlite/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/surrealdb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/surrealdb/metrics.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/surrealdb/models.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/surrealdb/queries.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/surrealdb/surrealdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/surrealdb/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/db/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/debug.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/eval/performance.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/eval/reliability.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/filters.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/guardrails/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/guardrails/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/guardrails/openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/guardrails/pii.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/guardrails/prompt_injection.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/hooks/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/hooks/decorator.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/integrations/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/integrations/discord/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/integrations/discord/client.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/agentic.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/document.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/fixed.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/markdown.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/recursive.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/row.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/semantic.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/chunking/strategy.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/content.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/document/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/document/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/aws_bedrock.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/azure_openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/cohere.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/fastembed.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/fireworks.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/google.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/huggingface.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/jina.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/langdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/mistral.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/nebius.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/ollama.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/sentence_transformer.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/together.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/vllm.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/embedder/voyageai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/arxiv_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/csv_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/docx_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/firecrawl_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/json_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/markdown_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/pdf_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/pptx_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/reader_factory.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/s3_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/tavily_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/text_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/web_search_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/website_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/wikipedia_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reader/youtube_reader.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/remote_content/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/remote_content/remote_content.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reranker/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reranker/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reranker/cohere.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reranker/infinity.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/reranker/sentence_transformer.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/types.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/knowledge/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/memory/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/memory/manager.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/memory/strategies/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/memory/strategies/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/memory/strategies/summarize.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/memory/strategies/types.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/aimlapi/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/anthropic/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/anthropic/claude.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/aws/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/aws/bedrock.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/azure/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/azure/ai_foundry.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/azure/openai_chat.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/cerebras/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/cerebras/cerebras.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/cohere/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/cohere/chat.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/cometapi/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/cometapi/cometapi.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/dashscope/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/dashscope/dashscope.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/deepinfra/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/deepseek/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/defaults.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/fireworks/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/fireworks/fireworks.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/google/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/groq/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/groq/groq.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/huggingface/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/huggingface/huggingface.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/ibm/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/ibm/watsonx.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/internlm/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/internlm/internlm.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/langdb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/langdb/langdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/litellm/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/litellm/chat.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/llama_cpp/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/llama_cpp/llama_cpp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/lmstudio/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/meta/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/meta/llama.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/meta/llama_openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/metrics.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/mistral/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/mistral/mistral.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/nebius/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/nebius/nebius.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/nexus/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/nexus/nexus.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/nvidia/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/nvidia/nvidia.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/ollama/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/ollama/chat.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/openai/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/openai/like.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/openai/responses.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/openrouter/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/openrouter/openrouter.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/perplexity/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/perplexity/perplexity.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/portkey/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/portkey/portkey.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/requesty/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/requesty/requesty.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/response.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/sambanova/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/sambanova/sambanova.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/siliconflow/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/siliconflow/siliconflow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/together/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/together/together.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/vercel/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/vercel/v0.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/vertexai/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/vertexai/claude.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/vllm/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/vllm/vllm.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/xai/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/models/xai/xai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/auth.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/config.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/a2a/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/a2a/a2a.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/a2a/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/agui/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/agui/agui.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/agui/utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/slack/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/slack/router.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/slack/security.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/slack/slack.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/whatsapp/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/whatsapp/router.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/whatsapp/security.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/mcp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/middleware/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/middleware/jwt.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/evals/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/health.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/home.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/knowledge/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/knowledge/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/memory/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/memory/memory.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/memory/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/metrics/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/metrics/metrics.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/metrics/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/session/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/session/session.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/traces/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/traces/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/routers/traces/traces.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/os/settings.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/py.typed +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/anthropic.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/azure_ai_foundry.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/deepseek.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/default.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/gemini.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/groq.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/helpers.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/ollama.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/step.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/reasoning/vertexai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/agent.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/cancel.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/messages.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/requirement.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/team.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/run/workflow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/session/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/session/agent.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/session/summary.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/session/team.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/session/workflow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/table.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/team/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/agentql.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/airflow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/api.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/apify.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/arxiv.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/aws_lambda.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/aws_ses.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/baidusearch.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/bitbucket.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/brandfetch.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/bravesearch.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/brightdata.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/browserbase.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/calcom.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/calculator.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/cartesia.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/clickup.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/confluence.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/crawl4ai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/csv_toolkit.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/dalle.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/daytona.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/decorator.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/desi_vocal.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/discord.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/docker.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/duckdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/duckduckgo.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/e2b.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/eleven_labs.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/email.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/evm.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/exa.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/fal.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/file.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/financial_datasets.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/giphy.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/github.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/gmail.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/google_bigquery.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/google_drive.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/google_maps.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/googlecalendar.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/googlesheets.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/hackernews.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/jina.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/jira.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/knowledge.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/linear.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/linkup.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/local_file_system.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/lumalab.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/mcp/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/mcp/mcp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/mcp/multi_mcp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/mcp/params.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/mcp_toolbox.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/mem0.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/memory.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/mlx_transcribe.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/models/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/models/azure_openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/models/gemini.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/models/groq.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/models/morph.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/models/nebius.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/models_labs.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/moviepy_video.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/nano_banana.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/neo4j.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/newspaper.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/newspaper4k.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/notion.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/openbb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/opencv.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/openweather.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/oxylabs.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/pandas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/parallel.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/postgres.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/pubmed.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/python.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/reasoning.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/reddit.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/redshift.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/replicate.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/resend.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/scrapegraph.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/searxng.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/serpapi.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/serper.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/shell.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/slack.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/sleep.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/spider.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/sql.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/streamlit/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/streamlit/components.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/tavily.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/telegram.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/todoist.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/tool_registry.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/toolkit.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/trafilatura.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/trello.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/twilio.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/user_control_flow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/valyu.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/visualization.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/webbrowser.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/webex.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/website.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/webtools.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/whatsapp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/wikipedia.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/workflow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/x.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/yfinance.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/youtube.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/zendesk.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/zep.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tools/zoom.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tracing/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tracing/exporter.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tracing/schemas.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/tracing/setup.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/agent.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/audio.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/certs.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/code_execution.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/common.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/dttm.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/enum.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/env.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/events.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/format_str.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/functions.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/gemini.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/json_schema.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/knowledge.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/location.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/log.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/mcp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/merge_dict.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/message.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/ai_foundry.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/claude.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/cohere.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/llama.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/mistral.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/openai_responses.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/schema_utils.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/models/watsonx.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/openai.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/pickle.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/pprint.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/print_response/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/print_response/workflow.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/prompts.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/reasoning.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/response.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/response_iterator.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/safe_formatter.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/serialize.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/shell.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/streamlit.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/string.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/team.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/timer.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/tokens.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/tools.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/web.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/whatsapp.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/utils/yaml_io.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/base.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/cassandra/cassandra.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/cassandra/index.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/chroma/chromadb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/couchbase/couchbase.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/distance.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/lancedb/lance_db.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/langchaindb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/langchaindb/langchaindb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/lightrag/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/lightrag/lightrag.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/llamaindex/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/milvus/milvus.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/mongodb/mongodb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/pgvector/index.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/pineconedb/pineconedb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/qdrant/qdrant.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/redis/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/redis/redisdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/search.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/singlestore/index.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/singlestore/singlestore.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/surrealdb/surrealdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/upstashdb/upstashdb.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/weaviate/index.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/vectordb/weaviate/weaviate.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/__init__.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/agent.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/condition.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/loop.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/router.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno/workflow/steps.py +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno.egg-info/dependency_links.txt +0 -0
- {agno-2.3.8 → agno-2.3.10}/agno.egg-info/top_level.txt +0 -0
- {agno-2.3.8 → agno-2.3.10}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.10
|
|
4
4
|
Summary: Agno: a lightweight library for building Multi-Agent Systems
|
|
5
5
|
Author-email: Ashpreet Bedi <ashpreet@agno.com>
|
|
6
6
|
Project-URL: homepage, https://agno.com
|
|
@@ -210,6 +210,9 @@ Requires-Dist: google-cloud-firestore; extra == "firestore"
|
|
|
210
210
|
Provides-Extra: redis
|
|
211
211
|
Requires-Dist: redis; extra == "redis"
|
|
212
212
|
Requires-Dist: redisvl; extra == "redis"
|
|
213
|
+
Provides-Extra: mysql
|
|
214
|
+
Requires-Dist: pymysql; extra == "mysql"
|
|
215
|
+
Requires-Dist: asyncmy; extra == "mysql"
|
|
213
216
|
Provides-Extra: pgvector
|
|
214
217
|
Requires-Dist: pgvector; extra == "pgvector"
|
|
215
218
|
Provides-Extra: chromadb
|
|
@@ -417,7 +420,9 @@ Dynamic: license-file
|
|
|
417
420
|
|
|
418
421
|
Agno is an incredibly fast multi-agent framework, runtime and control plane.
|
|
419
422
|
|
|
420
|
-
|
|
423
|
+
Companies want to build AI products, run them as a secure containerized service in their cloud, and monitor, test, and manage their agentic system with a beautiful UI. Doing this takes far more than calling an LLM API in a loop, it requires a thoughtfully designed agentic platform.
|
|
424
|
+
|
|
425
|
+
Agno provides the unified stack for building, running and managing multi-agent systems:
|
|
421
426
|
|
|
422
427
|
- **Framework**: Build agents, multi-agent teams and workflows with memory, knowledge, state, guardrails, HITL, context compression, MCP, A2A and 100+ toolkits.
|
|
423
428
|
- **AgentOS Runtime**: Run your multi-agent system in production with a secure, stateless runtime and ready to use integration endpoints.
|
|
@@ -21,7 +21,9 @@
|
|
|
21
21
|
|
|
22
22
|
Agno is an incredibly fast multi-agent framework, runtime and control plane.
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Companies want to build AI products, run them as a secure containerized service in their cloud, and monitor, test, and manage their agentic system with a beautiful UI. Doing this takes far more than calling an LLM API in a loop, it requires a thoughtfully designed agentic platform.
|
|
25
|
+
|
|
26
|
+
Agno provides the unified stack for building, running and managing multi-agent systems:
|
|
25
27
|
|
|
26
28
|
- **Framework**: Build agents, multi-agent teams and workflows with memory, knowledge, state, guardrails, HITL, context compression, MCP, A2A and 100+ toolkits.
|
|
27
29
|
- **AgentOS Runtime**: Run your multi-agent system in production with a secure, stateless runtime and ready to use integration endpoints.
|
|
@@ -9,6 +9,7 @@ from inspect import iscoroutinefunction
|
|
|
9
9
|
from os import getenv
|
|
10
10
|
from textwrap import dedent
|
|
11
11
|
from typing import (
|
|
12
|
+
TYPE_CHECKING,
|
|
12
13
|
Any,
|
|
13
14
|
AsyncIterator,
|
|
14
15
|
Callable,
|
|
@@ -30,6 +31,9 @@ from uuid import uuid4
|
|
|
30
31
|
|
|
31
32
|
from pydantic import BaseModel
|
|
32
33
|
|
|
34
|
+
if TYPE_CHECKING:
|
|
35
|
+
from agno.eval.base import BaseEval
|
|
36
|
+
|
|
33
37
|
from agno.compression.manager import CompressionManager
|
|
34
38
|
from agno.culture.manager import CultureManager
|
|
35
39
|
from agno.db.base import AsyncBaseDb, BaseDb, SessionType, UserMemory
|
|
@@ -131,7 +135,13 @@ from agno.utils.events import (
|
|
|
131
135
|
create_tool_call_started_event,
|
|
132
136
|
handle_event,
|
|
133
137
|
)
|
|
134
|
-
from agno.utils.hooks import
|
|
138
|
+
from agno.utils.hooks import (
|
|
139
|
+
copy_args_for_background,
|
|
140
|
+
filter_hook_args,
|
|
141
|
+
normalize_post_hooks,
|
|
142
|
+
normalize_pre_hooks,
|
|
143
|
+
should_run_hook_in_background,
|
|
144
|
+
)
|
|
135
145
|
from agno.utils.knowledge import get_agentic_or_user_search_filters
|
|
136
146
|
from agno.utils.log import (
|
|
137
147
|
log_debug,
|
|
@@ -270,9 +280,9 @@ class Agent:
|
|
|
270
280
|
|
|
271
281
|
# --- Agent Hooks ---
|
|
272
282
|
# Functions called right after agent-session is loaded, before processing starts
|
|
273
|
-
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None
|
|
283
|
+
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None
|
|
274
284
|
# Functions called after output is generated but before the response is returned
|
|
275
|
-
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None
|
|
285
|
+
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None
|
|
276
286
|
# If True, run hooks as FastAPI background tasks (non-blocking). Set by AgentOS.
|
|
277
287
|
_run_hooks_in_background: Optional[bool] = None
|
|
278
288
|
|
|
@@ -308,6 +318,8 @@ class Agent:
|
|
|
308
318
|
system_message: Optional[Union[str, Callable, Message]] = None
|
|
309
319
|
# Role for the system message
|
|
310
320
|
system_message_role: str = "system"
|
|
321
|
+
# Provide the introduction as the first message from the Agent
|
|
322
|
+
introduction: Optional[str] = None
|
|
311
323
|
# Set to False to skip context building
|
|
312
324
|
build_context: bool = True
|
|
313
325
|
|
|
@@ -436,7 +448,6 @@ class Agent:
|
|
|
436
448
|
model: Optional[Union[Model, str]] = None,
|
|
437
449
|
name: Optional[str] = None,
|
|
438
450
|
id: Optional[str] = None,
|
|
439
|
-
introduction: Optional[str] = None,
|
|
440
451
|
user_id: Optional[str] = None,
|
|
441
452
|
session_id: Optional[str] = None,
|
|
442
453
|
session_state: Optional[Dict[str, Any]] = None,
|
|
@@ -476,8 +487,8 @@ class Agent:
|
|
|
476
487
|
tool_call_limit: Optional[int] = None,
|
|
477
488
|
tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
|
|
478
489
|
tool_hooks: Optional[List[Callable]] = None,
|
|
479
|
-
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None,
|
|
480
|
-
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail]]] = None,
|
|
490
|
+
pre_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None,
|
|
491
|
+
post_hooks: Optional[List[Union[Callable[..., Any], BaseGuardrail, "BaseEval"]]] = None,
|
|
481
492
|
reasoning: bool = False,
|
|
482
493
|
reasoning_model: Optional[Union[Model, str]] = None,
|
|
483
494
|
reasoning_agent: Optional[Agent] = None,
|
|
@@ -490,6 +501,7 @@ class Agent:
|
|
|
490
501
|
send_media_to_model: bool = True,
|
|
491
502
|
system_message: Optional[Union[str, Callable, Message]] = None,
|
|
492
503
|
system_message_role: str = "system",
|
|
504
|
+
introduction: Optional[str] = None,
|
|
493
505
|
build_context: bool = True,
|
|
494
506
|
description: Optional[str] = None,
|
|
495
507
|
instructions: Optional[Union[str, List[str], Callable]] = None,
|
|
@@ -1559,6 +1571,7 @@ class Agent:
|
|
|
1559
1571
|
session_id: Optional[str] = None,
|
|
1560
1572
|
session_state: Optional[Dict[str, Any]] = None,
|
|
1561
1573
|
run_context: Optional[RunContext] = None,
|
|
1574
|
+
run_id: Optional[str] = None,
|
|
1562
1575
|
audio: Optional[Sequence[Audio]] = None,
|
|
1563
1576
|
images: Optional[Sequence[Image]] = None,
|
|
1564
1577
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -1586,6 +1599,7 @@ class Agent:
|
|
|
1586
1599
|
session_id: Optional[str] = None,
|
|
1587
1600
|
session_state: Optional[Dict[str, Any]] = None,
|
|
1588
1601
|
run_context: Optional[RunContext] = None,
|
|
1602
|
+
run_id: Optional[str] = None,
|
|
1589
1603
|
audio: Optional[Sequence[Audio]] = None,
|
|
1590
1604
|
images: Optional[Sequence[Image]] = None,
|
|
1591
1605
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -1614,6 +1628,7 @@ class Agent:
|
|
|
1614
1628
|
session_id: Optional[str] = None,
|
|
1615
1629
|
session_state: Optional[Dict[str, Any]] = None,
|
|
1616
1630
|
run_context: Optional[RunContext] = None,
|
|
1631
|
+
run_id: Optional[str] = None,
|
|
1617
1632
|
audio: Optional[Sequence[Audio]] = None,
|
|
1618
1633
|
images: Optional[Sequence[Image]] = None,
|
|
1619
1634
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -1636,8 +1651,8 @@ class Agent:
|
|
|
1636
1651
|
"`run` method is not supported with an async database. Please use `arun` method instead."
|
|
1637
1652
|
)
|
|
1638
1653
|
|
|
1639
|
-
#
|
|
1640
|
-
run_id = str(uuid4())
|
|
1654
|
+
# Set the id for the run and register it immediately for cancellation tracking
|
|
1655
|
+
run_id = run_id or str(uuid4())
|
|
1641
1656
|
register_run(run_id)
|
|
1642
1657
|
|
|
1643
1658
|
if (add_history_to_context or self.add_history_to_context) and not self.db and not self.team_id:
|
|
@@ -1664,9 +1679,9 @@ class Agent:
|
|
|
1664
1679
|
# Normalise hook & guardails
|
|
1665
1680
|
if not self._hooks_normalised:
|
|
1666
1681
|
if self.pre_hooks:
|
|
1667
|
-
self.pre_hooks =
|
|
1682
|
+
self.pre_hooks = normalize_pre_hooks(self.pre_hooks) # type: ignore
|
|
1668
1683
|
if self.post_hooks:
|
|
1669
|
-
self.post_hooks =
|
|
1684
|
+
self.post_hooks = normalize_post_hooks(self.post_hooks) # type: ignore
|
|
1670
1685
|
self._hooks_normalised = True
|
|
1671
1686
|
|
|
1672
1687
|
session_id, user_id = self._initialize_session(session_id=session_id, user_id=user_id)
|
|
@@ -1724,7 +1739,8 @@ class Agent:
|
|
|
1724
1739
|
num_attempts = self.retries + 1
|
|
1725
1740
|
|
|
1726
1741
|
for attempt in range(num_attempts):
|
|
1727
|
-
|
|
1742
|
+
if attempt > 0:
|
|
1743
|
+
log_debug(f"Retrying Agent run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
1728
1744
|
|
|
1729
1745
|
try:
|
|
1730
1746
|
# Resolve dependencies
|
|
@@ -1769,9 +1785,6 @@ class Agent:
|
|
|
1769
1785
|
if stream_events is None:
|
|
1770
1786
|
stream_events = False if self.stream_events is None else self.stream_events
|
|
1771
1787
|
|
|
1772
|
-
self.stream = self.stream or stream
|
|
1773
|
-
self.stream_events = self.stream_events or stream_events
|
|
1774
|
-
|
|
1775
1788
|
# Prepare arguments for the model
|
|
1776
1789
|
response_format = (
|
|
1777
1790
|
self._get_response_format(run_context=run_context) if self.parser_model is None else None
|
|
@@ -1803,74 +1816,69 @@ class Agent:
|
|
|
1803
1816
|
|
|
1804
1817
|
yield_run_output = yield_run_output or yield_run_response # For backwards compatibility
|
|
1805
1818
|
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
run_response.status = RunStatus.cancelled
|
|
1819
|
+
if stream:
|
|
1820
|
+
response_iterator = self._run_stream(
|
|
1821
|
+
run_response=run_response,
|
|
1822
|
+
run_context=run_context,
|
|
1823
|
+
session=agent_session,
|
|
1824
|
+
user_id=user_id,
|
|
1825
|
+
add_history_to_context=add_history,
|
|
1826
|
+
add_dependencies_to_context=add_dependencies,
|
|
1827
|
+
add_session_state_to_context=add_session_state,
|
|
1828
|
+
response_format=response_format,
|
|
1829
|
+
stream_events=stream_events,
|
|
1830
|
+
yield_run_output=yield_run_output,
|
|
1831
|
+
debug_mode=debug_mode,
|
|
1832
|
+
background_tasks=background_tasks,
|
|
1833
|
+
**kwargs,
|
|
1834
|
+
)
|
|
1835
|
+
return response_iterator
|
|
1836
|
+
else:
|
|
1837
|
+
response = self._run(
|
|
1838
|
+
run_response=run_response,
|
|
1839
|
+
run_context=run_context,
|
|
1840
|
+
session=agent_session,
|
|
1841
|
+
user_id=user_id,
|
|
1842
|
+
add_history_to_context=add_history,
|
|
1843
|
+
add_dependencies_to_context=add_dependencies,
|
|
1844
|
+
add_session_state_to_context=add_session_state,
|
|
1845
|
+
response_format=response_format,
|
|
1846
|
+
debug_mode=debug_mode,
|
|
1847
|
+
background_tasks=background_tasks,
|
|
1848
|
+
**kwargs,
|
|
1849
|
+
)
|
|
1850
|
+
return response
|
|
1851
|
+
except (InputCheckError, OutputCheckError) as e:
|
|
1852
|
+
log_error(f"Validation failed: {str(e)} | Check: {e.check_trigger}")
|
|
1853
|
+
raise e
|
|
1854
|
+
except KeyboardInterrupt:
|
|
1855
|
+
run_response.content = "Operation cancelled by user"
|
|
1856
|
+
run_response.status = RunStatus.cancelled
|
|
1845
1857
|
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
)
|
|
1858
|
+
if stream:
|
|
1859
|
+
return generator_wrapper( # type: ignore
|
|
1860
|
+
create_run_cancelled_event(
|
|
1861
|
+
from_run_response=run_response,
|
|
1862
|
+
reason="Operation cancelled by user",
|
|
1852
1863
|
)
|
|
1864
|
+
)
|
|
1865
|
+
else:
|
|
1866
|
+
return run_response
|
|
1867
|
+
except Exception as e:
|
|
1868
|
+
# Check if this is the last attempt
|
|
1869
|
+
if attempt < num_attempts - 1:
|
|
1870
|
+
# Calculate delay with exponential backoff if enabled
|
|
1871
|
+
if self.exponential_backoff:
|
|
1872
|
+
delay = self.delay_between_retries * (2**attempt)
|
|
1853
1873
|
else:
|
|
1854
|
-
|
|
1855
|
-
except Exception as e:
|
|
1856
|
-
# Check if this is the last attempt
|
|
1857
|
-
if attempt < num_attempts - 1:
|
|
1858
|
-
# Calculate delay with exponential backoff if enabled
|
|
1859
|
-
if self.exponential_backoff:
|
|
1860
|
-
delay = self.delay_between_retries * (2**attempt)
|
|
1861
|
-
else:
|
|
1862
|
-
delay = self.delay_between_retries
|
|
1874
|
+
delay = self.delay_between_retries
|
|
1863
1875
|
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
raise
|
|
1871
|
-
except Exception as e:
|
|
1872
|
-
log_error(f"Unexpected error: {str(e)}")
|
|
1873
|
-
if attempt == num_attempts - 1:
|
|
1876
|
+
log_warning(f"Attempt {attempt + 1}/{num_attempts} failed: {str(e)}. Retrying in {delay}s...")
|
|
1877
|
+
time.sleep(delay)
|
|
1878
|
+
continue
|
|
1879
|
+
else:
|
|
1880
|
+
# Final attempt failed - re-raise the exception
|
|
1881
|
+
log_error(f"All {num_attempts} attempts failed. Final error: {str(e)}")
|
|
1874
1882
|
if stream:
|
|
1875
1883
|
return generator_wrapper(create_run_error_event(run_response, error=str(e))) # type: ignore
|
|
1876
1884
|
raise e
|
|
@@ -2539,6 +2547,7 @@ class Agent:
|
|
|
2539
2547
|
session_id: Optional[str] = None,
|
|
2540
2548
|
session_state: Optional[Dict[str, Any]] = None,
|
|
2541
2549
|
run_context: Optional[RunContext] = None,
|
|
2550
|
+
run_id: Optional[str] = None,
|
|
2542
2551
|
audio: Optional[Sequence[Audio]] = None,
|
|
2543
2552
|
images: Optional[Sequence[Image]] = None,
|
|
2544
2553
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -2565,6 +2574,7 @@ class Agent:
|
|
|
2565
2574
|
user_id: Optional[str] = None,
|
|
2566
2575
|
session_id: Optional[str] = None,
|
|
2567
2576
|
run_context: Optional[RunContext] = None,
|
|
2577
|
+
run_id: Optional[str] = None,
|
|
2568
2578
|
audio: Optional[Sequence[Audio]] = None,
|
|
2569
2579
|
images: Optional[Sequence[Image]] = None,
|
|
2570
2580
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -2593,6 +2603,7 @@ class Agent:
|
|
|
2593
2603
|
session_id: Optional[str] = None,
|
|
2594
2604
|
session_state: Optional[Dict[str, Any]] = None,
|
|
2595
2605
|
run_context: Optional[RunContext] = None,
|
|
2606
|
+
run_id: Optional[str] = None,
|
|
2596
2607
|
audio: Optional[Sequence[Audio]] = None,
|
|
2597
2608
|
images: Optional[Sequence[Image]] = None,
|
|
2598
2609
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -2613,8 +2624,8 @@ class Agent:
|
|
|
2613
2624
|
) -> Union[RunOutput, AsyncIterator[RunOutputEvent]]:
|
|
2614
2625
|
"""Async Run the Agent and return the response."""
|
|
2615
2626
|
|
|
2616
|
-
#
|
|
2617
|
-
run_id = str(uuid4())
|
|
2627
|
+
# Set the id for the run and register it immediately for cancellation tracking
|
|
2628
|
+
run_id = run_id or str(uuid4())
|
|
2618
2629
|
register_run(run_id)
|
|
2619
2630
|
|
|
2620
2631
|
if (add_history_to_context or self.add_history_to_context) and not self.db and not self.team_id:
|
|
@@ -2641,9 +2652,9 @@ class Agent:
|
|
|
2641
2652
|
# Normalise hooks & guardails
|
|
2642
2653
|
if not self._hooks_normalised:
|
|
2643
2654
|
if self.pre_hooks:
|
|
2644
|
-
self.pre_hooks =
|
|
2655
|
+
self.pre_hooks = normalize_pre_hooks(self.pre_hooks, async_mode=True) # type: ignore
|
|
2645
2656
|
if self.post_hooks:
|
|
2646
|
-
self.post_hooks =
|
|
2657
|
+
self.post_hooks = normalize_post_hooks(self.post_hooks, async_mode=True) # type: ignore
|
|
2647
2658
|
self._hooks_normalised = True
|
|
2648
2659
|
|
|
2649
2660
|
# Initialize session
|
|
@@ -2697,9 +2708,6 @@ class Agent:
|
|
|
2697
2708
|
if stream_events is None:
|
|
2698
2709
|
stream_events = False if self.stream_events is None else self.stream_events
|
|
2699
2710
|
|
|
2700
|
-
self.stream = self.stream or stream
|
|
2701
|
-
self.stream_events = self.stream_events or stream_events
|
|
2702
|
-
|
|
2703
2711
|
self.model = cast(Model, self.model)
|
|
2704
2712
|
|
|
2705
2713
|
# Get knowledge filters
|
|
@@ -2760,7 +2768,9 @@ class Agent:
|
|
|
2760
2768
|
num_attempts = self.retries + 1
|
|
2761
2769
|
|
|
2762
2770
|
for attempt in range(num_attempts):
|
|
2763
|
-
|
|
2771
|
+
if attempt > 0:
|
|
2772
|
+
log_debug(f"Retrying Agent run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
2773
|
+
|
|
2764
2774
|
try:
|
|
2765
2775
|
# Pass the new run_response to _arun
|
|
2766
2776
|
if stream:
|
|
@@ -2960,7 +2970,8 @@ class Agent:
|
|
|
2960
2970
|
num_attempts = self.retries + 1
|
|
2961
2971
|
|
|
2962
2972
|
for attempt in range(num_attempts):
|
|
2963
|
-
|
|
2973
|
+
if attempt > 0:
|
|
2974
|
+
log_debug(f"Retrying Agent continue_run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
2964
2975
|
|
|
2965
2976
|
try:
|
|
2966
2977
|
# Resolve dependencies
|
|
@@ -3003,9 +3014,6 @@ class Agent:
|
|
|
3003
3014
|
if stream is False:
|
|
3004
3015
|
stream_events = False
|
|
3005
3016
|
|
|
3006
|
-
self.stream = self.stream or stream
|
|
3007
|
-
self.stream_events = self.stream_events or stream_events
|
|
3008
|
-
|
|
3009
3017
|
# Run can be continued from previous run response or from passed run_response context
|
|
3010
3018
|
if run_response is not None:
|
|
3011
3019
|
# The run is continued from a provided run_response. This contains the updated tools.
|
|
@@ -3572,9 +3580,6 @@ class Agent:
|
|
|
3572
3580
|
if stream is False:
|
|
3573
3581
|
stream_events = False
|
|
3574
3582
|
|
|
3575
|
-
self.stream = self.stream or stream
|
|
3576
|
-
self.stream_events = self.stream_events or stream_events
|
|
3577
|
-
|
|
3578
3583
|
# Get knowledge filters
|
|
3579
3584
|
knowledge_filters = knowledge_filters
|
|
3580
3585
|
if self.knowledge_filters or knowledge_filters:
|
|
@@ -3606,7 +3611,8 @@ class Agent:
|
|
|
3606
3611
|
)
|
|
3607
3612
|
|
|
3608
3613
|
for attempt in range(num_attempts):
|
|
3609
|
-
|
|
3614
|
+
if attempt > 0:
|
|
3615
|
+
log_debug(f"Retrying Agent acontinue_run {run_id}. Attempt {attempt + 1} of {num_attempts}...")
|
|
3610
3616
|
|
|
3611
3617
|
try:
|
|
3612
3618
|
if stream:
|
|
@@ -6352,6 +6358,20 @@ class Agent:
|
|
|
6352
6358
|
metadata=self.metadata,
|
|
6353
6359
|
created_at=int(time()),
|
|
6354
6360
|
)
|
|
6361
|
+
if self.introduction is not None:
|
|
6362
|
+
agent_session.upsert_run(
|
|
6363
|
+
RunOutput(
|
|
6364
|
+
run_id=str(uuid4()),
|
|
6365
|
+
session_id=session_id,
|
|
6366
|
+
agent_id=self.id,
|
|
6367
|
+
agent_name=self.name,
|
|
6368
|
+
user_id=user_id,
|
|
6369
|
+
content=self.introduction,
|
|
6370
|
+
messages=[
|
|
6371
|
+
Message(role=self.model.assistant_message_role, content=self.introduction) # type: ignore
|
|
6372
|
+
],
|
|
6373
|
+
)
|
|
6374
|
+
)
|
|
6355
6375
|
|
|
6356
6376
|
if self.cache_session:
|
|
6357
6377
|
self._cached_session = agent_session
|
|
@@ -6395,6 +6415,20 @@ class Agent:
|
|
|
6395
6415
|
metadata=self.metadata,
|
|
6396
6416
|
created_at=int(time()),
|
|
6397
6417
|
)
|
|
6418
|
+
if self.introduction is not None:
|
|
6419
|
+
agent_session.upsert_run(
|
|
6420
|
+
RunOutput(
|
|
6421
|
+
run_id=str(uuid4()),
|
|
6422
|
+
session_id=session_id,
|
|
6423
|
+
agent_id=self.id,
|
|
6424
|
+
agent_name=self.name,
|
|
6425
|
+
user_id=user_id,
|
|
6426
|
+
content=self.introduction,
|
|
6427
|
+
messages=[
|
|
6428
|
+
Message(role=self.model.assistant_message_role, content=self.introduction) # type: ignore
|
|
6429
|
+
],
|
|
6430
|
+
)
|
|
6431
|
+
)
|
|
6398
6432
|
|
|
6399
6433
|
if self.cache_session:
|
|
6400
6434
|
self._cached_session = agent_session
|
|
@@ -10551,6 +10585,7 @@ class Agent:
|
|
|
10551
10585
|
session_id: Optional[str] = None,
|
|
10552
10586
|
session_state: Optional[Dict[str, Any]] = None,
|
|
10553
10587
|
user_id: Optional[str] = None,
|
|
10588
|
+
run_id: Optional[str] = None,
|
|
10554
10589
|
audio: Optional[Sequence[Audio]] = None,
|
|
10555
10590
|
images: Optional[Sequence[Image]] = None,
|
|
10556
10591
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -10600,6 +10635,7 @@ class Agent:
|
|
|
10600
10635
|
session_id=session_id,
|
|
10601
10636
|
session_state=session_state,
|
|
10602
10637
|
user_id=user_id,
|
|
10638
|
+
run_id=run_id,
|
|
10603
10639
|
audio=audio,
|
|
10604
10640
|
images=images,
|
|
10605
10641
|
videos=videos,
|
|
@@ -10628,6 +10664,7 @@ class Agent:
|
|
|
10628
10664
|
session_id=session_id,
|
|
10629
10665
|
session_state=session_state,
|
|
10630
10666
|
user_id=user_id,
|
|
10667
|
+
run_id=run_id,
|
|
10631
10668
|
audio=audio,
|
|
10632
10669
|
images=images,
|
|
10633
10670
|
videos=videos,
|
|
@@ -10655,6 +10692,7 @@ class Agent:
|
|
|
10655
10692
|
session_id: Optional[str] = None,
|
|
10656
10693
|
session_state: Optional[Dict[str, Any]] = None,
|
|
10657
10694
|
user_id: Optional[str] = None,
|
|
10695
|
+
run_id: Optional[str] = None,
|
|
10658
10696
|
audio: Optional[Sequence[Audio]] = None,
|
|
10659
10697
|
images: Optional[Sequence[Image]] = None,
|
|
10660
10698
|
videos: Optional[Sequence[Video]] = None,
|
|
@@ -10698,6 +10736,7 @@ class Agent:
|
|
|
10698
10736
|
session_id=session_id,
|
|
10699
10737
|
session_state=session_state,
|
|
10700
10738
|
user_id=user_id,
|
|
10739
|
+
run_id=run_id,
|
|
10701
10740
|
audio=audio,
|
|
10702
10741
|
images=images,
|
|
10703
10742
|
videos=videos,
|
|
@@ -10725,6 +10764,7 @@ class Agent:
|
|
|
10725
10764
|
session_id=session_id,
|
|
10726
10765
|
session_state=session_state,
|
|
10727
10766
|
user_id=user_id,
|
|
10767
|
+
run_id=run_id,
|
|
10728
10768
|
audio=audio,
|
|
10729
10769
|
images=images,
|
|
10730
10770
|
videos=videos,
|