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.

Files changed (336) hide show
  1. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/PKG-INFO +2 -2
  2. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/__init__.py +1 -0
  3. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/conftest.py +17 -0
  4. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_assistant_service.py +535 -0
  5. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_datasource_service.py +434 -0
  6. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_integration_service.py +221 -0
  7. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_llm_service.py +19 -0
  8. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_task_service.py +139 -0
  9. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_user_service.py +41 -0
  10. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_workflow_execution_service.py +156 -0
  11. codemie_test_harness-0.1.137/codemie_test_harness/tests/service/test_workflow_service.py +257 -0
  12. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/assistant_utils.py +39 -4
  13. codemie_test_harness-0.1.137/codemie_test_harness/tests/utils/llm_utils.py +9 -0
  14. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/search_utils.py +11 -5
  15. codemie_test_harness-0.1.137/codemie_test_harness/tests/utils/user_utils.py +9 -0
  16. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/workflow_utils.py +34 -6
  17. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/pyproject.toml +2 -2
  18. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_assistant_service.py +0 -565
  19. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_datasource_service.py +0 -450
  20. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_integration_service.py +0 -210
  21. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_llm_service.py +0 -20
  22. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_task_service.py +0 -151
  23. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_user_service.py +0 -24
  24. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_workflow_execution_service.py +0 -183
  25. codemie_test_harness-0.1.135/codemie_test_harness/tests/service/test_workflow_service.py +0 -256
  26. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/README.md +0 -0
  27. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/.env +0 -0
  28. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/__init__.py +0 -0
  29. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/__init__.py +0 -0
  30. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/cli.py +0 -0
  31. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/commands/__init__.py +0 -0
  32. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/commands/config_cmd.py +0 -0
  33. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/commands/run_cmd.py +0 -0
  34. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/constants.py +0 -0
  35. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/runner.py +0 -0
  36. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/cli/utils.py +0 -0
  37. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/pytest.ini +0 -0
  38. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/__init__.py +0 -0
  39. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/__init__.py +0 -0
  40. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_code_datasource.py +0 -0
  41. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_confluence_datasource.py +0 -0
  42. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_file_indexing.py +0 -0
  43. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_google_datasource.py +0 -0
  44. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/datasource/test_jira_datasource.py +0 -0
  45. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/default_integrations/__init__.py +0 -0
  46. {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
  47. {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
  48. {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
  49. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/test_assistants.py +0 -0
  50. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/__init__.py +0 -0
  51. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/ado/__init__.py +0 -0
  52. {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
  53. {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
  54. {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
  55. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/cloud/__init__.py +0 -0
  56. {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
  57. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/codebase/__init__.py +0 -0
  58. {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
  59. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/datamanagement/__init__.py +0 -0
  60. {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
  61. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/filemanagement/__init__.py +0 -0
  62. {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
  63. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/git/__init__.py +0 -0
  64. {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
  65. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/mcp/__init__.py +0 -0
  66. {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
  67. {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
  68. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/notification/__init__.py +0 -0
  69. {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
  70. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/openapi/__init__.py +0 -0
  71. {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
  72. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/plugin/__init__.py +0 -0
  73. {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
  74. {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
  75. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/project_management/__init__.py +0 -0
  76. {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
  77. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/research/__init__.py +0 -0
  78. {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
  79. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/servicenow/__init__.py +0 -0
  80. {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
  81. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/assistant/tools/vcs/__init__.py +0 -0
  82. {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
  83. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/e2e/__init__.py +0 -0
  84. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/e2e/test_e2e.py +0 -0
  85. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/__init__.py +0 -0
  86. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/integrations.py +0 -0
  87. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/model_types.py +0 -0
  88. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/enums/tools.py +0 -0
  89. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/__init__.py +0 -0
  90. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/project/__init__.py +0 -0
  91. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/project/test_default_integrations.py +0 -0
  92. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/project/test_project_integrations.py +0 -0
  93. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/user/__init__.py +0 -0
  94. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/user/test_default_integrations.py +0 -0
  95. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/integrations/user/test_user_integrations.py +0 -0
  96. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/llm/__init__.py +0 -0
  97. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/llm/assistants/__init__.py +0 -0
  98. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/llm/assistants/test_llm.py +0 -0
  99. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/providers/__init__.py +0 -0
  100. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/providers/test_providers_endpoints.py +0 -0
  101. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/__init__.py +0 -0
  102. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_assistant.py +0 -0
  103. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_datasource.py +0 -0
  104. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_integration.py +0 -0
  105. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/search/test_search_workflow.py +0 -0
  106. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/service/__init__.py +0 -0
  107. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/__init__.py +0 -0
  108. {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
  109. {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
  110. {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
  111. {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
  112. {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
  113. {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
  114. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/direct_tools/__init__.py +0 -0
  115. {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
  116. {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
  117. {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
  118. {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
  119. {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
  120. {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
  121. {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
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {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
  129. {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
  130. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/file_test_data.py +0 -0
  131. {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
  132. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/provider_payload.json +0 -0
  133. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.csv +0 -0
  134. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.docx +0 -0
  135. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.gif +0 -0
  136. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.ini +0 -0
  137. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.jpeg +0 -0
  138. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.jpg +0 -0
  139. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.json +0 -0
  140. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.pdf +0 -0
  141. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.png +0 -0
  142. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.pptx +0 -0
  143. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.txt +0 -0
  144. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.vtt +0 -0
  145. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.xlsx +0 -0
  146. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.xml +0 -0
  147. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/files/test.yaml +0 -0
  148. {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
  149. {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
  150. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/index_test_data.py +0 -0
  151. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/integrations_test_data.py +0 -0
  152. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/llm_test_data.py +0 -0
  153. {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
  154. {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
  155. {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
  156. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/openapi.json +0 -0
  157. {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
  158. {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
  159. {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
  160. {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
  161. {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
  162. {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
  163. {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
  164. {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
  165. {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
  166. {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
  167. {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
  168. {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
  169. {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
  170. {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
  171. {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
  172. {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
  173. {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
  174. {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
  175. {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
  176. {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
  177. {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
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {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
  190. {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
  191. {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
  192. {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
  193. {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
  194. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/test_data/workflow_validation_messages.py +0 -0
  195. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/__init__.py +0 -0
  196. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/conftest.py +0 -0
  197. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/__init__.py +0 -0
  198. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/assistants/__init__.py +0 -0
  199. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/assistants/assistants_page.py +0 -0
  200. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/base_page.py +0 -0
  201. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/__init__.py +0 -0
  202. {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
  203. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/header.py +0 -0
  204. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/pop_up.py +0 -0
  205. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/workflow_card.py +0 -0
  206. {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
  207. {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
  208. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/components/workflow_sidebar.py +0 -0
  209. {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
  210. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/login_page.py +0 -0
  211. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/__init__.py +0 -0
  212. {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
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/pageobject/workflows/workflows_page.py +0 -0
  220. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_create_workflow.py +0 -0
  221. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_edit_workflow.py +0 -0
  222. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflow_details.py +0 -0
  223. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflow_executions_page.py +0 -0
  224. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflow_templates.py +0 -0
  225. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/ui/test_workflows.py +0 -0
  226. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/__init__.py +0 -0
  227. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/aws_parameters_store.py +0 -0
  228. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/base_utils.py +0 -0
  229. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/client_factory.py +0 -0
  230. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/constants.py +0 -0
  231. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/datasource_utils.py +0 -0
  232. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/file_utils.py +0 -0
  233. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/gitbud_utils.py +0 -0
  234. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/http_utils.py +0 -0
  235. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/integration_utils.py +0 -0
  236. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/json_utils.py +0 -0
  237. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/logger_util.py +0 -0
  238. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/notification_utils.py +0 -0
  239. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/provider_utils.py +0 -0
  240. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/pytest_utils.py +0 -0
  241. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/similarity_check.py +0 -0
  242. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/utils/yaml_utils.py +0 -0
  243. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/__init__.py +0 -0
  244. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/__init__.py +0 -0
  245. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/ado/__init__.py +0 -0
  246. {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
  247. {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
  248. {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
  249. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/cloud/__init__.py +0 -0
  250. {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
  251. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/codebase/__init__.py +0 -0
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/git/__init__.py +0 -0
  262. {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
  263. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/mcp/__init__.py +0 -0
  264. {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
  265. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/notification/__init__.py +0 -0
  266. {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
  267. {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
  268. {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
  269. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/plugin/__init__.py +0 -0
  270. {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
  271. {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
  272. {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
  273. {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
  274. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/research/__init__.py +0 -0
  275. {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
  276. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/servicenow/__init__.py +0 -0
  277. {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
  278. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/assistant_tools/vcs/__init__.py +0 -0
  279. {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
  280. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/config_validation/__init__.py +0 -0
  281. {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
  282. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/direct_tools_calling/__init__.py +0 -0
  283. {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
  284. {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
  285. {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
  286. {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
  287. {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
  288. {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
  289. {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
  290. {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
  291. {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
  292. {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
  293. {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
  294. {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
  295. {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
  296. {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
  297. {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
  298. {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
  299. {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
  300. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/test_workflows.py +0 -0
  301. {codemie_test_harness-0.1.135 → codemie_test_harness-0.1.137}/codemie_test_harness/tests/workflow/virtual_assistant_tools/__init__.py +0 -0
  302. {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
  303. {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
  304. {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
  305. {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
  306. {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
  307. {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
  308. {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
  309. {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
  310. {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
  311. {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
  312. {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
  313. {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
  314. {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
  315. {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
  316. {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
  317. {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
  318. {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
  319. {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
  320. {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
  321. {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
  322. {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
  323. {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
  324. {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
  325. {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
  326. {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
  327. {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
  328. {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
  329. {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
  330. {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
  331. {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
  332. {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
  333. {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
  334. {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
  335. {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
  336. {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.135
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.135)
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)
@@ -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))}_"
@@ -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))