pygeai 0.2.7b42__tar.gz → 0.2.7b44__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.7b42/pygeai.egg-info → pygeai-0.2.7b44}/PKG-INFO +1 -1
- pygeai-0.2.7b44/docs/geai-proxy/README.md +244 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/man/man1/geai-proxy.1 +76 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/proxy/managers.py +2 -2
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/proxy/servers.py +5 -5
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/proxy/tool.py +5 -5
- {pygeai-0.2.7b42 → pygeai-0.2.7b44/pygeai.egg-info}/PKG-INFO +1 -1
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pyproject.toml +1 -1
- pygeai-0.2.7b42/docs/geai-proxy/README.md +0 -200
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/LICENSE +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/MANIFEST.in +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/README.md +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/admin/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/admin/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/admin/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/data/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/data/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/data_analyst/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/data_analyst/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/data_analyst/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/rag/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/rag/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/rag/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/rag/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/rag/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/assistant/rag/responses.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/iris.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/session.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/settings.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/chat/ui.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/__main__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/admin.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/base.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/builders.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/chat.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/common.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/configuration.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/embeddings.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/evaluation.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/feedback.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/files.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/flows/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/gam.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/lab/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/lab/ai_lab.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/lab/common.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/lab/spec.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/llm.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/migrate.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/options.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/organization.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/rag.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/rerank.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/secrets.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/usage_limits.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/validators.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/commands/version.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/geai.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/geai_proxy.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/install_man.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/parsers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/texts/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/cli/texts/help.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/base/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/base/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/base/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/base/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/base/responses.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/base/session.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/common/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/common/config.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/common/decorators.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/common/exceptions.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/embeddings/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/embeddings/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/embeddings/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/embeddings/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/embeddings/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/embeddings/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/embeddings/responses.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/feedback/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/feedback/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/feedback/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/feedback/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/files/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/files/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/files/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/files/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/files/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/files/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/files/responses.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/handlers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/llm/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/llm/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/llm/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/plugins/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/plugins/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/plugins/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/plugins/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/rerank/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/rerank/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/rerank/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/rerank/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/rerank/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/rerank/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/responses.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/secrets/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/secrets/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/secrets/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/services/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/services/llm/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/services/llm/model.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/services/llm/providers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/services/response.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/services/rest.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/singleton.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/utils/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/core/utils/console.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/dbg/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/dbg/debugger.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/dataset/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/dataset/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/dataset/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/plan/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/plan/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/plan/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/result/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/result/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/evaluation/result/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/flows/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/flows/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/flows/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/gam/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/gam/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/gam/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/health/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/health/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/health/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/agents/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/agents/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/agents/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/constants.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/processes/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/processes/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/processes/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/processes/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/runners.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/spec/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/spec/loader.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/spec/parsers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/strategies/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/strategies/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/strategies/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/strategies/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/tools/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/tools/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/tools/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/lab/tools/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/man/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/man/man1/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/man/man1/geai.1 +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/migration/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/migration/strategies.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/migration/tools.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/limits/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/limits/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/limits/endpoints.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/limits/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/limits/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/organization/responses.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/proxy/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/proxy/clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/proxy/config.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/admin/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/admin/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/rag/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/rag/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/rag/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/rag/test_models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/test_managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/assistants/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/chat/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/chat/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/chat/test_iris.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/chat/test_session.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/chat/test_ui.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/lab/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/lab/test_ai_lab.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/lab/test_common.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/lab/test_spec.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_chat.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_common.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_embeddings.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_feedback.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_files.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_gam.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_llm.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_migrate.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_organization.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_rag.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_rerank.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_show_help.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_usage_limits.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_validators.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/commands/test_version.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/cli/test_parsers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/base/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/base/data/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/base/data/mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/base/data/models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/base/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/base/test_models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/common/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/common/data/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/common/test_config.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/common/test_decorators.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/embeddings/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/embeddings/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/feedback/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/feedback/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/files/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/files/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/files/test_managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/files/test_models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/files/test_responses.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/llm/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/llm/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/rerank/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/rerank/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/rerank/test_managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/rerank/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/secrets/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/secrets/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/services/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/services/test_rest.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/test_handlers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/utils/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/core/utils/test_console.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/dbg/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/dbg/test_debugger.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/gam/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/gam/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/health/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/health/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/test_agents_list.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/test_create_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/test_create_sharing_link.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/test_delete_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/test_get_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/integration/lab/agents/test_update_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/agents/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/agents/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/processes/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/processes/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/processes/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/spec/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/spec/test_loader.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/spec/test_parsers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/strategies/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/strategies/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/strategies/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/test_managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/test_models.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/tools/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/tools/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/lab/tools/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/migration/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/migration/test_strategies.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/migration/test_tools.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/organization/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/organization/limits/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/organization/limits/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/organization/limits/test_managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/organization/test_clients.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/organization/test_managers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/organization/test_mappers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/create_chat_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/create_text_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/data_analyst/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/data_analyst/extend_and_check.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/data_analyst/extend_dataset.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/data_analyst/get_status.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/file_summarizer_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/get_assistant_data.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/get_assistant_list.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/create_rag_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/delete_al_documents.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/delete_document.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/get_document.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/get_documents.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/update_rag_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/rag/upload_document.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/send_feedback.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/assistants/update_chat_assistant.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/cancel_request.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/chat_completion.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/chat_completion_1.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/chat_completion_2.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/chat_completion_3.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/chat_completion_4.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/chat_completion_streaming.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/get_request_status.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/chat/send_chat_request.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/embeddings/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/embeddings/generate_embeddings.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/evaluation/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/files/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/files/delete_file.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/files/get_file_content.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/files/get_file_data.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/files/get_file_list.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/files/upload_file.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/gam/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/gam/gam_access_token.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agentic_flow_example_1.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agentic_flow_example_2.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agentic_flow_example_3.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agentic_flow_example_4.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/create_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/create_agent_2.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/delete_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/get_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/get_sharing_link.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/list_agents.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/publish_agent_revision.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/agents/update_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/assistant_to_agent.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/crud_ui.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/create_process.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/create_task.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/jobs/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/kbs/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/kbs/create_kb.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/kbs/get_kb.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/kbs/try_all.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/processes/list_processes.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/runner_1.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/samples/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/samples/summarize_files.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/strategies/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/create_tool.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/delete_tool.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/get_parameter.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/get_tool.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/list_tools.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/publish_tool_revision.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/set_parameters.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/tools/update_tool.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/create_web_designer.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/create_web_reader.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/file_summarizer_example.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/update_web_designer.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/update_web_reader.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/migrate/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/create_project.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/delete_project.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/export_request_data.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/get_project_data.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/get_project_list.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/get_project_tokens.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/organization/update_project.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/rerank/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/rerank/rerank_chunks.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/secrets/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/delete_usage_limit.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/get_all_usage_limit_from_organization.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/get_usage_limit_from_organization.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/get_usage_limit_from_project.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/set_usage_limit_organization.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/set_usage_limit_project.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/update_usage_limit_organization.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/tests/snippets/usage_limit/update_usage_limit_project.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/auth/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/auth/user.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/client/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/client/client.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/client/errors.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/client/helpers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/py.typed +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/agent_execution/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/agent_execution/agent_executor.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/agent_execution/context.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/apps/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/context.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/events/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/events/event_consumer.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/events/event_queue.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/events/queue_manager.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/request_handlers/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/request_handlers/request_handler.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/request_handlers/response_helpers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/push_notifier.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/result_aggregator.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/task_manager.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/task_store.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/server/tasks/task_updater.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/types.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/utils/__init__.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/utils/artifact.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/utils/errors.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/utils/helpers.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/utils/message.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/utils/task.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai/vendor/a2a/utils/telemetry.py +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai.egg-info/SOURCES.txt +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai.egg-info/dependency_links.txt +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai.egg-info/entry_points.txt +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai.egg-info/requires.txt +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/pygeai.egg-info/top_level.txt +0 -0
- {pygeai-0.2.7b42 → pygeai-0.2.7b44}/setup.cfg +0 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# GEAI Proxy Documentation
|
|
2
|
+
|
|
3
|
+
## NAME
|
|
4
|
+
`geai-proxy` – proxy service for managing Model Context Protocol (MCP) servers with GEAI
|
|
5
|
+
|
|
6
|
+
## SYNOPSIS
|
|
7
|
+
```bash
|
|
8
|
+
geai-proxy [OPTIONS] CONFIG_FILE
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## DESCRIPTION
|
|
12
|
+
The GEAI Proxy is a Python-based tool that acts as an intermediary between the GEAI API and various tool servers. It manages the registration, execution, and result handling of tool operations through a proxy service.
|
|
13
|
+
|
|
14
|
+
To install:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pip install pygeai
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## CONFIGURATION
|
|
21
|
+
|
|
22
|
+
The GEAI Proxy requires two distinct types of configuration:
|
|
23
|
+
|
|
24
|
+
### 1. MCP Servers Configuration
|
|
25
|
+
|
|
26
|
+
This section declares the Model Context Protocol (MCP) servers that this proxy will link with GEAI. The configuration follows the Claude Desktop standard format and supports multiple servers in one file.
|
|
27
|
+
|
|
28
|
+
#### Configuration File Format
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"mcpServers": {
|
|
33
|
+
"serverName1": {
|
|
34
|
+
"command": "command-to-launch-server",
|
|
35
|
+
"args": ["arg1", "arg2", "..."]
|
|
36
|
+
},
|
|
37
|
+
"serverName2": {
|
|
38
|
+
"command": "command-to-launch-server",
|
|
39
|
+
"args": ["arg1", "arg2", "..."]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### Example: Puppeteer Server
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"puppeteer": {
|
|
51
|
+
"command": "npx",
|
|
52
|
+
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
#### Example: Filesystem Server
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"mcpServers": {
|
|
63
|
+
"filesystem": {
|
|
64
|
+
"command": "npx",
|
|
65
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "~/mcp-shared-folder"]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### Example: HTTP+SSE Server
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"mcpServers": {
|
|
76
|
+
"markitdown": {
|
|
77
|
+
"uri": "http://localhost:5000/sse"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### Example: Multiple Servers Combined
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"mcpServers": {
|
|
88
|
+
"puppeteer": {
|
|
89
|
+
"command": "npx",
|
|
90
|
+
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
91
|
+
},
|
|
92
|
+
"filesystem": {
|
|
93
|
+
"command": "npx",
|
|
94
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "~/mcp-shared-folder"]
|
|
95
|
+
},
|
|
96
|
+
"markitdown": {
|
|
97
|
+
"uri": "http://localhost:5000/sse"
|
|
98
|
+
},
|
|
99
|
+
"custom-server": {
|
|
100
|
+
"command": "python",
|
|
101
|
+
"args": ["path/to/your/custom_mcp_server.py"]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## PUBLIC TOOL REGISTRATION
|
|
108
|
+
|
|
109
|
+
Tools provided by both MCP and A2A servers can be published to GEAI under a public namespace by including the `public_prefix` field in their configuration entry.
|
|
110
|
+
|
|
111
|
+
This allows tools to be registered under a well-defined global identifier, making them discoverable and shareable across proxies and clients.
|
|
112
|
+
|
|
113
|
+
### MCP Server Example with Public Prefix
|
|
114
|
+
|
|
115
|
+
Registers tools from the `puppeteer` MCP server under the prefix `com.globant.puppeteer`:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"mcpServers": {
|
|
120
|
+
"public_prefix": "com.globant.puppeteer",
|
|
121
|
+
"puppeteer": {
|
|
122
|
+
"command": "npx",
|
|
123
|
+
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### A2A Server Example with Public Prefix
|
|
130
|
+
|
|
131
|
+
Registers tools from the `hello-world` A2A agent under the prefix `com.genexus.a2a.sampleagent`:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"a2aServers": {
|
|
136
|
+
"hello-world": {
|
|
137
|
+
"public_prefix": "com.genexus.a2a.sampleagent",
|
|
138
|
+
"url": "http://localhost:9999",
|
|
139
|
+
"headers": {
|
|
140
|
+
"Authorization": "Bearer fh84ff...."
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Resulting Tool Identifiers
|
|
148
|
+
|
|
149
|
+
For example, a tool named `translate_text` would be available as:
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
com.genexus.a2a.sampleagent.translate_text
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 2. Proxy Authentication Configuration
|
|
156
|
+
|
|
157
|
+
This section establishes the connection between the proxy and GEAI and manages user aliases.
|
|
158
|
+
|
|
159
|
+
#### Automatic Configuration (First Run)
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
geai-proxy sample-mcp-config.json --alias myalias
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
#### Manual Configuration (Reconfiguration)
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
geai-proxy --configure --alias myalias
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
During interactive setup, the CLI will prompt:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
# Configuring GEAI proxy settings...
|
|
175
|
+
Generated new proxy ID: 37bae96b-bc99-4110-bb61-b912b28f9e32
|
|
176
|
+
-> Insert proxy ID (UUID) (Current: 37bae96b-bc99-4110-bb61-b912b28f9e32, Leave empty to keep):
|
|
177
|
+
-> Insert proxy API key:
|
|
178
|
+
-> Insert proxy base URL:
|
|
179
|
+
-> Insert proxy name:
|
|
180
|
+
-> Insert proxy description:
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## PROXY CONFIGURATION PARAMETERS
|
|
184
|
+
|
|
185
|
+
During interactive setup, the following parameters are requested:
|
|
186
|
+
|
|
187
|
+
- **proxy ID (UUID)**
|
|
188
|
+
A unique identifier for this proxy instance. If left empty, the automatically generated UUID will be used.
|
|
189
|
+
|
|
190
|
+
- **proxy API key**
|
|
191
|
+
The API key used to authenticate the proxy with the GEAI backend. Must be a token from GEAI for a specific project.
|
|
192
|
+
|
|
193
|
+
- **proxy base URL**
|
|
194
|
+
The base URL of the GEAI installation to connect to.
|
|
195
|
+
Example: `https://api.beta.saia.ai`
|
|
196
|
+
|
|
197
|
+
- **proxy name**
|
|
198
|
+
Human-readable name for this proxy instance, stored under the alias.
|
|
199
|
+
|
|
200
|
+
- **proxy description**
|
|
201
|
+
Optional. Helps identify this proxy instance when using multiple aliases.
|
|
202
|
+
|
|
203
|
+
## USAGE
|
|
204
|
+
|
|
205
|
+
To start the proxy server with a config and alias:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
geai-proxy sample-mcp-config.json --alias myalias
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Command Line Arguments
|
|
212
|
+
|
|
213
|
+
- **config_file**: Path to the MCP servers configuration file (JSON).
|
|
214
|
+
- **--alias ALIAS**: Alias for the proxy settings.
|
|
215
|
+
- **--configure**: Reconfigure proxy authentication settings.
|
|
216
|
+
|
|
217
|
+
## FILES
|
|
218
|
+
|
|
219
|
+
- `pygeai/proxy/sample-mcp-config.json` – Sample configuration file for MCP servers.
|
|
220
|
+
|
|
221
|
+
## SEE ALSO
|
|
222
|
+
|
|
223
|
+
- `pygeai (1)`
|
|
224
|
+
|
|
225
|
+
## THIRD-PARTY COMPONENTS
|
|
226
|
+
|
|
227
|
+
This software includes code from the `a2a-python` project by Google LLC, licensed under the Apache License 2.0.
|
|
228
|
+
|
|
229
|
+
Only the vendored component in `pygeai/vendor/a2a/` is Apache-licensed. The rest is MIT-licensed.
|
|
230
|
+
|
|
231
|
+
License sources:
|
|
232
|
+
|
|
233
|
+
- https://github.com/google/a2a-python
|
|
234
|
+
- `pygeai/vendor/a2a/LICENSE`
|
|
235
|
+
|
|
236
|
+
## AUTHOR
|
|
237
|
+
|
|
238
|
+
Written by the GEAI development team.
|
|
239
|
+
|
|
240
|
+
## COPYRIGHT
|
|
241
|
+
|
|
242
|
+
Copyright © 2025 GEAI development team.
|
|
243
|
+
|
|
244
|
+
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
@@ -92,6 +92,55 @@ The configuration file should be in JSON format with the following structure:
|
|
|
92
92
|
}
|
|
93
93
|
.fi
|
|
94
94
|
|
|
95
|
+
.SH PUBLIC TOOL REGISTRATION
|
|
96
|
+
Tools provided by both MCP and A2A servers can be published to GEAI under a public namespace
|
|
97
|
+
by including the \fBpublic_prefix\fR field in their configuration entry.
|
|
98
|
+
|
|
99
|
+
This allows tools to be registered under a well-defined global identifier, making them
|
|
100
|
+
discoverable and shareable across proxies and clients.
|
|
101
|
+
|
|
102
|
+
.SS MCP SERVER EXAMPLE WITH PUBLIC PREFIX
|
|
103
|
+
The following configuration registers all tools from the \fBpuppeteer\fR MCP server under
|
|
104
|
+
the public prefix \fIcom.globant.puppeteer\fR:
|
|
105
|
+
|
|
106
|
+
.nf
|
|
107
|
+
{
|
|
108
|
+
"mcpServers": {
|
|
109
|
+
"public_prefix": "com.globant.puppeteer",
|
|
110
|
+
"puppeteer": {
|
|
111
|
+
"command": "npx",
|
|
112
|
+
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
.fi
|
|
117
|
+
|
|
118
|
+
.SS A2A SERVER EXAMPLE WITH PUBLIC PREFIX
|
|
119
|
+
The following configuration registers the tools provided by the \fBhello-world\fR A2A agent
|
|
120
|
+
under the prefix \fIcom.genexus.a2a.sampleagent\fR:
|
|
121
|
+
|
|
122
|
+
.nf
|
|
123
|
+
{
|
|
124
|
+
"a2aServers": {
|
|
125
|
+
"hello-world": {
|
|
126
|
+
"public_prefix": "com.genexus.a2a.sampleagent",
|
|
127
|
+
"url": "http://localhost:9999",
|
|
128
|
+
"headers": {
|
|
129
|
+
"Authorization": "Bearer fh84ff...."
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
.fi
|
|
135
|
+
|
|
136
|
+
.SS RESULTING TOOL IDENTIFIERS
|
|
137
|
+
When this prefix is set, all tools will be published using it. For example, a tool named
|
|
138
|
+
\fBtranslate_text\fR would be available as:
|
|
139
|
+
|
|
140
|
+
.nf
|
|
141
|
+
com.genexus.a2a.sampleagent.translate_text
|
|
142
|
+
.fi
|
|
143
|
+
|
|
95
144
|
.SS 2. Proxy Authentication Configuration
|
|
96
145
|
This section establishes the connection between the proxy and GEAI and manages user aliases.
|
|
97
146
|
.TP
|
|
@@ -116,6 +165,33 @@ Generated new proxy ID: 37bae96b-bc99-4110-bb61-b912b28f9e32
|
|
|
116
165
|
-> Insert proxy description:
|
|
117
166
|
.fi
|
|
118
167
|
|
|
168
|
+
.SH PROXY CONFIGURATION PARAMETERS
|
|
169
|
+
During interactive setup, the following parameters are requested:
|
|
170
|
+
|
|
171
|
+
.TP
|
|
172
|
+
\fBproxy ID (UUID)\fR
|
|
173
|
+
A unique identifier for this proxy instance. If left empty, the automatically generated UUID
|
|
174
|
+
will be used.
|
|
175
|
+
|
|
176
|
+
.TP
|
|
177
|
+
\fBproxy API key\fR
|
|
178
|
+
The API key used to authenticate the proxy with the GEAI backend. This must be an API token
|
|
179
|
+
generated in GEAI for a specific project.
|
|
180
|
+
|
|
181
|
+
.TP
|
|
182
|
+
\fBproxy base URL\fR
|
|
183
|
+
The base URL of the GEAI installation this proxy will connect to.
|
|
184
|
+
For example: \fIhttps://api.beta.saia.ai\fR
|
|
185
|
+
|
|
186
|
+
.TP
|
|
187
|
+
\fBproxy name\fR
|
|
188
|
+
A human-readable name assigned to this instance of \fBgeai-proxy\fR. This name is stored under the configured alias.
|
|
189
|
+
|
|
190
|
+
.TP
|
|
191
|
+
\fBproxy description\fR
|
|
192
|
+
An optional description to help identify this proxy instance, especially when multiple proxies are used under different aliases.
|
|
193
|
+
|
|
194
|
+
|
|
119
195
|
.SH USAGE
|
|
120
196
|
To start the proxy server with a specific configuration and alias:
|
|
121
197
|
.nf
|
|
@@ -59,8 +59,8 @@ class ServerManager:
|
|
|
59
59
|
|
|
60
60
|
for server in self.servers.values():
|
|
61
61
|
Console.write_stdout(f"Listing tools for server {server.name}", end="")
|
|
62
|
-
if server.
|
|
63
|
-
Console.write_stdout(f" | access scope:public prefix: {server.
|
|
62
|
+
if server.public_prefix:
|
|
63
|
+
Console.write_stdout(f" | access scope:public prefix: {server.public_prefix}")
|
|
64
64
|
else:
|
|
65
65
|
Console.write_stdout(" ! access scope:private")
|
|
66
66
|
|
|
@@ -40,7 +40,7 @@ class ToolServer(ABC):
|
|
|
40
40
|
self.config = config
|
|
41
41
|
self.settings = settings
|
|
42
42
|
self.name: str = sever_name
|
|
43
|
-
self.
|
|
43
|
+
self.public_prefix: str | None = None
|
|
44
44
|
self.exit_stack: AsyncExitStack = AsyncExitStack()
|
|
45
45
|
|
|
46
46
|
@abstractmethod
|
|
@@ -105,7 +105,7 @@ class A2AServer(ToolServer):
|
|
|
105
105
|
"""
|
|
106
106
|
try:
|
|
107
107
|
self.httpx_client = httpx.AsyncClient(timeout=60.0)
|
|
108
|
-
self.
|
|
108
|
+
self.public_prefix = self.config.get("public_prefix")
|
|
109
109
|
headers = self.config.get("headers")
|
|
110
110
|
if headers:
|
|
111
111
|
self.httpx_client.headers.update(headers)
|
|
@@ -138,7 +138,7 @@ class A2AServer(ToolServer):
|
|
|
138
138
|
}
|
|
139
139
|
tools = []
|
|
140
140
|
for skill in self.agent_card.skills:
|
|
141
|
-
tools.append(ProxiedTool(self.name, skill.id, skill.description, self.
|
|
141
|
+
tools.append(ProxiedTool(self.name, skill.id, skill.description, self.public_prefix, input_schema))
|
|
142
142
|
return tools
|
|
143
143
|
|
|
144
144
|
async def execute_tool(
|
|
@@ -197,7 +197,7 @@ class MCPServer(ToolServer):
|
|
|
197
197
|
self.session: ClientSession | None = None
|
|
198
198
|
|
|
199
199
|
async def initialize(self) -> None:
|
|
200
|
-
self.
|
|
200
|
+
self.public_prefix = self.config.get("public_prefix")
|
|
201
201
|
transport = self.config.get("transport") or (
|
|
202
202
|
"sse" if "uri" in self.config else "stdio"
|
|
203
203
|
)
|
|
@@ -264,7 +264,7 @@ class MCPServer(ToolServer):
|
|
|
264
264
|
self.name,
|
|
265
265
|
tool.name,
|
|
266
266
|
tool.description,
|
|
267
|
-
self.
|
|
267
|
+
self.public_prefix,
|
|
268
268
|
tool.inputSchema
|
|
269
269
|
)
|
|
270
270
|
)
|
|
@@ -9,7 +9,7 @@ class ProxiedTool:
|
|
|
9
9
|
:param server_name: str - Name of the server exposing the tool
|
|
10
10
|
:param name: str - Name of the tool
|
|
11
11
|
:param description: str - Description of the tool's functionality
|
|
12
|
-
:param
|
|
12
|
+
:param public_prefix: str - Public prefix of the tool
|
|
13
13
|
:param input_schema: dict[str, Any] - JSON schema defining the expected input for the tool
|
|
14
14
|
:return: ProxiedTool - Instance of the ProxiedTool class
|
|
15
15
|
:raises: ValueError - If any required parameter is invalid or missing
|
|
@@ -20,7 +20,7 @@ class ProxiedTool:
|
|
|
20
20
|
server_name: str,
|
|
21
21
|
name: str,
|
|
22
22
|
description: str,
|
|
23
|
-
|
|
23
|
+
public_prefix: str,
|
|
24
24
|
input_schema: dict[str, Any]
|
|
25
25
|
) -> None:
|
|
26
26
|
self.server_name: str = server_name
|
|
@@ -28,7 +28,7 @@ class ProxiedTool:
|
|
|
28
28
|
self.openai_compatible_name: str = self._get_openai_compatible_name(name)
|
|
29
29
|
self.description: str = description
|
|
30
30
|
self.input_schema: dict[str, Any] = input_schema
|
|
31
|
-
self.
|
|
31
|
+
self.public_prefix: str = public_prefix
|
|
32
32
|
|
|
33
33
|
def get_full_name(self) -> str:
|
|
34
34
|
"""Get the full name of the tool."""
|
|
@@ -36,12 +36,12 @@ class ProxiedTool:
|
|
|
36
36
|
|
|
37
37
|
def is_public(self) -> bool:
|
|
38
38
|
"""Check if the tool is public."""
|
|
39
|
-
return self.
|
|
39
|
+
return self.public_prefix is not None
|
|
40
40
|
|
|
41
41
|
def get_public_name(self) -> str:
|
|
42
42
|
"""Get the public name of the tool."""
|
|
43
43
|
return (
|
|
44
|
-
f"{self.
|
|
44
|
+
f"{self.public_prefix}.{self.name if self.server_name in self.public_prefix else self.get_full_name()}"
|
|
45
45
|
)
|
|
46
46
|
|
|
47
47
|
def format_for_llm(self) -> str:
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
# GEAI Proxy Documentation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The GEAI Proxy is a Python-based tool that acts as an intermediary between the GEAI API and various tool servers. It manages the registration, execution, and result handling of tool operations through a proxy service.
|
|
6
|
-
|
|
7
|
-
## Installation
|
|
8
|
-
|
|
9
|
-
## Third-party Components
|
|
10
|
-
|
|
11
|
-
This project includes code from [`a2a-python`](https://github.com/google/a2a-python) by Google LLC, used under the Apache License, Version 2.0.
|
|
12
|
-
|
|
13
|
-
Only the vendored component located in `pygeai/vendor/a2a/` is subject to the Apache License.
|
|
14
|
-
The rest of this project is licensed under the MIT License (see `LICENSE` file for details).
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
pip install pygeai
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Configuration
|
|
22
|
-
|
|
23
|
-
The GEAI Proxy requires two distinct types of configuration:
|
|
24
|
-
|
|
25
|
-
### 1. MCP Servers Configuration
|
|
26
|
-
|
|
27
|
-
This section declares the Model Context Protocol (MCP) servers that this proxy will link with GEAI. The configuration follows the Claude Desktop standard format and supports multiple servers in one file.
|
|
28
|
-
|
|
29
|
-
#### Configuration File Format
|
|
30
|
-
|
|
31
|
-
```json
|
|
32
|
-
{
|
|
33
|
-
"mcpServers": {
|
|
34
|
-
"serverName1": {
|
|
35
|
-
"command": "command-to-launch-server",
|
|
36
|
-
"args": ["arg1", "arg2", ...]
|
|
37
|
-
},
|
|
38
|
-
"serverName2": {
|
|
39
|
-
"command": "command-to-launch-server",
|
|
40
|
-
"args": ["arg1", "arg2", ...]
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
#### Example Configurations
|
|
47
|
-
|
|
48
|
-
1. **Puppeteer Server** (for web automation):
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"mcpServers": {
|
|
52
|
-
"puppeteer": {
|
|
53
|
-
"command": "npx",
|
|
54
|
-
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
2. **Filesystem Server** (for file operations):
|
|
61
|
-
```json
|
|
62
|
-
{
|
|
63
|
-
"mcpServers": {
|
|
64
|
-
"filesystem": {
|
|
65
|
-
"command": "npx",
|
|
66
|
-
"args": [
|
|
67
|
-
"-y",
|
|
68
|
-
"@modelcontextprotocol/server-filesystem",
|
|
69
|
-
"~/mcp-shared-folder"
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
3. **Multiple Servers Combined**:
|
|
77
|
-
```json
|
|
78
|
-
{
|
|
79
|
-
"mcpServers": {
|
|
80
|
-
"puppeteer": {
|
|
81
|
-
"command": "npx",
|
|
82
|
-
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
83
|
-
},
|
|
84
|
-
"filesystem": {
|
|
85
|
-
"command": "npx",
|
|
86
|
-
"args": [
|
|
87
|
-
"-y",
|
|
88
|
-
"@modelcontextprotocol/server-filesystem",
|
|
89
|
-
"~/mcp-shared-folder"
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
"custom-server": {
|
|
93
|
-
"command": "python",
|
|
94
|
-
"args": ["path/to/your/custom_mcp_server.py"]
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### 1. A2A Servers Configuration
|
|
101
|
-
|
|
102
|
-
This section declares the Agent to Agent Protocol (A2A) servers that this proxy will link with GEAI. The configuration follows the standard format and supports multiple servers in one file.
|
|
103
|
-
|
|
104
|
-
#### Configuration File Format
|
|
105
|
-
|
|
106
|
-
```json
|
|
107
|
-
{
|
|
108
|
-
"a2aServers": {
|
|
109
|
-
"hello-world": {
|
|
110
|
-
"publicpreffix": "com.genexus.a2a.sampleagent",
|
|
111
|
-
"url": "http://localhost:9999"
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
A sample configuration file is provided at:
|
|
118
|
-
```
|
|
119
|
-
pygeai/proxy/sample-mcp-config.json
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### 2. Proxy Authentication Configuration
|
|
123
|
-
|
|
124
|
-
This section establishes the connection between the proxy and GEAI and manages user aliases. You can configure it automatically on first run or manually reconfigure an existing alias.
|
|
125
|
-
|
|
126
|
-
#### Automatic Configuration (First Run)
|
|
127
|
-
```bash
|
|
128
|
-
geai-proxy sample-mcp-config.json --alias myalias
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
#### Manual Configuration (Reconfiguration)
|
|
132
|
-
```bash
|
|
133
|
-
geai-proxy --configure --alias myalias
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
During interactive setup, the CLI will prompt you for each required setting:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
# Configuring GEAI proxy settings...
|
|
140
|
-
Generated new proxy ID: 37bae96b-bc99-4110-bb61-b912b28f9e32
|
|
141
|
-
-> Insert proxy ID (UUID) (Current: 37bae96b-bc99-4110-bb61-b912b28f9e32, Leave empty to keep):
|
|
142
|
-
-> Insert proxy API key:
|
|
143
|
-
-> Insert proxy base URL:
|
|
144
|
-
-> Insert proxy name:
|
|
145
|
-
-> Insert proxy description:
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Usage
|
|
149
|
-
|
|
150
|
-
### Starting the Proxy
|
|
151
|
-
|
|
152
|
-
To start the proxy server with a specific configuration and alias:
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
geai-proxy sample-mcp-config.json --alias myalias
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Command Line Arguments
|
|
159
|
-
|
|
160
|
-
| Argument | Description | Required |
|
|
161
|
-
|----------|-------------|----------|
|
|
162
|
-
| `config_file` | Path to the MCP servers configuration file (JSON format) | Yes |
|
|
163
|
-
| `--alias` | Alias for the proxy settings | No |
|
|
164
|
-
| `--configure` | Command to reconfigure proxy authentication | No |
|
|
165
|
-
|
|
166
|
-
## Command Line Usage
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
geai-proxy sample-mcp-config.json --alias beta
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Architecture
|
|
173
|
-
|
|
174
|
-
```mermaid
|
|
175
|
-
graph TD
|
|
176
|
-
%% Elementos principales
|
|
177
|
-
user["User (Person)\nClient interacting with the GEAI"]
|
|
178
|
-
geai["GEAI (Software System)\nGlobant Enterprise AI"]
|
|
179
|
-
proxy["MCP Proxy (Software System)\nProxy that connects to multiple MCP Servers to call tools"]
|
|
180
|
-
|
|
181
|
-
mcpA["MCP Server A (Software System)\nTool server for search functionality"]
|
|
182
|
-
mcpB["MCP Server B (Software System)\nTool server for code execution"]
|
|
183
|
-
mcpC["MCP Server C (Software System)\nTool server for database queries"]
|
|
184
|
-
|
|
185
|
-
%% Conexiones
|
|
186
|
-
user -->|Interacts/Calls tools via| geai
|
|
187
|
-
geai -->|Returns tool responses| user
|
|
188
|
-
geai -->|Calls tools via| proxy
|
|
189
|
-
proxy -->|Returns tool responses| geai
|
|
190
|
-
|
|
191
|
-
user -->|Calls Search Tool| proxy
|
|
192
|
-
proxy -->|Calls Search Tool| mcpA
|
|
193
|
-
mcpA -->|Returns search results| proxy
|
|
194
|
-
|
|
195
|
-
proxy -->|Calls Code Tool| mcpB
|
|
196
|
-
mcpB -->|Returns code output| proxy
|
|
197
|
-
|
|
198
|
-
proxy -->|Calls DB Tool| mcpC
|
|
199
|
-
mcpC -->|Returns query results| proxy
|
|
200
|
-
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|