codemie-test-harness 0.1.135__tar.gz → 0.1.137__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of codemie-test-harness might be problematic. Click here for more details.
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/PKG-INFO +2 -2
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/__init__.py +1 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/conftest.py +17 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_assistant_service.py +535 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_datasource_service.py +434 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_integration_service.py +221 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_llm_service.py +19 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_task_service.py +139 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_user_service.py +41 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_workflow_execution_service.py +156 -0
- codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_workflow_service.py +257 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/assistant_utils.py +39 -4
- codemie_test_harness-0.1.137/codemie_test_harness/tests/utils/llm_utils.py +9 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/search_utils.py +11 -5
- codemie_test_harness-0.1.137/codemie_test_harness/tests/utils/user_utils.py +9 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/workflow_utils.py +34 -6
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/pyproject.toml +2 -2
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_assistant_service.py +0 -565
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_datasource_service.py +0 -450
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_integration_service.py +0 -210
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_llm_service.py +0 -20
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_task_service.py +0 -151
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_user_service.py +0 -24
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_workflow_execution_service.py +0 -183
- codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_workflow_service.py +0 -256
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/README.md +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/.env +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/cli.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/commands/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/commands/config_cmd.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/commands/run_cmd.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/constants.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/runner.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/pytest.ini +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_code_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_confluence_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_file_indexing.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_google_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_jira_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/default_integrations/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/test_assistants.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/ado/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_test_plan_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_wiki_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_work_item_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/cloud/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/cloud/test_cloud_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/codebase/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/codebase/test_codebase_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/datamanagement/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/datamanagement/test_assistant_with_data_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/filemanagement/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/filemanagement/test_assistant_with_file_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/git/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/git/test_assistant_with_git_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/mcp/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/mcp/test_cli_mcp_server.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/mcp/test_mcp_servers.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/notification/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/notification/test_assistant_notification_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/openapi/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/openapi/test_assistant_with_open_api_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/plugin/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/plugin/test_assistant_with_development_plugin.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/plugin/test_assistant_with_plugin_and_mcp_servers.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/project_management/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/project_management/test_assistant_pm_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/research/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/research/test_assistant_research_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/servicenow/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/servicenow/test_servicenow_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/vcs/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/vcs/test_assistant_with_vcs_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/e2e/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/e2e/test_e2e.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/integrations.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/model_types.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/project/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/project/test_default_integrations.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/project/test_project_integrations.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/user/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/user/test_default_integrations.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/user/test_user_integrations.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/llm/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/llm/assistants/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/llm/assistants/test_llm.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/providers/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/providers/test_providers_endpoints.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_assistant.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_integration.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_workflow.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/service/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/ado_test_plan_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/ado_wiki_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/cloud_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/codebase_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/data_management_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/ado_test_plan_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/ado_wiki_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/ado_work_item_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/cloud_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/codebase_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/data_management_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/direct_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/file_management_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/notification_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/open_api_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/project_management_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/research_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/servicenow_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/vcs_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/file_management_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/file_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/large-files/large_file.txt +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/provider_payload.json +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.csv +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.docx +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.gif +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.ini +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.jpeg +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.jpg +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.json +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.pdf +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.png +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.pptx +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.txt +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.vtt +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.xlsx +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.xml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/git_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/google_datasource_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/index_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/integrations_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/llm_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/mcp_server_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/notification_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/open_api_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/openapi.json +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/output_schema_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/plugin_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/pm_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/project_management_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/research_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/servicenow_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/vcs_tools_test_data.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_assistant_id.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_assistant_in_state.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_data_source.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_state.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_tool.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_yaml.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/invalid_yaml_format.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_assistant_id.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_assistant_tools_name.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_backoff_factor.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_initial_interval.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_max_attempts.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_retry_max_interval.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_id.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_expression.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_otherwise.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_then.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_condition.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_state_id.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_default.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_backoff_factor.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_initial_interval.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_max_attempts.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_states_retry_max_interval.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_system_prompt.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_tools_id.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow/invalid_config/missing_required_tools_name.yaml +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow_validation_messages.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/conftest.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/assistants/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/base_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/execution_history_row.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/header.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/pop_up.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/workflow_card.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/workflow_execution_history_item.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/workflow_execution_state.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/workflow_state_card.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/login_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/base_workflow_form_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/create_workflow_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/edit_workflow_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_details_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_executions_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_template_details.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/workflow_templates_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_create_workflow.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_edit_workflow.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflow_details.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflow_executions_page.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflow_templates.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflows.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/aws_parameters_store.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/base_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/client_factory.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/constants.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/datasource_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/file_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/gitbud_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/http_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/integration_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/json_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/logger_util.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/notification_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/provider_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/pytest_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/similarity_check.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/yaml_utils.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/ado/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_test_plan_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_wiki_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_work_item_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/cloud/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/cloud/test_workflow_with_assistant_cloud_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/codebase/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/codebase/test_worfklow_with_assistant_codebase_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/data_management/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/default_integrations/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/file_management/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/file_management/test_workflow_with_assistant_with_file_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/git/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/git/test_workflow_with_assistant_git_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/mcp/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/mcp/test_workflow_with_assistant_with_mcp_server.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/notification/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/notification/test_workflow_with_assistant_notification_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/open_api/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/open_api/test_workflow_with_assistant_with_open_api_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/plugin/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_development_plugin.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_plugin_and_mcp_servers.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/project_management/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/project_management/test_workflow_with_assistant_pm_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/research/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/research/test_workflow_with_assistant_research_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/servicenow/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/vcs/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/vcs/workflow_with_assistant_vcs_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/config_validation/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/config_validation/test_config_validation.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_test_plan_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_wiki_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_work_item_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_cloud_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_codebase_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_data_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_file_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_notification_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_open_api_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_plugin_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_project_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_research_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_servicenow_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/test_workflows.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_test_plan_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_wiki_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_work_item_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/cloud/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/cloud/test_workflow_with_cloud_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/codebase/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/codebase/test_workflow_with_codebase_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/file_management/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/file_management/test_workflow_with_file_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/git/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/git/test_workflow_with_git_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/mcp/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/mcp/test_workflow_with_mcp_server.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/notification/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/notification/test_workflow_with_notification_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/open_api/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/open_api/test_workflow_with_open_api_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin/test_workflow_with_development_plugin.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin/test_workflow_with_plugin_and_mcp_servers.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/project_management/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/project_management/test_workflow_with_project_management_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/research/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/research/test_workflow_with_research_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py +0 -0
- {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: codemie-test-harness
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.137
|
|
4
4
|
Summary: Autotest for CodeMie backend and UI
|
|
5
5
|
Author: Anton Yeromin
|
|
6
6
|
Author-email: anton_yeromin@epam.com
|
|
@@ -13,7 +13,7 @@ Requires-Dist: aws-assume-role-lib (>=2.10.0,<3.0.0)
|
|
|
13
13
|
Requires-Dist: boto3 (>=1.39.8,<2.0.0)
|
|
14
14
|
Requires-Dist: click (>=8.1.7,<9.0.0)
|
|
15
15
|
Requires-Dist: codemie-plugins (>=0.1.123,<0.2.0)
|
|
16
|
-
Requires-Dist: codemie-sdk-python (==0.1.
|
|
16
|
+
Requires-Dist: codemie-sdk-python (==0.1.137)
|
|
17
17
|
Requires-Dist: pytest (>=8.4.1,<9.0.0)
|
|
18
18
|
Requires-Dist: pytest-playwright (>=0.7.0,<0.8.0)
|
|
19
19
|
Requires-Dist: pytest-reportportal (>=5.5.2,<6.0.0)
|
{codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/__init__.py
RENAMED
|
@@ -37,6 +37,7 @@ LANGFUSE_TRACES_ENABLED = (
|
|
|
37
37
|
|
|
38
38
|
PROJECT = os.getenv("PROJECT_NAME", "codemie")
|
|
39
39
|
TEST_USER = os.getenv("TEST_USER_FULL_NAME", "Test User")
|
|
40
|
+
GITHUB_URL = os.getenv("GITHUB_URL", "https://github.com")
|
|
40
41
|
|
|
41
42
|
autotest_entity_prefix = (
|
|
42
43
|
f"{''.join(random.choice(string.ascii_lowercase) for _ in range(3))}_"
|
{codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/conftest.py
RENAMED
|
@@ -22,6 +22,7 @@ from codemie_sdk.models.integration import (
|
|
|
22
22
|
Integration,
|
|
23
23
|
)
|
|
24
24
|
from codemie_sdk.models.workflow import WorkflowCreateRequest, WorkflowMode, Workflow
|
|
25
|
+
|
|
25
26
|
from codemie_test_harness.tests import PROJECT, autotest_entity_prefix
|
|
26
27
|
from codemie_test_harness.tests.test_data.google_datasource_test_data import (
|
|
27
28
|
GOOGLE_DOC_URL,
|
|
@@ -34,11 +35,13 @@ from codemie_test_harness.tests.utils.constants import TESTS_PATH
|
|
|
34
35
|
from codemie_test_harness.tests.utils.datasource_utils import DataSourceUtils
|
|
35
36
|
from codemie_test_harness.tests.utils.gitbud_utils import GitBudUtils
|
|
36
37
|
from codemie_test_harness.tests.utils.integration_utils import IntegrationUtils
|
|
38
|
+
from codemie_test_harness.tests.utils.llm_utils import LLMUtils
|
|
37
39
|
from codemie_test_harness.tests.utils.logger_util import setup_logger
|
|
38
40
|
from codemie_test_harness.tests.utils.notification_utils import GmailUtils
|
|
39
41
|
from codemie_test_harness.tests.utils.provider_utils import ProviderUtils
|
|
40
42
|
from codemie_test_harness.tests.utils.search_utils import SearchUtils
|
|
41
43
|
from codemie_test_harness.tests.utils.similarity_check import SimilarityCheck
|
|
44
|
+
from codemie_test_harness.tests.utils.user_utils import UserUtils
|
|
42
45
|
from codemie_test_harness.tests.utils.workflow_utils import WorkflowUtils
|
|
43
46
|
from codemie_test_harness.tests.utils.yaml_utils import (
|
|
44
47
|
WorkflowYamlModel,
|
|
@@ -190,6 +193,16 @@ def search_utils(client):
|
|
|
190
193
|
return SearchUtils(client)
|
|
191
194
|
|
|
192
195
|
|
|
196
|
+
@pytest.fixture(scope="session")
|
|
197
|
+
def user_utils(client):
|
|
198
|
+
return UserUtils(client)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
@pytest.fixture(scope="session")
|
|
202
|
+
def llm_utils(client):
|
|
203
|
+
return LLMUtils(client)
|
|
204
|
+
|
|
205
|
+
|
|
193
206
|
@pytest.fixture(scope="function")
|
|
194
207
|
def git_integration(integration_utils):
|
|
195
208
|
integration = integration_utils.create_integration(
|
|
@@ -434,6 +447,7 @@ def assistant(default_llm, assistant_utils):
|
|
|
434
447
|
context=None,
|
|
435
448
|
mcp_server=None,
|
|
436
449
|
project_name: str = None,
|
|
450
|
+
description: str = None,
|
|
437
451
|
system_prompt="You are a helpful integration test assistant",
|
|
438
452
|
):
|
|
439
453
|
nonlocal created_assistant
|
|
@@ -461,6 +475,7 @@ def assistant(default_llm, assistant_utils):
|
|
|
461
475
|
mcp_servers=[mcp_server] if mcp_server else [],
|
|
462
476
|
system_prompt=system_prompt,
|
|
463
477
|
project_name=project_name,
|
|
478
|
+
description=description,
|
|
464
479
|
)
|
|
465
480
|
return created_assistant
|
|
466
481
|
|
|
@@ -479,6 +494,7 @@ def workflow(workflow_utils):
|
|
|
479
494
|
assistant_model=None,
|
|
480
495
|
state_model=None,
|
|
481
496
|
project_name=None,
|
|
497
|
+
description=None,
|
|
482
498
|
):
|
|
483
499
|
workflow_name = workflow_name if workflow_name else get_random_name()
|
|
484
500
|
|
|
@@ -494,6 +510,7 @@ def workflow(workflow_utils):
|
|
|
494
510
|
created_workflow = workflow_utils.create_workflow(
|
|
495
511
|
workflow_name=workflow_name,
|
|
496
512
|
workflow_type=WorkflowMode.SEQUENTIAL,
|
|
513
|
+
description=description,
|
|
497
514
|
shared=True,
|
|
498
515
|
workflow_yaml=yaml_content,
|
|
499
516
|
project_name=project_name,
|
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import uuid
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
from codemie_sdk.models.assistant import (
|
|
7
|
+
AssistantBase,
|
|
8
|
+
Assistant,
|
|
9
|
+
AssistantUpdateRequest,
|
|
10
|
+
AssistantEvaluationRequest,
|
|
11
|
+
ToolKitDetails,
|
|
12
|
+
ToolDetails,
|
|
13
|
+
ChatMessage,
|
|
14
|
+
ChatRole,
|
|
15
|
+
BaseModelResponse,
|
|
16
|
+
)
|
|
17
|
+
from hamcrest import (
|
|
18
|
+
assert_that,
|
|
19
|
+
has_property,
|
|
20
|
+
has_item,
|
|
21
|
+
greater_than,
|
|
22
|
+
is_not,
|
|
23
|
+
all_of,
|
|
24
|
+
instance_of,
|
|
25
|
+
has_length,
|
|
26
|
+
equal_to,
|
|
27
|
+
starts_with,
|
|
28
|
+
is_,
|
|
29
|
+
any_of,
|
|
30
|
+
contains_string,
|
|
31
|
+
greater_than_or_equal_to,
|
|
32
|
+
less_than_or_equal_to,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
from codemie_test_harness.tests import PROJECT
|
|
36
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def validate_assistant_full_response(assistant):
|
|
40
|
+
assert_that(
|
|
41
|
+
assistant,
|
|
42
|
+
all_of(
|
|
43
|
+
instance_of(Assistant),
|
|
44
|
+
has_property("system_prompt"),
|
|
45
|
+
has_property("project"),
|
|
46
|
+
has_property("name"),
|
|
47
|
+
has_property("description"),
|
|
48
|
+
has_property("shared", instance_of(bool)),
|
|
49
|
+
has_property("is_react", instance_of(bool)),
|
|
50
|
+
has_property("is_global", instance_of(bool)),
|
|
51
|
+
has_property("system_prompt_history", instance_of(list)),
|
|
52
|
+
has_property("user_prompts", instance_of(list)),
|
|
53
|
+
has_property("context", instance_of(list)),
|
|
54
|
+
has_property("toolkits", instance_of(list)),
|
|
55
|
+
),
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@pytest.mark.regression
|
|
60
|
+
def test_get_tools(assistant_utils):
|
|
61
|
+
toolkits = assistant_utils.get_assistant_tools()
|
|
62
|
+
|
|
63
|
+
assert_that(toolkits, instance_of(list))
|
|
64
|
+
assert_that(toolkits, has_length(greater_than(0)))
|
|
65
|
+
|
|
66
|
+
toolkit = toolkits[0]
|
|
67
|
+
assert_that(
|
|
68
|
+
toolkit,
|
|
69
|
+
all_of(
|
|
70
|
+
instance_of(ToolKitDetails),
|
|
71
|
+
has_property("toolkit"),
|
|
72
|
+
has_property("tools", instance_of(list)),
|
|
73
|
+
),
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
if toolkit.tools:
|
|
77
|
+
tool = toolkit.tools[0]
|
|
78
|
+
assert_that(
|
|
79
|
+
tool,
|
|
80
|
+
all_of(
|
|
81
|
+
instance_of(ToolDetails),
|
|
82
|
+
has_property("name"),
|
|
83
|
+
has_property("label"),
|
|
84
|
+
has_property("settings_config", instance_of(bool)),
|
|
85
|
+
),
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def test_list_assistants_minimal_response(assistant_utils):
|
|
90
|
+
assistants = assistant_utils.get_assistants()
|
|
91
|
+
assert_that(assistants, all_of(instance_of(list), has_length(greater_than(0))))
|
|
92
|
+
|
|
93
|
+
for assistant in assistants:
|
|
94
|
+
assert_that(
|
|
95
|
+
assistant,
|
|
96
|
+
all_of(
|
|
97
|
+
instance_of(AssistantBase),
|
|
98
|
+
has_property("id"),
|
|
99
|
+
has_property("name"),
|
|
100
|
+
has_property("description"),
|
|
101
|
+
),
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def test_list_assistants_full_response(assistant_utils):
|
|
106
|
+
assistants = assistant_utils.get_assistants(minimal_response=False)
|
|
107
|
+
assert_that(assistants, all_of(instance_of(list), has_length(greater_than(0))))
|
|
108
|
+
|
|
109
|
+
for assistant in assistants:
|
|
110
|
+
assert_that(
|
|
111
|
+
assistant,
|
|
112
|
+
all_of(
|
|
113
|
+
instance_of(Assistant),
|
|
114
|
+
has_property("id"),
|
|
115
|
+
has_property("llm_model_type"),
|
|
116
|
+
has_property("creator"),
|
|
117
|
+
has_property("user_abilities", instance_of(list)),
|
|
118
|
+
has_property("created_date", instance_of(datetime)),
|
|
119
|
+
),
|
|
120
|
+
"Assistant should have valid core properties",
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
validate_assistant_full_response(assistant)
|
|
124
|
+
|
|
125
|
+
if assistant.created_by:
|
|
126
|
+
assert_that(
|
|
127
|
+
assistant.created_by,
|
|
128
|
+
all_of(
|
|
129
|
+
has_property("user_id", is_not(None)),
|
|
130
|
+
has_property("username", is_not(None)),
|
|
131
|
+
has_property("name", is_not(None)),
|
|
132
|
+
),
|
|
133
|
+
"created_by should have valid properties when present",
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def test_list_assistants_with_filters(assistant_utils):
|
|
138
|
+
filters = {"project": PROJECT, "shared": False}
|
|
139
|
+
assistants = assistant_utils.get_assistants(minimal_response=False, filters=filters)
|
|
140
|
+
|
|
141
|
+
assert_that(assistants, instance_of(list))
|
|
142
|
+
|
|
143
|
+
for assistant in assistants:
|
|
144
|
+
assert_that(assistant.project, equal_to(PROJECT))
|
|
145
|
+
assert_that(assistant.shared, is_(False))
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def test_list_assistants_with_pagination(assistant_utils):
|
|
149
|
+
# Get first page with 5 items
|
|
150
|
+
page_1 = assistant_utils.get_assistants(page=0, per_page=5)
|
|
151
|
+
assert_that(len(page_1), less_than_or_equal_to(5))
|
|
152
|
+
|
|
153
|
+
# Get second page with 5 items
|
|
154
|
+
page_2 = assistant_utils.get_assistants(page=1, per_page=5)
|
|
155
|
+
assert_that(len(page_2), less_than_or_equal_to(5))
|
|
156
|
+
|
|
157
|
+
# Verify pages contain different assistants
|
|
158
|
+
if page_2: # Only if there are items on second page
|
|
159
|
+
assert_that(page_1[0].id, is_not(page_2[0].id))
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def test_list_assistants_with_different_scopes(assistant_utils):
|
|
163
|
+
visible_assistants = assistant_utils.get_assistants(scope="visible_to_user")
|
|
164
|
+
assert_that(visible_assistants, instance_of(list))
|
|
165
|
+
|
|
166
|
+
created_assistants = assistant_utils.get_assistants(scope="created_by_user")
|
|
167
|
+
assert_that(created_assistants, instance_of(list))
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def test_get_assistant_by_id(assistant_utils):
|
|
171
|
+
assistants = assistant_utils.get_assistants()
|
|
172
|
+
assert_that(assistants, has_length(greater_than(0)))
|
|
173
|
+
test_assistant_id = assistants[0].id
|
|
174
|
+
|
|
175
|
+
assistant = assistant_utils.get_assistant_by_id(test_assistant_id)
|
|
176
|
+
assert_that(assistant.id, equal_to(test_assistant_id))
|
|
177
|
+
validate_assistant_full_response(assistant)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def test_get_assistant_not_found(assistant_utils):
|
|
181
|
+
"""Test getting a non-existent assistant."""
|
|
182
|
+
with pytest.raises(Exception) as exc_info:
|
|
183
|
+
assistant_utils.get_assistant_by_id("1234")
|
|
184
|
+
assert_that(
|
|
185
|
+
str(exc_info.value).lower(),
|
|
186
|
+
any_of(contains_string("service unavailable"), contains_string("404")),
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def test_get_assistant_by_slug(assistant_utils, default_llm):
|
|
191
|
+
toolkits = assistant_utils.get_assistant_tools()
|
|
192
|
+
assert_that(
|
|
193
|
+
toolkits,
|
|
194
|
+
has_length(greater_than(0)),
|
|
195
|
+
"At least one toolkit is required for testing",
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
first_toolkit = toolkits[0]
|
|
199
|
+
assert_that(
|
|
200
|
+
first_toolkit.tools,
|
|
201
|
+
has_length(greater_than(0)),
|
|
202
|
+
"No tools in the first toolkit",
|
|
203
|
+
)
|
|
204
|
+
first_tool = first_toolkit.tools[0]
|
|
205
|
+
test_slug = get_random_name()
|
|
206
|
+
created = assistant_utils.create_assistant(
|
|
207
|
+
llm_model_type=default_llm.base_name,
|
|
208
|
+
toolkits=[
|
|
209
|
+
ToolKitDetails(
|
|
210
|
+
toolkit=first_toolkit.toolkit, tools=[ToolDetails(name=first_tool.name)]
|
|
211
|
+
)
|
|
212
|
+
],
|
|
213
|
+
system_prompt="You are a helpful test assistant",
|
|
214
|
+
description="Test assistant for slug retrieval",
|
|
215
|
+
slug=test_slug,
|
|
216
|
+
project_name=PROJECT,
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
assert_that(created, is_not(None), "Failed to create test assistant")
|
|
220
|
+
full_assistant = assistant_utils.get_assistant_by_id(created.id)
|
|
221
|
+
retrieved = assistant_utils.get_assistant_by_slug(test_slug)
|
|
222
|
+
|
|
223
|
+
assert_that(
|
|
224
|
+
retrieved,
|
|
225
|
+
all_of(
|
|
226
|
+
instance_of(Assistant),
|
|
227
|
+
has_property("slug", test_slug),
|
|
228
|
+
has_property("name", full_assistant.name),
|
|
229
|
+
has_property("description", "Test assistant for slug retrieval"),
|
|
230
|
+
has_property("project", PROJECT),
|
|
231
|
+
has_property("system_prompt", is_not(None)),
|
|
232
|
+
has_property("created_date", instance_of(datetime)),
|
|
233
|
+
has_property("shared", instance_of(bool)),
|
|
234
|
+
has_property("is_react", instance_of(bool)),
|
|
235
|
+
has_property("toolkits", instance_of(list)),
|
|
236
|
+
),
|
|
237
|
+
"Retrieved assistant should have all expected properties",
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
assert_that(retrieved.toolkits, has_length(greater_than(0)))
|
|
241
|
+
assert_that(retrieved.toolkits[0].toolkit, equal_to(first_toolkit.toolkit))
|
|
242
|
+
assert_that(retrieved.toolkits[0].tools[0].name, equal_to(first_tool.name))
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def test_get_assistant_by_slug_non_found(assistant_utils):
|
|
246
|
+
with pytest.raises(Exception) as exc_info:
|
|
247
|
+
assistant_utils.get_assistant_by_slug("non-existent-assistant-slug")
|
|
248
|
+
assert_that(
|
|
249
|
+
str(exc_info.value).lower(),
|
|
250
|
+
any_of(contains_string("404"), contains_string("not found")),
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def test_assistant_full_lifecycle(assistant_utils, default_llm):
|
|
255
|
+
toolkits = assistant_utils.get_assistant_tools()
|
|
256
|
+
assert_that(
|
|
257
|
+
toolkits,
|
|
258
|
+
has_length(greater_than_or_equal_to(2)),
|
|
259
|
+
"At least two toolkits are required for testing",
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
# Get first toolkit and its first tool for initial creation
|
|
263
|
+
first_toolkit = toolkits[0]
|
|
264
|
+
assert_that(
|
|
265
|
+
first_toolkit.tools,
|
|
266
|
+
has_length(greater_than(0)),
|
|
267
|
+
"No tools in the first toolkit",
|
|
268
|
+
)
|
|
269
|
+
first_tool = first_toolkit.tools[0]
|
|
270
|
+
|
|
271
|
+
# Get second toolkit and its tool for update
|
|
272
|
+
second_toolkit = toolkits[1]
|
|
273
|
+
assert_that(
|
|
274
|
+
second_toolkit.tools,
|
|
275
|
+
has_length(greater_than(0)),
|
|
276
|
+
"No tools in the second toolkit",
|
|
277
|
+
)
|
|
278
|
+
second_tool = second_toolkit.tools[0]
|
|
279
|
+
|
|
280
|
+
# Step 2: Create assistant with first toolkit/tool
|
|
281
|
+
created = assistant_utils.create_assistant(
|
|
282
|
+
llm_model_type=default_llm.base_name,
|
|
283
|
+
toolkits=[
|
|
284
|
+
ToolKitDetails(
|
|
285
|
+
toolkit=first_toolkit.toolkit, tools=[ToolDetails(name=first_tool.name)]
|
|
286
|
+
)
|
|
287
|
+
],
|
|
288
|
+
system_prompt="You are a helpful integration test assistant",
|
|
289
|
+
description="Integration test assistant",
|
|
290
|
+
project_name=PROJECT,
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
assert_that(created, is_not(None))
|
|
294
|
+
assistant_name = created.name
|
|
295
|
+
|
|
296
|
+
# Step 3: Verify assistant exists in the list
|
|
297
|
+
filters = {"project": PROJECT, "shared": False}
|
|
298
|
+
assistants = assistant_utils.get_assistants(filters=filters)
|
|
299
|
+
found_assistant = next((a for a in assistants if a.name == assistant_name), None)
|
|
300
|
+
assert_that(
|
|
301
|
+
found_assistant,
|
|
302
|
+
is_not(None),
|
|
303
|
+
f"Created assistant '{assistant_name}' not found in list",
|
|
304
|
+
)
|
|
305
|
+
|
|
306
|
+
# Step 4: Update the assistant with second toolkit/tool
|
|
307
|
+
updated_name = f"{assistant_name} Updated"
|
|
308
|
+
update_request = AssistantUpdateRequest(
|
|
309
|
+
name=updated_name,
|
|
310
|
+
description=f"{updated_name} description",
|
|
311
|
+
system_prompt="You are an updated integration test assistant",
|
|
312
|
+
llm_model_type=default_llm.base_name,
|
|
313
|
+
toolkits=[
|
|
314
|
+
ToolKitDetails(
|
|
315
|
+
toolkit=second_toolkit.toolkit,
|
|
316
|
+
tools=[ToolDetails(name=second_tool.name)],
|
|
317
|
+
)
|
|
318
|
+
],
|
|
319
|
+
project=PROJECT,
|
|
320
|
+
is_react=True,
|
|
321
|
+
shared=False,
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
updated = assistant_utils.update_assistant(found_assistant.id, update_request)
|
|
325
|
+
assert_that(updated, is_not(None))
|
|
326
|
+
|
|
327
|
+
# Verify update in the list
|
|
328
|
+
assistants_after_update = assistant_utils.get_assistants(
|
|
329
|
+
minimal_response=False, filters=filters
|
|
330
|
+
)
|
|
331
|
+
found_updated = next(
|
|
332
|
+
(a for a in assistants_after_update if a.id == found_assistant.id), None
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
expected_name = f"{assistant_name} Updated"
|
|
336
|
+
expected_description = f"{updated_name} description"
|
|
337
|
+
expected_system_prompt = "You are an updated integration test assistant"
|
|
338
|
+
|
|
339
|
+
assert_that(found_updated, is_not(None), "Updated assistant should exist")
|
|
340
|
+
|
|
341
|
+
# Verify core assistant properties
|
|
342
|
+
assert_that(
|
|
343
|
+
found_updated,
|
|
344
|
+
all_of(
|
|
345
|
+
has_property("name", equal_to(expected_name)),
|
|
346
|
+
has_property("description", equal_to(expected_description)),
|
|
347
|
+
has_property("system_prompt", equal_to(expected_system_prompt)),
|
|
348
|
+
has_property("llm_model_type", equal_to(default_llm.base_name)),
|
|
349
|
+
),
|
|
350
|
+
"Updated assistant should have correct basic properties",
|
|
351
|
+
)
|
|
352
|
+
|
|
353
|
+
expected_toolkit = all_of(
|
|
354
|
+
has_property("toolkit", equal_to(second_toolkit.toolkit)),
|
|
355
|
+
has_property(
|
|
356
|
+
"tools",
|
|
357
|
+
has_item(has_property("name", equal_to(second_tool.name))),
|
|
358
|
+
),
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
assert_that(
|
|
362
|
+
found_updated.toolkits,
|
|
363
|
+
all_of(
|
|
364
|
+
has_length(greater_than(0)),
|
|
365
|
+
has_item(expected_toolkit),
|
|
366
|
+
),
|
|
367
|
+
"Updated assistant should have correct toolkit configuration",
|
|
368
|
+
)
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
def test_assistant_full_chat_functionality(assistant_utils, default_llm):
|
|
372
|
+
toolkits = assistant_utils.get_assistant_tools()
|
|
373
|
+
assert_that(
|
|
374
|
+
toolkits,
|
|
375
|
+
has_length(greater_than(0)),
|
|
376
|
+
"At least one toolkit is required for testing",
|
|
377
|
+
)
|
|
378
|
+
|
|
379
|
+
# Get first toolkit and its first tool
|
|
380
|
+
first_toolkit = toolkits[0]
|
|
381
|
+
assert_that(
|
|
382
|
+
first_toolkit.tools,
|
|
383
|
+
has_length(greater_than(0)),
|
|
384
|
+
"No tools in the first toolkit",
|
|
385
|
+
)
|
|
386
|
+
first_tool = first_toolkit.tools[0]
|
|
387
|
+
|
|
388
|
+
# Create assistant
|
|
389
|
+
created = assistant_utils.create_assistant(
|
|
390
|
+
description="Integration test assistant for chat",
|
|
391
|
+
system_prompt="You are a helpful integration test assistant. Always respond with 'Test response: ' prefix.",
|
|
392
|
+
llm_model_type=default_llm.base_name,
|
|
393
|
+
project_name=PROJECT,
|
|
394
|
+
toolkits=[
|
|
395
|
+
ToolKitDetails(
|
|
396
|
+
toolkit=first_toolkit.toolkit, tools=[ToolDetails(name=first_tool.name)]
|
|
397
|
+
)
|
|
398
|
+
],
|
|
399
|
+
)
|
|
400
|
+
|
|
401
|
+
assert created is not None
|
|
402
|
+
assistant_name = created.name
|
|
403
|
+
|
|
404
|
+
# Find assistant in the list
|
|
405
|
+
filters = {"project": PROJECT, "shared": False}
|
|
406
|
+
assistants = assistant_utils.get_assistants(filters=filters)
|
|
407
|
+
found_assistant = next((a for a in assistants if a.name == assistant_name), None)
|
|
408
|
+
assert_that(
|
|
409
|
+
found_assistant,
|
|
410
|
+
is_not(None),
|
|
411
|
+
f"Created assistant '{assistant_name}' not found in list",
|
|
412
|
+
)
|
|
413
|
+
|
|
414
|
+
# Test chat functionality
|
|
415
|
+
response = assistant_utils.ask_assistant(
|
|
416
|
+
assistant=found_assistant,
|
|
417
|
+
user_prompt="Hello, this is a test message",
|
|
418
|
+
minimal_response=False,
|
|
419
|
+
conversation_id=str(uuid.uuid4()),
|
|
420
|
+
history=[
|
|
421
|
+
ChatMessage(role=ChatRole.USER, message="Hi there"),
|
|
422
|
+
ChatMessage(role=ChatRole.ASSISTANT, message="Hello! How can I help you?"),
|
|
423
|
+
],
|
|
424
|
+
)
|
|
425
|
+
|
|
426
|
+
assert_that(
|
|
427
|
+
response,
|
|
428
|
+
all_of(
|
|
429
|
+
instance_of(BaseModelResponse),
|
|
430
|
+
has_property(
|
|
431
|
+
"generated", all_of(is_not(None), starts_with("Test response:"))
|
|
432
|
+
),
|
|
433
|
+
has_property("time_elapsed", is_not(None)),
|
|
434
|
+
has_property("tokens_used", is_(None)),
|
|
435
|
+
),
|
|
436
|
+
"Chat response should be valid BaseModelResponse with expected properties",
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
# Test streaming
|
|
440
|
+
stream_response = assistant_utils.ask_assistant(
|
|
441
|
+
assistant=found_assistant,
|
|
442
|
+
user_prompt="Hello, this is a streaming test",
|
|
443
|
+
conversation_id=str(uuid.uuid4()),
|
|
444
|
+
stream=True,
|
|
445
|
+
minimal_response=False,
|
|
446
|
+
)
|
|
447
|
+
|
|
448
|
+
received_chunks = []
|
|
449
|
+
for chunk in stream_response:
|
|
450
|
+
assert_that(chunk, is_not(None))
|
|
451
|
+
received_chunks.append(chunk)
|
|
452
|
+
assert_that(received_chunks, has_length(greater_than(0)))
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
def test_get_prebuilt_assistants(assistant_utils):
|
|
456
|
+
prebuilt_assistants = assistant_utils.get_prebuilt_assistant()
|
|
457
|
+
|
|
458
|
+
assert_that(prebuilt_assistants, instance_of(list))
|
|
459
|
+
assert_that(
|
|
460
|
+
prebuilt_assistants, has_length(greater_than(0)), "No prebuilt assistants found"
|
|
461
|
+
)
|
|
462
|
+
|
|
463
|
+
# Verify the first assistant by slug
|
|
464
|
+
first_assistant = prebuilt_assistants[0]
|
|
465
|
+
assert_that(first_assistant.slug, is_not(None), "Prebuilt assistant has no slug")
|
|
466
|
+
|
|
467
|
+
assistant_by_slug = assistant_utils.get_prebuilt_assistant_by_slug(
|
|
468
|
+
first_assistant.slug
|
|
469
|
+
)
|
|
470
|
+
|
|
471
|
+
# Compare assistant details
|
|
472
|
+
assert_that(
|
|
473
|
+
assistant_by_slug,
|
|
474
|
+
all_of(
|
|
475
|
+
instance_of(Assistant),
|
|
476
|
+
has_property("id", equal_to(first_assistant.id)),
|
|
477
|
+
has_property("slug", equal_to(first_assistant.slug)),
|
|
478
|
+
has_property("name", equal_to(first_assistant.name)),
|
|
479
|
+
has_property("description", equal_to(first_assistant.description)),
|
|
480
|
+
has_property("system_prompt", equal_to(first_assistant.system_prompt)),
|
|
481
|
+
),
|
|
482
|
+
)
|
|
483
|
+
|
|
484
|
+
# Compare assistant toolkits
|
|
485
|
+
assert_that(
|
|
486
|
+
assistant_by_slug.toolkits, has_length(equal_to(len(first_assistant.toolkits)))
|
|
487
|
+
)
|
|
488
|
+
for toolkit1, toolkit2 in zip(assistant_by_slug.toolkits, first_assistant.toolkits):
|
|
489
|
+
assert_that(
|
|
490
|
+
toolkit1,
|
|
491
|
+
all_of(
|
|
492
|
+
has_property("toolkit", equal_to(toolkit2.toolkit)),
|
|
493
|
+
has_property("tools", has_length(equal_to(len(toolkit2.tools)))),
|
|
494
|
+
),
|
|
495
|
+
)
|
|
496
|
+
for tool1, tool2 in zip(toolkit1.tools, toolkit2.tools):
|
|
497
|
+
assert_that(tool1, has_property("name", equal_to(tool2.name)))
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
@pytest.mark.skipif(
|
|
501
|
+
os.getenv("ENV") != "preview", reason="valid_assistant_id is for preview env"
|
|
502
|
+
)
|
|
503
|
+
def test_assistant_evaluate(assistant_utils):
|
|
504
|
+
valid_assistant_id = "05959338-06de-477d-9cc3-08369f858057"
|
|
505
|
+
valid_dataset_id = "codemie-faq-basic"
|
|
506
|
+
evaluation_request = AssistantEvaluationRequest(
|
|
507
|
+
dataset_id=valid_dataset_id, experiment_name=f"Eval {uuid.uuid4()}"
|
|
508
|
+
)
|
|
509
|
+
|
|
510
|
+
# Execute evaluation with minimal request
|
|
511
|
+
|
|
512
|
+
result = assistant_utils.send_evaluate_assistant_request(
|
|
513
|
+
valid_assistant_id, evaluation_request
|
|
514
|
+
)
|
|
515
|
+
|
|
516
|
+
# Verify response structure
|
|
517
|
+
assert_that(result, is_not(None))
|
|
518
|
+
assert_that(result, instance_of(dict))
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
def test_assistant_evaluate_not_found(assistant_utils):
|
|
522
|
+
invalid_assistant_id = "non-existent-assistant-id"
|
|
523
|
+
valid_dataset_id = "test-dataset-999"
|
|
524
|
+
evaluation_request = AssistantEvaluationRequest(
|
|
525
|
+
dataset_id=valid_dataset_id, experiment_name="Error Test"
|
|
526
|
+
)
|
|
527
|
+
|
|
528
|
+
# Test with non-existent assistant ID
|
|
529
|
+
with pytest.raises(Exception) as exc_info:
|
|
530
|
+
assistant_utils.send_evaluate_assistant_request(
|
|
531
|
+
invalid_assistant_id, evaluation_request
|
|
532
|
+
)
|
|
533
|
+
|
|
534
|
+
# Verify it's a proper error response
|
|
535
|
+
assert_that(exc_info.value, is_not(None))
|