agno 2.0.9__tar.gz → 2.0.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.0.9 → agno-2.0.10}/PKG-INFO +1 -1
- {agno-2.0.9 → agno-2.0.10}/agno/agent/agent.py +11 -6
- {agno-2.0.9 → agno-2.0.10}/agno/models/aws/claude.py +1 -1
- {agno-2.0.9 → agno-2.0.10}/agno/team/team.py +10 -5
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/claude.py +2 -2
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/workflow.py +11 -6
- {agno-2.0.9 → agno-2.0.10}/agno.egg-info/PKG-INFO +1 -1
- {agno-2.0.9 → agno-2.0.10}/agno.egg-info/SOURCES.txt +0 -1
- {agno-2.0.9 → agno-2.0.10}/pyproject.toml +1 -1
- agno-2.0.9/agno/utils/models/aws_claude.py +0 -170
- {agno-2.0.9 → agno-2.0.10}/LICENSE +0 -0
- {agno-2.0.9 → agno-2.0.10}/README.md +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/agent/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/agent.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/api.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/evals.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/os.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/routes.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/agent.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/evals.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/os.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/response.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/team.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/schemas/workflows.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/settings.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/team.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/api/workflow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/cloud/aws/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/cloud/aws/s3/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/cloud/aws/s3/api_client.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/cloud/aws/s3/bucket.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/cloud/aws/s3/object.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/dynamo/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/dynamo/dynamo.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/dynamo/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/dynamo/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/firestore/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/firestore/firestore.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/firestore/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/firestore/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/gcs_json/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/gcs_json/gcs_json_db.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/gcs_json/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/in_memory/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/in_memory/in_memory_db.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/in_memory/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/json/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/json/json_db.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/json/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/migrations/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/migrations/v1_to_v2.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mongo/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mongo/mongo.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mongo/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mongo/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mysql/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mysql/mysql.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mysql/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/mysql/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/postgres/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/postgres/postgres.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/postgres/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/postgres/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/redis/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/redis/redis.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/redis/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/redis/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/schemas/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/schemas/evals.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/schemas/knowledge.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/schemas/memory.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/schemas/metrics.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/singlestore/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/singlestore/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/singlestore/singlestore.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/singlestore/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/sqlite/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/sqlite/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/sqlite/sqlite.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/sqlite/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/db/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/debug.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/eval/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/eval/accuracy.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/eval/performance.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/eval/reliability.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/eval/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/exceptions.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/integrations/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/integrations/discord/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/integrations/discord/client.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/agentic.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/document.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/fixed.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/markdown.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/recursive.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/row.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/semantic.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/chunking/strategy.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/content.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/document/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/document/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/aws_bedrock.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/azure_openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/cohere.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/fastembed.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/fireworks.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/google.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/huggingface.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/jina.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/langdb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/mistral.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/nebius.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/ollama.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/sentence_transformer.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/together.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/embedder/voyageai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/knowledge.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/arxiv_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/csv_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/docx_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/firecrawl_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/json_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/markdown_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/pdf_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/reader_factory.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/s3_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/text_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/web_search_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/website_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/wikipedia_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reader/youtube_reader.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/remote_content/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/remote_content/remote_content.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reranker/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reranker/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reranker/cohere.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reranker/infinity.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/reranker/sentence_transformer.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/types.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/knowledge/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/media.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/memory/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/memory/manager.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/aimlapi/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/anthropic/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/anthropic/claude.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/aws/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/aws/bedrock.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/azure/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/azure/ai_foundry.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/azure/openai_chat.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/cerebras/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/cerebras/cerebras.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/cohere/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/cohere/chat.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/cometapi/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/cometapi/cometapi.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/dashscope/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/dashscope/dashscope.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/deepinfra/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/deepseek/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/deepseek/deepseek.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/defaults.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/fireworks/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/fireworks/fireworks.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/google/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/google/gemini.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/groq/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/groq/groq.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/huggingface/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/huggingface/huggingface.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/ibm/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/ibm/watsonx.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/internlm/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/internlm/internlm.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/langdb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/langdb/langdb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/litellm/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/litellm/chat.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/llama_cpp/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/llama_cpp/llama_cpp.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/lmstudio/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/message.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/meta/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/meta/llama.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/meta/llama_openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/metrics.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/mistral/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/mistral/mistral.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/nebius/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/nebius/nebius.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/nexus/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/nexus/nexus.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/nvidia/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/nvidia/nvidia.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/ollama/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/ollama/chat.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/openai/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/openai/chat.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/openai/like.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/openai/responses.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/openrouter/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/openrouter/openrouter.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/perplexity/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/perplexity/perplexity.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/portkey/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/portkey/portkey.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/response.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/sambanova/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/sambanova/sambanova.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/siliconflow/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/siliconflow/siliconflow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/together/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/together/together.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/vercel/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/vercel/v0.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/vllm/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/vllm/vllm.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/xai/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/models/xai/xai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/app.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/auth.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/config.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/agui/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/agui/agui.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/agui/router.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/agui/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/slack/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/slack/router.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/slack/security.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/slack/slack.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/whatsapp/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/whatsapp/router.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/whatsapp/security.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/mcp.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/router.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/evals/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/evals/evals.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/evals/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/evals/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/health.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/home.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/knowledge/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/knowledge/knowledge.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/knowledge/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/memory/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/memory/memory.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/memory/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/metrics/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/metrics/metrics.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/metrics/schemas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/session/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/routers/session/session.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/schema.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/settings.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/os/utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/py.typed +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/azure_ai_foundry.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/deepseek.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/default.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/groq.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/helpers.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/ollama.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/reasoning/step.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/run/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/run/agent.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/run/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/run/cancel.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/run/messages.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/run/team.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/run/workflow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/session/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/session/agent.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/session/summary.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/session/team.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/session/workflow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/team/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/agentql.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/airflow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/api.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/apify.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/arxiv.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/aws_lambda.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/aws_ses.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/baidusearch.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/bitbucket.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/brandfetch.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/bravesearch.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/brightdata.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/browserbase.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/calcom.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/calculator.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/cartesia.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/clickup.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/confluence.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/crawl4ai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/csv_toolkit.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/dalle.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/daytona.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/decorator.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/desi_vocal.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/discord.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/docker.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/duckdb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/duckduckgo.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/e2b.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/eleven_labs.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/email.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/evm.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/exa.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/fal.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/file.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/file_generation.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/financial_datasets.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/firecrawl.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/function.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/giphy.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/github.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/gmail.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/google_bigquery.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/google_maps.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/googlecalendar.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/googlesearch.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/googlesheets.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/hackernews.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/jina.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/jira.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/knowledge.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/linear.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/linkup.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/local_file_system.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/lumalab.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/mcp.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/mcp_toolbox.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/mem0.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/memori.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/memory.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/mlx_transcribe.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/models/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/models/azure_openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/models/gemini.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/models/groq.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/models/morph.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/models/nebius.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/models_labs.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/moviepy_video.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/neo4j.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/newspaper.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/newspaper4k.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/openbb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/opencv.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/openweather.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/oxylabs.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/pandas.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/postgres.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/pubmed.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/python.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/reasoning.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/reddit.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/replicate.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/resend.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/scrapegraph.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/searxng.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/serpapi.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/serper.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/shell.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/slack.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/sleep.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/spider.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/sql.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/streamlit/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/streamlit/components.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/tavily.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/telegram.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/todoist.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/tool_registry.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/toolkit.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/trafilatura.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/trello.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/twilio.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/user_control_flow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/valyu.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/visualization.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/webbrowser.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/webex.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/website.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/webtools.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/whatsapp.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/wikipedia.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/workflow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/x.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/yfinance.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/youtube.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/zendesk.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/zep.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/tools/zoom.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/audio.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/certs.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/code_execution.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/common.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/dttm.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/enum.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/env.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/events.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/format_str.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/functions.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/gemini.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/http.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/json_schema.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/knowledge.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/location.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/log.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/mcp.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/media.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/merge_dict.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/message.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/ai_foundry.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/cohere.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/llama.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/mistral.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/openai_responses.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/schema_utils.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/models/watsonx.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/openai.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/pickle.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/pprint.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/print_response/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/print_response/agent.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/print_response/team.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/print_response/workflow.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/prompts.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/reasoning.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/response.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/response_iterator.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/safe_formatter.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/shell.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/streamlit.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/string.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/team.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/timer.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/tools.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/web.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/whatsapp.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/utils/yaml_io.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/base.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/cassandra/cassandra.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/cassandra/index.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/chroma/chromadb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/couchbase/couchbase.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/distance.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/lancedb/lance_db.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/langchaindb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/langchaindb/langchaindb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/lightrag/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/lightrag/lightrag.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/llamaindex/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/milvus/milvus.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/mongodb/mongodb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/pgvector/index.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/pgvector/pgvector.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/pineconedb/pineconedb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/qdrant/qdrant.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/search.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/singlestore/index.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/singlestore/singlestore.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/surrealdb/surrealdb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/upstashdb/upstashdb.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/weaviate/index.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/vectordb/weaviate/weaviate.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/__init__.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/condition.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/loop.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/parallel.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/router.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/step.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/steps.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno/workflow/types.py +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno.egg-info/dependency_links.txt +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno.egg-info/requires.txt +0 -0
- {agno-2.0.9 → agno-2.0.10}/agno.egg-info/top_level.txt +0 -0
- {agno-2.0.9 → agno-2.0.10}/setup.cfg +0 -0
|
@@ -135,6 +135,8 @@ class Agent:
|
|
|
135
135
|
add_session_state_to_context: bool = False
|
|
136
136
|
# Set to True to give the agent tools to update the session_state dynamically
|
|
137
137
|
enable_agentic_state: bool = False
|
|
138
|
+
# Set to True to overwrite the stored session_state with the session_state provided in the run. Default behaviour merges the current session state with the session state in the db
|
|
139
|
+
overwrite_db_session_state: bool = False
|
|
138
140
|
# If True, cache the current Agent session in memory for faster access
|
|
139
141
|
cache_session: bool = False
|
|
140
142
|
|
|
@@ -348,6 +350,7 @@ class Agent:
|
|
|
348
350
|
session_id: Optional[str] = None,
|
|
349
351
|
session_state: Optional[Dict[str, Any]] = None,
|
|
350
352
|
add_session_state_to_context: bool = False,
|
|
353
|
+
overwrite_db_session_state: bool = False,
|
|
351
354
|
enable_agentic_state: bool = False,
|
|
352
355
|
cache_session: bool = False,
|
|
353
356
|
search_session_history: Optional[bool] = False,
|
|
@@ -432,6 +435,7 @@ class Agent:
|
|
|
432
435
|
|
|
433
436
|
self.session_id = session_id
|
|
434
437
|
self.session_state = session_state
|
|
438
|
+
self.overwrite_db_session_state = overwrite_db_session_state
|
|
435
439
|
self.enable_agentic_state = enable_agentic_state
|
|
436
440
|
self.cache_session = cache_session
|
|
437
441
|
|
|
@@ -1113,7 +1117,7 @@ class Agent:
|
|
|
1113
1117
|
self._update_metadata(session=agent_session)
|
|
1114
1118
|
|
|
1115
1119
|
# Update session state from DB
|
|
1116
|
-
session_state = self.
|
|
1120
|
+
session_state = self._load_session_state(session=agent_session, session_state=session_state)
|
|
1117
1121
|
|
|
1118
1122
|
# Determine runtime dependencies
|
|
1119
1123
|
run_dependencies = dependencies if dependencies is not None else self.dependencies
|
|
@@ -1752,7 +1756,7 @@ class Agent:
|
|
|
1752
1756
|
self._update_metadata(session=agent_session)
|
|
1753
1757
|
|
|
1754
1758
|
# Update session state from DB
|
|
1755
|
-
session_state = self.
|
|
1759
|
+
session_state = self._load_session_state(session=agent_session, session_state=session_state)
|
|
1756
1760
|
|
|
1757
1761
|
# Determine run dependencies
|
|
1758
1762
|
run_dependencies = dependencies if dependencies is not None else self.dependencies
|
|
@@ -2019,7 +2023,7 @@ class Agent:
|
|
|
2019
2023
|
self._update_metadata(session=agent_session)
|
|
2020
2024
|
|
|
2021
2025
|
# Update session state from DB
|
|
2022
|
-
session_state = self.
|
|
2026
|
+
session_state = self._load_session_state(session=agent_session, session_state=session_state)
|
|
2023
2027
|
|
|
2024
2028
|
run_dependencies = dependencies if dependencies is not None else self.dependencies
|
|
2025
2029
|
|
|
@@ -2403,7 +2407,7 @@ class Agent:
|
|
|
2403
2407
|
self._update_metadata(session=agent_session)
|
|
2404
2408
|
|
|
2405
2409
|
# Update session state from DB
|
|
2406
|
-
session_state = self.
|
|
2410
|
+
session_state = self._load_session_state(session=agent_session, session_state=session_state)
|
|
2407
2411
|
|
|
2408
2412
|
run_dependencies = dependencies if dependencies is not None else self.dependencies
|
|
2409
2413
|
|
|
@@ -4252,8 +4256,8 @@ class Agent:
|
|
|
4252
4256
|
log_warning(f"Error upserting session into db: {e}")
|
|
4253
4257
|
return None
|
|
4254
4258
|
|
|
4255
|
-
def
|
|
4256
|
-
"""Load the
|
|
4259
|
+
def _load_session_state(self, session: AgentSession, session_state: Dict[str, Any]):
|
|
4260
|
+
"""Load and return the stored session_state from the database, optionally merging it with the given one"""
|
|
4257
4261
|
|
|
4258
4262
|
# Get the session_state from the database and merge with proper precedence
|
|
4259
4263
|
# At this point session_state contains: agent_defaults + run_params
|
|
@@ -4264,6 +4268,7 @@ class Agent:
|
|
|
4264
4268
|
session_state_from_db is not None
|
|
4265
4269
|
and isinstance(session_state_from_db, dict)
|
|
4266
4270
|
and len(session_state_from_db) > 0
|
|
4271
|
+
and not self.overwrite_db_session_state
|
|
4267
4272
|
):
|
|
4268
4273
|
# This preserves precedence: run_params > db_state > agent_defaults
|
|
4269
4274
|
merged_state = session_state_from_db.copy()
|
|
@@ -10,7 +10,7 @@ from agno.models.message import Message
|
|
|
10
10
|
from agno.models.response import ModelResponse
|
|
11
11
|
from agno.run.agent import RunOutput
|
|
12
12
|
from agno.utils.log import log_debug, log_error, log_warning
|
|
13
|
-
from agno.utils.models.
|
|
13
|
+
from agno.utils.models.claude import format_messages
|
|
14
14
|
|
|
15
15
|
try:
|
|
16
16
|
from anthropic import AnthropicBedrock, APIConnectionError, APIStatusError, AsyncAnthropicBedrock, RateLimitError
|
|
@@ -156,6 +156,8 @@ class Team:
|
|
|
156
156
|
add_session_state_to_context: bool = False
|
|
157
157
|
# Set to True to give the team tools to update the session_state dynamically
|
|
158
158
|
enable_agentic_state: bool = False
|
|
159
|
+
# Set to True to overwrite the stored session_state with the session_state provided in the run
|
|
160
|
+
overwrite_db_session_state: bool = False
|
|
159
161
|
# If True, cache the current Team session in memory for faster access
|
|
160
162
|
cache_session: bool = False
|
|
161
163
|
|
|
@@ -364,6 +366,7 @@ class Team:
|
|
|
364
366
|
session_state: Optional[Dict[str, Any]] = None,
|
|
365
367
|
add_session_state_to_context: bool = False,
|
|
366
368
|
enable_agentic_state: bool = False,
|
|
369
|
+
overwrite_db_session_state: bool = False,
|
|
367
370
|
resolve_in_context: bool = True,
|
|
368
371
|
cache_session: bool = False,
|
|
369
372
|
description: Optional[str] = None,
|
|
@@ -453,6 +456,7 @@ class Team:
|
|
|
453
456
|
self.session_state = session_state
|
|
454
457
|
self.add_session_state_to_context = add_session_state_to_context
|
|
455
458
|
self.enable_agentic_state = enable_agentic_state
|
|
459
|
+
self.overwrite_db_session_state = overwrite_db_session_state
|
|
456
460
|
self.resolve_in_context = resolve_in_context
|
|
457
461
|
self.cache_session = cache_session
|
|
458
462
|
|
|
@@ -1156,7 +1160,7 @@ class Team:
|
|
|
1156
1160
|
self._update_metadata(session=team_session)
|
|
1157
1161
|
|
|
1158
1162
|
# Update session state from DB
|
|
1159
|
-
session_state = self.
|
|
1163
|
+
session_state = self._load_session_state(session=team_session, session_state=session_state)
|
|
1160
1164
|
|
|
1161
1165
|
# Determine runtime dependencies
|
|
1162
1166
|
run_dependencies = dependencies if dependencies is not None else self.dependencies
|
|
@@ -1780,7 +1784,7 @@ class Team:
|
|
|
1780
1784
|
self._update_metadata(session=team_session)
|
|
1781
1785
|
|
|
1782
1786
|
# Update session state from DB
|
|
1783
|
-
session_state = self.
|
|
1787
|
+
session_state = self._load_session_state(session=team_session, session_state=session_state)
|
|
1784
1788
|
|
|
1785
1789
|
# Determine run dependencies (runtime override takes priority)
|
|
1786
1790
|
run_dependencies = dependencies if dependencies is not None else self.dependencies
|
|
@@ -4270,7 +4274,7 @@ class Team:
|
|
|
4270
4274
|
system_message_content += f"{indent * ' '} - Name: {member.name}\n"
|
|
4271
4275
|
if member.role is not None:
|
|
4272
4276
|
system_message_content += f"{indent * ' '} - Role: {member.role}\n"
|
|
4273
|
-
if member.tools
|
|
4277
|
+
if member.tools and self.add_member_tools_to_context:
|
|
4274
4278
|
system_message_content += f"{indent * ' '} - Member tools:\n"
|
|
4275
4279
|
for _tool in member.tools:
|
|
4276
4280
|
if isinstance(_tool, Toolkit):
|
|
@@ -6104,8 +6108,8 @@ class Team:
|
|
|
6104
6108
|
self._upsert_session(session=session)
|
|
6105
6109
|
log_debug(f"Created or updated TeamSession record: {session.session_id}")
|
|
6106
6110
|
|
|
6107
|
-
def
|
|
6108
|
-
"""Load the
|
|
6111
|
+
def _load_session_state(self, session: TeamSession, session_state: Dict[str, Any]) -> Dict[str, Any]:
|
|
6112
|
+
"""Load and return the stored session_state from the database, optionally merging it with the given one"""
|
|
6109
6113
|
|
|
6110
6114
|
from agno.utils.merge_dict import merge_dictionaries
|
|
6111
6115
|
|
|
@@ -6118,6 +6122,7 @@ class Team:
|
|
|
6118
6122
|
session_state_from_db is not None
|
|
6119
6123
|
and isinstance(session_state_from_db, dict)
|
|
6120
6124
|
and len(session_state_from_db) > 0
|
|
6125
|
+
and not self.overwrite_db_session_state
|
|
6121
6126
|
):
|
|
6122
6127
|
# This preserves precedence: run_params > db_state > agent_defaults
|
|
6123
6128
|
merged_state = session_state_from_db.copy()
|
|
@@ -69,11 +69,11 @@ def _format_image_for_message(image: Image) -> Optional[Dict[str, Any]]:
|
|
|
69
69
|
try:
|
|
70
70
|
# Case 0: Image is an Anthropic uploaded file
|
|
71
71
|
if image.content is not None and hasattr(image.content, "id"):
|
|
72
|
-
|
|
72
|
+
content_bytes = image.content
|
|
73
73
|
|
|
74
74
|
# Case 1: Image is a URL
|
|
75
75
|
if image.url is not None:
|
|
76
|
-
|
|
76
|
+
content_bytes = image.get_content_bytes() # type: ignore
|
|
77
77
|
|
|
78
78
|
# Case 2: Image is a local file path
|
|
79
79
|
elif image.filepath is not None:
|
|
@@ -136,6 +136,8 @@ class Workflow:
|
|
|
136
136
|
user_id: Optional[str] = None
|
|
137
137
|
# Default session state (stored in the database to persist across runs)
|
|
138
138
|
session_state: Optional[Dict[str, Any]] = None
|
|
139
|
+
# Set to True to overwrite the stored session_state with the session_state provided in the run
|
|
140
|
+
overwrite_db_session_state: bool = False
|
|
139
141
|
|
|
140
142
|
# If True, the workflow runs in debug mode
|
|
141
143
|
debug_mode: Optional[bool] = False
|
|
@@ -176,6 +178,7 @@ class Workflow:
|
|
|
176
178
|
steps: Optional[WorkflowSteps] = None,
|
|
177
179
|
session_id: Optional[str] = None,
|
|
178
180
|
session_state: Optional[Dict[str, Any]] = None,
|
|
181
|
+
overwrite_db_session_state: bool = False,
|
|
179
182
|
user_id: Optional[str] = None,
|
|
180
183
|
debug_mode: Optional[bool] = False,
|
|
181
184
|
stream: Optional[bool] = None,
|
|
@@ -194,6 +197,7 @@ class Workflow:
|
|
|
194
197
|
self.steps = steps
|
|
195
198
|
self.session_id = session_id
|
|
196
199
|
self.session_state = session_state
|
|
200
|
+
self.overwrite_db_session_state = overwrite_db_session_state
|
|
197
201
|
self.user_id = user_id
|
|
198
202
|
self.debug_mode = debug_mode
|
|
199
203
|
self.store_events = store_events
|
|
@@ -599,8 +603,8 @@ class Workflow:
|
|
|
599
603
|
# Update the current metadata with the metadata from the database which is updated in place
|
|
600
604
|
self.metadata = session.metadata
|
|
601
605
|
|
|
602
|
-
def
|
|
603
|
-
"""Load the
|
|
606
|
+
def _load_session_state(self, session: WorkflowSession, session_state: Dict[str, Any]):
|
|
607
|
+
"""Load and return the stored session_state from the database, optionally merging it with the given one"""
|
|
604
608
|
|
|
605
609
|
from agno.utils.merge_dict import merge_dictionaries
|
|
606
610
|
|
|
@@ -613,6 +617,7 @@ class Workflow:
|
|
|
613
617
|
session_state_from_db is not None
|
|
614
618
|
and isinstance(session_state_from_db, dict)
|
|
615
619
|
and len(session_state_from_db) > 0
|
|
620
|
+
and not self.overwrite_db_session_state
|
|
616
621
|
):
|
|
617
622
|
# This preserves precedence: run_params > db_state > agent_defaults
|
|
618
623
|
merged_state = session_state_from_db.copy()
|
|
@@ -1716,7 +1721,7 @@ class Workflow:
|
|
|
1716
1721
|
self._update_metadata(session=workflow_session)
|
|
1717
1722
|
|
|
1718
1723
|
# Update session state from DB
|
|
1719
|
-
session_state = self.
|
|
1724
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
1720
1725
|
|
|
1721
1726
|
self._prepare_steps()
|
|
1722
1727
|
|
|
@@ -1807,7 +1812,7 @@ class Workflow:
|
|
|
1807
1812
|
self._update_metadata(session=workflow_session)
|
|
1808
1813
|
|
|
1809
1814
|
# Update session state from DB
|
|
1810
|
-
session_state = self.
|
|
1815
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
1811
1816
|
|
|
1812
1817
|
self._prepare_steps()
|
|
1813
1818
|
|
|
@@ -1967,7 +1972,7 @@ class Workflow:
|
|
|
1967
1972
|
self._update_metadata(session=workflow_session)
|
|
1968
1973
|
|
|
1969
1974
|
# Update session state from DB
|
|
1970
|
-
session_state = self.
|
|
1975
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
1971
1976
|
|
|
1972
1977
|
log_debug(f"Workflow Run Start: {self.name}", center=True)
|
|
1973
1978
|
|
|
@@ -2137,7 +2142,7 @@ class Workflow:
|
|
|
2137
2142
|
self._update_metadata(session=workflow_session)
|
|
2138
2143
|
|
|
2139
2144
|
# Update session state from DB
|
|
2140
|
-
session_state = self.
|
|
2145
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
2141
2146
|
|
|
2142
2147
|
log_debug(f"Async Workflow Run Start: {self.name}", center=True)
|
|
2143
2148
|
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from typing import Any, Dict, List, Optional, Tuple
|
|
3
|
-
|
|
4
|
-
from agno.media import Image
|
|
5
|
-
from agno.models.message import Message
|
|
6
|
-
from agno.utils.log import log_error, log_warning
|
|
7
|
-
|
|
8
|
-
try:
|
|
9
|
-
from anthropic.types import (
|
|
10
|
-
TextBlock,
|
|
11
|
-
ToolUseBlock,
|
|
12
|
-
)
|
|
13
|
-
except ImportError:
|
|
14
|
-
log_error("`anthropic[bedrock]` not installed. Please install it via `pip install anthropic[bedrock]`.")
|
|
15
|
-
raise
|
|
16
|
-
|
|
17
|
-
ROLE_MAP = {
|
|
18
|
-
"system": "system",
|
|
19
|
-
"user": "user",
|
|
20
|
-
"assistant": "assistant",
|
|
21
|
-
"tool": "user",
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def _format_image_for_message(image: Image) -> Optional[Dict[str, Any]]:
|
|
26
|
-
"""
|
|
27
|
-
Add an image to a message by converting it to base64 encoded format.
|
|
28
|
-
"""
|
|
29
|
-
using_filetype = False
|
|
30
|
-
|
|
31
|
-
import base64
|
|
32
|
-
|
|
33
|
-
# 'imghdr' was deprecated in Python 3.11: https://docs.python.org/3/library/imghdr.html
|
|
34
|
-
# 'filetype' used as a fallback
|
|
35
|
-
try:
|
|
36
|
-
import imghdr
|
|
37
|
-
except (ModuleNotFoundError, ImportError):
|
|
38
|
-
try:
|
|
39
|
-
import filetype
|
|
40
|
-
|
|
41
|
-
using_filetype = True
|
|
42
|
-
except (ModuleNotFoundError, ImportError):
|
|
43
|
-
raise ImportError("`filetype` not installed. Please install using `pip install filetype`")
|
|
44
|
-
|
|
45
|
-
type_mapping = {
|
|
46
|
-
"jpeg": "image/jpeg",
|
|
47
|
-
"jpg": "image/jpeg",
|
|
48
|
-
"png": "image/png",
|
|
49
|
-
"gif": "image/gif",
|
|
50
|
-
"webp": "image/webp",
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
try:
|
|
54
|
-
# Case 1: Image is a URL
|
|
55
|
-
if image.url is not None:
|
|
56
|
-
content_bytes = image.get_content_bytes() # type: ignore
|
|
57
|
-
|
|
58
|
-
# Case 2: Image is a local file path
|
|
59
|
-
elif image.filepath is not None:
|
|
60
|
-
from pathlib import Path
|
|
61
|
-
|
|
62
|
-
path = Path(image.filepath) if isinstance(image.filepath, str) else image.filepath
|
|
63
|
-
if path.exists() and path.is_file():
|
|
64
|
-
with open(image.filepath, "rb") as f:
|
|
65
|
-
content_bytes = f.read()
|
|
66
|
-
else:
|
|
67
|
-
log_error(f"Image file not found: {image}")
|
|
68
|
-
return None
|
|
69
|
-
|
|
70
|
-
# Case 3: Image is a bytes object
|
|
71
|
-
elif image.content is not None:
|
|
72
|
-
content_bytes = image.content
|
|
73
|
-
|
|
74
|
-
else:
|
|
75
|
-
log_error(f"Unsupported image type: {type(image)}")
|
|
76
|
-
return None
|
|
77
|
-
|
|
78
|
-
if using_filetype:
|
|
79
|
-
kind = filetype.guess(content_bytes)
|
|
80
|
-
if not kind:
|
|
81
|
-
log_error("Unable to determine image type")
|
|
82
|
-
return None
|
|
83
|
-
|
|
84
|
-
img_type = kind.extension
|
|
85
|
-
else:
|
|
86
|
-
img_type = imghdr.what(None, h=content_bytes) # type: ignore
|
|
87
|
-
|
|
88
|
-
if not img_type:
|
|
89
|
-
log_error("Unable to determine image type")
|
|
90
|
-
return None
|
|
91
|
-
|
|
92
|
-
media_type = type_mapping.get(img_type)
|
|
93
|
-
if not media_type:
|
|
94
|
-
log_error(f"Unsupported image type: {img_type}")
|
|
95
|
-
return None
|
|
96
|
-
|
|
97
|
-
return {
|
|
98
|
-
"type": "image",
|
|
99
|
-
"source": {
|
|
100
|
-
"type": "base64",
|
|
101
|
-
"media_type": media_type,
|
|
102
|
-
"data": base64.b64encode(content_bytes).decode("utf-8"), # type: ignore
|
|
103
|
-
},
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
except Exception as e:
|
|
107
|
-
log_error(f"Error processing image: {e}")
|
|
108
|
-
return None
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def format_messages(messages: List[Message]) -> Tuple[List[Dict[str, str]], str]:
|
|
112
|
-
"""
|
|
113
|
-
Process the list of messages and separate them into API messages and system messages.
|
|
114
|
-
|
|
115
|
-
Args:
|
|
116
|
-
messages (List[Message]): The list of messages to process.
|
|
117
|
-
|
|
118
|
-
Returns:
|
|
119
|
-
Tuple[List[Dict[str, str]], str]: A tuple containing the list of API messages and the concatenated system messages.
|
|
120
|
-
"""
|
|
121
|
-
|
|
122
|
-
chat_messages: List[Dict[str, str]] = []
|
|
123
|
-
system_messages: List[str] = []
|
|
124
|
-
|
|
125
|
-
for message in messages:
|
|
126
|
-
content = message.content or ""
|
|
127
|
-
if message.role == "system":
|
|
128
|
-
if content is not None:
|
|
129
|
-
system_messages.append(content) # type: ignore
|
|
130
|
-
continue
|
|
131
|
-
elif message.role == "user":
|
|
132
|
-
if isinstance(content, str):
|
|
133
|
-
content = [{"type": "text", "text": content}]
|
|
134
|
-
|
|
135
|
-
if message.images is not None:
|
|
136
|
-
for image in message.images:
|
|
137
|
-
image_content = _format_image_for_message(image)
|
|
138
|
-
if image_content:
|
|
139
|
-
content.append(image_content)
|
|
140
|
-
|
|
141
|
-
if message.files is not None and len(message.files) > 0:
|
|
142
|
-
log_warning("Files are not supported for AWS Bedrock Claude")
|
|
143
|
-
|
|
144
|
-
if message.audio is not None and len(message.audio) > 0:
|
|
145
|
-
log_warning("Audio is not supported for AWS Bedrock Claude")
|
|
146
|
-
|
|
147
|
-
if message.videos is not None and len(message.videos) > 0:
|
|
148
|
-
log_warning("Video is not supported for AWS Bedrock Claude")
|
|
149
|
-
|
|
150
|
-
# Handle tool calls from history
|
|
151
|
-
elif message.role == "assistant":
|
|
152
|
-
content = []
|
|
153
|
-
|
|
154
|
-
if isinstance(message.content, str) and message.content and len(message.content.strip()) > 0:
|
|
155
|
-
content.append(TextBlock(text=message.content, type="text"))
|
|
156
|
-
|
|
157
|
-
if message.tool_calls:
|
|
158
|
-
for tool_call in message.tool_calls:
|
|
159
|
-
content.append(
|
|
160
|
-
ToolUseBlock(
|
|
161
|
-
id=tool_call["id"],
|
|
162
|
-
input=json.loads(tool_call["function"]["arguments"])
|
|
163
|
-
if "arguments" in tool_call["function"]
|
|
164
|
-
else {},
|
|
165
|
-
name=tool_call["function"]["name"],
|
|
166
|
-
type="tool_use",
|
|
167
|
-
)
|
|
168
|
-
)
|
|
169
|
-
chat_messages.append({"role": ROLE_MAP[message.role], "content": content}) # type: ignore
|
|
170
|
-
return chat_messages, " ".join(system_messages)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|