pygeai 0.1.6__py3-none-any.whl → 0.6.0b15__py3-none-any.whl
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.
Potentially problematic release.
This version of pygeai might be problematic. Click here for more details.
- pygeai/__init__.py +11 -2
- pygeai/_docs/Makefile +20 -0
- pygeai/_docs/make.bat +35 -0
- pygeai/_docs/source/conf.py +117 -0
- pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
- pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
- pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
- pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
- pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
- pygeai/_docs/source/content/ai_lab.rst +102 -0
- pygeai/_docs/source/content/analytics.rst +598 -0
- pygeai/_docs/source/content/api_reference/admin.rst +161 -0
- pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
- pygeai/_docs/source/content/api_reference/auth.rst +379 -0
- pygeai/_docs/source/content/api_reference/chat.rst +754 -0
- pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
- pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
- pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
- pygeai/_docs/source/content/api_reference/files.rst +592 -0
- pygeai/_docs/source/content/api_reference/gam.rst +401 -0
- pygeai/_docs/source/content/api_reference/health.rst +58 -0
- pygeai/_docs/source/content/api_reference/project.rst +738 -0
- pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
- pygeai/_docs/source/content/api_reference/rag.rst +710 -0
- pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
- pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
- pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
- pygeai/_docs/source/content/api_reference.rst +58 -0
- pygeai/_docs/source/content/authentication.rst +295 -0
- pygeai/_docs/source/content/chat_gui.rst +121 -0
- pygeai/_docs/source/content/cli.rst +203 -0
- pygeai/_docs/source/content/debugger.rst +651 -0
- pygeai/_docs/source/content/intro.rst +67 -0
- pygeai/_docs/source/content/migration.rst +929 -0
- pygeai/_docs/source/content/modules.rst +7 -0
- pygeai/_docs/source/content/quickstart.rst +143 -0
- pygeai/_docs/source/content/samples.rst +394 -0
- pygeai/_docs/source/index.rst +75 -0
- pygeai/_docs/source/modules.rst +7 -0
- pygeai/_docs/source/pygeai.admin.rst +29 -0
- pygeai/_docs/source/pygeai.analytics.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
- pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
- pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.rst +55 -0
- pygeai/_docs/source/pygeai.auth.rst +29 -0
- pygeai/_docs/source/pygeai.chat.rst +69 -0
- pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
- pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
- pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
- pygeai/_docs/source/pygeai.cli.rst +62 -0
- pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
- pygeai/_docs/source/pygeai.core.base.rst +53 -0
- pygeai/_docs/source/pygeai.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
- pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
- pygeai/_docs/source/pygeai.core.files.rst +61 -0
- pygeai/_docs/source/pygeai.core.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
- pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
- pygeai/_docs/source/pygeai.core.rst +63 -0
- pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.rst +37 -0
- pygeai/_docs/source/pygeai.core.utils.rst +37 -0
- pygeai/_docs/source/pygeai.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.rst +31 -0
- pygeai/_docs/source/pygeai.flows.rst +29 -0
- pygeai/_docs/source/pygeai.gam.rst +29 -0
- pygeai/_docs/source/pygeai.health.rst +29 -0
- pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
- pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
- pygeai/_docs/source/pygeai.lab.rst +65 -0
- pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
- pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
- pygeai/_docs/source/pygeai.man.man1.rst +10 -0
- pygeai/_docs/source/pygeai.man.rst +18 -0
- pygeai/_docs/source/pygeai.migration.rst +29 -0
- pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
- pygeai/_docs/source/pygeai.organization.rst +61 -0
- pygeai/_docs/source/pygeai.proxy.rst +53 -0
- pygeai/_docs/source/pygeai.rst +35 -0
- pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
- pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
- pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
- pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
- pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
- pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
- pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
- pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
- pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
- pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
- pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
- pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
- pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.rst +39 -0
- pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
- pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
- pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
- pygeai/_docs/source/pygeai.tests.health.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
- pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
- pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
- pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
- pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
- pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
- pygeai/_docs/source/pygeai.tests.rst +33 -0
- pygeai/admin/clients.py +14 -11
- pygeai/admin/endpoints.py +2 -2
- pygeai/analytics/clients.py +505 -0
- pygeai/analytics/endpoints.py +35 -0
- pygeai/analytics/managers.py +606 -0
- pygeai/analytics/mappers.py +207 -0
- pygeai/analytics/responses.py +240 -0
- pygeai/assistant/clients.py +48 -57
- pygeai/assistant/data/__init__.py +0 -0
- pygeai/assistant/data/clients.py +15 -0
- pygeai/assistant/data_analyst/__init__.py +0 -0
- pygeai/assistant/data_analyst/clients.py +75 -0
- pygeai/assistant/data_analyst/endpoints.py +2 -0
- pygeai/assistant/endpoints.py +0 -2
- pygeai/assistant/managers.py +738 -0
- pygeai/assistant/mappers.py +153 -0
- pygeai/assistant/rag/clients.py +132 -21
- pygeai/assistant/rag/mappers.py +228 -0
- pygeai/assistant/rag/models.py +396 -0
- pygeai/assistant/rag/responses.py +10 -0
- pygeai/auth/__init__.py +0 -0
- pygeai/auth/clients.py +129 -0
- pygeai/auth/endpoints.py +6 -0
- pygeai/chat/clients.py +406 -31
- pygeai/chat/endpoints.py +3 -0
- pygeai/chat/iris.py +17 -0
- pygeai/chat/managers.py +64 -0
- pygeai/chat/session.py +38 -0
- pygeai/chat/settings.py +6 -0
- pygeai/chat/ui.py +678 -0
- pygeai/cli/__init__.py +0 -1
- pygeai/cli/commands/admin.py +9 -12
- pygeai/cli/commands/analytics.py +533 -0
- pygeai/cli/commands/assistant.py +11 -11
- pygeai/cli/commands/auth.py +299 -0
- pygeai/cli/commands/base.py +201 -7
- pygeai/cli/commands/chat.py +875 -14
- pygeai/cli/commands/common.py +30 -26
- pygeai/cli/commands/configuration.py +84 -9
- pygeai/cli/commands/docs.py +105 -0
- pygeai/cli/commands/embeddings.py +187 -0
- pygeai/cli/commands/evaluation.py +2069 -0
- pygeai/cli/commands/feedback.py +93 -0
- pygeai/cli/commands/files.py +312 -0
- pygeai/cli/commands/flows/__init__.py +0 -0
- pygeai/cli/commands/gam.py +349 -0
- pygeai/cli/commands/lab/__init__.py +0 -0
- pygeai/cli/commands/lab/ai_lab.py +4110 -0
- pygeai/cli/commands/lab/common.py +135 -0
- pygeai/cli/commands/lab/options.py +8 -0
- pygeai/cli/commands/lab/spec.py +273 -0
- pygeai/cli/commands/lab/utils.py +13 -0
- pygeai/cli/commands/llm.py +164 -0
- pygeai/cli/commands/migrate.py +1198 -0
- pygeai/cli/commands/options.py +86 -0
- pygeai/cli/commands/organization.py +560 -98
- pygeai/cli/commands/rag.py +306 -10
- pygeai/cli/commands/rerank.py +108 -0
- pygeai/cli/commands/secrets.py +357 -0
- pygeai/cli/commands/usage_limits.py +583 -0
- pygeai/cli/commands/validators.py +209 -0
- pygeai/cli/commands/version.py +44 -0
- pygeai/cli/error_handler.py +151 -0
- pygeai/cli/geai.py +171 -30
- pygeai/cli/geai_proxy.py +318 -0
- pygeai/cli/install_man.py +107 -0
- pygeai/cli/parsers.py +78 -25
- pygeai/cli/texts/help.py +712 -55
- pygeai/core/__init__.py +9 -1
- pygeai/core/base/clients.py +61 -10
- pygeai/core/base/mappers.py +208 -30
- pygeai/core/base/models.py +8 -308
- pygeai/core/base/responses.py +18 -1
- pygeai/core/base/session.py +110 -17
- pygeai/core/common/config.py +98 -16
- pygeai/core/common/decorators.py +44 -0
- pygeai/core/common/exceptions.py +104 -4
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +93 -0
- pygeai/core/embeddings/endpoints.py +1 -0
- pygeai/core/embeddings/managers.py +62 -0
- pygeai/core/embeddings/mappers.py +52 -0
- pygeai/core/embeddings/models.py +14 -0
- pygeai/core/embeddings/responses.py +31 -0
- pygeai/core/feedback/__init__.py +0 -0
- pygeai/core/feedback/clients.py +50 -0
- pygeai/core/feedback/endpoints.py +1 -0
- pygeai/core/feedback/models.py +10 -0
- pygeai/core/files/__init__.py +0 -0
- pygeai/core/files/clients.py +156 -0
- pygeai/core/files/endpoints.py +5 -0
- pygeai/core/files/managers.py +224 -0
- pygeai/core/files/mappers.py +44 -0
- pygeai/core/files/models.py +24 -0
- pygeai/core/files/responses.py +19 -0
- pygeai/core/handlers.py +32 -0
- pygeai/core/llm/__init__.py +0 -0
- pygeai/core/llm/clients.py +53 -0
- pygeai/core/llm/endpoints.py +4 -0
- pygeai/core/models.py +799 -0
- pygeai/core/plugins/__init__.py +0 -0
- pygeai/core/plugins/clients.py +32 -0
- pygeai/core/plugins/endpoints.py +1 -0
- pygeai/core/plugins/models.py +86 -0
- pygeai/core/rerank/__init__.py +0 -0
- pygeai/core/rerank/clients.py +35 -0
- pygeai/core/rerank/endpoints.py +1 -0
- pygeai/core/rerank/managers.py +47 -0
- pygeai/core/rerank/mappers.py +23 -0
- pygeai/core/rerank/models.py +27 -0
- pygeai/core/responses.py +104 -0
- pygeai/core/secrets/__init__.py +0 -0
- pygeai/core/secrets/clients.py +212 -0
- pygeai/core/secrets/endpoints.py +7 -0
- pygeai/core/services/llm/__init__.py +0 -0
- pygeai/core/services/llm/model.py +186 -0
- pygeai/core/services/llm/providers.py +15 -0
- pygeai/core/services/response.py +18 -0
- pygeai/core/services/rest.py +311 -89
- pygeai/core/utils/__init__.py +0 -0
- pygeai/core/utils/console.py +83 -0
- pygeai/core/utils/parsers.py +32 -0
- pygeai/core/utils/validators.py +10 -0
- pygeai/dbg/__init__.py +3 -0
- pygeai/dbg/debugger.py +870 -0
- pygeai/evaluation/__init__.py +0 -0
- pygeai/evaluation/clients.py +19 -0
- pygeai/evaluation/dataset/__init__.py +0 -0
- pygeai/evaluation/dataset/clients.py +514 -0
- pygeai/evaluation/dataset/endpoints.py +26 -0
- pygeai/evaluation/plan/__init__.py +0 -0
- pygeai/evaluation/plan/clients.py +302 -0
- pygeai/evaluation/plan/endpoints.py +16 -0
- pygeai/evaluation/result/__init__.py +0 -0
- pygeai/evaluation/result/clients.py +70 -0
- pygeai/evaluation/result/endpoints.py +2 -0
- pygeai/flows/__init__.py +0 -0
- pygeai/flows/endpoints.py +362 -0
- pygeai/flows/models.py +1304 -0
- pygeai/gam/__init__.py +0 -0
- pygeai/gam/clients.py +178 -0
- pygeai/gam/endpoints.py +4 -0
- pygeai/health/__init__.py +0 -0
- pygeai/health/clients.py +24 -0
- pygeai/health/endpoints.py +1 -0
- pygeai/lab/__init__.py +0 -0
- pygeai/lab/agents/__init__.py +0 -0
- pygeai/lab/agents/clients.py +426 -0
- pygeai/lab/agents/endpoints.py +12 -0
- pygeai/lab/agents/mappers.py +319 -0
- pygeai/lab/clients.py +24 -0
- pygeai/lab/constants.py +3 -0
- pygeai/lab/managers.py +1558 -0
- pygeai/lab/models.py +1719 -0
- pygeai/lab/processes/__init__.py +0 -0
- pygeai/lab/processes/clients.py +1051 -0
- pygeai/lab/processes/endpoints.py +26 -0
- pygeai/lab/processes/mappers.py +395 -0
- pygeai/lab/runners.py +90 -0
- pygeai/lab/spec/__init__.py +0 -0
- pygeai/lab/spec/loader.py +24 -0
- pygeai/lab/spec/parsers.py +39 -0
- pygeai/lab/strategies/__init__.py +0 -0
- pygeai/lab/strategies/clients.py +212 -0
- pygeai/lab/strategies/endpoints.py +5 -0
- pygeai/lab/strategies/mappers.py +58 -0
- pygeai/lab/tools/__init__.py +0 -0
- pygeai/lab/tools/clients.py +465 -0
- pygeai/lab/tools/endpoints.py +13 -0
- pygeai/lab/tools/mappers.py +131 -0
- pygeai/man/__init__.py +1 -0
- pygeai/man/man1/__init__.py +1 -0
- pygeai/man/man1/geai-proxy.1 +246 -0
- pygeai/man/man1/geai.1 +2615 -0
- pygeai/migration/__init__.py +33 -0
- pygeai/migration/strategies.py +603 -0
- pygeai/migration/tools.py +180 -0
- pygeai/organization/clients.py +246 -18
- pygeai/organization/endpoints.py +17 -8
- pygeai/organization/limits/__init__.py +0 -0
- pygeai/organization/limits/clients.py +281 -0
- pygeai/organization/limits/endpoints.py +15 -0
- pygeai/organization/limits/managers.py +331 -0
- pygeai/organization/limits/mappers.py +21 -0
- pygeai/organization/managers.py +537 -0
- pygeai/organization/mappers.py +111 -46
- pygeai/organization/responses.py +61 -11
- pygeai/proxy/__init__.py +0 -0
- pygeai/proxy/clients.py +216 -0
- pygeai/proxy/config.py +128 -0
- pygeai/proxy/managers.py +232 -0
- pygeai/proxy/servers.py +304 -0
- pygeai/proxy/tool.py +69 -0
- pygeai/tests/admin/__init__.py +0 -0
- pygeai/tests/admin/test_clients.py +148 -0
- pygeai/tests/analytics/__init__.py +0 -0
- pygeai/tests/analytics/test_clients.py +86 -0
- pygeai/tests/analytics/test_managers.py +94 -0
- pygeai/tests/analytics/test_mappers.py +84 -0
- pygeai/tests/analytics/test_responses.py +73 -0
- pygeai/tests/assistants/rag/__init__.py +0 -0
- pygeai/tests/assistants/rag/test_clients.py +346 -0
- pygeai/tests/assistants/rag/test_mappers.py +189 -0
- pygeai/tests/assistants/rag/test_models.py +292 -0
- pygeai/tests/assistants/test_clients.py +176 -80
- pygeai/tests/assistants/test_managers.py +198 -0
- pygeai/tests/assistants/test_mappers.py +111 -0
- pygeai/tests/auth/__init__.py +0 -0
- pygeai/tests/auth/test_clients.py +289 -0
- pygeai/tests/auth/test_oauth.py +172 -0
- pygeai/tests/auth/test_session_logging.py +150 -0
- pygeai/tests/chat/__init__.py +0 -0
- pygeai/tests/chat/test_clients.py +393 -0
- pygeai/tests/chat/test_iris.py +38 -0
- pygeai/tests/chat/test_session.py +62 -0
- pygeai/tests/chat/test_ui.py +224 -0
- pygeai/tests/cli/__init__.py +0 -0
- pygeai/tests/cli/commands/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
- pygeai/tests/cli/commands/lab/test_common.py +208 -0
- pygeai/tests/cli/commands/lab/test_spec.py +246 -0
- pygeai/tests/cli/commands/test_assistant.py +202 -0
- pygeai/tests/cli/commands/test_chat.py +130 -0
- pygeai/tests/cli/commands/test_common.py +350 -0
- pygeai/tests/cli/commands/test_embeddings.py +132 -0
- pygeai/tests/cli/commands/test_evaluation.py +656 -0
- pygeai/tests/cli/commands/test_feedback.py +65 -0
- pygeai/tests/cli/commands/test_files.py +161 -0
- pygeai/tests/cli/commands/test_gam.py +201 -0
- pygeai/tests/cli/commands/test_llm.py +114 -0
- pygeai/tests/cli/commands/test_migrate.py +176 -0
- pygeai/tests/cli/commands/test_organization.py +276 -0
- pygeai/tests/cli/commands/test_rag.py +266 -0
- pygeai/tests/cli/commands/test_rerank.py +110 -0
- pygeai/tests/cli/commands/test_secrets.py +171 -0
- pygeai/tests/cli/commands/test_show_help.py +41 -0
- pygeai/tests/cli/commands/test_usage_limits.py +412 -0
- pygeai/tests/cli/commands/test_validators.py +160 -0
- pygeai/tests/cli/commands/test_version.py +81 -0
- pygeai/tests/cli/docker/__init__.py +0 -0
- pygeai/tests/cli/test_credentials_flag.py +316 -0
- pygeai/tests/cli/test_error_handler.py +225 -0
- pygeai/tests/cli/test_geai_driver.py +154 -0
- pygeai/tests/cli/test_parsers.py +154 -0
- pygeai/tests/core/base/__init__.py +0 -0
- pygeai/tests/core/base/data/__init__.py +0 -0
- pygeai/tests/core/base/data/mappers.py +117 -0
- pygeai/tests/core/base/data/models.py +312 -0
- pygeai/tests/core/base/test_mappers.py +569 -0
- pygeai/tests/core/base/test_models.py +261 -0
- pygeai/tests/core/base/test_responses.py +53 -0
- pygeai/tests/core/common/__init__.py +0 -0
- pygeai/tests/core/common/data/__init__.py +0 -0
- pygeai/tests/core/common/test_config.py +186 -0
- pygeai/tests/core/common/test_decorators.py +69 -0
- pygeai/tests/core/embeddings/__init__.py +0 -0
- pygeai/tests/core/embeddings/test_clients.py +225 -0
- pygeai/tests/core/embeddings/test_managers.py +171 -0
- pygeai/tests/core/embeddings/test_mappers.py +142 -0
- pygeai/tests/core/feedback/__init__.py +0 -0
- pygeai/tests/core/feedback/test_clients.py +64 -0
- pygeai/tests/core/files/__init__.py +0 -0
- pygeai/tests/core/files/test_clients.py +128 -0
- pygeai/tests/core/files/test_managers.py +219 -0
- pygeai/tests/core/files/test_mappers.py +137 -0
- pygeai/tests/core/files/test_models.py +103 -0
- pygeai/tests/core/files/test_responses.py +122 -0
- pygeai/tests/core/llm/__init__.py +0 -0
- pygeai/tests/core/llm/test_clients.py +142 -0
- pygeai/tests/core/plugins/__init__.py +0 -0
- pygeai/tests/core/plugins/test_clients.py +66 -0
- pygeai/tests/core/rerank/__init__.py +0 -0
- pygeai/tests/core/rerank/test_clients.py +76 -0
- pygeai/tests/core/rerank/test_managers.py +99 -0
- pygeai/tests/core/rerank/test_mappers.py +54 -0
- pygeai/tests/core/secrets/__init__.py +0 -0
- pygeai/tests/core/secrets/test_clients.py +264 -0
- pygeai/tests/core/services/__init__.py +0 -0
- pygeai/tests/core/services/test_rest.py +273 -0
- pygeai/tests/core/test_handlers.py +66 -0
- pygeai/tests/core/utils/__init__.py +0 -0
- pygeai/tests/core/utils/test_console.py +80 -0
- pygeai/tests/dbg/__init__.py +0 -0
- pygeai/tests/dbg/test_debugger.py +591 -0
- pygeai/tests/evaluation/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/test_clients.py +265 -0
- pygeai/tests/evaluation/plan/__init__.py +0 -0
- pygeai/tests/evaluation/plan/test_clients.py +195 -0
- pygeai/tests/evaluation/result/__init__.py +0 -0
- pygeai/tests/evaluation/result/test_clients.py +66 -0
- pygeai/tests/gam/__init__.py +0 -0
- pygeai/tests/gam/test_clients.py +195 -0
- pygeai/tests/health/__init__.py +0 -0
- pygeai/tests/health/test_clients.py +41 -0
- pygeai/tests/integration/__init__.py +0 -0
- pygeai/tests/integration/assistants/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
- pygeai/tests/integration/chat/__init__.py +0 -0
- pygeai/tests/integration/chat/test_generate_image.py +158 -0
- pygeai/tests/integration/lab/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
- pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
- pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
- pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
- pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
- pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
- pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
- pygeai/tests/integration/lab/processes/__init__.py +0 -0
- pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
- pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
- pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
- pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
- pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
- pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
- pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
- pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
- pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
- pygeai/tests/integration/lab/tools/__init__.py +0 -0
- pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
- pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
- pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
- pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
- pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
- pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
- pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
- pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
- pygeai/tests/lab/__init__.py +0 -0
- pygeai/tests/lab/agents/__init__.py +0 -0
- pygeai/tests/lab/agents/test_clients.py +481 -0
- pygeai/tests/lab/agents/test_mappers.py +440 -0
- pygeai/tests/lab/processes/__init__.py +0 -0
- pygeai/tests/lab/processes/test_clients.py +1416 -0
- pygeai/tests/lab/processes/test_mappers.py +1092 -0
- pygeai/tests/lab/spec/__init__.py +0 -0
- pygeai/tests/lab/spec/test_loader.py +59 -0
- pygeai/tests/lab/spec/test_parsers.py +182 -0
- pygeai/tests/lab/strategies/__init__.py +0 -0
- pygeai/tests/lab/strategies/test_clients.py +241 -0
- pygeai/tests/lab/strategies/test_mappers.py +132 -0
- pygeai/tests/lab/test_managers.py +553 -0
- pygeai/tests/lab/test_mappers.py +245 -0
- pygeai/tests/lab/test_models.py +1154 -0
- pygeai/tests/lab/tools/__init__.py +0 -0
- pygeai/tests/lab/tools/test_clients.py +521 -0
- pygeai/tests/lab/tools/test_mappers.py +198 -0
- pygeai/tests/migration/__init__.py +0 -0
- pygeai/tests/migration/test_strategies.py +405 -0
- pygeai/tests/migration/test_tools.py +159 -0
- pygeai/tests/organization/limits/__init__.py +0 -0
- pygeai/tests/organization/limits/test_clients.py +567 -0
- pygeai/tests/organization/limits/test_managers.py +402 -0
- pygeai/tests/organization/test_clients.py +615 -64
- pygeai/tests/organization/test_managers.py +424 -0
- pygeai/tests/organization/test_mappers.py +153 -0
- pygeai/tests/organization/test_responses.py +137 -0
- pygeai/tests/proxy/__init__.py +1 -0
- pygeai/tests/proxy/test_clients.py +397 -0
- pygeai/tests/proxy/test_config.py +171 -0
- pygeai/tests/proxy/test_integration.py +305 -0
- pygeai/tests/proxy/test_managers.py +312 -0
- pygeai/tests/proxy/test_servers.py +387 -0
- pygeai/tests/proxy/test_tool.py +176 -0
- pygeai/tests/snippets/__init__.py +0 -0
- pygeai/tests/snippets/analytics/__init__.py +0 -0
- pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
- pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
- pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
- pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
- pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
- pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
- pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
- pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
- pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
- pygeai/tests/snippets/assistants/__init__.py +0 -0
- pygeai/tests/snippets/assistants/create_chat_assistant.py +54 -0
- pygeai/tests/snippets/assistants/create_text_assistant.py +51 -0
- pygeai/tests/snippets/assistants/data_analyst/__init__.py +0 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_and_check.py +100 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_dataset.py +9 -0
- pygeai/tests/snippets/assistants/data_analyst/get_status.py +9 -0
- pygeai/tests/snippets/assistants/file_summarizer_assistant.py +149 -0
- pygeai/tests/snippets/assistants/get_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/get_assistant_list.py +7 -0
- pygeai/tests/snippets/assistants/rag/__init__.py +0 -0
- pygeai/tests/snippets/assistants/rag/create_rag_assistant.py +65 -0
- pygeai/tests/snippets/assistants/rag/delete_al_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/delete_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +8 -0
- pygeai/tests/snippets/assistants/rag/get_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/get_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/rag/update_rag_assistant.py +48 -0
- pygeai/tests/snippets/assistants/rag/upload_document.py +19 -0
- pygeai/tests/snippets/assistants/send_feedback.py +14 -0
- pygeai/tests/snippets/assistants/update_chat_assistant.py +63 -0
- pygeai/tests/snippets/auth/__init__.py +0 -0
- pygeai/tests/snippets/chat/__init__.py +0 -0
- pygeai/tests/snippets/chat/cancel_request.py +7 -0
- pygeai/tests/snippets/chat/chat_completion.py +28 -0
- pygeai/tests/snippets/chat/chat_completion_1.py +40 -0
- pygeai/tests/snippets/chat/chat_completion_2.py +60 -0
- pygeai/tests/snippets/chat/chat_completion_3.py +27 -0
- pygeai/tests/snippets/chat/chat_completion_4.py +67 -0
- pygeai/tests/snippets/chat/chat_completion_streaming.py +63 -0
- pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
- pygeai/tests/snippets/chat/get_request_status.py +7 -0
- pygeai/tests/snippets/chat/get_response.py +15 -0
- pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
- pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
- pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
- pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
- pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
- pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
- pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
- pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
- pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
- pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
- pygeai/tests/snippets/chat/send_chat_request.py +33 -0
- pygeai/tests/snippets/dbg/__init__.py +0 -0
- pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
- pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
- pygeai/tests/snippets/dbg/file_debugging.py +72 -0
- pygeai/tests/snippets/dbg/module_debugging.py +61 -0
- pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
- pygeai/tests/snippets/dbg/stepping_example.py +40 -0
- pygeai/tests/snippets/embeddings/__init__.py +0 -0
- pygeai/tests/snippets/embeddings/cache_example.py +31 -0
- pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
- pygeai/tests/snippets/embeddings/generate_embeddings.py +26 -0
- pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
- pygeai/tests/snippets/embeddings/openai_example.py +30 -0
- pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
- pygeai/tests/snippets/evaluation/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
- pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
- pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
- pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
- pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
- pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
- pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
- pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
- pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
- pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
- pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
- pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
- pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
- pygeai/tests/snippets/files/__init__.py +0 -0
- pygeai/tests/snippets/files/delete_file.py +9 -0
- pygeai/tests/snippets/files/get_file_content.py +10 -0
- pygeai/tests/snippets/files/get_file_data.py +9 -0
- pygeai/tests/snippets/files/get_file_list.py +6 -0
- pygeai/tests/snippets/files/upload_file.py +13 -0
- pygeai/tests/snippets/gam/__init__.py +0 -0
- pygeai/tests/snippets/gam/gam_access_token.py +87 -0
- pygeai/tests/snippets/lab/__init__.py +0 -0
- pygeai/tests/snippets/lab/agentic_flow_example_1.py +326 -0
- pygeai/tests/snippets/lab/agentic_flow_example_2.py +206 -0
- pygeai/tests/snippets/lab/agentic_flow_example_3.py +486 -0
- pygeai/tests/snippets/lab/agentic_flow_example_4.py +446 -0
- pygeai/tests/snippets/lab/agents/__init__.py +0 -0
- pygeai/tests/snippets/lab/agents/create_agent.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_2.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
- pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
- pygeai/tests/snippets/lab/agents/delete_agent.py +12 -0
- pygeai/tests/snippets/lab/agents/get_agent.py +24 -0
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/get_sharing_link.py +13 -0
- pygeai/tests/snippets/lab/agents/list_agents.py +18 -0
- pygeai/tests/snippets/lab/agents/publish_agent_revision.py +12 -0
- pygeai/tests/snippets/lab/agents/update_agent.py +50 -0
- pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
- pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
- pygeai/tests/snippets/lab/crud_ui.py +462 -0
- pygeai/tests/snippets/lab/processes/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/create_process.py +24 -0
- pygeai/tests/snippets/lab/processes/create_task.py +8 -0
- pygeai/tests/snippets/lab/processes/jobs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +21 -0
- pygeai/tests/snippets/lab/processes/kbs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/kbs/create_kb.py +18 -0
- pygeai/tests/snippets/lab/processes/kbs/get_kb.py +26 -0
- pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +30 -0
- pygeai/tests/snippets/lab/processes/kbs/try_all.py +73 -0
- pygeai/tests/snippets/lab/processes/list_processes.py +10 -0
- pygeai/tests/snippets/lab/runner_1.py +212 -0
- pygeai/tests/snippets/lab/samples/__init__.py +0 -0
- pygeai/tests/snippets/lab/samples/summarize_files.py +162 -0
- pygeai/tests/snippets/lab/strategies/__init__.py +0 -0
- pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +22 -0
- pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +10 -0
- pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +16 -0
- pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +26 -0
- pygeai/tests/snippets/lab/tools/__init__.py +0 -0
- pygeai/tests/snippets/lab/tools/create_tool.py +48 -0
- pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
- pygeai/tests/snippets/lab/tools/delete_tool.py +21 -0
- pygeai/tests/snippets/lab/tools/get_parameter.py +21 -0
- pygeai/tests/snippets/lab/tools/get_tool.py +22 -0
- pygeai/tests/snippets/lab/tools/list_tools.py +23 -0
- pygeai/tests/snippets/lab/tools/publish_tool_revision.py +13 -0
- pygeai/tests/snippets/lab/tools/set_parameters.py +33 -0
- pygeai/tests/snippets/lab/tools/update_tool.py +52 -0
- pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
- pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +238 -0
- pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
- pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
- pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
- pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example.py +157 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +157 -0
- pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
- pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
- pygeai/tests/snippets/migrate/__init__.py +45 -0
- pygeai/tests/snippets/migrate/agent_migration.py +110 -0
- pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
- pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
- pygeai/tests/snippets/migrate/process_migration.py +64 -0
- pygeai/tests/snippets/migrate/project_migration.py +42 -0
- pygeai/tests/snippets/migrate/tool_migration.py +64 -0
- pygeai/tests/snippets/organization/__init__.py +0 -0
- pygeai/tests/snippets/organization/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- pygeai/tests/snippets/organization/create_project.py +23 -0
- pygeai/tests/snippets/organization/delete_project.py +7 -0
- pygeai/tests/snippets/organization/export_request_data.py +7 -0
- pygeai/tests/snippets/organization/get_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_organization_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_data.py +7 -0
- pygeai/tests/snippets/organization/get_project_list.py +8 -0
- pygeai/tests/snippets/organization/get_project_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_project_roles.py +6 -0
- pygeai/tests/snippets/organization/get_project_tokens.py +7 -0
- pygeai/tests/snippets/organization/update_project.py +14 -0
- pygeai/tests/snippets/rerank/__init__.py +0 -0
- pygeai/tests/snippets/rerank/rerank_chunks.py +19 -0
- pygeai/tests/snippets/secrets/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/delete_usage_limit.py +16 -0
- pygeai/tests/snippets/usage_limit/get_all_usage_limit_from_organization.py +12 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_organization.py +11 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_project.py +13 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_organization.py +22 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_project.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_organization.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_project.py +24 -0
- pygeai/vendor/a2a/__init__.py +1 -0
- pygeai/vendor/a2a/auth/__init__.py +0 -0
- pygeai/vendor/a2a/auth/user.py +31 -0
- pygeai/vendor/a2a/client/__init__.py +19 -0
- pygeai/vendor/a2a/client/client.py +425 -0
- pygeai/vendor/a2a/client/errors.py +33 -0
- pygeai/vendor/a2a/client/helpers.py +22 -0
- pygeai/vendor/a2a/py.typed +0 -0
- pygeai/vendor/a2a/server/__init__.py +1 -0
- pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
- pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
- pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
- pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
- pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
- pygeai/vendor/a2a/server/apps/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
- pygeai/vendor/a2a/server/context.py +23 -0
- pygeai/vendor/a2a/server/events/__init__.py +21 -0
- pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
- pygeai/vendor/a2a/server/events/event_queue.py +156 -0
- pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
- pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
- pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
- pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
- pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
- pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
- pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
- pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
- pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
- pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
- pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
- pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
- pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
- pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
- pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
- pygeai/vendor/a2a/types.py +1624 -0
- pygeai/vendor/a2a/utils/__init__.py +40 -0
- pygeai/vendor/a2a/utils/artifact.py +72 -0
- pygeai/vendor/a2a/utils/errors.py +69 -0
- pygeai/vendor/a2a/utils/helpers.py +176 -0
- pygeai/vendor/a2a/utils/message.py +83 -0
- pygeai/vendor/a2a/utils/task.py +57 -0
- pygeai/vendor/a2a/utils/telemetry.py +299 -0
- pygeai-0.6.0b15.dist-info/METADATA +205 -0
- pygeai-0.6.0b15.dist-info/RECORD +799 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
- pygeai-0.6.0b15.dist-info/entry_points.txt +5 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info/licenses}/LICENSE +13 -1
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/top_level.txt +0 -1
- docs/source/conf.py +0 -45
- pygeai/core/clients.py +0 -240
- pygeai/tests/core/test_clients.py +0 -49
- pygeai-0.1.6.dist-info/METADATA +0 -92
- pygeai-0.1.6.dist-info/RECORD +0 -65
- pygeai-0.1.6.dist-info/SOURCES.sync-conflict-20241223-145950-3QD4F42.txt +0 -41
- pygeai-0.1.6.dist-info/entry_points.txt +0 -2
- /pygeai/{agent → analytics}/__init__.py +0 -0
|
@@ -0,0 +1,929 @@
|
|
|
1
|
+
Migration Guide
|
|
2
|
+
===============
|
|
3
|
+
|
|
4
|
+
Overview
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
The GEAI SDK provides powerful migration capabilities that allow you to clone and migrate projects and their resources between different GEAI instances or within the same instance. This feature is essential for:
|
|
8
|
+
|
|
9
|
+
- **Environment promotion**: Moving projects from development to staging to production
|
|
10
|
+
- **Backup and disaster recovery**: Creating copies of projects for safety
|
|
11
|
+
- **Multi-tenant deployments**: Replicating project setups across different organizations
|
|
12
|
+
- **Testing and experimentation**: Creating isolated copies for testing changes
|
|
13
|
+
|
|
14
|
+
The migration feature supports migrating the following resource types:
|
|
15
|
+
|
|
16
|
+
- **Agents**: AI agents with their configurations and prompts
|
|
17
|
+
- **Tools**: Custom tools and integrations
|
|
18
|
+
- **Agentic Processes**: Multi-step agentic workflows
|
|
19
|
+
- **Tasks**: Individual task definitions
|
|
20
|
+
- **Usage Limits**: Resource usage constraints and quotas
|
|
21
|
+
- **RAG Assistants**: Retrieval-Augmented Generation assistants
|
|
22
|
+
- **Files**: Project files and attachments
|
|
23
|
+
- **Secrets**: Secure credentials and sensitive configuration values
|
|
24
|
+
|
|
25
|
+
Key Features
|
|
26
|
+
------------
|
|
27
|
+
|
|
28
|
+
**Selective Migration**
|
|
29
|
+
Migrate specific resources by ID or migrate all resources of a given type using the ``all`` keyword.
|
|
30
|
+
|
|
31
|
+
**Bulk Migration**
|
|
32
|
+
Use the ``--all`` flag to migrate every available resource type in a single command.
|
|
33
|
+
|
|
34
|
+
**Cross-Instance Migration**
|
|
35
|
+
Migrate projects between different GEAI instances with different API credentials.
|
|
36
|
+
|
|
37
|
+
**Same-Instance Cloning**
|
|
38
|
+
Clone projects within the same instance for testing or backup purposes.
|
|
39
|
+
|
|
40
|
+
**Automatic Resource Discovery**
|
|
41
|
+
When using ``all``, the migration tool automatically discovers and migrates all existing resources.
|
|
42
|
+
|
|
43
|
+
**Flexible Destination**
|
|
44
|
+
Migrate to a new project or to an existing project in the same or different instance.
|
|
45
|
+
|
|
46
|
+
Getting Started
|
|
47
|
+
---------------
|
|
48
|
+
|
|
49
|
+
Prerequisites
|
|
50
|
+
~~~~~~~~~~~~~
|
|
51
|
+
|
|
52
|
+
Before migrating, you need:
|
|
53
|
+
|
|
54
|
+
1. **Source credentials**: API key and instance URL for the source project
|
|
55
|
+
2. **Destination credentials**: API key and instance URL (can be the same as source)
|
|
56
|
+
3. **Project identifiers**: Source project ID
|
|
57
|
+
4. **Admin email**: Required when creating a new destination project
|
|
58
|
+
|
|
59
|
+
API Token Scopes
|
|
60
|
+
~~~~~~~~~~~~~~~~~
|
|
61
|
+
|
|
62
|
+
Different migration operations require different API token scopes:
|
|
63
|
+
|
|
64
|
+
**Organization Scope Tokens**
|
|
65
|
+
Required for operations that create or manage projects and organization-level resources:
|
|
66
|
+
|
|
67
|
+
- **Project Creation**: Creating new projects requires organization scope API keys (``--from-org-key`` and ``--to-org-key``)
|
|
68
|
+
- **Usage Limit Migration**: Managing usage limits requires organization scope API keys
|
|
69
|
+
|
|
70
|
+
For more information, see the `Organization API Documentation <https://docs.globant.ai/en/wiki?22,Organization+API>`_ and `Usage Limits API Documentation <https://docs.globant.ai/en/wiki?802,Usage+Limits+API>`_.
|
|
71
|
+
|
|
72
|
+
**Project Scope Tokens**
|
|
73
|
+
Required for operations within a project:
|
|
74
|
+
|
|
75
|
+
- **Agent Migration**: Migrating agents within projects
|
|
76
|
+
- **Tool Migration**: Migrating tools within projects
|
|
77
|
+
- **Agentic Process Migration**: Migrating agentic processes
|
|
78
|
+
- **Task Migration**: Migrating tasks
|
|
79
|
+
- **RAG Assistant Migration**: Migrating RAG assistants
|
|
80
|
+
- **File Migration**: Migrating files within projects
|
|
81
|
+
- **Secret Migration**: Migrating secrets within projects
|
|
82
|
+
|
|
83
|
+
Migration Scenarios and Required Keys
|
|
84
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
85
|
+
|
|
86
|
+
The required API keys depend on whether you're creating a new project or migrating to an existing one:
|
|
87
|
+
|
|
88
|
+
**Scenario 1: Creating a New Project**
|
|
89
|
+
When using ``--to-project-name`` and ``--admin-email``:
|
|
90
|
+
|
|
91
|
+
- ``--from-api-key``: **Project scope** token for reading source resources
|
|
92
|
+
- ``--from-org-key``: **Organization scope** token (REQUIRED for project creation)
|
|
93
|
+
- ``--to-org-key``: **Organization scope** token for destination instance (REQUIRED, or use ``--from-org-key`` for same instance)
|
|
94
|
+
- ``--to-api-key``: OPTIONAL - If not provided, a project scope API key will be automatically created for the new project
|
|
95
|
+
|
|
96
|
+
The migration tool will:
|
|
97
|
+
|
|
98
|
+
1. Create the new project using organization scope keys
|
|
99
|
+
2. Automatically generate a project scope API key for the new project
|
|
100
|
+
3. Use the generated key to migrate all resources
|
|
101
|
+
|
|
102
|
+
**Scenario 2: Migrating to an Existing Project**
|
|
103
|
+
When using ``--to-project-id``:
|
|
104
|
+
|
|
105
|
+
- ``--from-api-key``: **Project scope** token for reading source resources (REQUIRED)
|
|
106
|
+
- ``--to-api-key``: **Project scope** token for writing to destination project (REQUIRED)
|
|
107
|
+
- Organization scope keys are NOT needed for resource migration
|
|
108
|
+
|
|
109
|
+
.. warning::
|
|
110
|
+
When migrating to an existing project (using ``--to-project-id``), you MUST provide ``--to-api-key``. This is a project scope token that has write access to the destination project.
|
|
111
|
+
|
|
112
|
+
Interactive Mode
|
|
113
|
+
----------------
|
|
114
|
+
|
|
115
|
+
The migration tool provides an **interactive mode** that guides you through the migration process with step-by-step prompts. This mode is ideal when:
|
|
116
|
+
|
|
117
|
+
- You're new to the migration tool and want guidance
|
|
118
|
+
- You don't know the exact IDs of resources to migrate
|
|
119
|
+
- You want to browse and select resources interactively
|
|
120
|
+
- You prefer a wizard-style interface over command-line arguments
|
|
121
|
+
|
|
122
|
+
Invoking Interactive Mode
|
|
123
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
124
|
+
|
|
125
|
+
To start the interactive migration wizard, use the ``--interactive`` or ``-i`` flag:
|
|
126
|
+
|
|
127
|
+
.. code-block:: shell
|
|
128
|
+
|
|
129
|
+
geai migrate clone-project --interactive
|
|
130
|
+
|
|
131
|
+
or shorter:
|
|
132
|
+
|
|
133
|
+
.. code-block:: shell
|
|
134
|
+
|
|
135
|
+
geai migrate clone-project -i
|
|
136
|
+
|
|
137
|
+
Interactive Mode Walkthrough
|
|
138
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
139
|
+
|
|
140
|
+
When you launch interactive mode, the wizard will guide you through the following steps:
|
|
141
|
+
|
|
142
|
+
**Step 1: Migration Type Selection**
|
|
143
|
+
|
|
144
|
+
Choose whether you're migrating within the same instance or to a different instance:
|
|
145
|
+
|
|
146
|
+
.. code-block:: text
|
|
147
|
+
|
|
148
|
+
================================================================================
|
|
149
|
+
PROJECT MIGRATION ASSISTANT
|
|
150
|
+
================================================================================
|
|
151
|
+
|
|
152
|
+
Migration type (1=same instance, 2=cross instance):
|
|
153
|
+
|
|
154
|
+
- Option ``1``: Migrate within the same GEAI instance (destination instance will be same as source)
|
|
155
|
+
- Option ``2``: Migrate to a different GEAI instance (you'll provide separate destination credentials)
|
|
156
|
+
|
|
157
|
+
**Step 2: Source Configuration**
|
|
158
|
+
|
|
159
|
+
Provide your source project credentials:
|
|
160
|
+
|
|
161
|
+
.. code-block:: text
|
|
162
|
+
|
|
163
|
+
--- Source Configuration ---
|
|
164
|
+
Source API key: [enter your source API key]
|
|
165
|
+
Source instance URL: [enter source instance URL, e.g., https://api.dev.example.ai]
|
|
166
|
+
Source project ID: [enter source project ID]
|
|
167
|
+
|
|
168
|
+
The wizard will automatically retrieve your source organization ID from the API token.
|
|
169
|
+
|
|
170
|
+
**Step 3: Project Creation or Selection**
|
|
171
|
+
|
|
172
|
+
Decide whether to create a new destination project or use an existing one:
|
|
173
|
+
|
|
174
|
+
.. code-block:: text
|
|
175
|
+
|
|
176
|
+
Create new destination project? (y/n):
|
|
177
|
+
|
|
178
|
+
- If you choose ``y`` (yes): You'll provide organization API keys, project name, and admin email to create a new project
|
|
179
|
+
- If you choose ``n`` (no): You'll provide an existing destination project ID
|
|
180
|
+
|
|
181
|
+
**For new project creation:**
|
|
182
|
+
|
|
183
|
+
.. code-block:: text
|
|
184
|
+
|
|
185
|
+
Source organization API key: [enter organization scope API key]
|
|
186
|
+
Destination organization API key: [same as source for same instance, or enter different key]
|
|
187
|
+
New project name: [enter name for new project]
|
|
188
|
+
Admin email: [enter admin email for project]
|
|
189
|
+
|
|
190
|
+
**For existing project:**
|
|
191
|
+
|
|
192
|
+
.. code-block:: text
|
|
193
|
+
|
|
194
|
+
Destination project ID: [enter existing project ID]
|
|
195
|
+
|
|
196
|
+
**Step 4: Destination Configuration**
|
|
197
|
+
|
|
198
|
+
If you selected cross-instance migration (option 2) or using an existing project, provide destination details:
|
|
199
|
+
|
|
200
|
+
.. code-block:: text
|
|
201
|
+
|
|
202
|
+
--- Destination Configuration ---
|
|
203
|
+
Destination instance URL: [enter destination URL if cross-instance]
|
|
204
|
+
Destination API key: [enter project API key for destination]
|
|
205
|
+
|
|
206
|
+
**Step 5: Resource Type Selection**
|
|
207
|
+
|
|
208
|
+
Select which types of resources you want to migrate:
|
|
209
|
+
|
|
210
|
+
.. code-block:: text
|
|
211
|
+
|
|
212
|
+
--- Resource Type Selection ---
|
|
213
|
+
Which resource types do you want to migrate?
|
|
214
|
+
1. Agents
|
|
215
|
+
2. Tools
|
|
216
|
+
3. Agentic Processes
|
|
217
|
+
4. Tasks
|
|
218
|
+
5. RAG Assistants
|
|
219
|
+
6. Files
|
|
220
|
+
7. Usage Limits
|
|
221
|
+
8. Secrets
|
|
222
|
+
|
|
223
|
+
Select resource types (comma-separated numbers, or empty for all):
|
|
224
|
+
|
|
225
|
+
- Enter specific numbers (e.g., ``1,2,5`` for Agents, Tools, and RAG Assistants)
|
|
226
|
+
- Press Enter without typing anything to migrate **all** resource types
|
|
227
|
+
|
|
228
|
+
**Step 6: Resource Selection**
|
|
229
|
+
|
|
230
|
+
For each selected resource type, the wizard fetches available resources and displays an interactive menu:
|
|
231
|
+
|
|
232
|
+
.. code-block:: text
|
|
233
|
+
|
|
234
|
+
--- Retrieving Available Resources ---
|
|
235
|
+
|
|
236
|
+
Available agents:
|
|
237
|
+
0. Cancel (don't migrate this resource type)
|
|
238
|
+
1. Customer Support Agent (ID: agent-abc-123)
|
|
239
|
+
2. Data Analysis Agent (ID: agent-def-456)
|
|
240
|
+
3. Code Review Agent (ID: agent-ghi-789)
|
|
241
|
+
|
|
242
|
+
Select agents (comma-separated numbers, or empty for all):
|
|
243
|
+
|
|
244
|
+
Selection options:
|
|
245
|
+
|
|
246
|
+
- Press **Enter** without typing: Migrate **all** resources of this type
|
|
247
|
+
- Enter **0**: Skip this resource type entirely
|
|
248
|
+
- Enter **specific numbers**: Migrate only selected resources (e.g., ``1,3`` to migrate items 1 and 3)
|
|
249
|
+
|
|
250
|
+
This process repeats for each resource type you selected in Step 5.
|
|
251
|
+
|
|
252
|
+
**Step 7: Migration Summary and Confirmation**
|
|
253
|
+
|
|
254
|
+
Review your migration configuration before execution:
|
|
255
|
+
|
|
256
|
+
.. code-block:: text
|
|
257
|
+
|
|
258
|
+
--- Migration Summary ---
|
|
259
|
+
Source: https://api.dev.example.ai / Project: source-project-123
|
|
260
|
+
Destination: https://api.prod.example.ai / Project: Production Release
|
|
261
|
+
Resources: agents, tools, rag_assistants
|
|
262
|
+
|
|
263
|
+
Stop migration on first error? (Y/n):
|
|
264
|
+
|
|
265
|
+
- Enter ``Y`` or press Enter to stop migration if any resource fails
|
|
266
|
+
- Enter ``n`` to continue migrating remaining resources even if some fail
|
|
267
|
+
|
|
268
|
+
.. code-block:: text
|
|
269
|
+
|
|
270
|
+
Proceed with migration? (y/n):
|
|
271
|
+
|
|
272
|
+
- Enter ``y`` to start the migration
|
|
273
|
+
- Enter ``n`` to cancel and exit without making changes
|
|
274
|
+
|
|
275
|
+
**Step 8: Migration Execution**
|
|
276
|
+
|
|
277
|
+
The migration proceeds with real-time progress updates:
|
|
278
|
+
|
|
279
|
+
.. code-block:: text
|
|
280
|
+
|
|
281
|
+
============================================================
|
|
282
|
+
Migration Progress: 0/15 completed
|
|
283
|
+
============================================================
|
|
284
|
+
|
|
285
|
+
[1/15] Migrating agent 'Customer Support Agent'...
|
|
286
|
+
✓ Successfully migrated agent 'Customer Support Agent'
|
|
287
|
+
|
|
288
|
+
[2/15] Migrating agent 'Data Analysis Agent'...
|
|
289
|
+
✓ Successfully migrated agent 'Data Analysis Agent'
|
|
290
|
+
|
|
291
|
+
[3/15] Migrating tool 'Database Query Tool'...
|
|
292
|
+
✓ Successfully migrated tool 'Database Query Tool'
|
|
293
|
+
|
|
294
|
+
...
|
|
295
|
+
|
|
296
|
+
============================================================
|
|
297
|
+
Migration Complete: 15/15 successful
|
|
298
|
+
============================================================
|
|
299
|
+
|
|
300
|
+
Interactive Mode Benefits
|
|
301
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
302
|
+
|
|
303
|
+
**1. No Need to Remember IDs**
|
|
304
|
+
|
|
305
|
+
You don't need to know resource IDs beforehand. The wizard fetches and displays all available resources with their names and IDs.
|
|
306
|
+
|
|
307
|
+
**2. Visual Resource Selection**
|
|
308
|
+
|
|
309
|
+
Browse resources in numbered menus and select exactly what you want to migrate.
|
|
310
|
+
|
|
311
|
+
**3. Guided Configuration**
|
|
312
|
+
|
|
313
|
+
Step-by-step prompts ensure you provide all required information in the correct order.
|
|
314
|
+
|
|
315
|
+
**4. Input Validation**
|
|
316
|
+
|
|
317
|
+
The wizard validates your input at each step and prompts you to retry if something is invalid.
|
|
318
|
+
|
|
319
|
+
**5. Pre-Migration Summary**
|
|
320
|
+
|
|
321
|
+
Review all settings before execution with a clear summary of what will be migrated.
|
|
322
|
+
|
|
323
|
+
**6. Flexible Selection**
|
|
324
|
+
|
|
325
|
+
Easily mix migration strategies: migrate all agents, specific tools, all RAG assistants, etc.
|
|
326
|
+
|
|
327
|
+
**7. Error Recovery**
|
|
328
|
+
|
|
329
|
+
If you make a mistake during prompts, the wizard will ask again instead of failing the entire operation.
|
|
330
|
+
|
|
331
|
+
Interactive vs. CLI Mode Comparison
|
|
332
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
333
|
+
|
|
334
|
+
+----------------------------+---------------------------+---------------------------+
|
|
335
|
+
| Feature | Interactive Mode | CLI Mode |
|
|
336
|
+
+============================+===========================+===========================+
|
|
337
|
+
| **Ease of Use** | Beginner-friendly wizard | Requires knowledge of |
|
|
338
|
+
| | | all CLI arguments |
|
|
339
|
+
+----------------------------+---------------------------+---------------------------+
|
|
340
|
+
| **Resource Discovery** | Automatic with menus | Manual (use API or docs) |
|
|
341
|
+
+----------------------------+---------------------------+---------------------------+
|
|
342
|
+
| **Input Validation** | Real-time with retry | Fails if invalid args |
|
|
343
|
+
+----------------------------+---------------------------+---------------------------+
|
|
344
|
+
| **Automation** | Not scriptable | Fully scriptable |
|
|
345
|
+
+----------------------------+---------------------------+---------------------------+
|
|
346
|
+
| **Best For** | One-time migrations, | CI/CD pipelines, |
|
|
347
|
+
| | exploration, learning | automation, scripting |
|
|
348
|
+
+----------------------------+---------------------------+---------------------------+
|
|
349
|
+
|
|
350
|
+
When to Use Interactive Mode
|
|
351
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
352
|
+
|
|
353
|
+
✅ **Use Interactive Mode when:**
|
|
354
|
+
|
|
355
|
+
- You're performing a one-time migration
|
|
356
|
+
- You're unsure of exact resource IDs or names
|
|
357
|
+
- You want to browse available resources before selecting
|
|
358
|
+
- You're learning how migration works
|
|
359
|
+
- You prefer guided prompts over memorizing command syntax
|
|
360
|
+
|
|
361
|
+
❌ **Use CLI Mode instead when:**
|
|
362
|
+
|
|
363
|
+
- You're automating migrations in scripts or CI/CD pipelines
|
|
364
|
+
- You already know exact resource IDs to migrate
|
|
365
|
+
- You need to run the same migration multiple times
|
|
366
|
+
- You want to version control migration commands
|
|
367
|
+
|
|
368
|
+
Example Interactive Session
|
|
369
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
370
|
+
|
|
371
|
+
Here's a complete example of an interactive migration session:
|
|
372
|
+
|
|
373
|
+
.. code-block:: text
|
|
374
|
+
|
|
375
|
+
$ geai migrate clone-project -i
|
|
376
|
+
|
|
377
|
+
================================================================================
|
|
378
|
+
PROJECT MIGRATION ASSISTANT
|
|
379
|
+
================================================================================
|
|
380
|
+
|
|
381
|
+
Migration type (1=same instance, 2=cross instance): 2
|
|
382
|
+
|
|
383
|
+
--- Source Configuration ---
|
|
384
|
+
Source API key: sk_dev_abc123...
|
|
385
|
+
Source instance URL: https://api.dev.example.ai
|
|
386
|
+
Source project ID: proj-dev-001
|
|
387
|
+
|
|
388
|
+
Create new destination project? (y/n): y
|
|
389
|
+
Source organization API key: sk_org_dev_xyz789...
|
|
390
|
+
Destination organization API key: sk_org_prod_def456...
|
|
391
|
+
New project name: Production Release v2.0
|
|
392
|
+
Admin email: admin@example.com
|
|
393
|
+
|
|
394
|
+
--- Destination Configuration ---
|
|
395
|
+
Destination instance URL: https://api.prod.example.ai
|
|
396
|
+
Destination API key: (will be created after project creation)
|
|
397
|
+
|
|
398
|
+
--- Resource Type Selection ---
|
|
399
|
+
Which resource types do you want to migrate?
|
|
400
|
+
1. Agents
|
|
401
|
+
2. Tools
|
|
402
|
+
3. Agentic Processes
|
|
403
|
+
4. Tasks
|
|
404
|
+
5. RAG Assistants
|
|
405
|
+
6. Files
|
|
406
|
+
7. Usage Limits
|
|
407
|
+
8. Secrets
|
|
408
|
+
|
|
409
|
+
Select resource types (comma-separated numbers, or empty for all): 1,2,5
|
|
410
|
+
|
|
411
|
+
--- Retrieving Available Resources ---
|
|
412
|
+
|
|
413
|
+
Available agents:
|
|
414
|
+
0. Cancel (don't migrate this resource type)
|
|
415
|
+
1. Customer Support Agent (ID: agent-001)
|
|
416
|
+
2. Sales Assistant (ID: agent-002)
|
|
417
|
+
3. HR Onboarding Agent (ID: agent-003)
|
|
418
|
+
|
|
419
|
+
Select agents (comma-separated numbers, or empty for all):
|
|
420
|
+
|
|
421
|
+
Available tools:
|
|
422
|
+
0. Cancel (don't migrate this resource type)
|
|
423
|
+
1. Database Query Tool (ID: tool-001)
|
|
424
|
+
2. Email Sender (ID: tool-002)
|
|
425
|
+
3. Calendar Integration (ID: tool-003)
|
|
426
|
+
|
|
427
|
+
Select tools (comma-separated numbers, or empty for all): 1,3
|
|
428
|
+
|
|
429
|
+
Available RAG assistants:
|
|
430
|
+
0. Cancel (don't migrate this resource type)
|
|
431
|
+
1. Documentation Assistant (ID: doc-assistant-001)
|
|
432
|
+
2. Code Helper (ID: code-assistant-002)
|
|
433
|
+
|
|
434
|
+
Select RAG assistants (comma-separated numbers, or empty for all):
|
|
435
|
+
|
|
436
|
+
--- Migration Summary ---
|
|
437
|
+
Source: https://api.dev.example.ai / Project: proj-dev-001
|
|
438
|
+
Destination: https://api.prod.example.ai / Project: Production Release v2.0
|
|
439
|
+
Resources: agents, tools, rag_assistants
|
|
440
|
+
|
|
441
|
+
Stop migration on first error? (Y/n): Y
|
|
442
|
+
|
|
443
|
+
Proceed with migration? (y/n): y
|
|
444
|
+
|
|
445
|
+
Creating new project 'Production Release v2.0'...
|
|
446
|
+
Project 'Production Release v2.0' created successfully with ID: proj-prod-002
|
|
447
|
+
Creating project API key for new project...
|
|
448
|
+
Project API key created successfully
|
|
449
|
+
|
|
450
|
+
============================================================
|
|
451
|
+
Migration Progress: 0/7 completed
|
|
452
|
+
============================================================
|
|
453
|
+
|
|
454
|
+
[1/7] Migrating agent 'Customer Support Agent'...
|
|
455
|
+
✓ Successfully migrated agent 'Customer Support Agent'
|
|
456
|
+
|
|
457
|
+
[2/7] Migrating agent 'Sales Assistant'...
|
|
458
|
+
✓ Successfully migrated agent 'Sales Assistant'
|
|
459
|
+
|
|
460
|
+
[3/7] Migrating agent 'HR Onboarding Agent'...
|
|
461
|
+
✓ Successfully migrated agent 'HR Onboarding Agent'
|
|
462
|
+
|
|
463
|
+
[4/7] Migrating tool 'Database Query Tool'...
|
|
464
|
+
✓ Successfully migrated tool 'Database Query Tool'
|
|
465
|
+
|
|
466
|
+
[5/7] Migrating tool 'Calendar Integration'...
|
|
467
|
+
✓ Successfully migrated tool 'Calendar Integration'
|
|
468
|
+
|
|
469
|
+
[6/7] Migrating RAG assistant 'Documentation Assistant'...
|
|
470
|
+
✓ Successfully migrated RAG assistant 'Documentation Assistant'
|
|
471
|
+
|
|
472
|
+
[7/7] Migrating RAG assistant 'Code Helper'...
|
|
473
|
+
✓ Successfully migrated RAG assistant 'Code Helper'
|
|
474
|
+
|
|
475
|
+
============================================================
|
|
476
|
+
Migration Complete: 7/7 successful
|
|
477
|
+
============================================================
|
|
478
|
+
|
|
479
|
+
Migration completed: 7/7 successful
|
|
480
|
+
|
|
481
|
+
This example demonstrates:
|
|
482
|
+
|
|
483
|
+
- Cross-instance migration (dev to prod)
|
|
484
|
+
- New project creation
|
|
485
|
+
- Selective resource type migration (agents, tools, RAG assistants only)
|
|
486
|
+
- Mixed selection strategies (all agents, specific tools, all RAG assistants)
|
|
487
|
+
- Successful completion with progress tracking
|
|
488
|
+
|
|
489
|
+
Basic Usage
|
|
490
|
+
-----------
|
|
491
|
+
|
|
492
|
+
Migrate Everything
|
|
493
|
+
~~~~~~~~~~~~~~~~~~
|
|
494
|
+
|
|
495
|
+
The simplest and most common use case is to migrate an entire project with all its resources:
|
|
496
|
+
|
|
497
|
+
.. code-block:: shell
|
|
498
|
+
|
|
499
|
+
geai migrate clone-project \\
|
|
500
|
+
--from-api-key "source_api_key_123" \\
|
|
501
|
+
--from-project-id "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p" \\
|
|
502
|
+
--from-instance "https://api.source.example.ai" \\
|
|
503
|
+
--to-project-name "Cloned Project" \\
|
|
504
|
+
--admin-email "admin@example.com" \\
|
|
505
|
+
--all
|
|
506
|
+
|
|
507
|
+
This command will:
|
|
508
|
+
|
|
509
|
+
1. Create a new project named "Cloned Project"
|
|
510
|
+
2. Discover all resources in the source project
|
|
511
|
+
3. Migrate all agents, tools, processes, tasks, usage limits, RAG assistants, files, and secrets
|
|
512
|
+
4. Display progress and results
|
|
513
|
+
|
|
514
|
+
Migrate to Different Instance
|
|
515
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
516
|
+
|
|
517
|
+
To migrate between different GEAI instances, provide the destination instance details:
|
|
518
|
+
|
|
519
|
+
.. code-block:: shell
|
|
520
|
+
|
|
521
|
+
geai migrate clone-project \\
|
|
522
|
+
--from-api-key "source_api_key_123" \\
|
|
523
|
+
--from-project-id "source-project-id" \\
|
|
524
|
+
--from-instance "https://api.dev.example.ai" \\
|
|
525
|
+
--to-api-key "destination_api_key_456" \\
|
|
526
|
+
--to-project-name "Production Project" \\
|
|
527
|
+
--to-instance "https://api.prod.example.ai" \\
|
|
528
|
+
--to-organization-id "prod-org-id" \\
|
|
529
|
+
--admin-email "prod-admin@example.com" \\
|
|
530
|
+
--all
|
|
531
|
+
|
|
532
|
+
Selective Migration
|
|
533
|
+
-------------------
|
|
534
|
+
|
|
535
|
+
Migrate Specific Resource Types
|
|
536
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
537
|
+
|
|
538
|
+
Instead of migrating everything, you can selectively migrate specific resource types:
|
|
539
|
+
|
|
540
|
+
**Migrate all agents only:**
|
|
541
|
+
|
|
542
|
+
.. code-block:: shell
|
|
543
|
+
|
|
544
|
+
geai migrate clone-project \\
|
|
545
|
+
--from-api-key "source_api_key_123" \\
|
|
546
|
+
--from-project-id "source-project-id" \\
|
|
547
|
+
--from-instance "https://api.example.ai" \\
|
|
548
|
+
--to-project-name "Agents Only" \\
|
|
549
|
+
--admin-email "admin@example.com" \\
|
|
550
|
+
--agents all
|
|
551
|
+
|
|
552
|
+
**Migrate all tools only:**
|
|
553
|
+
|
|
554
|
+
.. code-block:: shell
|
|
555
|
+
|
|
556
|
+
geai migrate clone-project \\
|
|
557
|
+
--from-api-key "source_api_key_123" \\
|
|
558
|
+
--from-project-id "source-project-id" \\
|
|
559
|
+
--from-instance "https://api.example.ai" \\
|
|
560
|
+
--to-project-name "Tools Only" \\
|
|
561
|
+
--admin-email "admin@example.com" \\
|
|
562
|
+
--tools all
|
|
563
|
+
|
|
564
|
+
**Migrate all RAG assistants only:**
|
|
565
|
+
|
|
566
|
+
.. code-block:: shell
|
|
567
|
+
|
|
568
|
+
geai migrate clone-project \\
|
|
569
|
+
--from-api-key "source_api_key_123" \\
|
|
570
|
+
--from-project-id "source-project-id" \\
|
|
571
|
+
--from-instance "https://api.example.ai" \\
|
|
572
|
+
--to-project-name "RAG Assistants Only" \\
|
|
573
|
+
--admin-email "admin@example.com" \\
|
|
574
|
+
--rag-assistants all
|
|
575
|
+
|
|
576
|
+
**Migrate all secrets only:**
|
|
577
|
+
|
|
578
|
+
.. code-block:: shell
|
|
579
|
+
|
|
580
|
+
geai migrate clone-project \\
|
|
581
|
+
--from-api-key "source_api_key_123" \\
|
|
582
|
+
--from-project-id "source-project-id" \\
|
|
583
|
+
--from-instance "https://api.example.ai" \\
|
|
584
|
+
--to-project-name "Secrets Only" \\
|
|
585
|
+
--admin-email "admin@example.com" \\
|
|
586
|
+
--secrets all
|
|
587
|
+
|
|
588
|
+
Migrate Specific Resources by ID
|
|
589
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
590
|
+
|
|
591
|
+
For fine-grained control, specify comma-separated resource IDs:
|
|
592
|
+
|
|
593
|
+
**Migrate specific agents:**
|
|
594
|
+
|
|
595
|
+
.. code-block:: shell
|
|
596
|
+
|
|
597
|
+
geai migrate clone-project \\
|
|
598
|
+
--from-api-key "source_api_key_123" \\
|
|
599
|
+
--from-project-id "source-project-id" \\
|
|
600
|
+
--from-instance "https://api.example.ai" \\
|
|
601
|
+
--to-project-name "Selected Agents" \\
|
|
602
|
+
--admin-email "admin@example.com" \\
|
|
603
|
+
--agents "agent-id-1,agent-id-2,agent-id-3"
|
|
604
|
+
|
|
605
|
+
**Migrate specific tools:**
|
|
606
|
+
|
|
607
|
+
.. code-block:: shell
|
|
608
|
+
|
|
609
|
+
geai migrate clone-project \\
|
|
610
|
+
--from-api-key "source_api_key_123" \\
|
|
611
|
+
--from-project-id "source-project-id" \\
|
|
612
|
+
--from-instance "https://api.example.ai" \\
|
|
613
|
+
--to-project-name "Selected Tools" \\
|
|
614
|
+
--admin-email "admin@example.com" \\
|
|
615
|
+
--tools "tool-id-1,tool-id-2"
|
|
616
|
+
|
|
617
|
+
Mixed Migration Strategies
|
|
618
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
619
|
+
|
|
620
|
+
Combine different migration strategies for maximum flexibility:
|
|
621
|
+
|
|
622
|
+
.. code-block:: shell
|
|
623
|
+
|
|
624
|
+
geai migrate clone-project \\
|
|
625
|
+
--from-api-key "source_api_key_123" \\
|
|
626
|
+
--from-project-id "source-project-id" \\
|
|
627
|
+
--from-instance "https://api.example.ai" \\
|
|
628
|
+
--to-project-name "Mixed Migration" \\
|
|
629
|
+
--admin-email "admin@example.com" \\
|
|
630
|
+
--agents all \\
|
|
631
|
+
--tools "tool-id-1,tool-id-2" \\
|
|
632
|
+
--rag-assistants all \\
|
|
633
|
+
--files all
|
|
634
|
+
|
|
635
|
+
This command migrates:
|
|
636
|
+
|
|
637
|
+
- **ALL** agents (auto-discovered)
|
|
638
|
+
- **SPECIFIC** tools (by ID)
|
|
639
|
+
- **ALL** RAG assistants (auto-discovered)
|
|
640
|
+
- **ALL** files (auto-discovered)
|
|
641
|
+
|
|
642
|
+
Advanced Usage
|
|
643
|
+
--------------
|
|
644
|
+
|
|
645
|
+
Migrate with Organization Context
|
|
646
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
647
|
+
|
|
648
|
+
When migrating between organizations, specify organization IDs:
|
|
649
|
+
|
|
650
|
+
.. code-block:: shell
|
|
651
|
+
|
|
652
|
+
geai migrate clone-project \\
|
|
653
|
+
--from-api-key "source_api_key_123" \\
|
|
654
|
+
--from-project-id "source-project-id" \\
|
|
655
|
+
--from-organization-id "source-org-id" \\
|
|
656
|
+
--from-instance "https://api.example.ai" \\
|
|
657
|
+
--to-api-key "destination_api_key_456" \\
|
|
658
|
+
--to-project-name "Cross-Org Project" \\
|
|
659
|
+
--to-organization-id "destination-org-id" \\
|
|
660
|
+
--to-instance "https://api.example.ai" \\
|
|
661
|
+
--admin-email "admin@example.com" \\
|
|
662
|
+
--all
|
|
663
|
+
|
|
664
|
+
Migrate All AI Lab Resources
|
|
665
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
666
|
+
|
|
667
|
+
To migrate all AI Lab-related resources (agents, tools, processes, tasks):
|
|
668
|
+
|
|
669
|
+
.. code-block:: shell
|
|
670
|
+
|
|
671
|
+
geai migrate clone-project \\
|
|
672
|
+
--from-api-key "source_api_key_123" \\
|
|
673
|
+
--from-project-id "source-project-id" \\
|
|
674
|
+
--from-instance "https://api.example.ai" \\
|
|
675
|
+
--to-project-name "AI Lab Resources" \\
|
|
676
|
+
--admin-email "admin@example.com" \\
|
|
677
|
+
--agents all \\
|
|
678
|
+
--tools all \\
|
|
679
|
+
--agentic-processes all \\
|
|
680
|
+
--tasks all
|
|
681
|
+
|
|
682
|
+
CLI Reference
|
|
683
|
+
-------------
|
|
684
|
+
|
|
685
|
+
Command: ``geai migrate clone-project``
|
|
686
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
687
|
+
|
|
688
|
+
**Description:** Clone a project with selective or complete resource migration.
|
|
689
|
+
|
|
690
|
+
**Interactive Mode Flag:**
|
|
691
|
+
|
|
692
|
+
``--interactive`` or ``-i``
|
|
693
|
+
Launch the interactive migration wizard with step-by-step prompts. When this flag is used, all other arguments are ignored and the wizard will prompt for all required information. See the :ref:`Interactive Mode` section for details.
|
|
694
|
+
|
|
695
|
+
**Required Arguments (CLI Mode):**
|
|
696
|
+
|
|
697
|
+
``--from-api-key <key>``
|
|
698
|
+
Project scope API key for the source GEAI instance (for migrating resources)
|
|
699
|
+
|
|
700
|
+
``--from-project-id <id>``
|
|
701
|
+
ID of the source project to migrate from
|
|
702
|
+
|
|
703
|
+
``--from-instance <url>``
|
|
704
|
+
URL of the source GEAI instance
|
|
705
|
+
|
|
706
|
+
**Optional Arguments:**
|
|
707
|
+
|
|
708
|
+
``--from-org-key <key>``
|
|
709
|
+
Organization scope API key for the source instance (REQUIRED when creating projects or migrating usage limits)
|
|
710
|
+
|
|
711
|
+
``--to-api-key <key>``
|
|
712
|
+
Project scope API key for the destination instance. **REQUIRED** when using ``--to-project-id`` (existing project). OPTIONAL when creating a new project (auto-generated if not provided)
|
|
713
|
+
|
|
714
|
+
``--to-org-key <key>``
|
|
715
|
+
Organization scope API key for the destination instance (REQUIRED when creating projects or migrating usage limits)
|
|
716
|
+
|
|
717
|
+
``--to-project-id <id>``
|
|
718
|
+
Destination project ID (use this to migrate to an existing project). **REQUIRED**: ``--to-api-key`` must also be provided. **MUTUALLY EXCLUSIVE** with ``--to-project-name`` and ``--admin-email``
|
|
719
|
+
|
|
720
|
+
``--to-project-name <name>``
|
|
721
|
+
Name for the new destination project (when specified with --admin-email, creates a new project). **MUTUALLY EXCLUSIVE** with ``--to-project-id``
|
|
722
|
+
|
|
723
|
+
``--admin-email <email>``
|
|
724
|
+
Admin email for the new project (required when creating a new project with --to-project-name)
|
|
725
|
+
|
|
726
|
+
``--to-instance <url>``
|
|
727
|
+
URL of the destination instance (defaults to source instance if omitted)
|
|
728
|
+
|
|
729
|
+
``--from-organization-id <id>``
|
|
730
|
+
Organization ID in the source instance (required for usage limits and file migration)
|
|
731
|
+
|
|
732
|
+
``--to-organization-id <id>``
|
|
733
|
+
Organization ID in the destination instance (required for usage limits and file migration)
|
|
734
|
+
|
|
735
|
+
**Migration Flags:**
|
|
736
|
+
|
|
737
|
+
``--all``
|
|
738
|
+
Migrate all available resource types (agents, tools, processes, tasks, usage limits, RAG assistants, files, secrets)
|
|
739
|
+
|
|
740
|
+
``--agents <all|id1,id2,...>``
|
|
741
|
+
Migrate all agents or specific agents by ID (comma-separated)
|
|
742
|
+
|
|
743
|
+
``--tools <all|id1,id2,...>``
|
|
744
|
+
Migrate all tools or specific tools by ID (comma-separated)
|
|
745
|
+
|
|
746
|
+
``--agentic-processes <all|id1,id2,...>``
|
|
747
|
+
Migrate all agentic processes or specific processes by ID (comma-separated)
|
|
748
|
+
|
|
749
|
+
``--tasks <all|id1,id2,...>``
|
|
750
|
+
Migrate all tasks or specific tasks by ID (comma-separated)
|
|
751
|
+
|
|
752
|
+
``--usage-limits <all|id1,id2,...>``
|
|
753
|
+
Migrate all usage limits or specific usage limits by ID (comma-separated)
|
|
754
|
+
|
|
755
|
+
``--rag-assistants <all|id1,id2,...>``
|
|
756
|
+
Migrate all RAG assistants or specific assistants by ID (comma-separated)
|
|
757
|
+
|
|
758
|
+
``--files <all|id1,id2,...>``
|
|
759
|
+
Migrate all files or specific files by ID (comma-separated)
|
|
760
|
+
|
|
761
|
+
``--secrets <all|id1,id2,...>``
|
|
762
|
+
Migrate all secrets or specific secrets by ID (comma-separated)
|
|
763
|
+
|
|
764
|
+
``--stop-on-error <0|1>`` or ``--soe <0|1>``
|
|
765
|
+
Control migration behavior on errors. Set to ``1`` (default) to stop migration on first error, or ``0`` to continue migrating remaining resources even if some fail
|
|
766
|
+
|
|
767
|
+
Migration Behavior
|
|
768
|
+
------------------
|
|
769
|
+
|
|
770
|
+
Resource Discovery
|
|
771
|
+
~~~~~~~~~~~~~~~~~~
|
|
772
|
+
|
|
773
|
+
When you use ``all`` for any resource type, the migration tool:
|
|
774
|
+
|
|
775
|
+
1. Connects to the source instance
|
|
776
|
+
2. Lists all available resources of that type
|
|
777
|
+
3. Filters resources with valid IDs/names
|
|
778
|
+
4. Creates migration strategies for each discovered resource
|
|
779
|
+
5. Displays the count of discovered resources
|
|
780
|
+
|
|
781
|
+
For example:
|
|
782
|
+
|
|
783
|
+
.. code-block:: shell
|
|
784
|
+
|
|
785
|
+
geai migrate clone-project ... --agents all
|
|
786
|
+
|
|
787
|
+
Will output something like:
|
|
788
|
+
|
|
789
|
+
.. code-block:: text
|
|
790
|
+
|
|
791
|
+
Discovered 15 agents
|
|
792
|
+
Migrating agents...
|
|
793
|
+
[Progress indicators]
|
|
794
|
+
|
|
795
|
+
Error Handling
|
|
796
|
+
~~~~~~~~~~~~~~
|
|
797
|
+
|
|
798
|
+
The migration process includes robust error handling:
|
|
799
|
+
|
|
800
|
+
- Invalid API keys or instances result in clear error messages
|
|
801
|
+
- Missing required parameters are detected before migration starts
|
|
802
|
+
- Individual resource migration failures are logged but don't stop the entire process by default (unless ``--stop-on-error 1`` is set)
|
|
803
|
+
- Final migration result includes success/failure status for each resource
|
|
804
|
+
- Use ``--stop-on-error 0`` to continue migrating all resources even if some fail, or ``--stop-on-error 1`` (default) to halt on first error
|
|
805
|
+
|
|
806
|
+
Best Practices
|
|
807
|
+
--------------
|
|
808
|
+
|
|
809
|
+
1. **Test First**: Always test migrations in a development environment before production
|
|
810
|
+
2. **Start with Interactive Mode**: If you're new to migrations or unsure about resource IDs, use ``--interactive`` mode for guided assistance
|
|
811
|
+
3. **Use --all for Complete Clones**: When creating backups or full clones, use ``--all``
|
|
812
|
+
4. **Verify Credentials**: Double-check API keys and instance URLs before running migrations
|
|
813
|
+
5. **Monitor Progress**: Watch the console output for discovery counts and migration status
|
|
814
|
+
6. **Check Results**: Review the migration result summary after completion
|
|
815
|
+
7. **Incremental Migration**: For large projects, consider migrating resource types incrementally
|
|
816
|
+
8. **Document Migrations**: Keep track of what was migrated and when
|
|
817
|
+
9. **Automate Repeated Migrations**: Once you know the exact resources and IDs, convert interactive sessions to CLI commands for repeatability
|
|
818
|
+
|
|
819
|
+
Common Use Cases
|
|
820
|
+
----------------
|
|
821
|
+
|
|
822
|
+
Development to Production Promotion (with new project creation)
|
|
823
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
824
|
+
|
|
825
|
+
.. code-block:: shell
|
|
826
|
+
|
|
827
|
+
geai migrate clone-project \\
|
|
828
|
+
--from-api-key "dev_project_api_key" \\
|
|
829
|
+
--from-org-key "dev_org_api_key" \\
|
|
830
|
+
--from-project-id "dev-project-id" \\
|
|
831
|
+
--from-instance "https://api.dev.example.ai" \\
|
|
832
|
+
--to-api-key "prod_project_api_key" \\
|
|
833
|
+
--to-org-key "prod_org_api_key" \\
|
|
834
|
+
--to-project-name "Production Release v1.0" \\
|
|
835
|
+
--to-instance "https://api.prod.example.ai" \\
|
|
836
|
+
--admin-email "prod-admin@example.com" \\
|
|
837
|
+
--all
|
|
838
|
+
|
|
839
|
+
Project Backup (with new project creation)
|
|
840
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
841
|
+
|
|
842
|
+
.. code-block:: shell
|
|
843
|
+
|
|
844
|
+
geai migrate clone-project \\
|
|
845
|
+
--from-api-key "project_api_key" \\
|
|
846
|
+
--from-org-key "org_api_key" \\
|
|
847
|
+
--from-project-id "main-project-id" \\
|
|
848
|
+
--from-instance "https://api.example.ai" \\
|
|
849
|
+
--to-org-key "org_api_key" \\
|
|
850
|
+
--to-project-name "Main Project Backup $(date +%Y-%m-%d)" \\
|
|
851
|
+
--admin-email "admin@example.com" \\
|
|
852
|
+
--all
|
|
853
|
+
|
|
854
|
+
Migrate Resources to Existing Project (no org keys needed)
|
|
855
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
856
|
+
|
|
857
|
+
When migrating to an existing project, you must provide both ``--to-project-id`` and ``--to-api-key``:
|
|
858
|
+
|
|
859
|
+
.. code-block:: shell
|
|
860
|
+
|
|
861
|
+
geai migrate clone-project \\
|
|
862
|
+
--from-api-key "source_project_api_key" \\
|
|
863
|
+
--from-project-id "source-project-id" \\
|
|
864
|
+
--from-instance "https://api.example.ai" \\
|
|
865
|
+
--to-project-id "existing-project-id" \\
|
|
866
|
+
--to-api-key "target_project_api_key" \\
|
|
867
|
+
--agents all \\
|
|
868
|
+
--tools all
|
|
869
|
+
|
|
870
|
+
This example migrates all agents and tools to an existing project without requiring organization scope API keys.
|
|
871
|
+
|
|
872
|
+
Troubleshooting
|
|
873
|
+
---------------
|
|
874
|
+
|
|
875
|
+
Migration Fails with Authentication Error
|
|
876
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
877
|
+
|
|
878
|
+
**Problem**: ``Error retrieving project_id from GEAI: Authentication failed``
|
|
879
|
+
|
|
880
|
+
**Solution**: Verify your API keys are correct and have necessary permissions:
|
|
881
|
+
|
|
882
|
+
- When creating a new project (``--to-project-name`` + ``--admin-email``): You MUST provide **organization scope** API keys via ``--from-org-key`` and ``--to-org-key``
|
|
883
|
+
- When migrating usage limits (``--usage-limits``): You MUST provide **organization scope** API keys via ``--from-org-key`` and ``--to-org-key``
|
|
884
|
+
- For other resource migrations: Use **project scope** API keys via ``--from-api-key`` and ``--to-api-key``
|
|
885
|
+
|
|
886
|
+
Missing Organization Scope API Keys
|
|
887
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
888
|
+
|
|
889
|
+
**Problem**: ``Source organization scope API key (--from-org-key) is required for project creation``
|
|
890
|
+
|
|
891
|
+
**Solution**: When creating a new project or migrating usage limits, you must explicitly provide organization scope API keys using ``--from-org-key`` and ``--to-org-key`` parameters. Project scope API keys cannot be used for these operations
|
|
892
|
+
|
|
893
|
+
Missing Destination Project API Key
|
|
894
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
895
|
+
|
|
896
|
+
**Problem**: ``Destination project API key (--to-api-key) is required when migrating to an existing project (--to-project-id)``
|
|
897
|
+
|
|
898
|
+
**Solution**: When migrating to an existing project using ``--to-project-id``, you MUST provide ``--to-api-key`` with a project scope API key that has write access to the destination project. This is required because the migration tool needs to create resources in the existing project.
|
|
899
|
+
|
|
900
|
+
**Note**: When creating a NEW project (using ``--to-project-name`` and ``--admin-email``), ``--to-api-key`` is optional and will be automatically generated if not provided.
|
|
901
|
+
|
|
902
|
+
Migration Discovers No Resources
|
|
903
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
904
|
+
|
|
905
|
+
**Problem**: ``Discovered 0 agents`` when you know resources exist
|
|
906
|
+
|
|
907
|
+
**Solution**: Check that the ``--from-project-id`` is correct and the API key has read access
|
|
908
|
+
|
|
909
|
+
Partial Migration Success
|
|
910
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
911
|
+
|
|
912
|
+
**Problem**: Some resources migrate successfully, others fail
|
|
913
|
+
|
|
914
|
+
**Solution**: Check the error log for specific resource failures and retry individual resources if needed
|
|
915
|
+
|
|
916
|
+
Limitations
|
|
917
|
+
-----------
|
|
918
|
+
|
|
919
|
+
- API rate limits may affect large migrations
|
|
920
|
+
- Some resource dependencies may require specific migration order
|
|
921
|
+
- Cross-instance migrations require network connectivity between instances
|
|
922
|
+
- Certain resource types may have instance-specific configurations
|
|
923
|
+
|
|
924
|
+
See Also
|
|
925
|
+
--------
|
|
926
|
+
|
|
927
|
+
- :doc:`cli` - General CLI usage
|
|
928
|
+
- :doc:`ai_lab` - AI Lab concepts and resources
|
|
929
|
+
- :doc:`quickstart` - Getting started with GEAI SDK
|