pygeai 0.1.51b3__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 +9 -1
- 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 +18 -45
- pygeai/assistant/data/clients.py +1 -0
- pygeai/assistant/data_analyst/clients.py +8 -12
- pygeai/assistant/managers.py +195 -157
- pygeai/assistant/mappers.py +4 -2
- pygeai/assistant/rag/clients.py +27 -67
- pygeai/assistant/rag/mappers.py +12 -6
- pygeai/assistant/rag/models.py +301 -159
- pygeai/auth/__init__.py +0 -0
- pygeai/auth/clients.py +129 -0
- pygeai/auth/endpoints.py +6 -0
- pygeai/chat/clients.py +308 -37
- pygeai/chat/endpoints.py +3 -0
- pygeai/chat/iris.py +2 -8
- pygeai/chat/managers.py +9 -6
- 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 +7 -10
- pygeai/cli/commands/analytics.py +533 -0
- pygeai/cli/commands/assistant.py +9 -9
- pygeai/cli/commands/auth.py +299 -0
- pygeai/cli/commands/base.py +71 -9
- pygeai/cli/commands/chat.py +676 -19
- pygeai/cli/commands/common.py +28 -24
- pygeai/cli/commands/configuration.py +66 -13
- pygeai/cli/commands/docs.py +105 -0
- pygeai/cli/commands/embeddings.py +58 -11
- pygeai/cli/commands/evaluation.py +38 -38
- pygeai/cli/commands/feedback.py +3 -4
- pygeai/cli/commands/files.py +7 -8
- pygeai/cli/commands/gam.py +85 -10
- pygeai/cli/commands/lab/ai_lab.py +340 -484
- 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 +6 -7
- pygeai/cli/commands/migrate.py +1064 -436
- pygeai/cli/commands/organization.py +516 -11
- pygeai/cli/commands/rag.py +13 -14
- pygeai/cli/commands/rerank.py +3 -5
- pygeai/cli/commands/secrets.py +8 -9
- pygeai/cli/commands/usage_limits.py +18 -20
- pygeai/cli/commands/validators.py +144 -1
- pygeai/cli/commands/version.py +4 -5
- pygeai/cli/error_handler.py +151 -0
- pygeai/cli/geai.py +170 -31
- pygeai/cli/geai_proxy.py +86 -25
- pygeai/cli/install_man.py +93 -22
- pygeai/cli/parsers.py +75 -25
- pygeai/cli/texts/help.py +265 -28
- pygeai/core/base/clients.py +53 -12
- pygeai/core/base/mappers.py +11 -2
- pygeai/core/base/session.py +95 -11
- pygeai/core/common/config.py +78 -14
- pygeai/core/common/exceptions.py +96 -6
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +23 -5
- pygeai/core/embeddings/managers.py +9 -4
- pygeai/core/embeddings/mappers.py +16 -2
- pygeai/core/embeddings/responses.py +9 -2
- pygeai/core/feedback/clients.py +8 -3
- pygeai/core/files/clients.py +23 -24
- pygeai/core/files/managers.py +121 -30
- pygeai/core/files/responses.py +4 -3
- pygeai/core/handlers.py +10 -1
- pygeai/core/llm/clients.py +22 -29
- pygeai/core/models.py +127 -11
- pygeai/core/plugins/clients.py +6 -6
- pygeai/core/rerank/clients.py +9 -3
- pygeai/core/rerank/managers.py +22 -5
- pygeai/core/secrets/clients.py +16 -37
- pygeai/core/services/response.py +18 -0
- pygeai/core/services/rest.py +159 -49
- 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 +854 -14
- pygeai/evaluation/clients.py +7 -4
- pygeai/evaluation/dataset/clients.py +46 -44
- pygeai/evaluation/plan/clients.py +28 -26
- pygeai/evaluation/result/clients.py +38 -5
- pygeai/gam/clients.py +50 -28
- pygeai/gam/endpoints.py +2 -1
- pygeai/health/__init__.py +0 -0
- pygeai/health/clients.py +24 -0
- pygeai/health/endpoints.py +1 -0
- pygeai/lab/__init__.py +0 -90
- pygeai/lab/agents/clients.py +203 -162
- pygeai/lab/agents/endpoints.py +4 -0
- pygeai/lab/agents/mappers.py +57 -7
- pygeai/lab/clients.py +24 -0
- pygeai/lab/constants.py +3 -0
- pygeai/lab/managers.py +571 -541
- pygeai/lab/models.py +108 -19
- pygeai/lab/processes/clients.py +332 -340
- pygeai/lab/processes/mappers.py +3 -3
- 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/clients.py +67 -63
- pygeai/lab/strategies/mappers.py +1 -1
- pygeai/lab/tools/clients.py +85 -118
- pygeai/lab/tools/endpoints.py +4 -0
- pygeai/lab/tools/mappers.py +5 -5
- pygeai/man/man1/geai-proxy.1 +116 -0
- pygeai/man/man1/geai.1 +2580 -66
- pygeai/migration/__init__.py +33 -0
- pygeai/migration/strategies.py +468 -146
- pygeai/migration/tools.py +170 -3
- pygeai/organization/clients.py +245 -50
- pygeai/organization/endpoints.py +17 -8
- pygeai/organization/limits/clients.py +34 -32
- pygeai/organization/limits/managers.py +108 -49
- pygeai/organization/managers.py +347 -53
- pygeai/organization/mappers.py +102 -2
- pygeai/organization/responses.py +58 -1
- pygeai/proxy/clients.py +6 -3
- pygeai/proxy/config.py +14 -1
- pygeai/proxy/managers.py +61 -33
- pygeai/proxy/servers.py +196 -51
- pygeai/proxy/tool.py +33 -16
- 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/test_clients.py +346 -0
- pygeai/tests/assistants/rag/test_models.py +292 -0
- pygeai/tests/assistants/test_clients.py +176 -82
- pygeai/tests/assistants/test_managers.py +191 -57
- 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/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 +5 -5
- pygeai/tests/core/base/data/models.py +7 -0
- pygeai/tests/core/base/test_mappers.py +43 -11
- pygeai/tests/core/base/test_models.py +3 -1
- 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/test_clients.py +128 -0
- pygeai/tests/core/files/test_managers.py +124 -78
- 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/test_clients.py +76 -0
- pygeai/tests/core/rerank/test_managers.py +61 -39
- 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/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_models.py +500 -3
- 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/test_clients.py +567 -0
- pygeai/tests/organization/limits/test_managers.py +298 -56
- pygeai/tests/organization/test_clients.py +600 -30
- 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/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/auth/__init__.py +0 -0
- pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -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/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/cache_example.py +31 -0
- pygeai/tests/snippets/embeddings/cohere_example.py +41 -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/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/delete_file.py +1 -4
- pygeai/tests/snippets/files/get_file_content.py +2 -4
- pygeai/tests/snippets/files/get_file_data.py +1 -4
- pygeai/tests/snippets/files/get_file_list.py +1 -6
- pygeai/tests/snippets/files/upload_file.py +1 -5
- pygeai/tests/snippets/gam/gam_access_token.py +87 -0
- pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
- pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
- pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
- pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
- 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 +1 -5
- pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
- pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
- pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
- pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
- 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/create_process.py +3 -5
- pygeai/tests/snippets/lab/processes/create_task.py +3 -5
- pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
- pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
- pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
- pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
- pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
- pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
- pygeai/tests/snippets/lab/runner_1.py +1 -1
- pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
- pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
- pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
- pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
- pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
- pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
- pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
- pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
- pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
- pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
- pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
- pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
- pygeai/tests/snippets/lab/use_cases/__init__.py +0 -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/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
- pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
- 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/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- pygeai/tests/snippets/organization/create_project.py +2 -2
- 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_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/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.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
- {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
- {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
- pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
- docs/geai-proxy/README.md +0 -145
- docs/source/conf.py +0 -45
- pygeai/tests/core/test_managers.py +0 -233
- pygeai-0.1.51b3.dist-info/METADATA +0 -130
- pygeai-0.1.51b3.dist-info/RECORD +0 -324
- pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
- scripts/bump_beta_version.py +0 -56
- {scripts → pygeai/analytics}/__init__.py +0 -0
- /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
pygeai/lab/models.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import re
|
|
1
2
|
from typing import Literal, Optional, List, Dict, Any, Union, Iterator
|
|
2
3
|
|
|
3
4
|
from pydantic import model_validator, Field, field_validator
|
|
@@ -14,7 +15,8 @@ class FilterSettings(CustomBaseModel):
|
|
|
14
15
|
:param status: str - Status filter, defaults to None.
|
|
15
16
|
:param start: int - Starting index for pagination, defaults to None.
|
|
16
17
|
:param count: int - Number of items to return, defaults to None.
|
|
17
|
-
:param
|
|
18
|
+
:param is_active: bool - If it's active. Defaults to false.
|
|
19
|
+
:param access_scope: str - Access scope filter, defaults to "private".
|
|
18
20
|
:param allow_drafts: bool - Whether to include draft items, defaults to True.
|
|
19
21
|
:param allow_external: bool - Whether to include external items, defaults to False.
|
|
20
22
|
:param revision: str - Revision of the agent, defaults to 0.
|
|
@@ -26,9 +28,10 @@ class FilterSettings(CustomBaseModel):
|
|
|
26
28
|
status: Optional[str] = Field(default=None, description="Status filter")
|
|
27
29
|
start: Optional[int] = Field(default=None, description="Starting index for pagination")
|
|
28
30
|
count: Optional[int] = Field(default=None, description="Number of items to return")
|
|
29
|
-
access_scope: Optional[str] = Field(default="
|
|
31
|
+
access_scope: Optional[str] = Field(default="private", alias="accessScope", description="Access scope filter")
|
|
30
32
|
allow_drafts: Optional[bool] = Field(default=True, alias="allowDrafts", description="Whether to include draft items")
|
|
31
33
|
allow_external: Optional[bool] = Field(default=False, alias="allowExternal", description="Whether to include external items")
|
|
34
|
+
is_active: Optional[bool] = Field(default=False, alias="isActive", description="Whether it's active")
|
|
32
35
|
revision: Optional[str] = Field(default=None, description="Revision of the agent")
|
|
33
36
|
version: Optional[int] = Field(default=None, description="Version of the agent")
|
|
34
37
|
scope: Optional[str] = Field(None, description="Filter by scope (e.g., 'builtin', 'external', 'api')")
|
|
@@ -68,15 +71,16 @@ class LlmConfig(CustomBaseModel):
|
|
|
68
71
|
:param sampling: Sampling - Sampling configuration for the LLM.
|
|
69
72
|
"""
|
|
70
73
|
max_tokens: int = Field(..., alias="maxTokens")
|
|
71
|
-
timeout: int = Field(
|
|
74
|
+
timeout: Optional[int] = Field(60, alias="timeout")
|
|
72
75
|
sampling: Optional[Sampling] = Field(Sampling(), alias="sampling")
|
|
73
76
|
|
|
74
77
|
def to_dict(self):
|
|
75
|
-
|
|
78
|
+
result = {
|
|
76
79
|
"maxTokens": self.max_tokens,
|
|
77
80
|
"timeout": self.timeout,
|
|
78
|
-
"sampling": self.sampling.to_dict()
|
|
81
|
+
"sampling": self.sampling.to_dict() if self.sampling else None
|
|
79
82
|
}
|
|
83
|
+
return {k: v for k, v in result.items() if v is not None}
|
|
80
84
|
|
|
81
85
|
def __str__(self):
|
|
82
86
|
return str(self.to_dict())
|
|
@@ -90,7 +94,7 @@ class Model(CustomBaseModel):
|
|
|
90
94
|
:param llm_config: Optional[LlmConfig] - Overrides default agent LLM settings.
|
|
91
95
|
:param prompt: Optional[dict] - A tailored prompt specific to this model.
|
|
92
96
|
"""
|
|
93
|
-
name: str = Field(
|
|
97
|
+
name: Optional[str] = Field(None, alias="name")
|
|
94
98
|
llm_config: Optional[LlmConfig] = Field(None, alias="llmConfig")
|
|
95
99
|
prompt: Optional[Dict[str, Any]] = Field(None, alias="prompt")
|
|
96
100
|
|
|
@@ -157,12 +161,22 @@ class Prompt(CustomBaseModel):
|
|
|
157
161
|
:param context: Optional[str] - Background context for the agent # NOT IMPLEMENTED YET
|
|
158
162
|
:param examples: List[PromptExample] - List of example input-output pairs.
|
|
159
163
|
"""
|
|
160
|
-
instructions: str = Field(
|
|
161
|
-
inputs: List[str] = Field(
|
|
162
|
-
outputs: List[PromptOutput] = Field(
|
|
164
|
+
instructions: Optional[str] = Field(None, alias="instructions")
|
|
165
|
+
inputs: Optional[List[str]] = Field(None, alias="inputs")
|
|
166
|
+
outputs: Optional[List[PromptOutput]] = Field([], alias="outputs")
|
|
163
167
|
context: Optional[str] = Field(None, alias="context", description="Background context for the agent")
|
|
164
168
|
examples: Optional[List[PromptExample]] = Field(None, alias="examples")
|
|
165
169
|
|
|
170
|
+
'''
|
|
171
|
+
@field_validator("instructions")
|
|
172
|
+
@classmethod
|
|
173
|
+
def validate_instructions(cls, value: str) -> str:
|
|
174
|
+
if not value.strip():
|
|
175
|
+
raise ValueError("instructions cannot be blank")
|
|
176
|
+
|
|
177
|
+
return value
|
|
178
|
+
'''
|
|
179
|
+
|
|
166
180
|
@field_validator("outputs", mode="before")
|
|
167
181
|
@classmethod
|
|
168
182
|
def normalize_outputs(cls, value):
|
|
@@ -371,19 +385,54 @@ class ResourcePoolList(CustomBaseModel):
|
|
|
371
385
|
self.resource_pools.append(item)
|
|
372
386
|
|
|
373
387
|
|
|
388
|
+
class Permission(CustomBaseModel):
|
|
389
|
+
"""
|
|
390
|
+
Represents permission settings for an agent.
|
|
391
|
+
|
|
392
|
+
:param chat_sharing: Literal["none", "organization", "project"] - Chat sharing permission level.
|
|
393
|
+
:param external_execution: Literal["none", "organization", "project"] - External execution permission level.
|
|
394
|
+
"""
|
|
395
|
+
chat_sharing: Optional[Literal["none", "organization", "project"]] = Field(None, alias="chatSharing", description="Chat sharing permission level")
|
|
396
|
+
external_execution: Optional[Literal["none", "organization", "project"]] = Field(None, alias="externalExecution", description="External execution permission level")
|
|
397
|
+
|
|
398
|
+
def to_dict(self):
|
|
399
|
+
"""Convert Permission to dictionary with API aliases."""
|
|
400
|
+
return self.model_dump(by_alias=True, exclude_none=True)
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
class Property(CustomBaseModel):
|
|
404
|
+
"""
|
|
405
|
+
Represents a property key-value pair with data type.
|
|
406
|
+
|
|
407
|
+
:param data_type: str - Data type of the property (e.g., "String", "Number", "Boolean").
|
|
408
|
+
:param key: str - Property key identifier.
|
|
409
|
+
:param value: str - Property value.
|
|
410
|
+
"""
|
|
411
|
+
data_type: str = Field(..., alias="dataType", description="Data type of the property")
|
|
412
|
+
key: str = Field(..., alias="key", description="Property key identifier")
|
|
413
|
+
value: str = Field(..., alias="value", description="Property value")
|
|
414
|
+
|
|
415
|
+
def to_dict(self):
|
|
416
|
+
"""Convert Property to dictionary with API aliases."""
|
|
417
|
+
return self.model_dump(by_alias=True, exclude_none=True)
|
|
418
|
+
|
|
419
|
+
|
|
374
420
|
class AgentData(CustomBaseModel):
|
|
375
421
|
"""
|
|
376
422
|
Represents the detailed configuration data for an agent.
|
|
377
423
|
|
|
378
424
|
:param prompt: dict - Prompt instructions, inputs, outputs, and examples for the agent.
|
|
379
425
|
:param llm_config: dict - Configuration parameters for the LLM (e.g., max tokens, timeout, temperature).
|
|
426
|
+
:param strategy_name: str - Strategy name used for the agent (e.g., Dynamic Prompting, Chain of Thought, Question Refinement, etc)
|
|
380
427
|
:param models: ModelList - List of models available for the agent.
|
|
381
428
|
:param resource_pools: Optional[List[ResourcePool]] - List of resource pools organizing tools and helper agents.
|
|
382
429
|
"""
|
|
383
430
|
prompt: Prompt = Field(..., alias="prompt")
|
|
384
431
|
llm_config: LlmConfig = Field(..., alias="llmConfig")
|
|
385
|
-
|
|
432
|
+
strategy_name: Optional[str] = Field("Dynamic Prompting", alias="strategyName")
|
|
433
|
+
models: Optional[Union[ModelList, List[Model]]] = Field(None, alias="models")
|
|
386
434
|
resource_pools: Optional[ResourcePoolList] = Field(None, alias="resourcePools", description="List of resource pools organizing tools and helper agents")
|
|
435
|
+
properties: Optional[List[Property]] = Field(None, alias="properties", description="List of agent properties")
|
|
387
436
|
|
|
388
437
|
@field_validator("prompt", mode="before")
|
|
389
438
|
@classmethod
|
|
@@ -402,6 +451,8 @@ class AgentData(CustomBaseModel):
|
|
|
402
451
|
@field_validator("models", mode="before")
|
|
403
452
|
@classmethod
|
|
404
453
|
def normalize_models(cls, value):
|
|
454
|
+
if value is None:
|
|
455
|
+
return None
|
|
405
456
|
if isinstance(value, ModelList):
|
|
406
457
|
return value
|
|
407
458
|
elif isinstance(value, list):
|
|
@@ -417,6 +468,13 @@ class AgentData(CustomBaseModel):
|
|
|
417
468
|
return ResourcePoolList(resource_pools=[ResourcePool.model_validate(item) if isinstance(item, dict) else item for item in value])
|
|
418
469
|
return value
|
|
419
470
|
|
|
471
|
+
@field_validator("properties", mode="before")
|
|
472
|
+
@classmethod
|
|
473
|
+
def normalize_properties(cls, value):
|
|
474
|
+
if isinstance(value, list):
|
|
475
|
+
return [Property.model_validate(item) if isinstance(item, dict) else item for item in value]
|
|
476
|
+
return value
|
|
477
|
+
|
|
420
478
|
@model_validator(mode="after")
|
|
421
479
|
def validate_resource_pools_unique_names(self):
|
|
422
480
|
if self.resource_pools:
|
|
@@ -435,8 +493,10 @@ class AgentData(CustomBaseModel):
|
|
|
435
493
|
result = {
|
|
436
494
|
"prompt": self.prompt.to_dict(),
|
|
437
495
|
"llmConfig": self.llm_config.to_dict(),
|
|
438
|
-
"
|
|
439
|
-
"
|
|
496
|
+
"strategyName": self.strategy_name,
|
|
497
|
+
"models": self.models.to_dict() if self.models else None,
|
|
498
|
+
"resourcePools": [pool.to_dict() for pool in self.resource_pools] if self.resource_pools else None,
|
|
499
|
+
"properties": [prop.to_dict() for prop in self.properties] if self.properties else None
|
|
440
500
|
}
|
|
441
501
|
return {k: v for k, v in result.items() if v is not None}
|
|
442
502
|
|
|
@@ -473,7 +533,10 @@ class Agent(CustomBaseModel):
|
|
|
473
533
|
is_draft: Optional[bool] = Field(True, alias="isDraft")
|
|
474
534
|
is_readonly: Optional[bool] = Field(False, alias="isReadonly")
|
|
475
535
|
revision: Optional[int] = Field(None, alias="revision")
|
|
476
|
-
version: Optional[int] = Field(None, alias="version")
|
|
536
|
+
version: Optional[Union[int | float]] = Field(None, alias="version")
|
|
537
|
+
sharing_scope: Optional[str] = Field(None, alias="sharingScope", description="Sharing scope of the agent")
|
|
538
|
+
permissions: Optional[Permission] = Field(None, alias="permissions", description="Permission settings")
|
|
539
|
+
effective_permissions: Optional[Permission] = Field(None, alias="effectivePermissions", description="Effective permission settings")
|
|
477
540
|
agent_data: Optional[AgentData] = Field(None, alias="agentData")
|
|
478
541
|
|
|
479
542
|
@field_validator("name")
|
|
@@ -512,6 +575,20 @@ class Agent(CustomBaseModel):
|
|
|
512
575
|
return AgentData.model_validate(value)
|
|
513
576
|
return value
|
|
514
577
|
|
|
578
|
+
@field_validator("permissions", mode="before")
|
|
579
|
+
@classmethod
|
|
580
|
+
def normalize_permissions(cls, value):
|
|
581
|
+
if isinstance(value, dict):
|
|
582
|
+
return Permission.model_validate(value)
|
|
583
|
+
return value
|
|
584
|
+
|
|
585
|
+
@field_validator("effective_permissions", mode="before")
|
|
586
|
+
@classmethod
|
|
587
|
+
def normalize_effective_permissions(cls, value):
|
|
588
|
+
if isinstance(value, dict):
|
|
589
|
+
return Permission.model_validate(value)
|
|
590
|
+
return value
|
|
591
|
+
|
|
515
592
|
@model_validator(mode="after")
|
|
516
593
|
def check_public_name(self):
|
|
517
594
|
"""
|
|
@@ -537,6 +614,9 @@ class Agent(CustomBaseModel):
|
|
|
537
614
|
"isReadonly": self.is_readonly,
|
|
538
615
|
"revision": self.revision,
|
|
539
616
|
"version": self.version,
|
|
617
|
+
"sharingScope": self.sharing_scope,
|
|
618
|
+
"permissions": self.permissions.to_dict() if self.permissions else None,
|
|
619
|
+
"effectivePermissions": self.effective_permissions.to_dict() if self.effective_permissions else None,
|
|
540
620
|
"agentData": self.agent_data.to_dict() if self.agent_data else None
|
|
541
621
|
}
|
|
542
622
|
return {k: v for k, v in result.items() if v is not None}
|
|
@@ -560,8 +640,8 @@ class AgentList(CustomBaseModel):
|
|
|
560
640
|
return [Agent.model_validate(item) if isinstance(item, dict) else item for item in value]
|
|
561
641
|
return value
|
|
562
642
|
|
|
563
|
-
def
|
|
564
|
-
return [agent.to_dict() for agent in self.agents]
|
|
643
|
+
def to_list(self):
|
|
644
|
+
return [agent.to_dict() for agent in self.agents] if self.agents else []
|
|
565
645
|
|
|
566
646
|
def __getitem__(self, index: int) -> Agent:
|
|
567
647
|
if self.agents is None:
|
|
@@ -673,7 +753,7 @@ class Tool(CustomBaseModel):
|
|
|
673
753
|
:param status: Optional[str] - Current status of the tool (e.g., "active"), defaults to None.
|
|
674
754
|
"""
|
|
675
755
|
name: str = Field(..., alias="name", description="The name of the tool")
|
|
676
|
-
description: str = Field(
|
|
756
|
+
description: Optional[str] = Field(None, alias="description", description="Description of the tool's purpose")
|
|
677
757
|
scope: str = Field("builtin", alias="scope", description="The scope of the tool (e.g., 'builtin', 'external', 'api')")
|
|
678
758
|
parameters: Optional[List[ToolParameter]] = Field(None, alias="parameters", description="List of parameters required by the tool")
|
|
679
759
|
access_scope: Optional[str] = Field(None, alias="accessScope", description="The access scope of the tool ('public' or 'private')")
|
|
@@ -695,6 +775,9 @@ class Tool(CustomBaseModel):
|
|
|
695
775
|
raise ValueError("name cannot be blank")
|
|
696
776
|
if ":" in value or "/" in value:
|
|
697
777
|
raise ValueError("name cannot contain ':' or '/'")
|
|
778
|
+
# if not re.match(r'^[A-Za-z0-9_-]{1,64}$', value):
|
|
779
|
+
# raise ValueError(
|
|
780
|
+
# "name must contain only letters, numbers, underscores, or hyphens, and be 1-64 characters long")
|
|
698
781
|
return value
|
|
699
782
|
|
|
700
783
|
@field_validator("public_name")
|
|
@@ -713,6 +796,7 @@ class Tool(CustomBaseModel):
|
|
|
713
796
|
raise ValueError("public_name is required if access_scope is 'public'")
|
|
714
797
|
return self
|
|
715
798
|
|
|
799
|
+
'''
|
|
716
800
|
@model_validator(mode="after")
|
|
717
801
|
def validate_api_tool_requirements(self):
|
|
718
802
|
if self.scope == "api" and not (self.open_api or self.open_api_json):
|
|
@@ -722,6 +806,7 @@ class Tool(CustomBaseModel):
|
|
|
722
806
|
if len(param_keys) != len(set(param_keys)):
|
|
723
807
|
raise ValueError("All parameter keys must be unique within the tool")
|
|
724
808
|
return self
|
|
809
|
+
'''
|
|
725
810
|
|
|
726
811
|
@field_validator("parameters", mode="before")
|
|
727
812
|
@classmethod
|
|
@@ -848,7 +933,7 @@ class ReasoningStrategy(CustomBaseModel):
|
|
|
848
933
|
"systemPrompt": self.system_prompt,
|
|
849
934
|
"accessScope": self.access_scope,
|
|
850
935
|
"type": self.type,
|
|
851
|
-
"localizedDescriptions": [desc.to_dict() for desc in self.localized_descriptions],
|
|
936
|
+
"localizedDescriptions": [desc.to_dict() for desc in self.localized_descriptions] if isinstance(self.localized_descriptions, list) else None,
|
|
852
937
|
"id": self.id
|
|
853
938
|
}
|
|
854
939
|
return {k: v for k, v in result.items() if v is not None}
|
|
@@ -897,6 +982,7 @@ class KnowledgeBase(CustomBaseModel):
|
|
|
897
982
|
artifact_type_name: Optional[List[str]] = Field(None, alias="artifactTypeName", description="List of artifact type names")
|
|
898
983
|
artifacts: Optional[List[str]] = Field(None, description="List of artifact identifiers")
|
|
899
984
|
metadata: Optional[List[str]] = Field(None, description="List of metadata identifiers")
|
|
985
|
+
created_at: Optional[str] = Field(None, alias="createdAt", description="Timestamp when the knowledge base was created")
|
|
900
986
|
|
|
901
987
|
@field_validator("artifacts")
|
|
902
988
|
@classmethod
|
|
@@ -1248,6 +1334,7 @@ class Task(CustomBaseModel):
|
|
|
1248
1334
|
:param artifact_types: Optional[List[dict]] - List of artifact types with 'name', 'description', 'isRequired', 'usageType', and 'artifactVariableKey'.
|
|
1249
1335
|
:param is_draft: Optional[bool] - Whether the task is in draft mode.
|
|
1250
1336
|
:param revision: Optional[int] - Revision number of the task.
|
|
1337
|
+
:param version: Optional[int] - Version number of the task.
|
|
1251
1338
|
:param status: Optional[str] - Current status of the task (e.g., 'active').
|
|
1252
1339
|
"""
|
|
1253
1340
|
name: str = Field(..., description="Name of the task")
|
|
@@ -1258,6 +1345,7 @@ class Task(CustomBaseModel):
|
|
|
1258
1345
|
artifact_types: Optional[Union[List[Dict[str, Any]], List[ArtifactType], ArtifactTypeList]] = Field(None, alias="artifactTypes", description="List of artifact types for the task")
|
|
1259
1346
|
is_draft: Optional[bool] = Field(None, alias="isDraft", description="Whether the task is a draft")
|
|
1260
1347
|
revision: Optional[int] = Field(None, description="Revision number of the task")
|
|
1348
|
+
version: Optional[int] = Field(None, description="Version number of the task")
|
|
1261
1349
|
status: Optional[str] = Field(None, description="Status of the task (e.g., 'active')")
|
|
1262
1350
|
|
|
1263
1351
|
@field_validator("name")
|
|
@@ -1346,6 +1434,7 @@ class Task(CustomBaseModel):
|
|
|
1346
1434
|
"artifactTypes": self.artifact_types.to_dict() if self.artifact_types else None,
|
|
1347
1435
|
"isDraft": self.is_draft,
|
|
1348
1436
|
"revision": self.revision,
|
|
1437
|
+
"version": self.version,
|
|
1349
1438
|
"status": self.status
|
|
1350
1439
|
}
|
|
1351
1440
|
return {k: v for k, v in result.items() if v is not None}
|
|
@@ -1548,7 +1637,7 @@ class Job(CustomBaseModel):
|
|
|
1548
1637
|
"""
|
|
1549
1638
|
caption: str = Field(..., alias="caption", description="Description of the job's status and completion time")
|
|
1550
1639
|
name: str = Field(..., alias="name", description="Name of the job")
|
|
1551
|
-
parameters: List[JobParameter] = Field(
|
|
1640
|
+
parameters: Optional[List[JobParameter]] = Field([], alias="parameters", description="List of parameters for the job")
|
|
1552
1641
|
request: str = Field(..., alias="request", description="Timestamp when the job was requested")
|
|
1553
1642
|
token: str = Field(..., alias="token", description="Unique token identifier for the job")
|
|
1554
1643
|
topic: str = Field(..., alias="topic", description="Topic associated with the job")
|
|
@@ -1579,7 +1668,7 @@ class Job(CustomBaseModel):
|
|
|
1579
1668
|
result = {
|
|
1580
1669
|
"caption": self.caption,
|
|
1581
1670
|
"name": self.name,
|
|
1582
|
-
"parameters": [param.to_dict() for param in self.parameters] if self.parameters else
|
|
1671
|
+
"parameters": [param.to_dict() for param in self.parameters] if self.parameters else [],
|
|
1583
1672
|
"request": self.request,
|
|
1584
1673
|
"token": self.token,
|
|
1585
1674
|
"topic": self.topic,
|