agno 2.1.5__tar.gz → 2.1.6__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.1.5 → agno-2.1.6}/PKG-INFO +1 -1
- {agno-2.1.5 → agno-2.1.6}/agno/agent/agent.py +37 -32
- {agno-2.1.5 → agno-2.1.6}/agno/db/migrations/v1_to_v2.py +13 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/mongo/mongo.py +2 -6
- {agno-2.1.5 → agno-2.1.6}/agno/db/mongo/utils.py +0 -4
- {agno-2.1.5 → agno-2.1.6}/agno/db/mysql/mysql.py +4 -16
- {agno-2.1.5 → agno-2.1.6}/agno/db/postgres/postgres.py +8 -20
- {agno-2.1.5 → agno-2.1.6}/agno/db/singlestore/singlestore.py +17 -8
- {agno-2.1.5 → agno-2.1.6}/agno/db/sqlite/sqlite.py +4 -16
- agno-2.1.6/agno/db/surrealdb/__init__.py +3 -0
- agno-2.1.6/agno/db/surrealdb/metrics.py +292 -0
- agno-2.1.6/agno/db/surrealdb/models.py +259 -0
- agno-2.1.6/agno/db/surrealdb/queries.py +71 -0
- agno-2.1.6/agno/db/surrealdb/surrealdb.py +1193 -0
- agno-2.1.6/agno/db/surrealdb/utils.py +87 -0
- {agno-2.1.5 → agno-2.1.6}/agno/memory/manager.py +13 -13
- {agno-2.1.5 → agno-2.1.6}/agno/os/utils.py +8 -10
- {agno-2.1.5 → agno-2.1.6}/agno/team/team.py +88 -42
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/surrealdb/surrealdb.py +0 -1
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/step.py +8 -0
- {agno-2.1.5 → agno-2.1.6}/agno.egg-info/PKG-INFO +1 -1
- {agno-2.1.5 → agno-2.1.6}/agno.egg-info/SOURCES.txt +6 -0
- {agno-2.1.5 → agno-2.1.6}/pyproject.toml +1 -1
- {agno-2.1.5 → agno-2.1.6}/LICENSE +0 -0
- {agno-2.1.5 → agno-2.1.6}/README.md +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/agent/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/agent.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/api.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/evals.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/os.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/routes.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/agent.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/evals.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/os.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/response.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/team.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/schemas/workflows.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/settings.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/team.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/api/workflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/cloud/aws/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/cloud/aws/s3/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/cloud/aws/s3/api_client.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/cloud/aws/s3/bucket.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/cloud/aws/s3/object.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/async_postgres/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/async_postgres/async_postgres.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/async_postgres/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/async_postgres/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/dynamo/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/dynamo/dynamo.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/dynamo/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/dynamo/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/firestore/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/firestore/firestore.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/firestore/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/firestore/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/gcs_json/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/gcs_json/gcs_json_db.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/gcs_json/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/in_memory/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/in_memory/in_memory_db.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/in_memory/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/json/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/json/json_db.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/json/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/migrations/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/mongo/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/mongo/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/mysql/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/mysql/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/mysql/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/postgres/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/postgres/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/postgres/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/redis/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/redis/redis.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/redis/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/redis/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/schemas/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/schemas/evals.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/schemas/knowledge.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/schemas/memory.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/schemas/metrics.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/singlestore/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/singlestore/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/singlestore/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/sqlite/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/sqlite/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/sqlite/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/db/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/debug.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/eval/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/eval/accuracy.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/eval/performance.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/eval/reliability.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/eval/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/exceptions.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/guardrails/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/guardrails/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/guardrails/openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/guardrails/pii.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/guardrails/prompt_injection.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/integrations/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/integrations/discord/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/integrations/discord/client.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/agentic.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/document.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/fixed.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/markdown.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/recursive.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/row.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/semantic.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/chunking/strategy.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/content.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/document/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/document/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/aws_bedrock.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/azure_openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/cohere.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/fastembed.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/fireworks.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/google.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/huggingface.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/jina.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/langdb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/mistral.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/nebius.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/ollama.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/sentence_transformer.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/together.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/embedder/voyageai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/knowledge.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/arxiv_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/csv_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/docx_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/firecrawl_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/json_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/markdown_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/pdf_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/reader_factory.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/s3_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/text_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/web_search_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/website_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/wikipedia_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reader/youtube_reader.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/remote_content/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/remote_content/remote_content.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reranker/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reranker/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reranker/cohere.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reranker/infinity.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/reranker/sentence_transformer.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/types.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/knowledge/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/media.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/memory/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/aimlapi/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/anthropic/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/anthropic/claude.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/aws/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/aws/bedrock.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/aws/claude.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/azure/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/azure/ai_foundry.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/azure/openai_chat.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/cerebras/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/cerebras/cerebras.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/cohere/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/cohere/chat.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/cometapi/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/cometapi/cometapi.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/dashscope/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/dashscope/dashscope.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/deepinfra/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/deepseek/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/deepseek/deepseek.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/defaults.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/fireworks/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/fireworks/fireworks.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/google/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/google/gemini.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/groq/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/groq/groq.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/huggingface/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/huggingface/huggingface.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/ibm/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/ibm/watsonx.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/internlm/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/internlm/internlm.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/langdb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/langdb/langdb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/litellm/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/litellm/chat.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/llama_cpp/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/llama_cpp/llama_cpp.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/lmstudio/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/message.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/meta/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/meta/llama.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/meta/llama_openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/metrics.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/mistral/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/mistral/mistral.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/nebius/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/nebius/nebius.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/nexus/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/nexus/nexus.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/nvidia/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/nvidia/nvidia.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/ollama/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/ollama/chat.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/openai/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/openai/chat.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/openai/like.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/openai/responses.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/openrouter/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/openrouter/openrouter.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/perplexity/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/perplexity/perplexity.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/portkey/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/portkey/portkey.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/requesty/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/requesty/requesty.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/response.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/sambanova/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/sambanova/sambanova.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/siliconflow/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/siliconflow/siliconflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/together/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/together/together.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/vercel/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/vercel/v0.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/vertexai/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/vertexai/claude.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/vllm/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/vllm/vllm.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/xai/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/models/xai/xai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/app.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/auth.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/config.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/a2a/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/a2a/a2a.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/a2a/router.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/a2a/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/agui/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/agui/agui.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/agui/router.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/agui/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/slack/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/slack/router.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/slack/security.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/slack/slack.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/whatsapp/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/whatsapp/router.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/whatsapp/security.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/mcp.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/middleware/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/middleware/jwt.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/router.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/evals/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/evals/evals.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/evals/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/evals/utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/health.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/home.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/knowledge/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/knowledge/knowledge.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/knowledge/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/memory/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/memory/memory.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/memory/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/metrics/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/metrics/metrics.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/metrics/schemas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/session/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/routers/session/session.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/schema.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/os/settings.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/py.typed +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/anthropic.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/azure_ai_foundry.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/deepseek.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/default.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/gemini.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/groq.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/helpers.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/ollama.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/step.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/reasoning/vertexai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/run/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/run/agent.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/run/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/run/cancel.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/run/messages.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/run/team.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/run/workflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/session/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/session/agent.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/session/summary.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/session/team.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/session/workflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/team/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/agentql.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/airflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/api.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/apify.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/arxiv.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/aws_lambda.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/aws_ses.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/baidusearch.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/bitbucket.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/brandfetch.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/bravesearch.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/brightdata.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/browserbase.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/calcom.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/calculator.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/cartesia.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/clickup.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/confluence.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/crawl4ai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/csv_toolkit.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/dalle.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/daytona.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/decorator.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/desi_vocal.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/discord.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/docker.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/duckdb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/duckduckgo.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/e2b.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/eleven_labs.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/email.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/evm.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/exa.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/fal.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/file.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/file_generation.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/financial_datasets.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/firecrawl.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/function.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/giphy.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/github.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/gmail.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/google_bigquery.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/google_drive.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/google_maps.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/googlecalendar.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/googlesearch.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/googlesheets.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/hackernews.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/jina.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/jira.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/knowledge.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/linear.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/linkup.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/local_file_system.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/lumalab.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/mcp.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/mcp_toolbox.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/mem0.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/memori.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/memory.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/mlx_transcribe.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/models/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/models/azure_openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/models/gemini.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/models/groq.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/models/morph.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/models/nebius.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/models_labs.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/moviepy_video.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/neo4j.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/newspaper.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/newspaper4k.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/openbb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/opencv.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/openweather.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/oxylabs.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/pandas.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/postgres.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/pubmed.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/python.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/reasoning.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/reddit.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/replicate.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/resend.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/scrapegraph.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/searxng.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/serpapi.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/serper.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/shell.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/slack.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/sleep.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/spider.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/sql.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/streamlit/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/streamlit/components.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/tavily.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/telegram.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/todoist.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/tool_registry.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/toolkit.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/trafilatura.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/trello.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/twilio.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/user_control_flow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/valyu.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/visualization.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/webbrowser.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/webex.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/website.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/webtools.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/whatsapp.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/wikipedia.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/workflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/x.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/yfinance.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/youtube.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/zendesk.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/zep.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/tools/zoom.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/audio.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/certs.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/code_execution.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/common.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/dttm.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/enum.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/env.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/events.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/format_str.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/functions.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/gemini.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/hooks.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/http.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/json_schema.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/knowledge.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/location.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/log.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/mcp.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/media.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/merge_dict.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/message.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/ai_foundry.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/claude.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/cohere.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/llama.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/mistral.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/openai_responses.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/schema_utils.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/models/watsonx.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/openai.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/pickle.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/pprint.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/print_response/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/print_response/agent.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/print_response/team.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/print_response/workflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/prompts.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/reasoning.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/response.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/response_iterator.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/safe_formatter.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/serialize.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/shell.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/streamlit.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/string.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/team.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/timer.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/tools.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/web.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/whatsapp.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/utils/yaml_io.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/base.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/cassandra/cassandra.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/cassandra/index.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/chroma/chromadb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/couchbase/couchbase.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/distance.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/lancedb/lance_db.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/langchaindb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/langchaindb/langchaindb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/lightrag/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/lightrag/lightrag.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/llamaindex/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/milvus/milvus.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/mongodb/mongodb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/pgvector/index.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/pgvector/pgvector.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/pineconedb/pineconedb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/qdrant/qdrant.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/search.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/singlestore/index.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/singlestore/singlestore.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/upstashdb/upstashdb.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/weaviate/index.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/vectordb/weaviate/weaviate.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/__init__.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/condition.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/loop.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/parallel.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/router.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/steps.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/types.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno/workflow/workflow.py +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno.egg-info/dependency_links.txt +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno.egg-info/requires.txt +0 -0
- {agno-2.1.5 → agno-2.1.6}/agno.egg-info/top_level.txt +0 -0
- {agno-2.1.5 → agno-2.1.6}/setup.cfg +0 -0
|
@@ -248,7 +248,7 @@ class Agent:
|
|
|
248
248
|
# If True, store media in run output
|
|
249
249
|
store_media: bool = True
|
|
250
250
|
# If True, store tool results in run output
|
|
251
|
-
|
|
251
|
+
store_tool_messages: bool = True
|
|
252
252
|
# If True, store history messages in run output
|
|
253
253
|
store_history_messages: bool = True
|
|
254
254
|
|
|
@@ -388,7 +388,7 @@ class Agent:
|
|
|
388
388
|
add_history_to_context: bool = False,
|
|
389
389
|
num_history_runs: int = 3,
|
|
390
390
|
store_media: bool = True,
|
|
391
|
-
|
|
391
|
+
store_tool_messages: bool = True,
|
|
392
392
|
store_history_messages: bool = True,
|
|
393
393
|
knowledge: Optional[Knowledge] = None,
|
|
394
394
|
knowledge_filters: Optional[Dict[str, Any]] = None,
|
|
@@ -490,7 +490,7 @@ class Agent:
|
|
|
490
490
|
)
|
|
491
491
|
|
|
492
492
|
self.store_media = store_media
|
|
493
|
-
self.
|
|
493
|
+
self.store_tool_messages = store_tool_messages
|
|
494
494
|
self.store_history_messages = store_history_messages
|
|
495
495
|
|
|
496
496
|
self.knowledge = knowledge
|
|
@@ -1473,7 +1473,6 @@ class Agent:
|
|
|
1473
1473
|
|
|
1474
1474
|
async def _arun(
|
|
1475
1475
|
self,
|
|
1476
|
-
input: Union[str, List, Dict, Message, BaseModel, List[Message]],
|
|
1477
1476
|
run_response: RunOutput,
|
|
1478
1477
|
session_id: str,
|
|
1479
1478
|
session_state: Optional[Dict[str, Any]] = None,
|
|
@@ -1696,7 +1695,6 @@ class Agent:
|
|
|
1696
1695
|
|
|
1697
1696
|
async def _arun_stream(
|
|
1698
1697
|
self,
|
|
1699
|
-
input: Union[str, List, Dict, Message, BaseModel, List[Message]],
|
|
1700
1698
|
run_response: RunOutput,
|
|
1701
1699
|
session_id: str,
|
|
1702
1700
|
session_state: Optional[Dict[str, Any]] = None,
|
|
@@ -2133,7 +2131,6 @@ class Agent:
|
|
|
2133
2131
|
# Pass the new run_response to _arun
|
|
2134
2132
|
if stream:
|
|
2135
2133
|
return self._arun_stream( # type: ignore
|
|
2136
|
-
input=validated_input,
|
|
2137
2134
|
run_response=run_response,
|
|
2138
2135
|
user_id=user_id,
|
|
2139
2136
|
response_format=response_format,
|
|
@@ -2152,7 +2149,6 @@ class Agent:
|
|
|
2152
2149
|
) # type: ignore[assignment]
|
|
2153
2150
|
else:
|
|
2154
2151
|
return self._arun( # type: ignore
|
|
2155
|
-
input=validated_input,
|
|
2156
2152
|
run_response=run_response,
|
|
2157
2153
|
user_id=user_id,
|
|
2158
2154
|
response_format=response_format,
|
|
@@ -4421,7 +4417,9 @@ class Agent:
|
|
|
4421
4417
|
|
|
4422
4418
|
if len(parsed_messages) > 0:
|
|
4423
4419
|
tasks.append(
|
|
4424
|
-
self.memory_manager.acreate_user_memories(
|
|
4420
|
+
self.memory_manager.acreate_user_memories(
|
|
4421
|
+
messages=parsed_messages, user_id=user_id, agent_id=self.id
|
|
4422
|
+
)
|
|
4425
4423
|
)
|
|
4426
4424
|
else:
|
|
4427
4425
|
log_warning("Unable to add messages to memory")
|
|
@@ -5879,9 +5877,7 @@ class Agent:
|
|
|
5879
5877
|
user_memories = self.memory_manager.get_user_memories(user_id=user_id) # type: ignore
|
|
5880
5878
|
|
|
5881
5879
|
if user_memories and len(user_memories) > 0:
|
|
5882
|
-
system_message_content +=
|
|
5883
|
-
"You have access to memories from previous interactions with the user that you can use:\n\n"
|
|
5884
|
-
)
|
|
5880
|
+
system_message_content += "You have access to user info and preferences from previous interactions that you can use to personalize your response:\n\n"
|
|
5885
5881
|
system_message_content += "<memories_from_previous_interactions>"
|
|
5886
5882
|
for _memory in user_memories: # type: ignore
|
|
5887
5883
|
system_message_content += f"\n- {_memory.memory}"
|
|
@@ -6155,9 +6151,7 @@ class Agent:
|
|
|
6155
6151
|
user_memories = self.memory_manager.get_user_memories(user_id=user_id) # type: ignore
|
|
6156
6152
|
|
|
6157
6153
|
if user_memories and len(user_memories) > 0:
|
|
6158
|
-
system_message_content +=
|
|
6159
|
-
"You have access to memories from previous interactions with the user that you can use:\n\n"
|
|
6160
|
-
)
|
|
6154
|
+
system_message_content += "You have access to user info and preferences from previous interactions that you can use to personalize your response:\n\n"
|
|
6161
6155
|
system_message_content += "<memories_from_previous_interactions>"
|
|
6162
6156
|
for _memory in user_memories: # type: ignore
|
|
6163
6157
|
system_message_content += f"\n- {_memory.memory}"
|
|
@@ -8837,8 +8831,6 @@ class Agent:
|
|
|
8837
8831
|
run_response.input.audios = []
|
|
8838
8832
|
run_response.input.files = []
|
|
8839
8833
|
|
|
8840
|
-
# 2. RunOutput artifact media are skipped since we don't store them when store_media=False
|
|
8841
|
-
|
|
8842
8834
|
# 3. Scrub media from all messages
|
|
8843
8835
|
if run_response.messages:
|
|
8844
8836
|
for message in run_response.messages:
|
|
@@ -8869,23 +8861,36 @@ class Agent:
|
|
|
8869
8861
|
|
|
8870
8862
|
def _scrub_tool_results_from_run_output(self, run_response: RunOutput) -> None:
|
|
8871
8863
|
"""
|
|
8872
|
-
Remove all tool-related data from RunOutput when
|
|
8873
|
-
This
|
|
8864
|
+
Remove all tool-related data from RunOutput when store_tool_messages=False.
|
|
8865
|
+
This removes both the tool call and its corresponding result to maintain API consistency.
|
|
8874
8866
|
"""
|
|
8875
|
-
|
|
8876
|
-
|
|
8877
|
-
|
|
8878
|
-
|
|
8879
|
-
|
|
8880
|
-
|
|
8867
|
+
if not run_response.messages:
|
|
8868
|
+
return
|
|
8869
|
+
|
|
8870
|
+
# Step 1: Collect all tool_call_ids from tool result messages
|
|
8871
|
+
tool_call_ids_to_remove = set()
|
|
8872
|
+
for message in run_response.messages:
|
|
8873
|
+
if message.role == "tool" and message.tool_call_id:
|
|
8874
|
+
tool_call_ids_to_remove.add(message.tool_call_id)
|
|
8875
|
+
|
|
8876
|
+
# Step 2: Remove tool result messages (role="tool")
|
|
8877
|
+
run_response.messages = [msg for msg in run_response.messages if msg.role != "tool"]
|
|
8878
|
+
|
|
8879
|
+
# Step 3: Remove the assistant messages related to the scrubbed tool calls
|
|
8880
|
+
filtered_messages = []
|
|
8881
|
+
for message in run_response.messages:
|
|
8882
|
+
# Check if this assistant message made any of the tool calls we're removing
|
|
8883
|
+
should_remove = False
|
|
8884
|
+
if message.role == "assistant" and message.tool_calls:
|
|
8885
|
+
for tool_call in message.tool_calls:
|
|
8886
|
+
if tool_call.get("id") in tool_call_ids_to_remove:
|
|
8887
|
+
should_remove = True
|
|
8888
|
+
break
|
|
8889
|
+
|
|
8890
|
+
if not should_remove:
|
|
8891
|
+
filtered_messages.append(message)
|
|
8881
8892
|
|
|
8882
|
-
|
|
8883
|
-
"""Remove all tool-related data from a Message object."""
|
|
8884
|
-
message.tool_calls = None
|
|
8885
|
-
message.tool_call_id = None
|
|
8886
|
-
message.tool_name = None
|
|
8887
|
-
message.tool_args = None
|
|
8888
|
-
message.tool_call_error = None
|
|
8893
|
+
run_response.messages = filtered_messages
|
|
8889
8894
|
|
|
8890
8895
|
def _scrub_history_messages_from_run_output(self, run_response: RunOutput) -> None:
|
|
8891
8896
|
"""
|
|
@@ -8907,7 +8912,7 @@ class Agent:
|
|
|
8907
8912
|
self._scrub_media_from_run_output(run_response)
|
|
8908
8913
|
scrubbed = True
|
|
8909
8914
|
|
|
8910
|
-
if not self.
|
|
8915
|
+
if not self.store_tool_messages:
|
|
8911
8916
|
self._scrub_tool_results_from_run_output(run_response)
|
|
8912
8917
|
scrubbed = True
|
|
8913
8918
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Migration utility to migrate your Agno tables from v1 to v2"""
|
|
2
2
|
|
|
3
|
+
import gc
|
|
3
4
|
import json
|
|
4
5
|
from typing import Any, Dict, List, Optional, Union, cast
|
|
5
6
|
|
|
@@ -423,6 +424,18 @@ def migrate_table_in_batches(
|
|
|
423
424
|
|
|
424
425
|
log_info(f"Completed batch {batch_count}: migrated {batch_size_actual} records")
|
|
425
426
|
|
|
427
|
+
# Explicit cleanup to free memory before next batch
|
|
428
|
+
del batch_content
|
|
429
|
+
if v1_table_type in ["agent_sessions", "team_sessions", "workflow_sessions"]:
|
|
430
|
+
del sessions
|
|
431
|
+
elif v1_table_type == "memories":
|
|
432
|
+
del memories
|
|
433
|
+
|
|
434
|
+
# Force garbage collection to return memory to OS
|
|
435
|
+
# This is necessary because Python's memory allocator retains memory after large operations
|
|
436
|
+
# See: https://github.com/sqlalchemy/sqlalchemy/issues/4616
|
|
437
|
+
gc.collect()
|
|
438
|
+
|
|
426
439
|
log_info(f"✅ Migration completed for table {v1_table_name}: {total_migrated} total records migrated")
|
|
427
440
|
|
|
428
441
|
|
|
@@ -631,11 +631,7 @@ class MongoDb(BaseDb):
|
|
|
631
631
|
session_dict = session.to_dict()
|
|
632
632
|
|
|
633
633
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
634
|
-
updated_at = (
|
|
635
|
-
session_dict.get("updated_at")
|
|
636
|
-
if preserve_updated_at and session_dict.get("updated_at")
|
|
637
|
-
else int(time.time())
|
|
638
|
-
)
|
|
634
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
639
635
|
|
|
640
636
|
if isinstance(session, AgentSession):
|
|
641
637
|
record = {
|
|
@@ -1096,7 +1092,7 @@ class MongoDb(BaseDb):
|
|
|
1096
1092
|
memory.memory_id = str(uuid4())
|
|
1097
1093
|
|
|
1098
1094
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
1099
|
-
updated_at = memory.updated_at if preserve_updated_at
|
|
1095
|
+
updated_at = memory.updated_at if preserve_updated_at else current_time
|
|
1100
1096
|
|
|
1101
1097
|
record = {
|
|
1102
1098
|
"user_id": memory.user_id,
|
|
@@ -16,8 +16,6 @@ except ImportError:
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
# -- DB util methods --
|
|
19
|
-
|
|
20
|
-
|
|
21
19
|
def create_collection_indexes(collection: Collection, collection_type: str) -> None:
|
|
22
20
|
"""Create all required indexes for a collection"""
|
|
23
21
|
try:
|
|
@@ -58,8 +56,6 @@ def apply_pagination(
|
|
|
58
56
|
|
|
59
57
|
|
|
60
58
|
# -- Metrics util methods --
|
|
61
|
-
|
|
62
|
-
|
|
63
59
|
def calculate_date_metrics(date_to_process: date, sessions_data: dict) -> dict:
|
|
64
60
|
"""Calculate metrics for the given single date."""
|
|
65
61
|
metrics = {
|
|
@@ -760,11 +760,7 @@ class MySQLDb(BaseDb):
|
|
|
760
760
|
for session in agent_sessions:
|
|
761
761
|
session_dict = session.to_dict()
|
|
762
762
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
763
|
-
updated_at = (
|
|
764
|
-
session_dict.get("updated_at")
|
|
765
|
-
if preserve_updated_at and session_dict.get("updated_at")
|
|
766
|
-
else int(time.time())
|
|
767
|
-
)
|
|
763
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
768
764
|
agent_data.append(
|
|
769
765
|
{
|
|
770
766
|
"session_id": session_dict.get("session_id"),
|
|
@@ -816,11 +812,7 @@ class MySQLDb(BaseDb):
|
|
|
816
812
|
for session in team_sessions:
|
|
817
813
|
session_dict = session.to_dict()
|
|
818
814
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
819
|
-
updated_at = (
|
|
820
|
-
session_dict.get("updated_at")
|
|
821
|
-
if preserve_updated_at and session_dict.get("updated_at")
|
|
822
|
-
else int(time.time())
|
|
823
|
-
)
|
|
815
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
824
816
|
team_data.append(
|
|
825
817
|
{
|
|
826
818
|
"session_id": session_dict.get("session_id"),
|
|
@@ -872,11 +864,7 @@ class MySQLDb(BaseDb):
|
|
|
872
864
|
for session in workflow_sessions:
|
|
873
865
|
session_dict = session.to_dict()
|
|
874
866
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
875
|
-
updated_at = (
|
|
876
|
-
session_dict.get("updated_at")
|
|
877
|
-
if preserve_updated_at and session_dict.get("updated_at")
|
|
878
|
-
else int(time.time())
|
|
879
|
-
)
|
|
867
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
880
868
|
workflow_data.append(
|
|
881
869
|
{
|
|
882
870
|
"session_id": session_dict.get("session_id"),
|
|
@@ -1338,7 +1326,7 @@ class MySQLDb(BaseDb):
|
|
|
1338
1326
|
memory.memory_id = str(uuid4())
|
|
1339
1327
|
|
|
1340
1328
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
1341
|
-
updated_at = memory.updated_at if preserve_updated_at
|
|
1329
|
+
updated_at = memory.updated_at if preserve_updated_at else current_time
|
|
1342
1330
|
bulk_data.append(
|
|
1343
1331
|
{
|
|
1344
1332
|
"memory_id": memory.memory_id,
|
|
@@ -740,12 +740,8 @@ class PostgresDb(BaseDb):
|
|
|
740
740
|
session_records = []
|
|
741
741
|
for agent_session in agent_sessions:
|
|
742
742
|
session_dict = agent_session.to_dict()
|
|
743
|
-
# Use preserved updated_at if flag is set
|
|
744
|
-
updated_at = (
|
|
745
|
-
session_dict.get("updated_at")
|
|
746
|
-
if preserve_updated_at and session_dict.get("updated_at")
|
|
747
|
-
else int(time.time())
|
|
748
|
-
)
|
|
743
|
+
# Use preserved updated_at if flag is set (even if None), otherwise use current time
|
|
744
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
749
745
|
session_records.append(
|
|
750
746
|
{
|
|
751
747
|
"session_id": session_dict.get("session_id"),
|
|
@@ -789,12 +785,8 @@ class PostgresDb(BaseDb):
|
|
|
789
785
|
session_records = []
|
|
790
786
|
for team_session in team_sessions:
|
|
791
787
|
session_dict = team_session.to_dict()
|
|
792
|
-
# Use preserved updated_at if flag is set
|
|
793
|
-
updated_at = (
|
|
794
|
-
session_dict.get("updated_at")
|
|
795
|
-
if preserve_updated_at and session_dict.get("updated_at")
|
|
796
|
-
else int(time.time())
|
|
797
|
-
)
|
|
788
|
+
# Use preserved updated_at if flag is set (even if None), otherwise use current time
|
|
789
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
798
790
|
session_records.append(
|
|
799
791
|
{
|
|
800
792
|
"session_id": session_dict.get("session_id"),
|
|
@@ -838,12 +830,8 @@ class PostgresDb(BaseDb):
|
|
|
838
830
|
session_records = []
|
|
839
831
|
for workflow_session in workflow_sessions:
|
|
840
832
|
session_dict = workflow_session.to_dict()
|
|
841
|
-
# Use preserved updated_at if flag is set
|
|
842
|
-
updated_at = (
|
|
843
|
-
session_dict.get("updated_at")
|
|
844
|
-
if preserve_updated_at and session_dict.get("updated_at")
|
|
845
|
-
else int(time.time())
|
|
846
|
-
)
|
|
833
|
+
# Use preserved updated_at if flag is set (even if None), otherwise use current time
|
|
834
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
847
835
|
session_records.append(
|
|
848
836
|
{
|
|
849
837
|
"session_id": session_dict.get("session_id"),
|
|
@@ -1286,8 +1274,8 @@ class PostgresDb(BaseDb):
|
|
|
1286
1274
|
if memory.memory_id is None:
|
|
1287
1275
|
memory.memory_id = str(uuid4())
|
|
1288
1276
|
|
|
1289
|
-
# Use preserved updated_at if flag is set
|
|
1290
|
-
updated_at = memory.updated_at if preserve_updated_at
|
|
1277
|
+
# Use preserved updated_at if flag is set (even if None), otherwise use current time
|
|
1278
|
+
updated_at = memory.updated_at if preserve_updated_at else current_time
|
|
1291
1279
|
memory_records.append(
|
|
1292
1280
|
{
|
|
1293
1281
|
"memory_id": memory.memory_id,
|
|
@@ -841,6 +841,8 @@ class SingleStoreDb(BaseDb):
|
|
|
841
841
|
agent_data = []
|
|
842
842
|
for session in agent_sessions:
|
|
843
843
|
session_dict = session.to_dict()
|
|
844
|
+
# Use preserved updated_at if flag is set, otherwise use current time
|
|
845
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
844
846
|
agent_data.append(
|
|
845
847
|
{
|
|
846
848
|
"session_id": session_dict.get("session_id"),
|
|
@@ -853,7 +855,7 @@ class SingleStoreDb(BaseDb):
|
|
|
853
855
|
"summary": session_dict.get("summary"),
|
|
854
856
|
"metadata": session_dict.get("metadata"),
|
|
855
857
|
"created_at": session_dict.get("created_at"),
|
|
856
|
-
"updated_at":
|
|
858
|
+
"updated_at": updated_at,
|
|
857
859
|
}
|
|
858
860
|
)
|
|
859
861
|
|
|
@@ -867,7 +869,7 @@ class SingleStoreDb(BaseDb):
|
|
|
867
869
|
summary=stmt.inserted.summary,
|
|
868
870
|
metadata=stmt.inserted.metadata,
|
|
869
871
|
runs=stmt.inserted.runs,
|
|
870
|
-
updated_at=
|
|
872
|
+
updated_at=stmt.inserted.updated_at,
|
|
871
873
|
)
|
|
872
874
|
sess.execute(stmt, agent_data)
|
|
873
875
|
|
|
@@ -890,6 +892,8 @@ class SingleStoreDb(BaseDb):
|
|
|
890
892
|
team_data = []
|
|
891
893
|
for session in team_sessions:
|
|
892
894
|
session_dict = session.to_dict()
|
|
895
|
+
# Use preserved updated_at if flag is set, otherwise use current time
|
|
896
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
893
897
|
team_data.append(
|
|
894
898
|
{
|
|
895
899
|
"session_id": session_dict.get("session_id"),
|
|
@@ -902,7 +906,7 @@ class SingleStoreDb(BaseDb):
|
|
|
902
906
|
"summary": session_dict.get("summary"),
|
|
903
907
|
"metadata": session_dict.get("metadata"),
|
|
904
908
|
"created_at": session_dict.get("created_at"),
|
|
905
|
-
"updated_at":
|
|
909
|
+
"updated_at": updated_at,
|
|
906
910
|
}
|
|
907
911
|
)
|
|
908
912
|
|
|
@@ -916,7 +920,7 @@ class SingleStoreDb(BaseDb):
|
|
|
916
920
|
summary=stmt.inserted.summary,
|
|
917
921
|
metadata=stmt.inserted.metadata,
|
|
918
922
|
runs=stmt.inserted.runs,
|
|
919
|
-
updated_at=
|
|
923
|
+
updated_at=stmt.inserted.updated_at,
|
|
920
924
|
)
|
|
921
925
|
sess.execute(stmt, team_data)
|
|
922
926
|
|
|
@@ -939,6 +943,8 @@ class SingleStoreDb(BaseDb):
|
|
|
939
943
|
workflow_data = []
|
|
940
944
|
for session in workflow_sessions:
|
|
941
945
|
session_dict = session.to_dict()
|
|
946
|
+
# Use preserved updated_at if flag is set, otherwise use current time
|
|
947
|
+
updated_at = session_dict.get("updated_at") if preserve_updated_at else int(time.time())
|
|
942
948
|
workflow_data.append(
|
|
943
949
|
{
|
|
944
950
|
"session_id": session_dict.get("session_id"),
|
|
@@ -951,7 +957,7 @@ class SingleStoreDb(BaseDb):
|
|
|
951
957
|
"summary": session_dict.get("summary"),
|
|
952
958
|
"metadata": session_dict.get("metadata"),
|
|
953
959
|
"created_at": session_dict.get("created_at"),
|
|
954
|
-
"updated_at":
|
|
960
|
+
"updated_at": updated_at,
|
|
955
961
|
}
|
|
956
962
|
)
|
|
957
963
|
|
|
@@ -965,7 +971,7 @@ class SingleStoreDb(BaseDb):
|
|
|
965
971
|
summary=stmt.inserted.summary,
|
|
966
972
|
metadata=stmt.inserted.metadata,
|
|
967
973
|
runs=stmt.inserted.runs,
|
|
968
|
-
updated_at=
|
|
974
|
+
updated_at=stmt.inserted.updated_at,
|
|
969
975
|
)
|
|
970
976
|
sess.execute(stmt, workflow_data)
|
|
971
977
|
|
|
@@ -1361,9 +1367,12 @@ class SingleStoreDb(BaseDb):
|
|
|
1361
1367
|
|
|
1362
1368
|
# Prepare data for bulk insert
|
|
1363
1369
|
memory_data = []
|
|
1370
|
+
current_time = int(time.time())
|
|
1364
1371
|
for memory in memories:
|
|
1365
1372
|
if memory.memory_id is None:
|
|
1366
1373
|
memory.memory_id = str(uuid4())
|
|
1374
|
+
# Use preserved updated_at if flag is set, otherwise use current time
|
|
1375
|
+
updated_at = memory.updated_at if preserve_updated_at else current_time
|
|
1367
1376
|
memory_data.append(
|
|
1368
1377
|
{
|
|
1369
1378
|
"memory_id": memory.memory_id,
|
|
@@ -1373,7 +1382,7 @@ class SingleStoreDb(BaseDb):
|
|
|
1373
1382
|
"agent_id": memory.agent_id,
|
|
1374
1383
|
"team_id": memory.team_id,
|
|
1375
1384
|
"topics": memory.topics,
|
|
1376
|
-
"updated_at":
|
|
1385
|
+
"updated_at": updated_at,
|
|
1377
1386
|
}
|
|
1378
1387
|
)
|
|
1379
1388
|
|
|
@@ -1389,7 +1398,7 @@ class SingleStoreDb(BaseDb):
|
|
|
1389
1398
|
user_id=stmt.inserted.user_id,
|
|
1390
1399
|
agent_id=stmt.inserted.agent_id,
|
|
1391
1400
|
team_id=stmt.inserted.team_id,
|
|
1392
|
-
updated_at=
|
|
1401
|
+
updated_at=stmt.inserted.updated_at,
|
|
1393
1402
|
)
|
|
1394
1403
|
sess.execute(stmt, memory_data)
|
|
1395
1404
|
|
|
@@ -717,11 +717,7 @@ class SqliteDb(BaseDb):
|
|
|
717
717
|
for session in agent_sessions:
|
|
718
718
|
serialized_session = serialize_session_json_fields(session.to_dict())
|
|
719
719
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
720
|
-
updated_at = (
|
|
721
|
-
serialized_session.get("updated_at")
|
|
722
|
-
if preserve_updated_at and serialized_session.get("updated_at")
|
|
723
|
-
else int(time.time())
|
|
724
|
-
)
|
|
720
|
+
updated_at = serialized_session.get("updated_at") if preserve_updated_at else int(time.time())
|
|
725
721
|
agent_data.append(
|
|
726
722
|
{
|
|
727
723
|
"session_id": serialized_session.get("session_id"),
|
|
@@ -776,11 +772,7 @@ class SqliteDb(BaseDb):
|
|
|
776
772
|
for session in team_sessions:
|
|
777
773
|
serialized_session = serialize_session_json_fields(session.to_dict())
|
|
778
774
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
779
|
-
updated_at = (
|
|
780
|
-
serialized_session.get("updated_at")
|
|
781
|
-
if preserve_updated_at and serialized_session.get("updated_at")
|
|
782
|
-
else int(time.time())
|
|
783
|
-
)
|
|
775
|
+
updated_at = serialized_session.get("updated_at") if preserve_updated_at else int(time.time())
|
|
784
776
|
team_data.append(
|
|
785
777
|
{
|
|
786
778
|
"session_id": serialized_session.get("session_id"),
|
|
@@ -835,11 +827,7 @@ class SqliteDb(BaseDb):
|
|
|
835
827
|
for session in workflow_sessions:
|
|
836
828
|
serialized_session = serialize_session_json_fields(session.to_dict())
|
|
837
829
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
838
|
-
updated_at = (
|
|
839
|
-
serialized_session.get("updated_at")
|
|
840
|
-
if preserve_updated_at and serialized_session.get("updated_at")
|
|
841
|
-
else int(time.time())
|
|
842
|
-
)
|
|
830
|
+
updated_at = serialized_session.get("updated_at") if preserve_updated_at else int(time.time())
|
|
843
831
|
workflow_data.append(
|
|
844
832
|
{
|
|
845
833
|
"session_id": serialized_session.get("session_id"),
|
|
@@ -1280,7 +1268,7 @@ class SqliteDb(BaseDb):
|
|
|
1280
1268
|
memory.memory_id = str(uuid4())
|
|
1281
1269
|
|
|
1282
1270
|
# Use preserved updated_at if flag is set and value exists, otherwise use current time
|
|
1283
|
-
updated_at = memory.updated_at if preserve_updated_at
|
|
1271
|
+
updated_at = memory.updated_at if preserve_updated_at else current_time
|
|
1284
1272
|
bulk_data.append(
|
|
1285
1273
|
{
|
|
1286
1274
|
"user_id": memory.user_id,
|