agno 2.0.8__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.8 → agno-2.0.10}/PKG-INFO +4 -1
- {agno-2.0.8 → agno-2.0.10}/agno/agent/agent.py +13 -8
- {agno-2.0.8 → agno-2.0.10}/agno/db/base.py +14 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/dynamo/dynamo.py +107 -27
- {agno-2.0.8 → agno-2.0.10}/agno/db/firestore/firestore.py +109 -33
- {agno-2.0.8 → agno-2.0.10}/agno/db/gcs_json/gcs_json_db.py +100 -20
- {agno-2.0.8 → agno-2.0.10}/agno/db/in_memory/in_memory_db.py +95 -20
- {agno-2.0.8 → agno-2.0.10}/agno/db/json/json_db.py +101 -21
- {agno-2.0.8 → agno-2.0.10}/agno/db/migrations/v1_to_v2.py +181 -35
- {agno-2.0.8 → agno-2.0.10}/agno/db/mongo/mongo.py +251 -26
- {agno-2.0.8 → agno-2.0.10}/agno/db/mysql/mysql.py +307 -6
- {agno-2.0.8 → agno-2.0.10}/agno/db/postgres/postgres.py +279 -33
- {agno-2.0.8 → agno-2.0.10}/agno/db/redis/redis.py +99 -22
- {agno-2.0.8 → agno-2.0.10}/agno/db/singlestore/singlestore.py +319 -38
- {agno-2.0.8 → agno-2.0.10}/agno/db/sqlite/sqlite.py +339 -23
- {agno-2.0.8 → agno-2.0.10}/agno/models/anthropic/claude.py +0 -20
- {agno-2.0.8 → agno-2.0.10}/agno/models/aws/claude.py +1 -1
- {agno-2.0.8 → agno-2.0.10}/agno/models/huggingface/huggingface.py +2 -1
- {agno-2.0.8 → agno-2.0.10}/agno/models/ollama/chat.py +28 -2
- {agno-2.0.8 → agno-2.0.10}/agno/models/openai/chat.py +7 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/openai/responses.py +8 -8
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/base.py +2 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/slack/router.py +50 -10
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/slack/slack.py +6 -4
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/whatsapp/router.py +7 -4
- {agno-2.0.8 → agno-2.0.10}/agno/os/router.py +18 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/utils.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/azure_ai_foundry.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/deepseek.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/groq.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/ollama.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/openai.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/run/base.py +15 -2
- {agno-2.0.8 → agno-2.0.10}/agno/team/team.py +10 -12
- agno-2.0.10/agno/tools/mcp_toolbox.py +284 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/scrapegraph.py +58 -31
- {agno-2.0.8 → agno-2.0.10}/agno/tools/whatsapp.py +1 -1
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/claude.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/utils/print_response/agent.py +2 -2
- {agno-2.0.8 → agno-2.0.10}/agno/utils/print_response/team.py +6 -6
- {agno-2.0.8 → agno-2.0.10}/agno/utils/reasoning.py +22 -1
- {agno-2.0.8 → agno-2.0.10}/agno/utils/string.py +9 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/workflow.py +11 -7
- {agno-2.0.8 → agno-2.0.10}/agno.egg-info/PKG-INFO +4 -1
- {agno-2.0.8 → agno-2.0.10}/agno.egg-info/SOURCES.txt +1 -1
- {agno-2.0.8 → agno-2.0.10}/agno.egg-info/requires.txt +4 -0
- {agno-2.0.8 → agno-2.0.10}/pyproject.toml +3 -1
- agno-2.0.8/agno/utils/models/aws_claude.py +0 -170
- {agno-2.0.8 → agno-2.0.10}/LICENSE +0 -0
- {agno-2.0.8 → agno-2.0.10}/README.md +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/agent/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/agent.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/api.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/evals.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/os.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/routes.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/agent.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/evals.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/os.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/response.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/team.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/schemas/workflows.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/settings.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/team.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/api/workflow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/cloud/aws/base.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/cloud/aws/s3/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/cloud/aws/s3/api_client.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/cloud/aws/s3/bucket.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/cloud/aws/s3/object.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/dynamo/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/dynamo/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/dynamo/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/firestore/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/firestore/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/firestore/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/gcs_json/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/gcs_json/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/in_memory/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/in_memory/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/json/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/json/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/migrations/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/mongo/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/mongo/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/mongo/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/mysql/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/mysql/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/mysql/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/postgres/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/postgres/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/postgres/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/redis/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/redis/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/redis/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/schemas/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/schemas/evals.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/schemas/knowledge.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/schemas/memory.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/schemas/metrics.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/singlestore/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/singlestore/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/singlestore/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/sqlite/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/sqlite/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/sqlite/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/db/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/debug.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/eval/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/eval/accuracy.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/eval/performance.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/eval/reliability.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/eval/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/exceptions.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/integrations/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/integrations/discord/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/integrations/discord/client.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/agentic.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/document.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/fixed.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/markdown.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/recursive.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/row.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/semantic.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/chunking/strategy.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/content.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/document/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/document/base.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/aws_bedrock.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/azure_openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/base.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/cohere.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/fastembed.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/fireworks.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/google.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/huggingface.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/jina.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/langdb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/mistral.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/nebius.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/ollama.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/sentence_transformer.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/together.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/embedder/voyageai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/knowledge.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/arxiv_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/base.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/csv_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/docx_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/firecrawl_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/json_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/markdown_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/pdf_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/reader_factory.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/s3_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/text_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/web_search_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/website_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/wikipedia_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reader/youtube_reader.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/remote_content/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/remote_content/remote_content.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reranker/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reranker/base.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reranker/cohere.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reranker/infinity.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/reranker/sentence_transformer.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/types.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/knowledge/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/media.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/memory/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/memory/manager.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/aimlapi/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/anthropic/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/aws/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/aws/bedrock.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/azure/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/azure/ai_foundry.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/azure/openai_chat.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/base.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/cerebras/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/cerebras/cerebras.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/cohere/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/cohere/chat.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/cometapi/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/cometapi/cometapi.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/dashscope/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/dashscope/dashscope.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/deepinfra/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/deepseek/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/deepseek/deepseek.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/defaults.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/fireworks/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/fireworks/fireworks.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/google/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/google/gemini.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/groq/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/groq/groq.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/huggingface/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/ibm/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/ibm/watsonx.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/internlm/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/internlm/internlm.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/langdb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/langdb/langdb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/litellm/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/litellm/chat.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/llama_cpp/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/llama_cpp/llama_cpp.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/lmstudio/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/message.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/meta/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/meta/llama.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/meta/llama_openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/metrics.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/mistral/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/mistral/mistral.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/nebius/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/nebius/nebius.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/nexus/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/nexus/nexus.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/nvidia/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/nvidia/nvidia.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/ollama/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/openai/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/openai/like.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/openrouter/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/openrouter/openrouter.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/perplexity/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/perplexity/perplexity.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/portkey/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/portkey/portkey.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/response.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/sambanova/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/sambanova/sambanova.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/siliconflow/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/siliconflow/siliconflow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/together/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/together/together.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/vercel/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/vercel/v0.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/vllm/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/vllm/vllm.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/xai/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/models/xai/xai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/app.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/auth.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/config.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/agui/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/agui/agui.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/agui/router.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/agui/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/slack/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/slack/security.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/whatsapp/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/whatsapp/security.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/mcp.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/evals/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/evals/evals.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/evals/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/evals/utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/health.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/home.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/knowledge/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/knowledge/knowledge.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/knowledge/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/memory/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/memory/memory.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/memory/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/metrics/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/metrics/metrics.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/metrics/schemas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/session/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/routers/session/session.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/schema.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/os/settings.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/py.typed +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/default.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/helpers.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/reasoning/step.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/run/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/run/agent.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/run/cancel.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/run/messages.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/run/team.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/run/workflow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/session/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/session/agent.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/session/summary.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/session/team.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/session/workflow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/team/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/agentql.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/airflow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/api.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/apify.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/arxiv.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/aws_lambda.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/aws_ses.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/baidusearch.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/bitbucket.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/brandfetch.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/bravesearch.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/brightdata.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/browserbase.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/calcom.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/calculator.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/cartesia.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/clickup.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/confluence.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/crawl4ai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/csv_toolkit.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/dalle.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/daytona.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/decorator.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/desi_vocal.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/discord.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/docker.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/duckdb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/duckduckgo.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/e2b.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/eleven_labs.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/email.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/evm.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/exa.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/fal.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/file.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/file_generation.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/financial_datasets.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/firecrawl.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/function.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/giphy.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/github.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/gmail.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/google_bigquery.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/google_maps.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/googlecalendar.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/googlesearch.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/googlesheets.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/hackernews.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/jina.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/jira.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/knowledge.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/linear.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/linkup.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/local_file_system.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/lumalab.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/mcp.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/mem0.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/memori.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/memory.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/mlx_transcribe.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/models/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/models/azure_openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/models/gemini.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/models/groq.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/models/morph.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/models/nebius.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/models_labs.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/moviepy_video.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/neo4j.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/newspaper.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/newspaper4k.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/openbb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/opencv.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/openweather.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/oxylabs.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/pandas.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/postgres.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/pubmed.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/python.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/reasoning.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/reddit.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/replicate.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/resend.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/searxng.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/serpapi.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/serper.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/shell.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/slack.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/sleep.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/spider.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/sql.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/streamlit/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/streamlit/components.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/tavily.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/telegram.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/todoist.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/tool_registry.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/toolkit.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/trafilatura.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/trello.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/twilio.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/user_control_flow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/valyu.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/visualization.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/webbrowser.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/webex.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/website.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/webtools.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/wikipedia.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/workflow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/x.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/yfinance.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/youtube.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/zendesk.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/zep.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/tools/zoom.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/audio.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/certs.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/code_execution.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/common.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/dttm.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/enum.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/env.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/events.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/format_str.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/functions.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/gemini.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/http.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/json_schema.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/knowledge.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/location.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/log.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/mcp.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/media.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/merge_dict.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/message.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/ai_foundry.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/cohere.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/llama.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/mistral.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/openai_responses.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/schema_utils.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/models/watsonx.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/openai.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/pickle.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/pprint.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/print_response/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/print_response/workflow.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/prompts.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/response.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/response_iterator.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/safe_formatter.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/shell.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/streamlit.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/team.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/timer.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/tools.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/web.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/whatsapp.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/utils/yaml_io.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/base.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/cassandra/cassandra.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/cassandra/index.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/chroma/chromadb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/couchbase/couchbase.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/distance.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/lancedb/lance_db.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/langchaindb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/langchaindb/langchaindb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/lightrag/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/lightrag/lightrag.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/llamaindex/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/milvus/milvus.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/mongodb/mongodb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/pgvector/index.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/pgvector/pgvector.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/pineconedb/pineconedb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/qdrant/qdrant.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/search.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/singlestore/index.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/singlestore/singlestore.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/surrealdb/surrealdb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/upstashdb/upstashdb.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/weaviate/index.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/vectordb/weaviate/weaviate.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/__init__.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/condition.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/loop.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/parallel.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/router.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/step.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/steps.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno/workflow/types.py +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno.egg-info/dependency_links.txt +0 -0
- {agno-2.0.8 → agno-2.0.10}/agno.egg-info/top_level.txt +0 -0
- {agno-2.0.8 → agno-2.0.10}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.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
|
|
@@ -163,6 +163,8 @@ Requires-Dist: psycopg-binary; extra == "psycopg"
|
|
|
163
163
|
Requires-Dist: psycopg; extra == "psycopg"
|
|
164
164
|
Provides-Extra: reportlab
|
|
165
165
|
Requires-Dist: reportlab; extra == "reportlab"
|
|
166
|
+
Provides-Extra: scrapegraph
|
|
167
|
+
Requires-Dist: scrapegraph-py; extra == "scrapegraph"
|
|
166
168
|
Provides-Extra: todoist
|
|
167
169
|
Requires-Dist: todoist-api-python; extra == "todoist"
|
|
168
170
|
Provides-Extra: valyu
|
|
@@ -300,6 +302,7 @@ Requires-Dist: agno[mcp]; extra == "tools"
|
|
|
300
302
|
Requires-Dist: agno[browserbase]; extra == "tools"
|
|
301
303
|
Requires-Dist: agno[agentql]; extra == "tools"
|
|
302
304
|
Requires-Dist: agno[opencv]; extra == "tools"
|
|
305
|
+
Requires-Dist: agno[scrapegraph]; extra == "tools"
|
|
303
306
|
Requires-Dist: agno[valyu]; extra == "tools"
|
|
304
307
|
Requires-Dist: agno[confluence]; extra == "tools"
|
|
305
308
|
Requires-Dist: agno[oxylabs]; extra == "tools"
|
|
@@ -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()
|
|
@@ -7406,8 +7411,8 @@ class Agent:
|
|
|
7406
7411
|
"parser_model": self.parser_model.to_dict() if self.parser_model else None,
|
|
7407
7412
|
"output_model": self.output_model.to_dict() if self.output_model else None,
|
|
7408
7413
|
"has_tools": self.tools is not None,
|
|
7409
|
-
"has_memory": self.enable_user_memories is
|
|
7410
|
-
"has_reasoning": self.reasoning is
|
|
7414
|
+
"has_memory": self.enable_user_memories is True,
|
|
7415
|
+
"has_reasoning": self.reasoning is True,
|
|
7411
7416
|
"has_knowledge": self.knowledge is not None,
|
|
7412
7417
|
"has_input_schema": self.input_schema is not None,
|
|
7413
7418
|
"has_output_schema": self.output_schema is not None,
|
|
@@ -81,6 +81,13 @@ class BaseDb(ABC):
|
|
|
81
81
|
) -> Optional[Union[Session, Dict[str, Any]]]:
|
|
82
82
|
raise NotImplementedError
|
|
83
83
|
|
|
84
|
+
@abstractmethod
|
|
85
|
+
def upsert_sessions(
|
|
86
|
+
self, sessions: List[Session], deserialize: Optional[bool] = True
|
|
87
|
+
) -> List[Union[Session, Dict[str, Any]]]:
|
|
88
|
+
"""Bulk upsert multiple sessions for improved performance on large datasets."""
|
|
89
|
+
raise NotImplementedError
|
|
90
|
+
|
|
84
91
|
# --- Memory ---
|
|
85
92
|
|
|
86
93
|
@abstractmethod
|
|
@@ -135,6 +142,13 @@ class BaseDb(ABC):
|
|
|
135
142
|
) -> Optional[Union[UserMemory, Dict[str, Any]]]:
|
|
136
143
|
raise NotImplementedError
|
|
137
144
|
|
|
145
|
+
@abstractmethod
|
|
146
|
+
def upsert_memories(
|
|
147
|
+
self, memories: List[UserMemory], deserialize: Optional[bool] = True
|
|
148
|
+
) -> List[Union[UserMemory, Dict[str, Any]]]:
|
|
149
|
+
"""Bulk upsert multiple memories for improved performance on large datasets."""
|
|
150
|
+
raise NotImplementedError
|
|
151
|
+
|
|
138
152
|
# --- Metrics ---
|
|
139
153
|
@abstractmethod
|
|
140
154
|
def get_metrics(
|
|
@@ -31,7 +31,7 @@ from agno.db.schemas.evals import EvalFilterType, EvalRunRecord, EvalType
|
|
|
31
31
|
from agno.db.schemas.knowledge import KnowledgeRow
|
|
32
32
|
from agno.db.schemas.memory import UserMemory
|
|
33
33
|
from agno.session import AgentSession, Session, TeamSession, WorkflowSession
|
|
34
|
-
from agno.utils.log import log_debug, log_error
|
|
34
|
+
from agno.utils.log import log_debug, log_error, log_info
|
|
35
35
|
from agno.utils.string import generate_id
|
|
36
36
|
|
|
37
37
|
try:
|
|
@@ -232,6 +232,7 @@ class DynamoDb(BaseDb):
|
|
|
232
232
|
|
|
233
233
|
except Exception as e:
|
|
234
234
|
log_error(f"Failed to delete sessions: {e}")
|
|
235
|
+
raise e
|
|
235
236
|
|
|
236
237
|
def get_session(
|
|
237
238
|
self,
|
|
@@ -290,7 +291,7 @@ class DynamoDb(BaseDb):
|
|
|
290
291
|
|
|
291
292
|
except Exception as e:
|
|
292
293
|
log_error(f"Failed to get session {session_id}: {e}")
|
|
293
|
-
|
|
294
|
+
raise e
|
|
294
295
|
|
|
295
296
|
def get_sessions(
|
|
296
297
|
self,
|
|
@@ -410,7 +411,7 @@ class DynamoDb(BaseDb):
|
|
|
410
411
|
|
|
411
412
|
except Exception as e:
|
|
412
413
|
log_error(f"Failed to get sessions: {e}")
|
|
413
|
-
|
|
414
|
+
raise e
|
|
414
415
|
|
|
415
416
|
def rename_session(
|
|
416
417
|
self,
|
|
@@ -478,7 +479,7 @@ class DynamoDb(BaseDb):
|
|
|
478
479
|
|
|
479
480
|
except Exception as e:
|
|
480
481
|
log_error(f"Failed to rename session {session_id}: {e}")
|
|
481
|
-
|
|
482
|
+
raise e
|
|
482
483
|
|
|
483
484
|
def upsert_session(
|
|
484
485
|
self, session: Session, deserialize: Optional[bool] = True
|
|
@@ -520,7 +521,44 @@ class DynamoDb(BaseDb):
|
|
|
520
521
|
|
|
521
522
|
except Exception as e:
|
|
522
523
|
log_error(f"Failed to upsert session {session.session_id}: {e}")
|
|
523
|
-
|
|
524
|
+
raise e
|
|
525
|
+
|
|
526
|
+
def upsert_sessions(
|
|
527
|
+
self, sessions: List[Session], deserialize: Optional[bool] = True
|
|
528
|
+
) -> List[Union[Session, Dict[str, Any]]]:
|
|
529
|
+
"""
|
|
530
|
+
Bulk upsert multiple sessions for improved performance on large datasets.
|
|
531
|
+
|
|
532
|
+
Args:
|
|
533
|
+
sessions (List[Session]): List of sessions to upsert.
|
|
534
|
+
deserialize (Optional[bool]): Whether to deserialize the sessions. Defaults to True.
|
|
535
|
+
|
|
536
|
+
Returns:
|
|
537
|
+
List[Union[Session, Dict[str, Any]]]: List of upserted sessions.
|
|
538
|
+
|
|
539
|
+
Raises:
|
|
540
|
+
Exception: If an error occurs during bulk upsert.
|
|
541
|
+
"""
|
|
542
|
+
if not sessions:
|
|
543
|
+
return []
|
|
544
|
+
|
|
545
|
+
try:
|
|
546
|
+
log_info(
|
|
547
|
+
f"DynamoDb doesn't support efficient bulk operations, falling back to individual upserts for {len(sessions)} sessions"
|
|
548
|
+
)
|
|
549
|
+
|
|
550
|
+
# Fall back to individual upserts
|
|
551
|
+
results = []
|
|
552
|
+
for session in sessions:
|
|
553
|
+
if session is not None:
|
|
554
|
+
result = self.upsert_session(session, deserialize=deserialize)
|
|
555
|
+
if result is not None:
|
|
556
|
+
results.append(result)
|
|
557
|
+
return results
|
|
558
|
+
|
|
559
|
+
except Exception as e:
|
|
560
|
+
log_error(f"Exception during bulk session upsert: {e}")
|
|
561
|
+
return []
|
|
524
562
|
|
|
525
563
|
# --- User Memory ---
|
|
526
564
|
|
|
@@ -543,6 +581,7 @@ class DynamoDb(BaseDb):
|
|
|
543
581
|
|
|
544
582
|
except Exception as e:
|
|
545
583
|
log_error(f"Failed to delete user memory {memory_id}: {e}")
|
|
584
|
+
raise e
|
|
546
585
|
|
|
547
586
|
def delete_user_memories(self, memory_ids: List[str]) -> None:
|
|
548
587
|
"""
|
|
@@ -567,6 +606,7 @@ class DynamoDb(BaseDb):
|
|
|
567
606
|
|
|
568
607
|
except Exception as e:
|
|
569
608
|
log_error(f"Failed to delete user memories: {e}")
|
|
609
|
+
raise e
|
|
570
610
|
|
|
571
611
|
def get_all_memory_topics(self) -> List[str]:
|
|
572
612
|
"""Get all memory topics from the database.
|
|
@@ -599,7 +639,7 @@ class DynamoDb(BaseDb):
|
|
|
599
639
|
|
|
600
640
|
except Exception as e:
|
|
601
641
|
log_error(f"Exception reading from memory table: {e}")
|
|
602
|
-
|
|
642
|
+
raise e
|
|
603
643
|
|
|
604
644
|
def get_user_memory(
|
|
605
645
|
self, memory_id: str, deserialize: Optional[bool] = True
|
|
@@ -632,7 +672,7 @@ class DynamoDb(BaseDb):
|
|
|
632
672
|
|
|
633
673
|
except Exception as e:
|
|
634
674
|
log_error(f"Failed to get user memory {memory_id}: {e}")
|
|
635
|
-
|
|
675
|
+
raise e
|
|
636
676
|
|
|
637
677
|
def get_user_memories(
|
|
638
678
|
self,
|
|
@@ -752,7 +792,7 @@ class DynamoDb(BaseDb):
|
|
|
752
792
|
|
|
753
793
|
except Exception as e:
|
|
754
794
|
log_error(f"Failed to get user memories: {e}")
|
|
755
|
-
|
|
795
|
+
raise e
|
|
756
796
|
|
|
757
797
|
def get_user_memory_stats(
|
|
758
798
|
self,
|
|
@@ -838,7 +878,7 @@ class DynamoDb(BaseDb):
|
|
|
838
878
|
|
|
839
879
|
except Exception as e:
|
|
840
880
|
log_error(f"Failed to get user memory stats: {e}")
|
|
841
|
-
|
|
881
|
+
raise e
|
|
842
882
|
|
|
843
883
|
def upsert_user_memory(
|
|
844
884
|
self, memory: UserMemory, deserialize: Optional[bool] = True
|
|
@@ -867,7 +907,44 @@ class DynamoDb(BaseDb):
|
|
|
867
907
|
|
|
868
908
|
except Exception as e:
|
|
869
909
|
log_error(f"Failed to upsert user memory: {e}")
|
|
870
|
-
|
|
910
|
+
raise e
|
|
911
|
+
|
|
912
|
+
def upsert_memories(
|
|
913
|
+
self, memories: List[UserMemory], deserialize: Optional[bool] = True
|
|
914
|
+
) -> List[Union[UserMemory, Dict[str, Any]]]:
|
|
915
|
+
"""
|
|
916
|
+
Bulk upsert multiple user memories for improved performance on large datasets.
|
|
917
|
+
|
|
918
|
+
Args:
|
|
919
|
+
memories (List[UserMemory]): List of memories to upsert.
|
|
920
|
+
deserialize (Optional[bool]): Whether to deserialize the memories. Defaults to True.
|
|
921
|
+
|
|
922
|
+
Returns:
|
|
923
|
+
List[Union[UserMemory, Dict[str, Any]]]: List of upserted memories.
|
|
924
|
+
|
|
925
|
+
Raises:
|
|
926
|
+
Exception: If an error occurs during bulk upsert.
|
|
927
|
+
"""
|
|
928
|
+
if not memories:
|
|
929
|
+
return []
|
|
930
|
+
|
|
931
|
+
try:
|
|
932
|
+
log_info(
|
|
933
|
+
f"DynamoDb doesn't support efficient bulk operations, falling back to individual upserts for {len(memories)} memories"
|
|
934
|
+
)
|
|
935
|
+
|
|
936
|
+
# Fall back to individual upserts
|
|
937
|
+
results = []
|
|
938
|
+
for memory in memories:
|
|
939
|
+
if memory is not None:
|
|
940
|
+
result = self.upsert_user_memory(memory, deserialize=deserialize)
|
|
941
|
+
if result is not None:
|
|
942
|
+
results.append(result)
|
|
943
|
+
return results
|
|
944
|
+
|
|
945
|
+
except Exception as e:
|
|
946
|
+
log_error(f"Exception during bulk memory upsert: {e}")
|
|
947
|
+
return []
|
|
871
948
|
|
|
872
949
|
def clear_memories(self) -> None:
|
|
873
950
|
"""Delete all memories from the database.
|
|
@@ -908,6 +985,7 @@ class DynamoDb(BaseDb):
|
|
|
908
985
|
from agno.utils.log import log_warning
|
|
909
986
|
|
|
910
987
|
log_warning(f"Exception deleting all memories: {e}")
|
|
988
|
+
raise e
|
|
911
989
|
|
|
912
990
|
# --- Metrics ---
|
|
913
991
|
|
|
@@ -985,7 +1063,7 @@ class DynamoDb(BaseDb):
|
|
|
985
1063
|
|
|
986
1064
|
except Exception as e:
|
|
987
1065
|
log_error(f"Failed to calculate metrics: {e}")
|
|
988
|
-
|
|
1066
|
+
raise e
|
|
989
1067
|
|
|
990
1068
|
def _get_metrics_calculation_starting_date(self) -> Optional[date]:
|
|
991
1069
|
"""Get the first date for which metrics calculation is needed:
|
|
@@ -1071,7 +1149,7 @@ class DynamoDb(BaseDb):
|
|
|
1071
1149
|
|
|
1072
1150
|
except Exception as e:
|
|
1073
1151
|
log_error(f"Failed to get metrics calculation starting date: {e}")
|
|
1074
|
-
|
|
1152
|
+
raise e
|
|
1075
1153
|
|
|
1076
1154
|
def _get_all_sessions_for_metrics_calculation(
|
|
1077
1155
|
self, start_timestamp: int, end_timestamp: int
|
|
@@ -1129,7 +1207,7 @@ class DynamoDb(BaseDb):
|
|
|
1129
1207
|
|
|
1130
1208
|
except Exception as e:
|
|
1131
1209
|
log_error(f"Failed to get sessions for metrics calculation: {e}")
|
|
1132
|
-
|
|
1210
|
+
raise e
|
|
1133
1211
|
|
|
1134
1212
|
def _bulk_upsert_metrics(self, metrics_records: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
|
|
1135
1213
|
"""Bulk upsert metrics records into DynamoDB with proper deduplication.
|
|
@@ -1157,7 +1235,7 @@ class DynamoDb(BaseDb):
|
|
|
1157
1235
|
|
|
1158
1236
|
except Exception as e:
|
|
1159
1237
|
log_error(f"Failed to bulk upsert metrics: {e}")
|
|
1160
|
-
|
|
1238
|
+
raise e
|
|
1161
1239
|
|
|
1162
1240
|
def _upsert_single_metrics_record(self, table_name: str, record: Dict[str, Any]) -> Optional[Dict[str, Any]]:
|
|
1163
1241
|
"""Upsert a single metrics record, checking for existing records with the same date.
|
|
@@ -1189,7 +1267,7 @@ class DynamoDb(BaseDb):
|
|
|
1189
1267
|
|
|
1190
1268
|
except Exception as e:
|
|
1191
1269
|
log_error(f"Failed to upsert single metrics record: {e}")
|
|
1192
|
-
|
|
1270
|
+
raise e
|
|
1193
1271
|
|
|
1194
1272
|
def _get_existing_metrics_record(self, table_name: str, date_str: str) -> Optional[Dict[str, Any]]:
|
|
1195
1273
|
"""Get existing metrics record for a given date.
|
|
@@ -1222,7 +1300,7 @@ class DynamoDb(BaseDb):
|
|
|
1222
1300
|
|
|
1223
1301
|
except Exception as e:
|
|
1224
1302
|
log_error(f"Failed to get existing metrics record for date {date_str}: {e}")
|
|
1225
|
-
|
|
1303
|
+
raise e
|
|
1226
1304
|
|
|
1227
1305
|
def _update_existing_metrics_record(
|
|
1228
1306
|
self,
|
|
@@ -1256,7 +1334,7 @@ class DynamoDb(BaseDb):
|
|
|
1256
1334
|
|
|
1257
1335
|
except Exception as e:
|
|
1258
1336
|
log_error(f"Failed to update existing metrics record: {e}")
|
|
1259
|
-
|
|
1337
|
+
raise e
|
|
1260
1338
|
|
|
1261
1339
|
def _create_new_metrics_record(self, table_name: str, record: Dict[str, Any]) -> Optional[Dict[str, Any]]:
|
|
1262
1340
|
"""Create a new metrics record.
|
|
@@ -1280,7 +1358,7 @@ class DynamoDb(BaseDb):
|
|
|
1280
1358
|
|
|
1281
1359
|
except Exception as e:
|
|
1282
1360
|
log_error(f"Failed to create new metrics record: {e}")
|
|
1283
|
-
|
|
1361
|
+
raise e
|
|
1284
1362
|
|
|
1285
1363
|
def _prepare_metrics_record_for_dynamo(self, record: Dict[str, Any]) -> Dict[str, Any]:
|
|
1286
1364
|
"""Prepare a metrics record for DynamoDB serialization by converting all data types properly.
|
|
@@ -1403,7 +1481,7 @@ class DynamoDb(BaseDb):
|
|
|
1403
1481
|
|
|
1404
1482
|
except Exception as e:
|
|
1405
1483
|
log_error(f"Failed to get metrics: {e}")
|
|
1406
|
-
|
|
1484
|
+
raise e
|
|
1407
1485
|
|
|
1408
1486
|
# --- Knowledge methods ---
|
|
1409
1487
|
|
|
@@ -1425,6 +1503,7 @@ class DynamoDb(BaseDb):
|
|
|
1425
1503
|
|
|
1426
1504
|
except Exception as e:
|
|
1427
1505
|
log_error(f"Failed to delete knowledge content {id}: {e}")
|
|
1506
|
+
raise e
|
|
1428
1507
|
|
|
1429
1508
|
def get_knowledge_content(self, id: str) -> Optional[KnowledgeRow]:
|
|
1430
1509
|
"""Get a knowledge row from the database.
|
|
@@ -1447,7 +1526,7 @@ class DynamoDb(BaseDb):
|
|
|
1447
1526
|
|
|
1448
1527
|
except Exception as e:
|
|
1449
1528
|
log_error(f"Failed to get knowledge content {id}: {e}")
|
|
1450
|
-
|
|
1529
|
+
raise e
|
|
1451
1530
|
|
|
1452
1531
|
def get_knowledge_contents(
|
|
1453
1532
|
self,
|
|
@@ -1519,7 +1598,7 @@ class DynamoDb(BaseDb):
|
|
|
1519
1598
|
|
|
1520
1599
|
except Exception as e:
|
|
1521
1600
|
log_error(f"Failed to get knowledge contents: {e}")
|
|
1522
|
-
|
|
1601
|
+
raise e
|
|
1523
1602
|
|
|
1524
1603
|
def upsert_knowledge_content(self, knowledge_row: KnowledgeRow):
|
|
1525
1604
|
"""Upsert knowledge content in the database.
|
|
@@ -1540,7 +1619,7 @@ class DynamoDb(BaseDb):
|
|
|
1540
1619
|
|
|
1541
1620
|
except Exception as e:
|
|
1542
1621
|
log_error(f"Failed to upsert knowledge content {knowledge_row.id}: {e}")
|
|
1543
|
-
|
|
1622
|
+
raise e
|
|
1544
1623
|
|
|
1545
1624
|
# --- Eval ---
|
|
1546
1625
|
|
|
@@ -1570,7 +1649,7 @@ class DynamoDb(BaseDb):
|
|
|
1570
1649
|
|
|
1571
1650
|
except Exception as e:
|
|
1572
1651
|
log_error(f"Failed to create eval run: {e}")
|
|
1573
|
-
|
|
1652
|
+
raise e
|
|
1574
1653
|
|
|
1575
1654
|
def delete_eval_runs(self, eval_run_ids: List[str]) -> None:
|
|
1576
1655
|
if not eval_run_ids or not self.eval_table_name:
|
|
@@ -1588,6 +1667,7 @@ class DynamoDb(BaseDb):
|
|
|
1588
1667
|
|
|
1589
1668
|
except Exception as e:
|
|
1590
1669
|
log_error(f"Failed to delete eval runs: {e}")
|
|
1670
|
+
raise e
|
|
1591
1671
|
|
|
1592
1672
|
def get_eval_run_raw(self, eval_run_id: str, table: Optional[Any] = None) -> Optional[Dict[str, Any]]:
|
|
1593
1673
|
if not self.eval_table_name:
|
|
@@ -1603,7 +1683,7 @@ class DynamoDb(BaseDb):
|
|
|
1603
1683
|
|
|
1604
1684
|
except Exception as e:
|
|
1605
1685
|
log_error(f"Failed to get eval run {eval_run_id}: {e}")
|
|
1606
|
-
|
|
1686
|
+
raise e
|
|
1607
1687
|
|
|
1608
1688
|
def get_eval_run(self, eval_run_id: str, table: Optional[Any] = None) -> Optional[EvalRunRecord]:
|
|
1609
1689
|
if not self.eval_table_name:
|
|
@@ -1619,7 +1699,7 @@ class DynamoDb(BaseDb):
|
|
|
1619
1699
|
|
|
1620
1700
|
except Exception as e:
|
|
1621
1701
|
log_error(f"Failed to get eval run {eval_run_id}: {e}")
|
|
1622
|
-
|
|
1702
|
+
raise e
|
|
1623
1703
|
|
|
1624
1704
|
def get_eval_runs(
|
|
1625
1705
|
self,
|
|
@@ -1718,7 +1798,7 @@ class DynamoDb(BaseDb):
|
|
|
1718
1798
|
|
|
1719
1799
|
except Exception as e:
|
|
1720
1800
|
log_error(f"Failed to get eval runs: {e}")
|
|
1721
|
-
|
|
1801
|
+
raise e
|
|
1722
1802
|
|
|
1723
1803
|
def rename_eval_run(
|
|
1724
1804
|
self, eval_run_id: str, name: str, deserialize: Optional[bool] = True
|
|
@@ -1750,4 +1830,4 @@ class DynamoDb(BaseDb):
|
|
|
1750
1830
|
|
|
1751
1831
|
except Exception as e:
|
|
1752
1832
|
log_error(f"Failed to rename eval run {eval_run_id}: {e}")
|
|
1753
|
-
|
|
1833
|
+
raise e
|