agno 1.7.5__tar.gz → 1.7.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-1.7.5 → agno-1.7.6}/PKG-INFO +16 -1
- {agno-1.7.5 → agno-1.7.6}/agno/agent/agent.py +0 -1
- {agno-1.7.5 → agno-1.7.6}/agno/app/agui/async_router.py +5 -5
- {agno-1.7.5 → agno-1.7.6}/agno/app/agui/sync_router.py +5 -5
- {agno-1.7.5 → agno-1.7.6}/agno/app/agui/utils.py +84 -14
- agno-1.7.6/agno/document/chunking/row.py +39 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/base.py +0 -7
- agno-1.7.6/agno/embedder/jina.py +73 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/agent.py +2 -2
- {agno-1.7.5 → agno-1.7.6}/agno/memory/team.py +2 -2
- {agno-1.7.5 → agno-1.7.6}/agno/models/aws/bedrock.py +311 -15
- {agno-1.7.5 → agno-1.7.6}/agno/models/litellm/chat.py +12 -3
- {agno-1.7.5 → agno-1.7.6}/agno/models/openai/chat.py +1 -22
- {agno-1.7.5 → agno-1.7.6}/agno/models/openai/responses.py +5 -5
- agno-1.7.6/agno/models/portkey/__init__.py +3 -0
- agno-1.7.6/agno/models/portkey/portkey.py +88 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/xai/xai.py +54 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/v2/workflow.py +4 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/mysql.py +1 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/postgres.py +1 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/session/v2/workflow.py +29 -5
- {agno-1.7.5 → agno-1.7.6}/agno/storage/singlestore.py +4 -1
- {agno-1.7.5 → agno-1.7.6}/agno/storage/sqlite.py +0 -1
- {agno-1.7.5 → agno-1.7.6}/agno/team/team.py +32 -17
- agno-1.7.6/agno/tools/bitbucket.py +292 -0
- agno-1.7.6/agno/tools/daytona.py +478 -0
- agno-1.7.6/agno/tools/evm.py +123 -0
- agno-1.7.6/agno/tools/linkup.py +54 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/mcp.py +10 -3
- {agno-1.7.5 → agno-1.7.6}/agno/tools/mem0.py +15 -2
- agno-1.7.6/agno/tools/postgres.py +260 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/log.py +16 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/string.py +14 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/pgvector/pgvector.py +4 -5
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/workflow.py +146 -19
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/workflow.py +90 -63
- {agno-1.7.5 → agno-1.7.6}/agno.egg-info/PKG-INFO +16 -1
- {agno-1.7.5 → agno-1.7.6}/agno.egg-info/SOURCES.txt +7 -0
- {agno-1.7.5 → agno-1.7.6}/agno.egg-info/requires.txt +20 -0
- {agno-1.7.5 → agno-1.7.6}/pyproject.toml +19 -3
- agno-1.7.5/agno/tools/daytona.py +0 -130
- agno-1.7.5/agno/tools/postgres.py +0 -247
- {agno-1.7.5 → agno-1.7.6}/LICENSE +0 -0
- {agno-1.7.5 → agno-1.7.6}/README.md +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/agent/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/agent/metrics.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/agent.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/api.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/evals.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/playground.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/routes.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/agent.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/evals.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/playground.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/response.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/team.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/user.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/workflows.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/schemas/workspace.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/team.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/user.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/workflows.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/api/workspace.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/agui/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/agui/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/discord/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/discord/client.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/fastapi/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/fastapi/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/fastapi/async_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/fastapi/sync_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/async_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/deploy.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/operator.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/schemas.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/serve.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/settings.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/sync_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/playground/utils.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/settings.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/slack/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/slack/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/slack/async_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/slack/security.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/slack/sync_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/utils.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/whatsapp/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/whatsapp/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/whatsapp/async_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/whatsapp/security.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/app/whatsapp/sync_router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/auth_server.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/config.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/console.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/credentials.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/entrypoint.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/operator.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/settings.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/ws/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/cli/ws/ws_cli.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/constants.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/debug.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/agentic.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/document.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/fixed.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/markdown.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/recursive.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/semantic.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/chunking/strategy.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/arxiv_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/csv_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/docx_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/firecrawl_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/gcs/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/gcs/pdf_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/json_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/markdown_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/pdf_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/s3/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/s3/pdf_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/s3/text_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/text_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/url_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/website_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/document/reader/youtube_reader.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/aws_bedrock.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/azure_openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/cohere.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/fastembed.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/fireworks.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/google.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/huggingface.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/langdb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/mistral.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/nebius.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/ollama.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/sentence_transformer.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/together.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/embedder/voyageai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/eval/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/eval/accuracy.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/eval/performance.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/eval/reliability.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/eval/utils.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/exceptions.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/file/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/file/file.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/file/local/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/file/local/csv.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/file/local/txt.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/infra/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/infra/app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/infra/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/infra/context.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/infra/db_app.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/infra/resource.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/infra/resources.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/agent.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/arxiv.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/combined.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/csv.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/csv_url.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/document.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/docx.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/firecrawl.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/gcs/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/gcs/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/gcs/pdf.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/json.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/langchain.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/light_rag.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/llamaindex.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/markdown.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/pdf.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/pdf_bytes.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/pdf_url.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/s3/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/s3/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/s3/pdf.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/s3/text.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/text.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/url.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/website.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/wikipedia.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/knowledge/youtube.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/media.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/classifier.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/db/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/db/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/db/mongodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/db/postgres.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/db/sqlite.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/manager.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/memory.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/row.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/summarizer.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/summary.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/firestore.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/mongodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/postgres.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/redis.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/schema.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/db/sqlite.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/manager.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/memory.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/schema.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/v2/summarizer.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/memory/workflow.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/aimlapi/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/anthropic/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/anthropic/claude.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/aws/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/aws/claude.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/azure/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/azure/ai_foundry.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/azure/openai_chat.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/cerebras/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/cerebras/cerebras.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/cohere/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/cohere/chat.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/deepinfra/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/deepseek/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/deepseek/deepseek.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/defaults.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/fireworks/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/fireworks/fireworks.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/google/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/google/gemini.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/groq/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/groq/groq.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/huggingface/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/huggingface/huggingface.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/ibm/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/ibm/watsonx.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/internlm/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/internlm/internlm.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/langdb/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/langdb/langdb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/litellm/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/lmstudio/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/message.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/meta/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/meta/llama.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/meta/llama_openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/mistral/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/mistral/mistral.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/nebius/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/nebius/nebius.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/nvidia/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/nvidia/nvidia.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/ollama/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/ollama/chat.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/ollama/tools.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/openai/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/openai/like.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/openrouter/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/openrouter/openrouter.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/perplexity/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/perplexity/perplexity.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/response.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/sambanova/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/sambanova/sambanova.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/together/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/together/together.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/vercel/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/vercel/v0.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/vllm/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/vllm/vllm.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/models/xai/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/playground/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/playground/deploy.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/playground/playground.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/playground/serve.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/playground/settings.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/py.typed +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/azure_ai_foundry.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/deepseek.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/default.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/groq.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/helpers.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/ollama.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reasoning/step.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reranker/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reranker/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reranker/cohere.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reranker/infinity.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/reranker/sentence_transformer.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/messages.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/response.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/team.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/v2/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/run/workflow.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/dynamodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/json.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/mongodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/postgres.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/singlestore.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/sqlite.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/agent/yaml.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/dynamodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/firestore.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/gcs_json.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/json.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/mongodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/redis.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/session/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/session/agent.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/session/team.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/session/v2/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/session/workflow.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/workflow/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/workflow/mongodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/workflow/postgres.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/workflow/sqlite.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/storage/yaml.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/team/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/agentql.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/airflow.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/api.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/apify.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/arxiv.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/aws_lambda.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/aws_ses.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/baidusearch.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/bravesearch.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/brightdata.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/browserbase.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/calcom.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/calculator.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/cartesia.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/clickup_tool.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/confluence.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/crawl4ai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/csv_toolkit.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/dalle.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/decorator.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/desi_vocal.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/discord.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/docker.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/duckdb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/duckduckgo.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/e2b.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/eleven_labs.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/email.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/exa.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/fal.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/file.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/financial_datasets.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/firecrawl.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/function.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/giphy.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/github.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/gmail.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/google_bigquery.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/google_maps.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/googlecalendar.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/googlesearch.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/googlesheets.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/hackernews.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/jina.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/jira.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/knowledge.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/linear.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/local_file_system.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/lumalab.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/mlx_transcribe.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/models/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/models/azure_openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/models/gemini.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/models/groq.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/models/nebius.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/models_labs.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/moviepy_video.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/newspaper.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/newspaper4k.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/openbb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/opencv.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/openweather.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/oxylabs.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/pandas.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/pubmed.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/python.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/reasoning.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/reddit.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/replicate.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/resend.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/scrapegraph.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/searxng.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/serpapi.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/serper.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/shell.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/slack.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/sleep.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/spider.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/sql.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/streamlit/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/streamlit/components.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/tavily.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/telegram.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/thinking.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/todoist.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/tool_registry.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/toolkit.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/trello.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/twilio.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/user_control_flow.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/valyu.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/visualization.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/webbrowser.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/webex.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/website.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/webtools.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/whatsapp.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/wikipedia.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/x.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/yfinance.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/youtube.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/zendesk.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/zep.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/tools/zoom.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/audio.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/certs.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/code_execution.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/common.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/defaults.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/dttm.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/enum.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/env.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/events.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/filesystem.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/format_str.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/functions.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/gemini.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/git.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/http.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/json_io.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/json_schema.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/load_env.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/location.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/mcp.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/media.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/merge_dict.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/message.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/ai_foundry.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/aws_claude.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/claude.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/cohere.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/llama.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/mistral.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/openai_responses.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/schema_utils.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/models/watsonx.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/openai.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/pickle.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/pprint.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/prompts.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/py_io.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/pyproject.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/resource_filter.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/response.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/response_iterator.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/safe_formatter.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/shell.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/timer.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/tools.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/web.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/whatsapp.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/utils/yaml_io.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/base.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/cassandra/cassandra.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/cassandra/index.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/chroma/chromadb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/couchbase/couchbase.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/distance.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/lancedb/lance_db.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/milvus/milvus.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/mongodb/mongodb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/pgvector/index.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/pineconedb/pineconedb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/qdrant/qdrant.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/search.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/singlestore/index.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/singlestore/singlestore.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/surrealdb/surrealdb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/upstashdb/upstashdb.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/weaviate/index.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/vectordb/weaviate/weaviate.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/condition.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/loop.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/parallel.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/router.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/step.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/steps.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workflow/v2/types.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workspace/__init__.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workspace/config.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workspace/enums.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workspace/helpers.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workspace/operator.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno/workspace/settings.py +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno.egg-info/dependency_links.txt +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno.egg-info/entry_points.txt +0 -0
- {agno-1.7.5 → agno-1.7.6}/agno.egg-info/top_level.txt +0 -0
- {agno-1.7.5 → agno-1.7.6}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.6
|
|
4
4
|
Summary: Agno: a lightweight library for building Multi-Agent Systems
|
|
5
5
|
Author-email: Ashpreet Bedi <ashpreet@agno.com>
|
|
6
6
|
License: Copyright (c) Agno, Inc.
|
|
@@ -443,6 +443,9 @@ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == "arize"
|
|
|
443
443
|
Requires-Dist: opentelemetry-distro; extra == "arize"
|
|
444
444
|
Provides-Extra: langfuse
|
|
445
445
|
Requires-Dist: langfuse; extra == "langfuse"
|
|
446
|
+
Provides-Extra: aws-bedrock
|
|
447
|
+
Requires-Dist: boto3; extra == "aws-bedrock"
|
|
448
|
+
Requires-Dist: aioboto3; extra == "aws-bedrock"
|
|
446
449
|
Provides-Extra: anthropic
|
|
447
450
|
Requires-Dist: anthropic; extra == "anthropic"
|
|
448
451
|
Provides-Extra: azure
|
|
@@ -472,6 +475,8 @@ Provides-Extra: ollama
|
|
|
472
475
|
Requires-Dist: ollama; extra == "ollama"
|
|
473
476
|
Provides-Extra: openai
|
|
474
477
|
Requires-Dist: openai; extra == "openai"
|
|
478
|
+
Provides-Extra: portkey
|
|
479
|
+
Requires-Dist: portkey-ai; extra == "portkey"
|
|
475
480
|
Provides-Extra: agentql
|
|
476
481
|
Requires-Dist: agentql; extra == "agentql"
|
|
477
482
|
Provides-Extra: apify
|
|
@@ -491,6 +496,8 @@ Provides-Extra: duckdb
|
|
|
491
496
|
Requires-Dist: duckdb; extra == "duckdb"
|
|
492
497
|
Provides-Extra: elevenlabs
|
|
493
498
|
Requires-Dist: elevenlabs; extra == "elevenlabs"
|
|
499
|
+
Provides-Extra: evm
|
|
500
|
+
Requires-Dist: web3; extra == "evm"
|
|
494
501
|
Provides-Extra: exa
|
|
495
502
|
Requires-Dist: exa_py; extra == "exa"
|
|
496
503
|
Provides-Extra: fal
|
|
@@ -521,6 +528,8 @@ Requires-Dist: newspaper4k; extra == "newspaper"
|
|
|
521
528
|
Requires-Dist: lxml_html_clean; extra == "newspaper"
|
|
522
529
|
Provides-Extra: opencv
|
|
523
530
|
Requires-Dist: opencv-python; extra == "opencv"
|
|
531
|
+
Provides-Extra: psycopg2
|
|
532
|
+
Requires-Dist: psycopg2-binary; extra == "psycopg2"
|
|
524
533
|
Provides-Extra: todoist
|
|
525
534
|
Requires-Dist: todoist-api-python; extra == "todoist"
|
|
526
535
|
Provides-Extra: valyu
|
|
@@ -533,6 +542,8 @@ Provides-Extra: youtube
|
|
|
533
542
|
Requires-Dist: youtube_transcript_api; extra == "youtube"
|
|
534
543
|
Provides-Extra: zep
|
|
535
544
|
Requires-Dist: zep-cloud; extra == "zep"
|
|
545
|
+
Provides-Extra: daytona
|
|
546
|
+
Requires-Dist: daytona; extra == "daytona"
|
|
536
547
|
Provides-Extra: oxylabs
|
|
537
548
|
Requires-Dist: oxylabs; extra == "oxylabs"
|
|
538
549
|
Provides-Extra: sql
|
|
@@ -603,6 +614,7 @@ Provides-Extra: aws
|
|
|
603
614
|
Requires-Dist: agno-aws; extra == "aws"
|
|
604
615
|
Requires-Dist: agno-docker; extra == "aws"
|
|
605
616
|
Provides-Extra: models
|
|
617
|
+
Requires-Dist: agno[aws-bedrock]; extra == "models"
|
|
606
618
|
Requires-Dist: agno[anthropic]; extra == "models"
|
|
607
619
|
Requires-Dist: agno[azure]; extra == "models"
|
|
608
620
|
Requires-Dist: agno[cerebras]; extra == "models"
|
|
@@ -617,6 +629,7 @@ Requires-Dist: agno[meta]; extra == "models"
|
|
|
617
629
|
Requires-Dist: agno[mistral]; extra == "models"
|
|
618
630
|
Requires-Dist: agno[ollama]; extra == "models"
|
|
619
631
|
Requires-Dist: agno[openai]; extra == "models"
|
|
632
|
+
Requires-Dist: agno[portkey]; extra == "models"
|
|
620
633
|
Provides-Extra: tools
|
|
621
634
|
Requires-Dist: agno[apify]; extra == "tools"
|
|
622
635
|
Requires-Dist: agno[brave]; extra == "tools"
|
|
@@ -634,6 +647,7 @@ Requires-Dist: agno[googlemaps]; extra == "tools"
|
|
|
634
647
|
Requires-Dist: agno[todoist]; extra == "tools"
|
|
635
648
|
Requires-Dist: agno[matplotlib]; extra == "tools"
|
|
636
649
|
Requires-Dist: agno[elevenlabs]; extra == "tools"
|
|
650
|
+
Requires-Dist: agno[evm]; extra == "tools"
|
|
637
651
|
Requires-Dist: agno[fal]; extra == "tools"
|
|
638
652
|
Requires-Dist: agno[webex]; extra == "tools"
|
|
639
653
|
Requires-Dist: agno[mcp]; extra == "tools"
|
|
@@ -646,6 +660,7 @@ Requires-Dist: agno[oxylabs]; extra == "tools"
|
|
|
646
660
|
Requires-Dist: agno[zep]; extra == "tools"
|
|
647
661
|
Requires-Dist: agno[mem0]; extra == "tools"
|
|
648
662
|
Requires-Dist: agno[google_bigquery]; extra == "tools"
|
|
663
|
+
Requires-Dist: agno[psycopg2]; extra == "tools"
|
|
649
664
|
Provides-Extra: storage
|
|
650
665
|
Requires-Dist: agno[sql]; extra == "storage"
|
|
651
666
|
Requires-Dist: agno[postgres]; extra == "storage"
|
|
@@ -4369,7 +4369,6 @@ class Agent:
|
|
|
4369
4369
|
# Format the system message with the session state variables
|
|
4370
4370
|
if self.add_state_in_messages:
|
|
4371
4371
|
sys_message_content = self.format_message_with_state_variables(sys_message_content)
|
|
4372
|
-
print("HELLO", sys_message_content)
|
|
4373
4372
|
|
|
4374
4373
|
# Add the JSON output prompt if response_model is provided and the model does not support native structured outputs or JSON schema outputs
|
|
4375
4374
|
# or if use_json_mode is True
|
|
@@ -16,7 +16,7 @@ from fastapi import APIRouter
|
|
|
16
16
|
from fastapi.responses import StreamingResponse
|
|
17
17
|
|
|
18
18
|
from agno.agent.agent import Agent
|
|
19
|
-
from agno.app.agui.utils import async_stream_agno_response_as_agui_events,
|
|
19
|
+
from agno.app.agui.utils import async_stream_agno_response_as_agui_events, convert_agui_messages_to_agno_messages
|
|
20
20
|
from agno.team.team import Team
|
|
21
21
|
|
|
22
22
|
logger = logging.getLogger(__name__)
|
|
@@ -28,12 +28,12 @@ async def run_agent(agent: Agent, run_input: RunAgentInput) -> AsyncIterator[Bas
|
|
|
28
28
|
|
|
29
29
|
try:
|
|
30
30
|
# Preparing the input for the Agent and emitting the run started event
|
|
31
|
-
|
|
31
|
+
messages = convert_agui_messages_to_agno_messages(run_input.messages or [])
|
|
32
32
|
yield RunStartedEvent(type=EventType.RUN_STARTED, thread_id=run_input.thread_id, run_id=run_id)
|
|
33
33
|
|
|
34
34
|
# Request streaming response from agent
|
|
35
35
|
response_stream = await agent.arun(
|
|
36
|
-
|
|
36
|
+
messages=messages,
|
|
37
37
|
session_id=run_input.thread_id,
|
|
38
38
|
stream=True,
|
|
39
39
|
stream_intermediate_steps=True,
|
|
@@ -56,12 +56,12 @@ async def run_team(team: Team, input: RunAgentInput) -> AsyncIterator[BaseEvent]
|
|
|
56
56
|
run_id = input.run_id or str(uuid.uuid4())
|
|
57
57
|
try:
|
|
58
58
|
# Extract the last user message for team execution
|
|
59
|
-
|
|
59
|
+
messages = convert_agui_messages_to_agno_messages(input.messages or [])
|
|
60
60
|
yield RunStartedEvent(type=EventType.RUN_STARTED, thread_id=input.thread_id, run_id=run_id)
|
|
61
61
|
|
|
62
62
|
# Request streaming response from team
|
|
63
63
|
response_stream = await team.arun(
|
|
64
|
-
message=
|
|
64
|
+
message=messages,
|
|
65
65
|
session_id=input.thread_id,
|
|
66
66
|
stream=True,
|
|
67
67
|
stream_intermediate_steps=True,
|
|
@@ -16,7 +16,7 @@ from fastapi import APIRouter
|
|
|
16
16
|
from fastapi.responses import StreamingResponse
|
|
17
17
|
|
|
18
18
|
from agno.agent.agent import Agent
|
|
19
|
-
from agno.app.agui.utils import
|
|
19
|
+
from agno.app.agui.utils import convert_agui_messages_to_agno_messages, stream_agno_response_as_agui_events
|
|
20
20
|
from agno.team.team import Team
|
|
21
21
|
|
|
22
22
|
logger = logging.getLogger(__name__)
|
|
@@ -28,12 +28,12 @@ def run_agent(agent: Agent, run_input: RunAgentInput) -> Iterator[BaseEvent]:
|
|
|
28
28
|
|
|
29
29
|
try:
|
|
30
30
|
# Preparing the input for the Agent and emitting the run started event
|
|
31
|
-
|
|
31
|
+
messages = convert_agui_messages_to_agno_messages(run_input.messages or [])
|
|
32
32
|
yield RunStartedEvent(type=EventType.RUN_STARTED, thread_id=run_input.thread_id, run_id=run_id)
|
|
33
33
|
|
|
34
34
|
# Request streaming response from agent
|
|
35
35
|
response_stream = agent.run(
|
|
36
|
-
|
|
36
|
+
messages=messages,
|
|
37
37
|
session_id=run_input.thread_id,
|
|
38
38
|
stream=True,
|
|
39
39
|
stream_intermediate_steps=True,
|
|
@@ -56,12 +56,12 @@ def run_team(team: Team, input: RunAgentInput) -> Iterator[BaseEvent]:
|
|
|
56
56
|
run_id = input.run_id or str(uuid.uuid4())
|
|
57
57
|
try:
|
|
58
58
|
# Extract the last user message for team execution
|
|
59
|
-
|
|
59
|
+
messages = convert_agui_messages_to_agno_messages(input.messages or [])
|
|
60
60
|
yield RunStartedEvent(type=EventType.RUN_STARTED, thread_id=input.thread_id, run_id=run_id)
|
|
61
61
|
|
|
62
62
|
# Request streaming response from team
|
|
63
63
|
response_stream = team.run(
|
|
64
|
-
message=
|
|
64
|
+
message=messages,
|
|
65
65
|
session_id=input.thread_id,
|
|
66
66
|
stream=True,
|
|
67
67
|
stream_intermediate_steps=True,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Logic used by the AG-UI router."""
|
|
2
2
|
|
|
3
|
+
import json
|
|
3
4
|
import uuid
|
|
4
5
|
from collections import deque
|
|
5
6
|
from collections.abc import Iterator
|
|
@@ -17,11 +18,13 @@ from ag_ui.core import (
|
|
|
17
18
|
TextMessageStartEvent,
|
|
18
19
|
ToolCallArgsEvent,
|
|
19
20
|
ToolCallEndEvent,
|
|
21
|
+
ToolCallResultEvent,
|
|
20
22
|
ToolCallStartEvent,
|
|
21
23
|
)
|
|
22
24
|
from ag_ui.core.types import Message as AGUIMessage
|
|
23
25
|
|
|
24
|
-
from agno.
|
|
26
|
+
from agno.models.message import Message
|
|
27
|
+
from agno.run.response import RunEvent, RunResponseContentEvent, RunResponseEvent, RunResponsePausedEvent
|
|
25
28
|
from agno.run.team import RunResponseContentEvent as TeamRunResponseContentEvent
|
|
26
29
|
from agno.run.team import TeamRunEvent, TeamRunResponseEvent
|
|
27
30
|
|
|
@@ -64,13 +67,26 @@ class EventBuffer:
|
|
|
64
67
|
return False
|
|
65
68
|
|
|
66
69
|
|
|
67
|
-
def
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
for msg in
|
|
71
|
-
if msg.role == "
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
def convert_agui_messages_to_agno_messages(messages: List[AGUIMessage]) -> List[Message]:
|
|
71
|
+
"""Convert AG-UI messages to Agno messages."""
|
|
72
|
+
result = []
|
|
73
|
+
for msg in messages:
|
|
74
|
+
if msg.role == "tool":
|
|
75
|
+
result.append(Message(role="tool", tool_call_id=msg.tool_call_id, content=msg.content))
|
|
76
|
+
elif msg.role == "assistant":
|
|
77
|
+
tool_calls = None
|
|
78
|
+
if msg.tool_calls:
|
|
79
|
+
tool_calls = [call.model_dump() for call in msg.tool_calls]
|
|
80
|
+
result.append(
|
|
81
|
+
Message(
|
|
82
|
+
role="assistant",
|
|
83
|
+
content=msg.content,
|
|
84
|
+
tool_calls=tool_calls,
|
|
85
|
+
)
|
|
86
|
+
)
|
|
87
|
+
elif msg.role == "user":
|
|
88
|
+
result.append(Message(role="user", content=msg.content))
|
|
89
|
+
return result
|
|
74
90
|
|
|
75
91
|
|
|
76
92
|
def extract_team_response_chunk_content(response: TeamRunResponseContentEvent) -> str:
|
|
@@ -159,7 +175,7 @@ def _create_events_from_chunk(
|
|
|
159
175
|
args_event = ToolCallArgsEvent(
|
|
160
176
|
type=EventType.TOOL_CALL_ARGS,
|
|
161
177
|
tool_call_id=tool_call.tool_call_id, # type: ignore
|
|
162
|
-
delta=
|
|
178
|
+
delta=json.dumps(tool_call.tool_args),
|
|
163
179
|
)
|
|
164
180
|
events_to_emit.append(args_event)
|
|
165
181
|
|
|
@@ -174,6 +190,16 @@ def _create_events_from_chunk(
|
|
|
174
190
|
)
|
|
175
191
|
events_to_emit.append(end_event)
|
|
176
192
|
|
|
193
|
+
if tool_call.result is not None:
|
|
194
|
+
result_event = ToolCallResultEvent(
|
|
195
|
+
type=EventType.TOOL_CALL_RESULT,
|
|
196
|
+
tool_call_id=tool_call.tool_call_id, # type: ignore
|
|
197
|
+
content=str(tool_call.result),
|
|
198
|
+
role="tool",
|
|
199
|
+
message_id=str(uuid.uuid4()),
|
|
200
|
+
)
|
|
201
|
+
events_to_emit.append(result_event)
|
|
202
|
+
|
|
177
203
|
# Handle reasoning
|
|
178
204
|
elif chunk.event == RunEvent.reasoning_started:
|
|
179
205
|
step_event = StepStartedEvent(type=EventType.STEP_STARTED, step_name="reasoning")
|
|
@@ -186,7 +212,12 @@ def _create_events_from_chunk(
|
|
|
186
212
|
|
|
187
213
|
|
|
188
214
|
def _create_completion_events(
|
|
189
|
-
|
|
215
|
+
chunk: Union[RunResponseEvent, TeamRunResponseEvent],
|
|
216
|
+
event_buffer: EventBuffer,
|
|
217
|
+
message_started: bool,
|
|
218
|
+
message_id: str,
|
|
219
|
+
thread_id: str,
|
|
220
|
+
run_id: str,
|
|
190
221
|
) -> List[BaseEvent]:
|
|
191
222
|
"""Create events for run completion."""
|
|
192
223
|
events_to_emit = []
|
|
@@ -205,6 +236,33 @@ def _create_completion_events(
|
|
|
205
236
|
end_message_event = TextMessageEndEvent(type=EventType.TEXT_MESSAGE_END, message_id=message_id)
|
|
206
237
|
events_to_emit.append(end_message_event)
|
|
207
238
|
|
|
239
|
+
# emit frontend tool calls, i.e. external_execution=True
|
|
240
|
+
if isinstance(chunk, RunResponsePausedEvent) and chunk.tools is not None:
|
|
241
|
+
for tool in chunk.tools:
|
|
242
|
+
if tool.tool_call_id is None or tool.tool_name is None:
|
|
243
|
+
continue
|
|
244
|
+
|
|
245
|
+
start_event = ToolCallStartEvent(
|
|
246
|
+
type=EventType.TOOL_CALL_START,
|
|
247
|
+
tool_call_id=tool.tool_call_id,
|
|
248
|
+
tool_call_name=tool.tool_name,
|
|
249
|
+
parent_message_id=message_id,
|
|
250
|
+
)
|
|
251
|
+
events_to_emit.append(start_event)
|
|
252
|
+
|
|
253
|
+
args_event = ToolCallArgsEvent(
|
|
254
|
+
type=EventType.TOOL_CALL_ARGS,
|
|
255
|
+
tool_call_id=tool.tool_call_id,
|
|
256
|
+
delta=json.dumps(tool.tool_args),
|
|
257
|
+
)
|
|
258
|
+
events_to_emit.append(args_event)
|
|
259
|
+
|
|
260
|
+
end_event = ToolCallEndEvent(
|
|
261
|
+
type=EventType.TOOL_CALL_END,
|
|
262
|
+
tool_call_id=tool.tool_call_id,
|
|
263
|
+
)
|
|
264
|
+
events_to_emit.append(end_event)
|
|
265
|
+
|
|
208
266
|
run_finished_event = RunFinishedEvent(type=EventType.RUN_FINISHED, thread_id=thread_id, run_id=run_id)
|
|
209
267
|
events_to_emit.append(run_finished_event)
|
|
210
268
|
|
|
@@ -271,8 +329,14 @@ def stream_agno_response_as_agui_events(
|
|
|
271
329
|
|
|
272
330
|
for chunk in response_stream:
|
|
273
331
|
# Handle the lifecycle end event
|
|
274
|
-
if
|
|
275
|
-
|
|
332
|
+
if (
|
|
333
|
+
chunk.event == RunEvent.run_completed
|
|
334
|
+
or chunk.event == TeamRunEvent.run_completed
|
|
335
|
+
or chunk.event == RunEvent.run_paused
|
|
336
|
+
):
|
|
337
|
+
completion_events = _create_completion_events(
|
|
338
|
+
chunk, event_buffer, message_started, message_id, thread_id, run_id
|
|
339
|
+
)
|
|
276
340
|
for event in completion_events:
|
|
277
341
|
events_to_emit = _emit_event_logic(event_buffer=event_buffer, event=event)
|
|
278
342
|
for emit_event in events_to_emit:
|
|
@@ -302,8 +366,14 @@ async def async_stream_agno_response_as_agui_events(
|
|
|
302
366
|
|
|
303
367
|
async for chunk in response_stream:
|
|
304
368
|
# Handle the lifecycle end event
|
|
305
|
-
if
|
|
306
|
-
|
|
369
|
+
if (
|
|
370
|
+
chunk.event == RunEvent.run_completed
|
|
371
|
+
or chunk.event == TeamRunEvent.run_completed
|
|
372
|
+
or chunk.event == RunEvent.run_paused
|
|
373
|
+
):
|
|
374
|
+
completion_events = _create_completion_events(
|
|
375
|
+
chunk, event_buffer, message_started, message_id, thread_id, run_id
|
|
376
|
+
)
|
|
307
377
|
for event in completion_events:
|
|
308
378
|
events_to_emit = _emit_event_logic(event_buffer=event_buffer, event=event)
|
|
309
379
|
for emit_event in events_to_emit:
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from agno.document.base import Document
|
|
4
|
+
from agno.document.chunking.strategy import ChunkingStrategy
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class RowChunking(ChunkingStrategy):
|
|
8
|
+
def __init__(self, skip_header: bool = False, clean_rows: bool = True):
|
|
9
|
+
self.skip_header = skip_header
|
|
10
|
+
self.clean_rows = clean_rows
|
|
11
|
+
|
|
12
|
+
def chunk(self, document: Document) -> List[Document]:
|
|
13
|
+
if not document or not document.content:
|
|
14
|
+
return []
|
|
15
|
+
|
|
16
|
+
if not isinstance(document.content, str):
|
|
17
|
+
raise ValueError("Document content must be a string")
|
|
18
|
+
|
|
19
|
+
rows = document.content.splitlines()
|
|
20
|
+
|
|
21
|
+
if self.skip_header and rows:
|
|
22
|
+
rows = rows[1:]
|
|
23
|
+
start_index = 2
|
|
24
|
+
else:
|
|
25
|
+
start_index = 1
|
|
26
|
+
|
|
27
|
+
chunks = []
|
|
28
|
+
for i, row in enumerate(rows):
|
|
29
|
+
if self.clean_rows:
|
|
30
|
+
chunk_content = " ".join(row.split()) # Normalize internal whitespace
|
|
31
|
+
else:
|
|
32
|
+
chunk_content = row.strip()
|
|
33
|
+
|
|
34
|
+
if chunk_content: # Skip empty rows
|
|
35
|
+
meta_data = document.meta_data.copy()
|
|
36
|
+
meta_data["row_number"] = start_index + i # Preserve logical row numbering
|
|
37
|
+
chunk_id = f"{document.id}_row_{start_index + i}" if document.id else None
|
|
38
|
+
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk_content))
|
|
39
|
+
return chunks
|
|
@@ -16,13 +16,6 @@ class Reader:
|
|
|
16
16
|
separators: List[str] = field(default_factory=lambda: ["\n", "\n\n", "\r", "\r\n", "\n\r", "\t", " ", " "])
|
|
17
17
|
chunking_strategy: Optional[ChunkingStrategy] = None
|
|
18
18
|
|
|
19
|
-
def __init__(
|
|
20
|
-
self, chunk: bool = True, chunk_size: int = 5000, chunking_strategy: Optional[ChunkingStrategy] = None
|
|
21
|
-
) -> None:
|
|
22
|
-
self.chunk = chunk
|
|
23
|
-
self.chunk_size = chunk_size
|
|
24
|
-
self.chunking_strategy = chunking_strategy
|
|
25
|
-
|
|
26
19
|
def read(self, obj: Any) -> List[Document]:
|
|
27
20
|
raise NotImplementedError
|
|
28
21
|
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from os import getenv
|
|
3
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Literal
|
|
6
|
+
|
|
7
|
+
from agno.embedder.base import Embedder
|
|
8
|
+
from agno.utils.log import logger
|
|
9
|
+
|
|
10
|
+
try:
|
|
11
|
+
import requests
|
|
12
|
+
except ImportError:
|
|
13
|
+
raise ImportError("requests not installed, use pip install requests")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclass
|
|
17
|
+
class JinaEmbedder(Embedder):
|
|
18
|
+
id: str = "jina-embeddings-v3"
|
|
19
|
+
dimensions: int = 1024
|
|
20
|
+
embedding_type: Literal["float", "base64", "int8"] = "float"
|
|
21
|
+
late_chunking: bool = False
|
|
22
|
+
user: Optional[str] = None
|
|
23
|
+
api_key: Optional[str] = getenv("JINA_API_KEY")
|
|
24
|
+
base_url: str = "https://api.jina.ai/v1/embeddings"
|
|
25
|
+
headers: Optional[Dict[str, str]] = None
|
|
26
|
+
request_params: Optional[Dict[str, Any]] = None
|
|
27
|
+
timeout: Optional[float] = None
|
|
28
|
+
|
|
29
|
+
def _get_headers(self) -> Dict[str, str]:
|
|
30
|
+
if not self.api_key:
|
|
31
|
+
raise ValueError(
|
|
32
|
+
"API key is required for Jina embedder. Set JINA_API_KEY environment variable or pass api_key parameter."
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
headers = {"Content-Type": "application/json", "Authorization": f"Bearer {self.api_key}"}
|
|
36
|
+
if self.headers:
|
|
37
|
+
headers.update(self.headers)
|
|
38
|
+
return headers
|
|
39
|
+
|
|
40
|
+
def _response(self, text: str) -> Dict[str, Any]:
|
|
41
|
+
data = {
|
|
42
|
+
"model": self.id,
|
|
43
|
+
"late_chunking": self.late_chunking,
|
|
44
|
+
"dimensions": self.dimensions,
|
|
45
|
+
"embedding_type": self.embedding_type,
|
|
46
|
+
"input": [text], # Jina API expects a list
|
|
47
|
+
}
|
|
48
|
+
if self.user is not None:
|
|
49
|
+
data["user"] = self.user
|
|
50
|
+
if self.request_params:
|
|
51
|
+
data.update(self.request_params)
|
|
52
|
+
|
|
53
|
+
response = requests.post(self.base_url, headers=self._get_headers(), json=data, timeout=self.timeout)
|
|
54
|
+
response.raise_for_status()
|
|
55
|
+
return response.json()
|
|
56
|
+
|
|
57
|
+
def get_embedding(self, text: str) -> List[float]:
|
|
58
|
+
try:
|
|
59
|
+
result = self._response(text)
|
|
60
|
+
return result["data"][0]["embedding"]
|
|
61
|
+
except Exception as e:
|
|
62
|
+
logger.warning(f"Failed to get embedding: {e}")
|
|
63
|
+
return []
|
|
64
|
+
|
|
65
|
+
def get_embedding_and_usage(self, text: str) -> Tuple[List[float], Optional[Dict]]:
|
|
66
|
+
try:
|
|
67
|
+
result = self._response(text)
|
|
68
|
+
embedding = result["data"][0]["embedding"]
|
|
69
|
+
usage = result.get("usage")
|
|
70
|
+
return embedding, usage
|
|
71
|
+
except Exception as e:
|
|
72
|
+
logger.warning(f"Failed to get embedding and usage: {e}")
|
|
73
|
+
return [], None
|
|
@@ -273,7 +273,7 @@ class AgentMemory(BaseModel):
|
|
|
273
273
|
|
|
274
274
|
self.classifier.existing_memories = self.memories
|
|
275
275
|
classifier_response = self.classifier.run(input)
|
|
276
|
-
if classifier_response == "yes":
|
|
276
|
+
if classifier_response and classifier_response.lower() == "yes":
|
|
277
277
|
return True
|
|
278
278
|
return False
|
|
279
279
|
|
|
@@ -286,7 +286,7 @@ class AgentMemory(BaseModel):
|
|
|
286
286
|
|
|
287
287
|
self.classifier.existing_memories = self.memories
|
|
288
288
|
classifier_response = await self.classifier.arun(input)
|
|
289
|
-
if classifier_response == "yes":
|
|
289
|
+
if classifier_response and classifier_response.lower() == "yes":
|
|
290
290
|
return True
|
|
291
291
|
return False
|
|
292
292
|
|
|
@@ -313,7 +313,7 @@ class TeamMemory:
|
|
|
313
313
|
|
|
314
314
|
self.classifier.existing_memories = self.memories
|
|
315
315
|
classifier_response = self.classifier.run(input)
|
|
316
|
-
if classifier_response == "yes":
|
|
316
|
+
if classifier_response and classifier_response.lower() == "yes":
|
|
317
317
|
return True
|
|
318
318
|
return False
|
|
319
319
|
|
|
@@ -326,7 +326,7 @@ class TeamMemory:
|
|
|
326
326
|
|
|
327
327
|
self.classifier.existing_memories = self.memories
|
|
328
328
|
classifier_response = await self.classifier.arun(input)
|
|
329
|
-
if classifier_response == "yes":
|
|
329
|
+
if classifier_response and classifier_response.lower() == "yes":
|
|
330
330
|
return True
|
|
331
331
|
return False
|
|
332
332
|
|