agno 2.3.1__tar.gz → 2.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agno-2.3.1 → agno-2.3.2}/PKG-INFO +1 -1
- {agno-2.3.1 → agno-2.3.2}/agno/agent/agent.py +1 -1
- {agno-2.3.1 → agno-2.3.2}/agno/db/schemas/memory.py +7 -5
- {agno-2.3.1 → agno-2.3.2}/agno/db/sqlite/async_sqlite.py +3 -3
- {agno-2.3.1 → agno-2.3.2}/agno/db/sqlite/sqlite.py +4 -4
- {agno-2.3.1 → agno-2.3.2}/agno/memory/manager.py +6 -4
- {agno-2.3.1 → agno-2.3.2}/agno/os/router.py +0 -1
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/memory/memory.py +3 -0
- {agno-2.3.1 → agno-2.3.2}/agno/team/team.py +6 -6
- agno-2.3.2/agno/utils/dttm.py +46 -0
- {agno-2.3.1 → agno-2.3.2}/agno.egg-info/PKG-INFO +1 -1
- {agno-2.3.1 → agno-2.3.2}/pyproject.toml +1 -1
- agno-2.3.1/agno/utils/dttm.py +0 -13
- {agno-2.3.1 → agno-2.3.2}/LICENSE +0 -0
- {agno-2.3.1 → agno-2.3.2}/README.md +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/agent/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/agent.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/api.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/evals.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/os.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/routes.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/agent.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/evals.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/os.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/response.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/team.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/schemas/workflows.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/settings.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/team.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/api/workflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/cloud/aws/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/cloud/aws/s3/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/cloud/aws/s3/api_client.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/cloud/aws/s3/bucket.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/cloud/aws/s3/object.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/culture/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/culture/manager.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/async_postgres/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/dynamo/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/dynamo/dynamo.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/dynamo/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/dynamo/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/firestore/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/firestore/firestore.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/firestore/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/firestore/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/gcs_json/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/gcs_json/gcs_json_db.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/gcs_json/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/in_memory/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/in_memory/in_memory_db.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/in_memory/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/json/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/json/json_db.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/json/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/migrations/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/migrations/manager.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/migrations/v1_to_v2.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/migrations/versions/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/migrations/versions/v2_3_0.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mongo/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mongo/async_mongo.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mongo/mongo.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mongo/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mongo/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mysql/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mysql/mysql.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mysql/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/mysql/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/postgres/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/postgres/async_postgres.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/postgres/postgres.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/postgres/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/postgres/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/redis/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/redis/redis.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/redis/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/redis/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/schemas/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/schemas/culture.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/schemas/evals.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/schemas/knowledge.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/schemas/metrics.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/singlestore/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/singlestore/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/singlestore/singlestore.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/singlestore/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/sqlite/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/sqlite/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/sqlite/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/surrealdb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/surrealdb/metrics.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/surrealdb/models.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/surrealdb/queries.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/surrealdb/surrealdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/surrealdb/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/db/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/debug.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/eval/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/eval/accuracy.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/eval/performance.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/eval/reliability.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/eval/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/exceptions.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/filters.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/guardrails/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/guardrails/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/guardrails/openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/guardrails/pii.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/guardrails/prompt_injection.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/integrations/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/integrations/discord/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/integrations/discord/client.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/agentic.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/document.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/fixed.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/markdown.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/recursive.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/row.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/semantic.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/chunking/strategy.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/content.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/document/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/document/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/aws_bedrock.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/azure_openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/cohere.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/fastembed.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/fireworks.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/google.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/huggingface.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/jina.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/langdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/mistral.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/nebius.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/ollama.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/sentence_transformer.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/together.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/vllm.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/embedder/voyageai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/knowledge.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/arxiv_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/csv_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/docx_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/firecrawl_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/json_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/markdown_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/pdf_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/pptx_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/reader_factory.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/s3_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/tavily_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/text_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/web_search_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/website_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/wikipedia_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reader/youtube_reader.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/remote_content/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/remote_content/remote_content.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reranker/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reranker/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reranker/cohere.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reranker/infinity.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/reranker/sentence_transformer.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/types.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/knowledge/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/media.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/memory/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/aimlapi/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/anthropic/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/anthropic/claude.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/aws/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/aws/bedrock.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/aws/claude.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/azure/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/azure/ai_foundry.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/azure/openai_chat.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/cerebras/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/cerebras/cerebras.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/cohere/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/cohere/chat.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/cometapi/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/cometapi/cometapi.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/dashscope/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/dashscope/dashscope.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/deepinfra/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/deepseek/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/deepseek/deepseek.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/defaults.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/fireworks/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/fireworks/fireworks.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/google/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/google/gemini.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/groq/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/groq/groq.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/huggingface/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/huggingface/huggingface.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/ibm/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/ibm/watsonx.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/internlm/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/internlm/internlm.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/langdb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/langdb/langdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/litellm/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/litellm/chat.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/llama_cpp/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/llama_cpp/llama_cpp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/lmstudio/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/message.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/meta/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/meta/llama.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/meta/llama_openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/metrics.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/mistral/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/mistral/mistral.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/nebius/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/nebius/nebius.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/nexus/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/nexus/nexus.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/nvidia/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/nvidia/nvidia.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/ollama/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/ollama/chat.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/openai/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/openai/chat.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/openai/like.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/openai/responses.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/openrouter/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/openrouter/openrouter.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/perplexity/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/perplexity/perplexity.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/portkey/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/portkey/portkey.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/requesty/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/requesty/requesty.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/response.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/sambanova/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/sambanova/sambanova.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/siliconflow/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/siliconflow/siliconflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/together/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/together/together.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/vercel/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/vercel/v0.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/vertexai/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/vertexai/claude.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/vllm/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/vllm/vllm.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/xai/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/models/xai/xai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/app.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/auth.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/config.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/a2a/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/a2a/a2a.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/a2a/router.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/a2a/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/agui/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/agui/agui.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/agui/router.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/agui/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/slack/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/slack/router.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/slack/security.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/slack/slack.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/whatsapp/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/whatsapp/router.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/whatsapp/security.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/mcp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/middleware/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/middleware/jwt.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/evals/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/evals/evals.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/evals/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/evals/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/health.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/home.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/knowledge/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/knowledge/knowledge.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/knowledge/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/memory/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/memory/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/metrics/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/metrics/metrics.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/metrics/schemas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/session/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/routers/session/session.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/schema.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/settings.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/os/utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/py.typed +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/anthropic.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/azure_ai_foundry.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/deepseek.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/default.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/gemini.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/groq.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/helpers.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/ollama.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/step.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/reasoning/vertexai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/run/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/run/agent.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/run/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/run/cancel.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/run/messages.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/run/team.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/run/workflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/session/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/session/agent.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/session/summary.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/session/team.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/session/workflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/team/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/agentql.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/airflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/api.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/apify.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/arxiv.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/aws_lambda.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/aws_ses.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/baidusearch.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/bitbucket.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/brandfetch.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/bravesearch.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/brightdata.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/browserbase.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/calcom.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/calculator.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/cartesia.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/clickup.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/confluence.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/crawl4ai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/csv_toolkit.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/dalle.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/daytona.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/decorator.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/desi_vocal.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/discord.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/docker.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/duckdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/duckduckgo.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/e2b.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/eleven_labs.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/email.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/evm.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/exa.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/fal.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/file.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/file_generation.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/financial_datasets.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/firecrawl.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/function.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/giphy.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/github.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/gmail.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/google_bigquery.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/google_drive.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/google_maps.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/googlecalendar.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/googlesheets.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/hackernews.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/jina.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/jira.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/knowledge.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/linear.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/linkup.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/local_file_system.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/lumalab.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/mcp/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/mcp/mcp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/mcp/multi_mcp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/mcp/params.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/mcp_toolbox.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/mem0.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/memori.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/memory.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/mlx_transcribe.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/models/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/models/azure_openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/models/gemini.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/models/groq.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/models/morph.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/models/nebius.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/models_labs.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/moviepy_video.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/nano_banana.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/neo4j.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/newspaper.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/newspaper4k.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/notion.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/openbb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/opencv.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/openweather.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/oxylabs.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/pandas.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/parallel.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/postgres.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/pubmed.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/python.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/reasoning.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/reddit.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/replicate.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/resend.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/scrapegraph.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/searxng.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/serpapi.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/serper.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/shell.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/slack.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/sleep.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/spider.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/sql.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/streamlit/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/streamlit/components.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/tavily.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/telegram.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/todoist.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/tool_registry.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/toolkit.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/trafilatura.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/trello.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/twilio.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/user_control_flow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/valyu.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/visualization.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/webbrowser.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/webex.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/website.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/webtools.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/whatsapp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/wikipedia.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/workflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/x.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/yfinance.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/youtube.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/zendesk.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/zep.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/tools/zoom.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/agent.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/audio.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/certs.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/code_execution.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/common.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/enum.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/env.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/events.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/format_str.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/functions.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/gemini.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/hooks.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/http.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/json_schema.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/knowledge.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/location.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/log.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/mcp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/media.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/merge_dict.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/message.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/ai_foundry.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/claude.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/cohere.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/llama.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/mistral.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/openai_responses.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/schema_utils.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/models/watsonx.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/openai.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/pickle.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/pprint.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/print_response/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/print_response/agent.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/print_response/team.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/print_response/workflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/prompts.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/reasoning.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/response.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/response_iterator.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/safe_formatter.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/serialize.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/shell.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/streamlit.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/string.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/team.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/timer.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/tools.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/web.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/whatsapp.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/utils/yaml_io.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/base.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/cassandra/cassandra.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/cassandra/index.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/chroma/chromadb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/couchbase/couchbase.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/distance.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/lancedb/lance_db.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/langchaindb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/langchaindb/langchaindb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/lightrag/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/lightrag/lightrag.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/llamaindex/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/milvus/milvus.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/mongodb/mongodb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/pgvector/index.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/pgvector/pgvector.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/pineconedb/pineconedb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/qdrant/qdrant.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/redis/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/redis/redisdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/search.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/singlestore/index.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/singlestore/singlestore.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/surrealdb/surrealdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/upstashdb/upstashdb.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/weaviate/index.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/vectordb/weaviate/weaviate.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/__init__.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/agent.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/condition.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/loop.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/parallel.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/router.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/step.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/steps.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/types.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno/workflow/workflow.py +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno.egg-info/SOURCES.txt +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno.egg-info/dependency_links.txt +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno.egg-info/requires.txt +0 -0
- {agno-2.3.1 → agno-2.3.2}/agno.egg-info/top_level.txt +0 -0
- {agno-2.3.1 → agno-2.3.2}/setup.cfg +0 -0
|
@@ -1501,7 +1501,7 @@ class Agent:
|
|
|
1501
1501
|
add_session_state_to_context: Optional[bool] = None,
|
|
1502
1502
|
dependencies: Optional[Dict[str, Any]] = None,
|
|
1503
1503
|
metadata: Optional[Dict[str, Any]] = None,
|
|
1504
|
-
yield_run_response: bool =
|
|
1504
|
+
yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
|
|
1505
1505
|
yield_run_output: bool = False,
|
|
1506
1506
|
debug_mode: Optional[bool] = None,
|
|
1507
1507
|
**kwargs: Any,
|
|
@@ -2,6 +2,8 @@ from dataclasses import dataclass
|
|
|
2
2
|
from datetime import datetime, timezone
|
|
3
3
|
from typing import Any, Dict, List, Optional
|
|
4
4
|
|
|
5
|
+
from agno.utils.dttm import now_epoch_s
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
@dataclass
|
|
7
9
|
class UserMemory:
|
|
@@ -12,8 +14,8 @@ class UserMemory:
|
|
|
12
14
|
topics: Optional[List[str]] = None
|
|
13
15
|
user_id: Optional[str] = None
|
|
14
16
|
input: Optional[str] = None
|
|
15
|
-
created_at: Optional[
|
|
16
|
-
updated_at: Optional[
|
|
17
|
+
created_at: Optional[int] = None
|
|
18
|
+
updated_at: Optional[int] = None
|
|
17
19
|
feedback: Optional[str] = None
|
|
18
20
|
|
|
19
21
|
agent_id: Optional[str] = None
|
|
@@ -22,15 +24,15 @@ class UserMemory:
|
|
|
22
24
|
def __post_init__(self) -> None:
|
|
23
25
|
"""Automatically set created_at if not provided."""
|
|
24
26
|
if self.created_at is None:
|
|
25
|
-
self.created_at =
|
|
27
|
+
self.created_at = now_epoch_s()
|
|
26
28
|
|
|
27
29
|
def to_dict(self) -> Dict[str, Any]:
|
|
28
30
|
_dict = {
|
|
29
31
|
"memory_id": self.memory_id,
|
|
30
32
|
"memory": self.memory,
|
|
31
33
|
"topics": self.topics,
|
|
32
|
-
"created_at": self.created_at.isoformat() if self.created_at else None,
|
|
33
|
-
"updated_at": self.updated_at.isoformat() if self.updated_at else None,
|
|
34
|
+
"created_at": datetime.fromtimestamp(self.created_at).isoformat() if self.created_at else None,
|
|
35
|
+
"updated_at": datetime.fromtimestamp(self.updated_at).isoformat() if self.updated_at else None,
|
|
34
36
|
"input": self.input,
|
|
35
37
|
"user_id": self.user_id,
|
|
36
38
|
"agent_id": self.agent_id,
|
|
@@ -28,7 +28,7 @@ from agno.utils.log import log_debug, log_error, log_info, log_warning
|
|
|
28
28
|
from agno.utils.string import generate_id
|
|
29
29
|
|
|
30
30
|
try:
|
|
31
|
-
from sqlalchemy import Column, MetaData,
|
|
31
|
+
from sqlalchemy import Column, MetaData, String, Table, func, select, text
|
|
32
32
|
from sqlalchemy.dialects import sqlite
|
|
33
33
|
from sqlalchemy.ext.asyncio import AsyncEngine, async_sessionmaker, create_async_engine
|
|
34
34
|
from sqlalchemy.schema import Index, UniqueConstraint
|
|
@@ -1182,8 +1182,8 @@ class AsyncSqliteDb(AsyncBaseDb):
|
|
|
1182
1182
|
if team_id is not None:
|
|
1183
1183
|
stmt = stmt.where(table.c.team_id == team_id)
|
|
1184
1184
|
if topics is not None:
|
|
1185
|
-
|
|
1186
|
-
|
|
1185
|
+
for topic in topics:
|
|
1186
|
+
stmt = stmt.where(func.cast(table.c.topics, String).like(f'%"{topic}"%'))
|
|
1187
1187
|
if search_content is not None:
|
|
1188
1188
|
stmt = stmt.where(table.c.memory.ilike(f"%{search_content}%"))
|
|
1189
1189
|
|
|
@@ -28,7 +28,7 @@ from agno.utils.log import log_debug, log_error, log_info, log_warning
|
|
|
28
28
|
from agno.utils.string import generate_id
|
|
29
29
|
|
|
30
30
|
try:
|
|
31
|
-
from sqlalchemy import Column, MetaData,
|
|
31
|
+
from sqlalchemy import Column, MetaData, String, Table, func, select, text
|
|
32
32
|
from sqlalchemy.dialects import sqlite
|
|
33
33
|
from sqlalchemy.engine import Engine, create_engine
|
|
34
34
|
from sqlalchemy.orm import scoped_session, sessionmaker
|
|
@@ -1176,8 +1176,8 @@ class SqliteDb(BaseDb):
|
|
|
1176
1176
|
if team_id is not None:
|
|
1177
1177
|
stmt = stmt.where(table.c.team_id == team_id)
|
|
1178
1178
|
if topics is not None:
|
|
1179
|
-
|
|
1180
|
-
|
|
1179
|
+
for topic in topics:
|
|
1180
|
+
stmt = stmt.where(func.cast(table.c.topics, String).like(f'%"{topic}"%'))
|
|
1181
1181
|
if search_content is not None:
|
|
1182
1182
|
stmt = stmt.where(table.c.memory.ilike(f"%{search_content}%"))
|
|
1183
1183
|
|
|
@@ -1252,7 +1252,7 @@ class SqliteDb(BaseDb):
|
|
|
1252
1252
|
)
|
|
1253
1253
|
|
|
1254
1254
|
count_stmt = select(func.count()).select_from(stmt.alias())
|
|
1255
|
-
total_count = sess.execute(count_stmt).scalar()
|
|
1255
|
+
total_count = sess.execute(count_stmt).scalar() or 0
|
|
1256
1256
|
|
|
1257
1257
|
# Pagination
|
|
1258
1258
|
if limit is not None:
|
|
@@ -13,6 +13,7 @@ from agno.models.base import Model
|
|
|
13
13
|
from agno.models.message import Message
|
|
14
14
|
from agno.models.utils import get_model
|
|
15
15
|
from agno.tools.function import Function
|
|
16
|
+
from agno.utils.dttm import now_epoch_s
|
|
16
17
|
from agno.utils.log import (
|
|
17
18
|
log_debug,
|
|
18
19
|
log_error,
|
|
@@ -227,7 +228,7 @@ class MemoryManager:
|
|
|
227
228
|
memory.user_id = user_id
|
|
228
229
|
|
|
229
230
|
if not memory.updated_at:
|
|
230
|
-
memory.updated_at =
|
|
231
|
+
memory.updated_at = now_epoch_s()
|
|
231
232
|
|
|
232
233
|
self._upsert_db_memory(memory=memory)
|
|
233
234
|
return memory.memory_id
|
|
@@ -255,7 +256,7 @@ class MemoryManager:
|
|
|
255
256
|
user_id = "default"
|
|
256
257
|
|
|
257
258
|
if not memory.updated_at:
|
|
258
|
-
memory.updated_at =
|
|
259
|
+
memory.updated_at = now_epoch_s()
|
|
259
260
|
|
|
260
261
|
memory.memory_id = memory_id
|
|
261
262
|
memory.user_id = user_id
|
|
@@ -671,7 +672,7 @@ class MemoryManager:
|
|
|
671
672
|
# If updated_at is None, place at the beginning of the list
|
|
672
673
|
sorted_memories_list = sorted(
|
|
673
674
|
memories_list,
|
|
674
|
-
key=lambda
|
|
675
|
+
key=lambda m: m.updated_at if m.updated_at is not None else 0,
|
|
675
676
|
)
|
|
676
677
|
else:
|
|
677
678
|
sorted_memories_list = []
|
|
@@ -694,6 +695,7 @@ class MemoryManager:
|
|
|
694
695
|
if memories is None:
|
|
695
696
|
memories = {}
|
|
696
697
|
|
|
698
|
+
MAX_UNIX_TS = 2**63 - 1
|
|
697
699
|
memories_list = memories.get(user_id, [])
|
|
698
700
|
# Sort memories by updated_at timestamp if available
|
|
699
701
|
if memories_list:
|
|
@@ -701,7 +703,7 @@ class MemoryManager:
|
|
|
701
703
|
# If updated_at is None, place at the end of the list
|
|
702
704
|
sorted_memories_list = sorted(
|
|
703
705
|
memories_list,
|
|
704
|
-
key=lambda
|
|
706
|
+
key=lambda m: m.updated_at if m.updated_at is not None else MAX_UNIX_TS,
|
|
705
707
|
)
|
|
706
708
|
|
|
707
709
|
else:
|
|
@@ -1794,7 +1794,6 @@ def get_base_router(
|
|
|
1794
1794
|
raise HTTPException(status_code=404, detail="Database not found")
|
|
1795
1795
|
|
|
1796
1796
|
if target_version:
|
|
1797
|
-
|
|
1798
1797
|
# Use the session table as proxy for the database schema version
|
|
1799
1798
|
if isinstance(db, AsyncBaseDb):
|
|
1800
1799
|
current_version = await db.get_latest_schema_version(db.session_table_name)
|
|
@@ -470,6 +470,9 @@ def attach_routes(router: APIRouter, dbs: dict[str, list[Union[BaseDb, AsyncBase
|
|
|
470
470
|
) -> PaginatedResponse[UserStatsSchema]:
|
|
471
471
|
db = await get_db(dbs, db_id, table)
|
|
472
472
|
try:
|
|
473
|
+
# Ensure limit and page are integers
|
|
474
|
+
limit = int(limit) if limit is not None else 20
|
|
475
|
+
page = int(page) if page is not None else 1
|
|
473
476
|
if isinstance(db, AsyncBaseDb):
|
|
474
477
|
db = cast(AsyncBaseDb, db)
|
|
475
478
|
user_stats, total_count = await db.get_user_memory_stats(
|
|
@@ -1784,7 +1784,7 @@ class Team:
|
|
|
1784
1784
|
dependencies: Optional[Dict[str, Any]] = None,
|
|
1785
1785
|
metadata: Optional[Dict[str, Any]] = None,
|
|
1786
1786
|
debug_mode: Optional[bool] = None,
|
|
1787
|
-
yield_run_response: bool =
|
|
1787
|
+
yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
|
|
1788
1788
|
yield_run_output: bool = False,
|
|
1789
1789
|
**kwargs: Any,
|
|
1790
1790
|
) -> Iterator[Union[RunOutputEvent, TeamRunOutputEvent]]: ...
|
|
@@ -1812,7 +1812,7 @@ class Team:
|
|
|
1812
1812
|
dependencies: Optional[Dict[str, Any]] = None,
|
|
1813
1813
|
metadata: Optional[Dict[str, Any]] = None,
|
|
1814
1814
|
debug_mode: Optional[bool] = None,
|
|
1815
|
-
yield_run_response: bool =
|
|
1815
|
+
yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
|
|
1816
1816
|
yield_run_output: bool = False,
|
|
1817
1817
|
**kwargs: Any,
|
|
1818
1818
|
) -> Union[TeamRunOutput, Iterator[Union[RunOutputEvent, TeamRunOutputEvent]]]:
|
|
@@ -1964,7 +1964,7 @@ class Team:
|
|
|
1964
1964
|
last_exception = None
|
|
1965
1965
|
num_attempts = retries + 1
|
|
1966
1966
|
|
|
1967
|
-
yield_run_output = yield_run_output or yield_run_response # For backwards compatibility
|
|
1967
|
+
yield_run_output = bool(yield_run_output or yield_run_response) # For backwards compatibility
|
|
1968
1968
|
|
|
1969
1969
|
for attempt in range(num_attempts):
|
|
1970
1970
|
# Initialize the current run
|
|
@@ -2653,7 +2653,7 @@ class Team:
|
|
|
2653
2653
|
dependencies: Optional[Dict[str, Any]] = None,
|
|
2654
2654
|
metadata: Optional[Dict[str, Any]] = None,
|
|
2655
2655
|
debug_mode: Optional[bool] = None,
|
|
2656
|
-
yield_run_response: bool =
|
|
2656
|
+
yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
|
|
2657
2657
|
yield_run_output: bool = False,
|
|
2658
2658
|
**kwargs: Any,
|
|
2659
2659
|
) -> AsyncIterator[Union[RunOutputEvent, TeamRunOutputEvent]]: ...
|
|
@@ -2681,7 +2681,7 @@ class Team:
|
|
|
2681
2681
|
dependencies: Optional[Dict[str, Any]] = None,
|
|
2682
2682
|
metadata: Optional[Dict[str, Any]] = None,
|
|
2683
2683
|
debug_mode: Optional[bool] = None,
|
|
2684
|
-
yield_run_response: bool =
|
|
2684
|
+
yield_run_response: Optional[bool] = None, # To be deprecated: use yield_run_output instead
|
|
2685
2685
|
yield_run_output: bool = False,
|
|
2686
2686
|
**kwargs: Any,
|
|
2687
2687
|
) -> Union[TeamRunOutput, AsyncIterator[Union[RunOutputEvent, TeamRunOutputEvent]]]:
|
|
@@ -2821,7 +2821,7 @@ class Team:
|
|
|
2821
2821
|
last_exception = None
|
|
2822
2822
|
num_attempts = retries + 1
|
|
2823
2823
|
|
|
2824
|
-
yield_run_output = yield_run_output or yield_run_response # For backwards compatibility
|
|
2824
|
+
yield_run_output = bool(yield_run_output or yield_run_response) # For backwards compatibility
|
|
2825
2825
|
|
|
2826
2826
|
for attempt in range(num_attempts):
|
|
2827
2827
|
# Run the team
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from datetime import datetime, timezone
|
|
2
|
+
from typing import Union
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def current_datetime() -> datetime:
|
|
6
|
+
return datetime.now()
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def current_datetime_utc() -> datetime:
|
|
10
|
+
return datetime.now(timezone.utc)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def current_datetime_utc_str() -> str:
|
|
14
|
+
return current_datetime_utc().strftime("%Y-%m-%dT%H:%M:%S")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def now_epoch_s() -> int:
|
|
18
|
+
return int(datetime.now(timezone.utc).timestamp())
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def to_epoch_s(value: Union[int, float, str, datetime]) -> int:
|
|
22
|
+
"""Normalize various datetime representations to epoch seconds (UTC)."""
|
|
23
|
+
|
|
24
|
+
if isinstance(value, (int, float)):
|
|
25
|
+
# assume value is already in seconds
|
|
26
|
+
return int(value)
|
|
27
|
+
|
|
28
|
+
if isinstance(value, datetime):
|
|
29
|
+
dt = value
|
|
30
|
+
if dt.tzinfo is None:
|
|
31
|
+
dt = dt.replace(tzinfo=timezone.utc)
|
|
32
|
+
return int(dt.timestamp())
|
|
33
|
+
|
|
34
|
+
if isinstance(value, str):
|
|
35
|
+
s = value.strip()
|
|
36
|
+
if s.endswith("Z"):
|
|
37
|
+
s = s[:-1] + "+00:00"
|
|
38
|
+
try:
|
|
39
|
+
dt = datetime.fromisoformat(s)
|
|
40
|
+
except ValueError as e:
|
|
41
|
+
raise ValueError(f"Unsupported datetime string: {value!r}") from e
|
|
42
|
+
if dt.tzinfo is None:
|
|
43
|
+
dt = dt.replace(tzinfo=timezone.utc)
|
|
44
|
+
return int(dt.timestamp())
|
|
45
|
+
|
|
46
|
+
raise TypeError(f"Unsupported datetime value: {type(value)}")
|
agno-2.3.1/agno/utils/dttm.py
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from datetime import datetime, timezone
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
def current_datetime() -> datetime:
|
|
5
|
-
return datetime.now()
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def current_datetime_utc() -> datetime:
|
|
9
|
-
return datetime.now(timezone.utc)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def current_datetime_utc_str() -> str:
|
|
13
|
-
return current_datetime_utc().strftime("%Y-%m-%dT%H:%M:%S")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|