pygeai 0.2.7b38__tar.gz → 0.2.7b40__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.
- {pygeai-0.2.7b38/pygeai.egg-info → pygeai-0.2.7b40}/PKG-INFO +1 -1
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/configuration.py +3 -5
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/files/managers.py +31 -12
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/handlers.py +10 -1
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/agents/clients.py +35 -19
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/agents/mappers.py +2 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/managers.py +2 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/models.py +10 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/processes/clients.py +15 -14
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/tools/clients.py +4 -6
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_create_agent.py +1 -3
- pygeai-0.2.7b40/pygeai/tests/snippets/files/delete_file.py +9 -0
- pygeai-0.2.7b40/pygeai/tests/snippets/files/get_file_content.py +10 -0
- pygeai-0.2.7b40/pygeai/tests/snippets/files/get_file_data.py +9 -0
- pygeai-0.2.7b40/pygeai/tests/snippets/files/get_file_list.py +6 -0
- pygeai-0.2.7b40/pygeai/tests/snippets/files/upload_file.py +13 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/create_agent.py +4 -3
- {pygeai-0.2.7b38 → pygeai-0.2.7b40/pygeai.egg-info}/PKG-INFO +1 -1
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pyproject.toml +1 -1
- pygeai-0.2.7b38/pygeai/tests/snippets/files/delete_file.py +0 -12
- pygeai-0.2.7b38/pygeai/tests/snippets/files/get_file_content.py +0 -12
- pygeai-0.2.7b38/pygeai/tests/snippets/files/get_file_data.py +0 -12
- pygeai-0.2.7b38/pygeai/tests/snippets/files/get_file_list.py +0 -11
- pygeai-0.2.7b38/pygeai/tests/snippets/files/upload_file.py +0 -17
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/LICENSE +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/MANIFEST.in +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/README.md +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/docs/geai-proxy/README.md +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/admin/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/admin/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/admin/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/data/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/data/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/data_analyst/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/data_analyst/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/data_analyst/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/rag/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/rag/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/rag/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/rag/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/rag/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/assistant/rag/responses.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/iris.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/session.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/settings.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/chat/ui.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/__main__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/admin.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/base.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/builders.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/chat.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/common.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/embeddings.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/evaluation.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/feedback.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/files.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/flows/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/gam.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/lab/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/lab/ai_lab.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/lab/common.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/lab/spec.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/llm.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/migrate.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/options.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/organization.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/rag.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/rerank.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/secrets.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/usage_limits.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/validators.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/commands/version.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/geai.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/geai_proxy.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/install_man.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/parsers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/texts/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/cli/texts/help.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/base/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/base/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/base/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/base/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/base/responses.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/base/session.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/common/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/common/config.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/common/decorators.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/common/exceptions.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/embeddings/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/embeddings/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/embeddings/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/embeddings/managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/embeddings/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/embeddings/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/embeddings/responses.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/feedback/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/feedback/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/feedback/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/feedback/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/files/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/files/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/files/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/files/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/files/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/files/responses.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/llm/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/llm/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/llm/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/plugins/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/plugins/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/plugins/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/plugins/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/rerank/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/rerank/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/rerank/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/rerank/managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/rerank/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/rerank/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/responses.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/secrets/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/secrets/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/secrets/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/services/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/services/llm/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/services/llm/model.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/services/llm/providers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/services/response.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/services/rest.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/singleton.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/utils/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/core/utils/console.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/dbg/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/dbg/debugger.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/dataset/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/dataset/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/dataset/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/plan/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/plan/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/plan/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/result/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/result/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/evaluation/result/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/flows/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/flows/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/flows/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/gam/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/gam/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/gam/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/health/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/health/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/health/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/agents/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/constants.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/processes/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/processes/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/processes/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/runners.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/spec/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/spec/loader.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/spec/parsers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/strategies/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/strategies/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/strategies/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/strategies/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/tools/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/tools/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/lab/tools/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/man/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/man/man1/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/man/man1/geai-proxy.1 +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/man/man1/geai.1 +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/migration/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/migration/strategies.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/migration/tools.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/limits/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/limits/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/limits/endpoints.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/limits/managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/limits/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/organization/responses.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/proxy/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/proxy/clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/proxy/config.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/proxy/managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/proxy/servers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/proxy/tool.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/admin/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/admin/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/rag/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/rag/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/rag/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/rag/test_models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/test_managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/assistants/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/chat/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/chat/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/chat/test_iris.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/chat/test_session.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/chat/test_ui.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/lab/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/lab/test_ai_lab.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/lab/test_common.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/lab/test_spec.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_chat.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_common.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_embeddings.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_feedback.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_files.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_gam.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_llm.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_migrate.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_organization.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_rag.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_rerank.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_show_help.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_usage_limits.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_validators.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/commands/test_version.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/cli/test_parsers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/base/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/base/data/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/base/data/mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/base/data/models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/base/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/base/test_models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/common/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/common/data/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/common/test_config.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/common/test_decorators.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/embeddings/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/embeddings/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/feedback/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/feedback/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/files/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/files/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/files/test_managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/files/test_models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/files/test_responses.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/llm/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/llm/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/rerank/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/rerank/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/rerank/test_managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/rerank/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/secrets/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/secrets/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/services/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/services/test_rest.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/test_handlers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/utils/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/core/utils/test_console.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/dbg/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/dbg/test_debugger.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/gam/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/gam/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/health/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/health/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_agents_list.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_create_sharing_link.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_delete_agent.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_get_agent.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_update_agent.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/agents/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/agents/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/processes/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/processes/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/processes/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/spec/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/spec/test_loader.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/spec/test_parsers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/strategies/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/strategies/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/strategies/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/test_managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/test_models.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/tools/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/tools/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/lab/tools/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/migration/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/migration/test_strategies.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/migration/test_tools.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/organization/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/organization/limits/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/organization/limits/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/organization/limits/test_managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/organization/test_clients.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/organization/test_managers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/organization/test_mappers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/create_chat_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/create_text_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/data_analyst/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/data_analyst/extend_and_check.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/data_analyst/extend_dataset.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/data_analyst/get_status.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/file_summarizer_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/get_assistant_data.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/get_assistant_list.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/create_rag_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/delete_al_documents.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/delete_document.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/get_document.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/get_documents.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/update_rag_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/rag/upload_document.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/send_feedback.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/assistants/update_chat_assistant.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/cancel_request.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/chat_completion.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/chat_completion_1.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/chat_completion_2.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/chat_completion_3.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/chat_completion_4.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/chat_completion_streaming.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/get_request_status.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/chat/send_chat_request.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/embeddings/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/embeddings/generate_embeddings.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/evaluation/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/files/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/gam/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/gam/gam_access_token.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agentic_flow_example_2.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agentic_flow_example_3.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agentic_flow_example_4.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/create_agent_2.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/delete_agent.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/get_agent.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/get_sharing_link.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/list_agents.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/publish_agent_revision.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/agents/update_agent.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/assistant_to_agent.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/crud_ui.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/create_process.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/create_task.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/jobs/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/kbs/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/kbs/create_kb.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/kbs/get_kb.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/kbs/try_all.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/processes/list_processes.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/runner_1.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/samples/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/samples/summarize_files.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/strategies/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/create_tool.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/delete_tool.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/get_parameter.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/get_tool.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/list_tools.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/publish_tool_revision.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/set_parameters.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/tools/update_tool.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/create_web_designer.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/create_web_reader.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/file_summarizer_example.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/update_web_designer.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/update_web_reader.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/migrate/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/create_project.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/delete_project.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/export_request_data.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/get_project_data.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/get_project_list.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/get_project_tokens.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/organization/update_project.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/rerank/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/rerank/rerank_chunks.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/secrets/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/delete_usage_limit.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/get_all_usage_limit_from_organization.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/get_usage_limit_from_organization.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/get_usage_limit_from_project.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/set_usage_limit_organization.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/set_usage_limit_project.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/update_usage_limit_organization.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/snippets/usage_limit/update_usage_limit_project.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/auth/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/auth/user.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/client/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/client/client.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/client/errors.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/client/helpers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/py.typed +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/agent_execution/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/agent_execution/agent_executor.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/agent_execution/context.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/apps/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/context.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/events/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/events/event_consumer.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/events/event_queue.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/events/queue_manager.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/request_handlers/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/request_handlers/request_handler.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/request_handlers/response_helpers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/push_notifier.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/result_aggregator.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/task_manager.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/task_store.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/server/tasks/task_updater.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/types.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/utils/__init__.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/utils/artifact.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/utils/errors.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/utils/helpers.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/utils/message.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/utils/task.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/vendor/a2a/utils/telemetry.py +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai.egg-info/SOURCES.txt +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai.egg-info/dependency_links.txt +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai.egg-info/entry_points.txt +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai.egg-info/requires.txt +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai.egg-info/top_level.txt +0 -0
- {pygeai-0.2.7b38 → pygeai-0.2.7b40}/setup.cfg +0 -0
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
|
|
3
1
|
from pygeai.cli.commands import Option
|
|
4
2
|
from pygeai.core.common.config import get_settings
|
|
5
3
|
from pygeai.core.utils.console import Console
|
|
@@ -34,7 +32,7 @@ def configure(option_list: list[str, str] = None):
|
|
|
34
32
|
for option_flag, option_arg in option_list:
|
|
35
33
|
if option_flag.name == "list":
|
|
36
34
|
list_alias = True
|
|
37
|
-
if option_flag.name == "
|
|
35
|
+
if option_flag.name == "profile_alias":
|
|
38
36
|
alias = option_arg
|
|
39
37
|
if option_flag.name == "api_key":
|
|
40
38
|
api_key = option_arg
|
|
@@ -98,8 +96,8 @@ configuration_options = (
|
|
|
98
96
|
True
|
|
99
97
|
),
|
|
100
98
|
Option(
|
|
101
|
-
"
|
|
102
|
-
["--alias", "
|
|
99
|
+
"profile_alias",
|
|
100
|
+
["--profile-alias", "--pa"],
|
|
103
101
|
"Set alias for settings section",
|
|
104
102
|
True
|
|
105
103
|
),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from pygeai import logger
|
|
2
|
+
from pygeai.admin.clients import AdminClient
|
|
2
3
|
from pygeai.core.base.mappers import ErrorMapper, ResponseMapper
|
|
3
4
|
from pygeai.core.base.responses import EmptyResponse
|
|
4
5
|
from pygeai.core.files.clients import FileClient
|
|
@@ -28,8 +29,26 @@ class FileManager:
|
|
|
28
29
|
base_url,
|
|
29
30
|
alias
|
|
30
31
|
)
|
|
31
|
-
self.
|
|
32
|
-
self.
|
|
32
|
+
self.organization_id = self.__get_organization_id() if not organization_id else organization_id
|
|
33
|
+
self.project_id = self.__get_project_id() if not project_id else project_id
|
|
34
|
+
|
|
35
|
+
def __get_organization_id(self):
|
|
36
|
+
response = None
|
|
37
|
+
try:
|
|
38
|
+
response = AdminClient().validate_api_token()
|
|
39
|
+
return response.get("organizationId")
|
|
40
|
+
except Exception as e:
|
|
41
|
+
logger.error(f"Error retrieving organization_id from GEAI. Response: {response}: {e}")
|
|
42
|
+
raise APIError(f"Error retrieving organization_id from GEAI: {e}")
|
|
43
|
+
|
|
44
|
+
def __get_project_id(self):
|
|
45
|
+
response = None
|
|
46
|
+
try:
|
|
47
|
+
response = AdminClient().validate_api_token()
|
|
48
|
+
return response.get("projectId")
|
|
49
|
+
except Exception as e:
|
|
50
|
+
logger.error(f"Error retrieving project_id from GEAI. Response: {response}: {e}")
|
|
51
|
+
raise APIError(f"Error retrieving project_id from GEAI: {e}")
|
|
33
52
|
|
|
34
53
|
def upload_file(
|
|
35
54
|
self,
|
|
@@ -47,8 +66,8 @@ class FileManager:
|
|
|
47
66
|
"""
|
|
48
67
|
response_data = self.__client.upload_file(
|
|
49
68
|
file_path=file.path,
|
|
50
|
-
organization_id=self.
|
|
51
|
-
project_id=self.
|
|
69
|
+
organization_id=self.organization_id,
|
|
70
|
+
project_id=self.project_id,
|
|
52
71
|
folder=file.folder,
|
|
53
72
|
file_name=file.name,
|
|
54
73
|
)
|
|
@@ -75,8 +94,8 @@ class FileManager:
|
|
|
75
94
|
:raises APIError: If the API returns errors.
|
|
76
95
|
"""
|
|
77
96
|
response_data = self.__client.get_file(
|
|
78
|
-
organization=self.
|
|
79
|
-
project=self.
|
|
97
|
+
organization=self.organization_id,
|
|
98
|
+
project=self.project_id,
|
|
80
99
|
file_id=file_id
|
|
81
100
|
)
|
|
82
101
|
if ErrorHandler.has_errors(response_data):
|
|
@@ -101,8 +120,8 @@ class FileManager:
|
|
|
101
120
|
:raises APIError: If the API returns errors.
|
|
102
121
|
"""
|
|
103
122
|
response_data = self.__client.delete_file(
|
|
104
|
-
organization=self.
|
|
105
|
-
project=self.
|
|
123
|
+
organization=self.organization_id,
|
|
124
|
+
project=self.project_id,
|
|
106
125
|
file_id=file_id
|
|
107
126
|
)
|
|
108
127
|
if ErrorHandler.has_errors(response_data):
|
|
@@ -128,8 +147,8 @@ class FileManager:
|
|
|
128
147
|
:raises APIError: If the API returns errors.
|
|
129
148
|
"""
|
|
130
149
|
response_data = self.__client.get_file_content(
|
|
131
|
-
organization=self.
|
|
132
|
-
project=self.
|
|
150
|
+
organization=self.organization_id,
|
|
151
|
+
project=self.project_id,
|
|
133
152
|
file_id=file_id
|
|
134
153
|
)
|
|
135
154
|
if isinstance(response_data, dict) and "errors" in response_data:
|
|
@@ -151,8 +170,8 @@ class FileManager:
|
|
|
151
170
|
:raises APIError: If the API returns errors.
|
|
152
171
|
"""
|
|
153
172
|
response_data = self.__client.get_file_list(
|
|
154
|
-
organization=self.
|
|
155
|
-
project=self.
|
|
173
|
+
organization=self.organization_id,
|
|
174
|
+
project=self.project_id
|
|
156
175
|
)
|
|
157
176
|
if ErrorHandler.has_errors(response_data):
|
|
158
177
|
error = ErrorHandler.extract_error(response_data)
|
|
@@ -6,7 +6,16 @@ class ErrorHandler:
|
|
|
6
6
|
@classmethod
|
|
7
7
|
def has_errors(cls, response):
|
|
8
8
|
error_found = False
|
|
9
|
-
if
|
|
9
|
+
if (
|
|
10
|
+
"errors" in response or
|
|
11
|
+
"error" in response or
|
|
12
|
+
(
|
|
13
|
+
"message" in response and
|
|
14
|
+
isinstance(response.get("message"), list) and
|
|
15
|
+
len(response.get("message")) > 0 and
|
|
16
|
+
response.get("message")[0].get("type") == "error"
|
|
17
|
+
)
|
|
18
|
+
):
|
|
10
19
|
error_found = True
|
|
11
20
|
|
|
12
21
|
return error_found
|
|
@@ -73,6 +73,7 @@ class AgentClient(BaseClient):
|
|
|
73
73
|
description: str,
|
|
74
74
|
agent_data_prompt: dict,
|
|
75
75
|
agent_data_llm_config: dict,
|
|
76
|
+
agent_data_strategy_name: str,
|
|
76
77
|
agent_data_models: list,
|
|
77
78
|
agent_data_resource_pools: Optional[List[Dict]] = None,
|
|
78
79
|
automatic_publish: bool = False
|
|
@@ -89,6 +90,7 @@ class AgentClient(BaseClient):
|
|
|
89
90
|
:param description: str - Detailed description of the agent’s purpose (optional).
|
|
90
91
|
:param agent_data_prompt: dict - Prompt configuration, including 'context', 'instructions', and optional 'examples' (e.g., {'context': str, 'instructions': str, 'examples': [{'inputData': str, 'output': str}]}).
|
|
91
92
|
:param agent_data_llm_config: dict - LLM configuration (e.g., {'maxTokens': int, 'timeout': int, 'sampling': {'temperature': float}}).
|
|
93
|
+
:param agent_data_strategy_name: str - Strategy name to be used.
|
|
92
94
|
:param agent_data_models: list - List of models the agent can use (e.g., [{'name': 'gpt-4o', 'llmConfig': dict}]).
|
|
93
95
|
:param agent_data_resource_pools: Optional[List[Dict]] - Resource pools for tools and helper agents (e.g., [{'name': str, 'tools': [{'name': str, 'revision': int}], 'agents': [{'name': str, 'revision': int}]}]).
|
|
94
96
|
:param automatic_publish: bool - Automatically publish the agent after creation (default: False).
|
|
@@ -107,17 +109,23 @@ class AgentClient(BaseClient):
|
|
|
107
109
|
"jobDescription": job_description,
|
|
108
110
|
"avatarImage": avatar_image,
|
|
109
111
|
"description": description,
|
|
110
|
-
"agentData": {
|
|
111
|
-
"prompt": agent_data_prompt,
|
|
112
|
-
"llmConfig": agent_data_llm_config,
|
|
113
|
-
"models": agent_data_models
|
|
114
|
-
}
|
|
115
112
|
}
|
|
116
113
|
}
|
|
117
|
-
|
|
114
|
+
if (
|
|
115
|
+
agent_data_prompt or agent_data_strategy_name or agent_data_prompt or agent_data_resource_pools or
|
|
116
|
+
agent_data_llm_config or agent_data_models
|
|
117
|
+
):
|
|
118
|
+
data["agentDefinition"]["agentData"] = {}
|
|
118
119
|
if agent_data_resource_pools is not None:
|
|
119
120
|
data["agentDefinition"]["agentData"]["resourcePools"] = agent_data_resource_pools
|
|
120
|
-
|
|
121
|
+
if agent_data_prompt is not None:
|
|
122
|
+
data["agentDefinition"]["agentData"]["prompt"] = agent_data_prompt
|
|
123
|
+
if agent_data_llm_config is not None:
|
|
124
|
+
data["agentDefinition"]["agentData"]["llmConfig"] = agent_data_llm_config
|
|
125
|
+
if agent_data_strategy_name is not None:
|
|
126
|
+
data["agentDefinition"]["agentData"]["strategyName"] = agent_data_strategy_name
|
|
127
|
+
if agent_data_models is not None:
|
|
128
|
+
data["agentDefinition"]["agentData"]["models"] = agent_data_models
|
|
121
129
|
logger.debug(f"Creating agent with data: {data}")
|
|
122
130
|
|
|
123
131
|
endpoint = CREATE_AGENT_V2
|
|
@@ -300,13 +308,11 @@ class AgentClient(BaseClient):
|
|
|
300
308
|
headers=headers,
|
|
301
309
|
data={}
|
|
302
310
|
)
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
except JSONDecodeError as e:
|
|
306
|
-
logger.error(f"Unable to delete agent {agent_id} from project {project_id}: JSON parsing error (status {response.status_code}): {e}. Response: {response.text}")
|
|
311
|
+
if response.status_code != 204:
|
|
312
|
+
logger.error(f"Unable to delete agent {agent_id} from project {project_id}: JSON parsing error (status {response.status_code}). Response: {response.text}")
|
|
307
313
|
raise InvalidAPIResponseException(f"Unable to delete agent {agent_id} from project {project_id}: {response.text}")
|
|
308
|
-
|
|
309
|
-
|
|
314
|
+
else:
|
|
315
|
+
return {}
|
|
310
316
|
|
|
311
317
|
def update_agent(
|
|
312
318
|
self,
|
|
@@ -320,6 +326,7 @@ class AgentClient(BaseClient):
|
|
|
320
326
|
description: str,
|
|
321
327
|
agent_data_prompt: dict,
|
|
322
328
|
agent_data_llm_config: dict,
|
|
329
|
+
agent_data_strategy_name: dict,
|
|
323
330
|
agent_data_models: list,
|
|
324
331
|
agent_data_resource_pools: Optional[List[Dict]] = None,
|
|
325
332
|
automatic_publish: bool = False,
|
|
@@ -338,6 +345,7 @@ class AgentClient(BaseClient):
|
|
|
338
345
|
:param description: str - Updated purpose description (optional).
|
|
339
346
|
:param agent_data_prompt: dict - Updated prompt configuration (e.g., {'context': str, 'instructions': str, 'examples': [{'inputData': str, 'output': str}]}).
|
|
340
347
|
:param agent_data_llm_config: dict - Updated LLM configuration (e.g., {'maxTokens': int, 'timeout': int, 'sampling': {'temperature': float}}).
|
|
348
|
+
:param agent_data_strategy_name: str - Updated StrategyName configuration.
|
|
341
349
|
:param agent_data_models: list - Updated model list (e.g., [{'name': 'gpt-4o', 'llmConfig': dict}]).
|
|
342
350
|
:param agent_data_resource_pools: Optional[List[Dict]] - Updated resource pools (e.g., [{'name': str, 'tools': [{'name': str, 'revision': int}], 'agents': [{'name': str, 'revision': int}]}]).
|
|
343
351
|
:param automatic_publish: bool - Automatically publish the agent after updating (default: False).
|
|
@@ -357,15 +365,23 @@ class AgentClient(BaseClient):
|
|
|
357
365
|
"jobDescription": job_description,
|
|
358
366
|
"avatarImage": avatar_image,
|
|
359
367
|
"description": description,
|
|
360
|
-
"agentData": {
|
|
361
|
-
"prompt": agent_data_prompt,
|
|
362
|
-
"llmConfig": agent_data_llm_config,
|
|
363
|
-
"models": agent_data_models
|
|
364
|
-
}
|
|
365
368
|
}
|
|
366
369
|
}
|
|
370
|
+
if (
|
|
371
|
+
agent_data_prompt or agent_data_strategy_name or agent_data_prompt or agent_data_resource_pools or
|
|
372
|
+
agent_data_llm_config or agent_data_models
|
|
373
|
+
):
|
|
374
|
+
data["agentDefinition"]["agentData"] = {}
|
|
367
375
|
if agent_data_resource_pools is not None:
|
|
368
376
|
data["agentDefinition"]["agentData"]["resourcePools"] = agent_data_resource_pools
|
|
377
|
+
if agent_data_prompt is not None:
|
|
378
|
+
data["agentDefinition"]["agentData"]["prompt"] = agent_data_prompt
|
|
379
|
+
if agent_data_llm_config is not None:
|
|
380
|
+
data["agentDefinition"]["agentData"]["llmConfig"] = agent_data_llm_config
|
|
381
|
+
if agent_data_strategy_name is not None:
|
|
382
|
+
data["agentDefinition"]["agentData"]["strategyName"] = agent_data_strategy_name
|
|
383
|
+
if agent_data_models is not None:
|
|
384
|
+
data["agentDefinition"]["agentData"]["models"] = agent_data_models
|
|
369
385
|
|
|
370
386
|
logger.debug(f"Updating agent with ID {agent_id} with data: {data}")
|
|
371
387
|
|
|
@@ -392,4 +408,4 @@ class AgentClient(BaseClient):
|
|
|
392
408
|
logger.error(f"Unable to update agent {agent_id} in project {project_id}: JSON parsing error (status {response.status_code}): {e}. Response: {response.text}")
|
|
393
409
|
raise InvalidAPIResponseException(f"Unable to update agent {agent_id} in project {project_id}: {response.text}")
|
|
394
410
|
|
|
395
|
-
return result
|
|
411
|
+
return result
|
|
@@ -65,10 +65,12 @@ class AgentMapper:
|
|
|
65
65
|
prompt_data = data.get("prompt")
|
|
66
66
|
llm_config_data = data.get("llmConfig")
|
|
67
67
|
models_list = data.get("models")
|
|
68
|
+
strategy_name = data.get("strategyName")
|
|
68
69
|
resource_pool_list = data.get("resourcePools")
|
|
69
70
|
return AgentData(
|
|
70
71
|
prompt=cls._map_to_prompt(prompt_data) if prompt_data else None,
|
|
71
72
|
llm_config=cls._map_to_llm_config(llm_config_data) if llm_config_data else None,
|
|
73
|
+
strategy_name=strategy_name,
|
|
72
74
|
models=cls._map_to_model_list(models_list) if models_list else None,
|
|
73
75
|
resource_pools=cls._map_to_resource_pool_list(resource_pool_list) if resource_pool_list else None
|
|
74
76
|
)
|
|
@@ -101,6 +101,7 @@ class AILabManager:
|
|
|
101
101
|
avatar_image=agent.avatar_image,
|
|
102
102
|
description=agent.description,
|
|
103
103
|
agent_data_prompt=agent.agent_data.prompt.to_dict() if agent.agent_data is not None else None,
|
|
104
|
+
agent_data_strategy_name=agent.agent_data.strategy_name if agent.agent_data is not None else None,
|
|
104
105
|
agent_data_llm_config=agent.agent_data.llm_config.to_dict() if agent.agent_data is not None else None,
|
|
105
106
|
agent_data_models=agent.agent_data.models.to_dict() if agent.agent_data is not None else None,
|
|
106
107
|
agent_data_resource_pools=agent.agent_data.resource_pools.to_dict() if agent.agent_data and agent.agent_data.resource_pools else None,
|
|
@@ -149,6 +150,7 @@ class AILabManager:
|
|
|
149
150
|
description=agent.description,
|
|
150
151
|
agent_data_prompt=agent.agent_data.prompt.to_dict() if agent.agent_data is not None else None,
|
|
151
152
|
agent_data_llm_config=agent.agent_data.llm_config.to_dict() if agent.agent_data is not None else None,
|
|
153
|
+
agent_data_strategy_name=agent.agent_data.strategy_name if agent.agent_data is not None else None,
|
|
152
154
|
agent_data_models=agent.agent_data.models.to_dict() if agent.agent_data is not None else None,
|
|
153
155
|
automatic_publish=automatic_publish,
|
|
154
156
|
upsert=upsert
|
|
@@ -166,6 +166,14 @@ class Prompt(CustomBaseModel):
|
|
|
166
166
|
context: Optional[str] = Field(None, alias="context", description="Background context for the agent")
|
|
167
167
|
examples: Optional[List[PromptExample]] = Field(None, alias="examples")
|
|
168
168
|
|
|
169
|
+
@field_validator("instructions")
|
|
170
|
+
@classmethod
|
|
171
|
+
def validate_instructions(cls, value: str) -> str:
|
|
172
|
+
if not value.strip():
|
|
173
|
+
raise ValueError("instructions cannot be blank")
|
|
174
|
+
|
|
175
|
+
return value
|
|
176
|
+
|
|
169
177
|
@field_validator("outputs", mode="before")
|
|
170
178
|
@classmethod
|
|
171
179
|
def normalize_outputs(cls, value):
|
|
@@ -380,11 +388,13 @@ class AgentData(CustomBaseModel):
|
|
|
380
388
|
|
|
381
389
|
:param prompt: dict - Prompt instructions, inputs, outputs, and examples for the agent.
|
|
382
390
|
:param llm_config: dict - Configuration parameters for the LLM (e.g., max tokens, timeout, temperature).
|
|
391
|
+
:param strategy_name: str - Strategy name used for the agent (e.g., Dynamic Prompting, Chain of Thought, Question Refinement, etc)
|
|
383
392
|
:param models: ModelList - List of models available for the agent.
|
|
384
393
|
:param resource_pools: Optional[List[ResourcePool]] - List of resource pools organizing tools and helper agents.
|
|
385
394
|
"""
|
|
386
395
|
prompt: Prompt = Field(..., alias="prompt")
|
|
387
396
|
llm_config: LlmConfig = Field(..., alias="llmConfig")
|
|
397
|
+
strategy_name: Optional[str] = Field("Dynamic Prompting", alias="strategyName")
|
|
388
398
|
models: Optional[Union[ModelList, List[Model]]] = Field(None, alias="models")
|
|
389
399
|
resource_pools: Optional[ResourcePoolList] = Field(None, alias="resourcePools", description="List of resource pools organizing tools and helper agents")
|
|
390
400
|
|
|
@@ -399,13 +399,12 @@ class AgenticProcessClient(BaseClient):
|
|
|
399
399
|
endpoint=endpoint,
|
|
400
400
|
headers=headers
|
|
401
401
|
)
|
|
402
|
-
try:
|
|
403
|
-
result = response.json()
|
|
404
|
-
except JSONDecodeError as e:
|
|
405
|
-
logger.error(f"Unable to delete process {process_id or process_name} from project {project_id}: JSON parsing error (status {response.status_code}): {e}. Response: {response.text}")
|
|
406
|
-
raise InvalidAPIResponseException(f"Unable to delete process {process_id or process_name} from project {project_id}: {response.text}")
|
|
407
402
|
|
|
408
|
-
|
|
403
|
+
if response.status_code != 204:
|
|
404
|
+
logger.error(f"Unable to delete process {process_id or process_name} from project {project_id}: JSON parsing error (status {response.status_code}). Response: {response.text}")
|
|
405
|
+
raise InvalidAPIResponseException(f"Unable to delete process {process_id or process_name} from project {project_id}: {response.text}")
|
|
406
|
+
else:
|
|
407
|
+
return {}
|
|
409
408
|
|
|
410
409
|
def publish_process_revision(
|
|
411
410
|
self,
|
|
@@ -699,11 +698,12 @@ class AgenticProcessClient(BaseClient):
|
|
|
699
698
|
logger.debug(f"Deleting task with name {task_name}")
|
|
700
699
|
|
|
701
700
|
response = self.api_service.delete(endpoint=endpoint, headers=headers)
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
logger.error(f"Unable to delete task {task_id or task_name} from project {project_id}: JSON parsing error (status {response.status_code}): {e}. Response: {response.text}")
|
|
701
|
+
|
|
702
|
+
if response.status_code != 204:
|
|
703
|
+
logger.error(f"Unable to delete task {task_id or task_name} from project {project_id}: JSON parsing error (status {response.status_code}). Response: {response.text}")
|
|
706
704
|
raise InvalidAPIResponseException(f"Unable to delete task {task_id or task_name} from project {project_id}: {response.text}")
|
|
705
|
+
else:
|
|
706
|
+
return {}
|
|
707
707
|
|
|
708
708
|
def publish_task_revision(
|
|
709
709
|
self,
|
|
@@ -1121,11 +1121,12 @@ class AgenticProcessClient(BaseClient):
|
|
|
1121
1121
|
logger.debug(f"Deleting KB with name {kb_name}")
|
|
1122
1122
|
|
|
1123
1123
|
response = self.api_service.delete(endpoint=endpoint, headers=headers)
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
logger.error(f"Unable to delete knowledge base {kb_id or kb_name} from project {project_id}: JSONDecodeError parsing error (status {response.status_code}): {e}. Response: {response.text}")
|
|
1124
|
+
|
|
1125
|
+
if response.status_code != 204:
|
|
1126
|
+
logger.error(f"Unable to delete knowledge base {kb_id or kb_name} from project {project_id}: JSONDecodeError parsing error (status {response.status_code}). Response: {response.text}")
|
|
1128
1127
|
raise InvalidAPIResponseException(f"Unable to delete knowledge base {kb_id or kb_name} from project {project_id}: {response.text}")
|
|
1128
|
+
else:
|
|
1129
|
+
return {}
|
|
1129
1130
|
|
|
1130
1131
|
def list_jobs(
|
|
1131
1132
|
self,
|
|
@@ -256,13 +256,11 @@ class ToolClient(BaseClient):
|
|
|
256
256
|
headers=headers
|
|
257
257
|
)
|
|
258
258
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
except JSONDecodeError as e:
|
|
262
|
-
logger.error(f"Unable to delete tool {tool_id or tool_name} from project {project_id}: JSON parsing error (status {response.status_code}): {e}. Response: {response.text}")
|
|
259
|
+
if response.status_code != 204:
|
|
260
|
+
logger.error(f"Unable to delete tool {tool_id or tool_name} from project {project_id}: JSON parsing error (status {response.status_code}). Response: {response.text}")
|
|
263
261
|
raise InvalidAPIResponseException(f"Unable to delete tool {tool_id or tool_name} from project {project_id}: {response.text}")
|
|
264
|
-
|
|
265
|
-
|
|
262
|
+
else:
|
|
263
|
+
return {}
|
|
266
264
|
|
|
267
265
|
def update_tool(
|
|
268
266
|
self,
|
{pygeai-0.2.7b38 → pygeai-0.2.7b40}/pygeai/tests/integration/lab/agents/test_create_agent.py
RENAMED
|
@@ -13,7 +13,6 @@ class TestAILabCreateAgentIntegration(TestCase):
|
|
|
13
13
|
Set up the test environment.
|
|
14
14
|
"""
|
|
15
15
|
self.ai_lab_manager = AILabManager(alias="beta")
|
|
16
|
-
self.project_id = "be4889df-cacc-4e6f-b3bb-153c4ac0d168"
|
|
17
16
|
self.new_agent = self.__load_agent()
|
|
18
17
|
self.created_agent: Agent = None
|
|
19
18
|
|
|
@@ -26,7 +25,7 @@ class TestAILabCreateAgentIntegration(TestCase):
|
|
|
26
25
|
if isinstance(self.created_agent, Agent):
|
|
27
26
|
#TODO: Remove exception catch when delete_agent stop returning an unexpected error
|
|
28
27
|
with self.assertRaises(InvalidAPIResponseException) as e:
|
|
29
|
-
self.ai_lab_manager.delete_agent(self.
|
|
28
|
+
self.ai_lab_manager.delete_agent(self.created_agent.id)
|
|
30
29
|
|
|
31
30
|
|
|
32
31
|
def __load_agent(self):
|
|
@@ -66,7 +65,6 @@ class TestAILabCreateAgentIntegration(TestCase):
|
|
|
66
65
|
If automatic_publish is None, do not pass it (useful for tests that omit it).
|
|
67
66
|
"""
|
|
68
67
|
return self.ai_lab_manager.create_agent(
|
|
69
|
-
project_id=self.project_id,
|
|
70
68
|
agent=self.new_agent if agent is None else agent,
|
|
71
69
|
automatic_publish=automatic_publish
|
|
72
70
|
)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from pygeai.core.files.managers import FileManager
|
|
2
|
+
from pygeai.core.files.models import File
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
file = File(id="7fe2393d-8f86-4020-a51f-bc14ab957e1e")
|
|
6
|
+
|
|
7
|
+
file_manager = FileManager()
|
|
8
|
+
|
|
9
|
+
response = file_manager.get_file_content(file_id=file.id)
|
|
10
|
+
print(response)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from pygeai.core.files.managers import FileManager
|
|
2
|
+
from pygeai.core.files.models import UploadFile
|
|
3
|
+
|
|
4
|
+
file = UploadFile(
|
|
5
|
+
path="test.txt",
|
|
6
|
+
name="TestyFile",
|
|
7
|
+
folder="TestyTestTemp"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
file_manager = FileManager()
|
|
11
|
+
|
|
12
|
+
response = file_manager.upload_file(file)
|
|
13
|
+
print(response)
|