alita-sdk 0.3.419__tar.gz → 0.3.421__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 alita-sdk might be problematic. Click here for more details.

Files changed (369) hide show
  1. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/utils.py +9 -1
  3. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/llm.py +4 -0
  4. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/base_indexer_toolkit.py +16 -1
  5. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/qtest/api_wrapper.py +291 -41
  6. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk.egg-info/PKG-INFO +1 -1
  7. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/pyproject.toml +1 -1
  8. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/LICENSE +0 -0
  9. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/README.md +0 -0
  10. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/__init__.py +0 -0
  11. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/community/__init__.py +0 -0
  12. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/community/utils.py +0 -0
  13. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/__init__.py +0 -0
  14. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/ado.py +0 -0
  15. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/azure_search.py +0 -0
  16. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/bigquery.py +0 -0
  17. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/bitbucket.py +0 -0
  18. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/browser.py +0 -0
  19. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/carrier.py +0 -0
  20. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/confluence.py +0 -0
  21. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/delta_lake.py +0 -0
  22. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/embedding.py +0 -0
  23. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/figma.py +0 -0
  24. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/github.py +0 -0
  25. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/gitlab.py +0 -0
  26. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/google_places.py +0 -0
  27. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/jira.py +0 -0
  28. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/pgvector.py +0 -0
  29. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/postman.py +0 -0
  30. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/qtest.py +0 -0
  31. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/rally.py +0 -0
  32. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/report_portal.py +0 -0
  33. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/salesforce.py +0 -0
  34. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/service_now.py +0 -0
  35. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/sharepoint.py +0 -0
  36. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/slack.py +0 -0
  37. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/sonar.py +0 -0
  38. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/sql.py +0 -0
  39. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/testio.py +0 -0
  40. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/testrail.py +0 -0
  41. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/xray.py +0 -0
  42. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/zephyr.py +0 -0
  43. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
  44. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/configurations/zephyr_essential.py +0 -0
  45. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/__init__.py +0 -0
  46. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/clients/__init__.py +0 -0
  47. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/clients/artifact.py +0 -0
  48. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/clients/client.py +0 -0
  49. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/clients/datasource.py +0 -0
  50. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/clients/prompt.py +0 -0
  51. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/clients/sandbox_client.py +0 -0
  52. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/__init__.py +0 -0
  53. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  54. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  55. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/assistant.py +0 -0
  56. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  57. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/constants.py +0 -0
  58. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  59. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  60. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  61. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  62. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  63. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  64. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  65. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  66. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
  67. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  68. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
  69. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
  70. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
  71. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
  72. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  73. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  74. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
  75. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
  76. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  77. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
  78. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  79. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/indexer.py +0 -0
  80. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  81. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  82. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  83. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  84. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  85. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  86. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  87. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  88. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  89. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  90. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  91. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  92. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  93. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  94. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  95. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  96. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  97. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  98. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  99. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  100. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  101. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  102. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  103. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  104. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/llms/__init__.py +0 -0
  105. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/llms/preloaded.py +0 -0
  106. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  107. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/application.py +0 -0
  108. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  109. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/configurations.py +0 -0
  110. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  111. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  112. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  113. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/tools.py +0 -0
  114. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  115. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/__init__.py +0 -0
  116. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/agent.py +0 -0
  117. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/application.py +0 -0
  118. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/artifact.py +0 -0
  119. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/datasource.py +0 -0
  120. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/echo.py +0 -0
  121. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/function.py +0 -0
  122. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/graph.py +0 -0
  123. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/image_generation.py +0 -0
  124. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  125. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/loop.py +0 -0
  126. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/loop_output.py +0 -0
  127. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  128. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  129. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/prompt.py +0 -0
  130. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/router.py +0 -0
  131. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/sandbox.py +0 -0
  132. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/tool.py +0 -0
  133. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/vectorstore.py +0 -0
  134. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/tools/vectorstore_base.py +0 -0
  135. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  136. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/__init__.py +0 -0
  137. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/constants.py +0 -0
  138. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/evaluate.py +0 -0
  139. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/logging.py +0 -0
  140. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  141. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/streamlit.py +0 -0
  142. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
  143. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
  144. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/runtime/utils/utils.py +0 -0
  145. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/__init__.py +0 -0
  146. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/__init__.py +0 -0
  147. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/repos/__init__.py +0 -0
  148. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
  149. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
  150. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  151. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/utils.py +0 -0
  152. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
  153. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  154. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
  155. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  156. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  157. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  158. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/aws/__init__.py +0 -0
  159. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
  160. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
  161. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
  162. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
  163. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  164. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
  165. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  166. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/base/__init__.py +0 -0
  167. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/base/tool.py +0 -0
  168. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/bitbucket/__init__.py +0 -0
  169. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
  170. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  171. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  172. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/browser/__init__.py +0 -0
  173. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/browser/crawler.py +0 -0
  174. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  175. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  176. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/browser/utils.py +0 -0
  177. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/browser/wiki.py +0 -0
  178. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/__init__.py +0 -0
  179. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  180. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  181. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  182. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  183. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  184. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  185. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  186. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  187. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  188. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  189. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  190. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/tools.py +0 -0
  191. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  192. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  193. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/carrier/utils.py +0 -0
  194. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/__init__.py +0 -0
  195. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  196. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  197. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  198. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  199. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  200. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  201. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  202. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  203. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  204. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  205. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  206. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  207. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  208. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  209. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  210. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  211. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  212. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  213. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/models.py +0 -0
  214. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  215. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  216. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
  217. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  218. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  219. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  220. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/chunkers/utils.py +0 -0
  221. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/__init__.py +0 -0
  222. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  223. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  224. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  225. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  226. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  227. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  228. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  229. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  230. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/code/__init__.py +0 -0
  231. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/code/linter/__init__.py +0 -0
  232. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  233. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  234. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  235. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  236. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/code_indexer_toolkit.py +0 -0
  237. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/confluence/__init__.py +0 -0
  238. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  239. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/confluence/loader.py +0 -0
  240. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/confluence/utils.py +0 -0
  241. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  242. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  243. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/elastic/__init__.py +0 -0
  244. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  245. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/elitea_base.py +0 -0
  246. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/figma/__init__.py +0 -0
  247. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  248. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/github/__init__.py +0 -0
  249. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/github/api_wrapper.py +0 -0
  250. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/github/github_client.py +0 -0
  251. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  252. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/github/schemas.py +0 -0
  253. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/github/tool.py +0 -0
  254. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/github/tool_prompts.py +0 -0
  255. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gitlab/__init__.py +0 -0
  256. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
  257. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gitlab/tools.py +0 -0
  258. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gitlab/utils.py +0 -0
  259. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  260. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  261. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gmail/__init__.py +0 -0
  262. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  263. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/gmail/utils.py +0 -0
  264. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/google/__init__.py +0 -0
  265. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
  266. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
  267. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
  268. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/google/bigquery/tool.py +0 -0
  269. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/google_places/__init__.py +0 -0
  270. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  271. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/jira/__init__.py +0 -0
  272. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  273. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/keycloak/__init__.py +0 -0
  274. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  275. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/llm/__init__.py +0 -0
  276. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/llm/img_utils.py +0 -0
  277. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/llm/llm_utils.py +0 -0
  278. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/localgit/__init__.py +0 -0
  279. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/localgit/local_git.py +0 -0
  280. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/localgit/tool.py +0 -0
  281. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/memory/__init__.py +0 -0
  282. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
  283. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ocr/__init__.py +0 -0
  284. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  285. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/ocr/text_detection.py +0 -0
  286. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/openapi/__init__.py +0 -0
  287. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/__init__.py +0 -0
  288. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  289. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  290. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  291. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  292. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  293. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  294. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  295. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  296. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  297. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  298. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  299. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  300. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  301. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  302. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  303. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  304. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  305. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  306. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/postman/__init__.py +0 -0
  307. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  308. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  309. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pptx/__init__.py +0 -0
  310. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  311. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/qtest/__init__.py +0 -0
  312. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/qtest/tool.py +0 -0
  313. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/rally/__init__.py +0 -0
  314. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  315. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/report_portal/__init__.py +0 -0
  316. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  317. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  318. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/salesforce/__init__.py +0 -0
  319. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  320. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/salesforce/model.py +0 -0
  321. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/servicenow/__init__.py +0 -0
  322. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  323. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  324. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/sharepoint/__init__.py +0 -0
  325. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
  326. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  327. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/sharepoint/utils.py +0 -0
  328. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/slack/__init__.py +0 -0
  329. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  330. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/sql/__init__.py +0 -0
  331. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  332. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/sql/models.py +0 -0
  333. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/testio/__init__.py +0 -0
  334. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  335. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/testrail/__init__.py +0 -0
  336. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
  337. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/utils/__init__.py +0 -0
  338. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
  339. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/utils/content_parser.py +0 -0
  340. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
  341. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
  342. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/xray/__init__.py +0 -0
  343. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  344. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/yagmail/__init__.py +0 -0
  345. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  346. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  347. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr/__init__.py +0 -0
  348. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  349. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  350. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
  351. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  352. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  353. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
  354. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
  355. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_essential/client.py +0 -0
  356. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  357. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
  358. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  359. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  360. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  361. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk.egg-info/SOURCES.txt +0 -0
  362. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk.egg-info/dependency_links.txt +0 -0
  363. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk.egg-info/requires.txt +0 -0
  364. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/alita_sdk.egg-info/top_level.txt +0 -0
  365. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/setup.cfg +0 -0
  366. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/tests/test_ado_analysis.py +0 -0
  367. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/tests/test_github_analysis.py +0 -0
  368. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/tests/test_gitlab_analysis.py +0 -0
  369. {alita_sdk-0.3.419 → alita_sdk-0.3.421}/tests/test_jira_analysis.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.419
3
+ Version: 0.3.421
4
4
  Summary: SDK for building langchain agents using resources from Alita
5
5
  Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -138,6 +138,7 @@ def create_state(data: Optional[dict] = None):
138
138
  for key, value in data.items():
139
139
  # support of old & new UI
140
140
  value = value['type'] if isinstance(value, dict) else value
141
+ value = 'str' if value == 'string' else value # normalize string type (old state support)
141
142
  if key == 'messages':
142
143
  state_dict[key] = Annotated[list[AnyMessage], add_messages]
143
144
  elif value in ['str', 'int', 'float', 'bool', 'list', 'dict', 'number', 'dict']:
@@ -184,7 +185,7 @@ def propagate_the_input_mapping(input_mapping: dict[str, dict], input_variables:
184
185
  logger.error(f"KeyError in fstring formatting for key '{key}'. Attempt to find proper data in state.\n{e}")
185
186
  try:
186
187
  # search for variables in state if not found in var_dict
187
- input_data[key] = value['value'].format(**state)
188
+ input_data[key] = safe_format(value['value'], state)
188
189
  except KeyError as no_var_exception:
189
190
  logger.error(f"KeyError in fstring formatting for key '{key}' with state data.\n{no_var_exception}")
190
191
  # leave value as is if still not found (could be a constant string marked as fstring by mistake)
@@ -195,6 +196,13 @@ def propagate_the_input_mapping(input_mapping: dict[str, dict], input_variables:
195
196
  input_data[key] = source.get(value['value'], "")
196
197
  return input_data
197
198
 
199
+ def safe_format(template, mapping):
200
+ """Format a template string using a mapping, leaving placeholders unchanged if keys are missing."""
201
+
202
+ def replacer(match):
203
+ key = match.group(1)
204
+ return str(mapping.get(key, f'{{{key}}}'))
205
+ return re.sub(r'\{(\w+)\}', replacer, template)
198
206
 
199
207
  def create_pydantic_model(model_name: str, variables: dict[str, dict]):
200
208
  fields = {}
@@ -91,6 +91,10 @@ class LLMNode(BaseTool):
91
91
  f"Actual params: {func_args}")
92
92
  # cast to str in case user passes variable different from str
93
93
  messages = [SystemMessage(content=str(func_args.get('system'))), *func_args.get('chat_history', []), HumanMessage(content=str(func_args.get('task')))]
94
+ # Remove pre-last item if last two messages are same type and content
95
+ if len(messages) >= 2 and type(messages[-1]) == type(messages[-2]) and messages[-1].content == messages[
96
+ -2].content:
97
+ messages.pop(-2)
94
98
  else:
95
99
  # Flow for chat-based LLM node w/o prompt/task from pipeline but with messages in state
96
100
  # verify messages structure
@@ -474,9 +474,10 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
474
474
  "index_configuration": index_configuration,
475
475
  "created_on": created_on,
476
476
  "updated_on": created_on,
477
- "history": "[]",
478
477
  "task_id": None,
478
+ "conversation_id": None,
479
479
  }
480
+ metadata["history"] = json.dumps([metadata])
480
481
  index_meta_doc = Document(page_content=f"{IndexerKeywords.INDEX_META_TYPE.value}_{index_name}", metadata=metadata)
481
482
  add_documents(vectorstore=self.vectorstore, documents=[index_meta_doc])
482
483
 
@@ -489,6 +490,20 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
489
490
  metadata["indexed"] = result
490
491
  metadata["state"] = state
491
492
  metadata["updated_on"] = time.time()
493
+ #
494
+ history_raw = metadata.pop("history", "[]")
495
+ try:
496
+ history = json.loads(history_raw) if history_raw.strip() else []
497
+ # replace the last history item with updated metadata
498
+ if history and isinstance(history, list):
499
+ history[-1] = metadata
500
+ else:
501
+ history = [metadata]
502
+ except (json.JSONDecodeError, TypeError):
503
+ logger.warning(f"Failed to load index history: {history_raw}. Create new with only current item.")
504
+ history = [metadata]
505
+ #
506
+ metadata["history"] = json.dumps(history)
492
507
  index_meta_doc = Document(page_content=index_meta_raw.get("content", ""), metadata=metadata)
493
508
  add_documents(vectorstore=self.vectorstore, documents=[index_meta_doc], ids=[index_meta_raw.get("id")])
494
509
 
@@ -9,7 +9,7 @@ import swagger_client
9
9
  from langchain_core.tools import ToolException
10
10
  from pydantic import Field, PrivateAttr, model_validator, create_model, SecretStr
11
11
  from sklearn.feature_extraction.text import strip_tags
12
- from swagger_client import TestCaseApi, SearchApi, PropertyResource, ModuleApi
12
+ from swagger_client import TestCaseApi, SearchApi, PropertyResource, ModuleApi, ProjectApi, FieldApi
13
13
  from swagger_client.rest import ApiException
14
14
 
15
15
  from ..elitea_base import BaseToolApiWrapper
@@ -26,21 +26,25 @@ If generated data was used, put appropriate note to the test case description fi
26
26
  ### CRITERIA
27
27
  1. The structure should be as in EXAMPLE.
28
28
  2. Case and spaces for field names should be exactly the same as in NOTES.
29
- 3. Extra fields are allowed.
29
+ 3. Extra fields are allowed and will be mapped to project's custom fields if they exist.
30
30
  4. "{QTEST_ID}" is required to update, change or replace values in test case.
31
31
  5. Do not provide "Id" and "{QTEST_ID}" to create test case.
32
- 6 "Steps" is a list of test step objects with fields "Test Step Number", "Test Step Description", "Test Step Expected Result".
32
+ 6. "Steps" is a list of test step objects with fields "Test Step Number", "Test Step Description", "Test Step Expected Result".
33
+ 7. For updates, provide ONLY the fields you want to change. Omitted fields will remain unchanged.
33
34
 
34
35
  ### NOTES
35
- Id: Unique identifier (e.g., TC-123).
36
- QTest id: Unique identifier (e.g., 4626964).
37
- Name: Brief title.
38
- Description: Short purpose.
39
- Type: 'Manual' or 'Automation - UTAF'. Leave blank if unknown.
40
- Status: Default 'New'.
41
- Priority: Leave blank.
42
- Test Type: Default 'Functional'.
43
- Precondition: List prerequisites in one cell, formatted as: <Step1> <Step2> Leave blank if none..
36
+ Id: Unique identifier (e.g., TC-123). Read-only.
37
+ QTest id: Unique identifier (e.g., 4626964). Required for updates.
38
+ Name: Brief title of the test case.
39
+ Description: Short description of the test purpose.
40
+ Type: Type of test (e.g., 'Manual', 'Automation - UTAF').
41
+ Status: Current status (e.g., 'New', 'In Progress', 'Completed').
42
+ Priority: Priority level (e.g., 'High', 'Medium', 'Low').
43
+ Test Type: Category of test (e.g., 'Functional', 'Regression', 'Smoke').
44
+ Precondition: Prerequisites for the test, formatted as: <Step1> <Step2> Leave blank if none.
45
+ Steps: Array of test steps with Description and Expected Result.
46
+
47
+ **For Updates**: Include only the fields you want to modify. The system will validate property values against project configuration.
44
48
 
45
49
  ### EXAMPLE
46
50
  {{
@@ -118,6 +122,17 @@ GetModules = create_model(
118
122
 
119
123
  )
120
124
 
125
+ GetAllTestCasesFieldsForProject = create_model(
126
+ "GetAllTestCasesFieldsForProject",
127
+ force_refresh=(Optional[bool],
128
+ Field(description="Set to true to reload field definitions from API if project configuration has changed (new fields added, dropdown values modified). Default: false (uses cached data).",
129
+ default=False)),
130
+ )
131
+
132
+ NoInput = create_model(
133
+ "NoInput"
134
+ )
135
+
121
136
  class QtestApiWrapper(BaseToolApiWrapper):
122
137
  base_url: str
123
138
  qtest_project_id: int
@@ -126,6 +141,7 @@ class QtestApiWrapper(BaseToolApiWrapper):
126
141
  page: int = 1
127
142
  no_of_tests_shown_in_dql_search: int = 10
128
143
  _client: Any = PrivateAttr()
144
+ _field_definitions_cache: Optional[dict] = PrivateAttr(default=None)
129
145
  llm: Any
130
146
 
131
147
  @model_validator(mode='before')
@@ -160,33 +176,177 @@ class QtestApiWrapper(BaseToolApiWrapper):
160
176
  def __instantiate_module_api_instance(self) -> ModuleApi:
161
177
  return swagger_client.ModuleApi(self._client)
162
178
 
179
+ def __instantiate_fields_api_instance(self) -> FieldApi:
180
+ return swagger_client.FieldApi(self._client)
181
+
182
+ def __get_field_definitions_cached(self) -> dict:
183
+ """Get field definitions with session-level caching.
184
+
185
+ Field definitions are cached for the lifetime of this wrapper instance.
186
+ If project field configuration changes, call refresh_field_definitions_cache()
187
+ to reload the definitions.
188
+
189
+ Returns:
190
+ dict: Field definitions mapping
191
+ """
192
+ if self._field_definitions_cache is None:
193
+ self._field_definitions_cache = self.__get_project_field_definitions()
194
+ return self._field_definitions_cache
195
+
196
+ def refresh_field_definitions_cache(self) -> dict:
197
+ """Manually refresh the field definitions cache.
198
+
199
+ Call this method if project field configuration has been updated
200
+ (new fields added, dropdown values changed, etc.) and you need to
201
+ reload the definitions within the same agent session.
202
+
203
+ Returns:
204
+ dict: Freshly loaded field definitions
205
+ """
206
+ self._field_definitions_cache = None
207
+ return self.__get_field_definitions_cached()
208
+
209
+ def __map_properties_to_api_format(self, test_case_data: dict, field_definitions: dict,
210
+ base_properties: list = None) -> list:
211
+ """
212
+ Convert user-friendly property names/values to QTest API PropertyResource format.
213
+
214
+ Args:
215
+ test_case_data: Dict with property names as keys (e.g., {"Status": "New", "Priority": "High"})
216
+ field_definitions: Output from __get_project_field_definitions()
217
+ base_properties: Existing properties from a test case (for updates, optional)
218
+
219
+ Returns:
220
+ list[PropertyResource]: Properties ready for API submission
221
+
222
+ Raises:
223
+ ValueError: If any field names are unknown or values are invalid (shows ALL errors)
224
+ """
225
+ # Start with base properties or empty dict
226
+ props_dict = {}
227
+ if base_properties:
228
+ for prop in base_properties:
229
+ field_name = prop.get('field_name')
230
+ if field_name:
231
+ props_dict[field_name] = {
232
+ 'field_id': prop['field_id'],
233
+ 'field_name': field_name,
234
+ 'field_value': prop['field_value'],
235
+ 'field_value_name': prop.get('field_value_name')
236
+ }
237
+
238
+ # Collect ALL validation errors before raising
239
+ validation_errors = []
240
+
241
+ # Map incoming properties from test_case_data
242
+ for field_name, field_value in test_case_data.items():
243
+ # Skip non-property fields (these are handled separately)
244
+ if field_name in ['Name', 'Description', 'Precondition', 'Steps', 'Id', QTEST_ID]:
245
+ continue
246
+
247
+ # Skip None or empty string values (don't update these fields)
248
+ if field_value is None or field_value == '':
249
+ continue
250
+
251
+ # Validate field exists in project - STRICT validation
252
+ if field_name not in field_definitions:
253
+ validation_errors.append(
254
+ f"❌ Unknown field '{field_name}' - not defined in project configuration"
255
+ )
256
+ continue # Skip to next field, keep collecting errors
257
+
258
+ field_def = field_definitions[field_name]
259
+ field_id = field_def['field_id']
260
+
261
+ # Validate value for dropdown fields (only if field has allowed values)
262
+ if field_def['values']:
263
+ # Field has allowed values (dropdown/combobox) - validate strictly
264
+ if field_value not in field_def['values']:
265
+ available = ", ".join(sorted(field_def['values'].keys()))
266
+ validation_errors.append(
267
+ f"❌ Invalid value '{field_value}' for field '{field_name}'. "
268
+ f"Allowed values: {available}"
269
+ )
270
+ continue # Skip to next field, keep collecting errors
271
+ field_value_id = field_def['values'][field_value]
272
+ field_value_name = field_value
273
+ else:
274
+ # Text field or field without restricted values - use value directly
275
+ # No validation needed - users can write anything (by design)
276
+ field_value_id = field_value
277
+ field_value_name = field_value if isinstance(field_value, str) else None
278
+
279
+ # Update or add property (only if no errors for this field)
280
+ props_dict[field_name] = {
281
+ 'field_id': field_id,
282
+ 'field_name': field_name,
283
+ 'field_value': field_value_id,
284
+ 'field_value_name': field_value_name
285
+ }
286
+
287
+ # If ANY validation errors found, raise comprehensive error with all issues
288
+ if validation_errors:
289
+ available_fields = ", ".join(sorted(field_definitions.keys()))
290
+ error_msg = (
291
+ f"Found {len(validation_errors)} validation error(s) in test case properties:\n\n" +
292
+ "\n".join(validation_errors) +
293
+ f"\n\n📋 Available fields for this project: {available_fields}\n\n"
294
+ f"💡 Tip: Use 'get_all_test_cases_fields_for_project' tool to see all fields with their allowed values."
295
+ )
296
+ raise ValueError(error_msg)
297
+
298
+ # Convert to PropertyResource list, filtering out special fields
299
+ result = []
300
+ for field_name, prop_data in props_dict.items():
301
+ if field_name in ['Shared', 'Projects Shared to']:
302
+ continue
303
+ result.append(PropertyResource(
304
+ field_id=prop_data['field_id'],
305
+ field_name=prop_data['field_name'],
306
+ field_value=prop_data['field_value'],
307
+ field_value_name=prop_data.get('field_value_name')
308
+ ))
309
+
310
+ return result
311
+
163
312
  def __build_body_for_create_test_case(self, test_cases_data: list[dict],
164
313
  folder_to_place_test_cases_to: str = '') -> list:
165
- initial_project_properties = self.__get_properties_form_project()
314
+ # Get field definitions for property mapping (cached for session)
315
+ field_definitions = self.__get_field_definitions_cached()
316
+
166
317
  modules = self._parse_modules()
167
318
  parent_id = ''.join(str(module['module_id']) for module in modules if
168
319
  folder_to_place_test_cases_to and module['full_module_name'] == folder_to_place_test_cases_to)
169
- props = []
170
- for prop in initial_project_properties:
171
- if prop.get('field_name', '') == 'Shared' or prop.get('field_name', '') == 'Projects Shared to':
172
- continue
173
- props.append(PropertyResource(field_id=prop['field_id'], field_name=prop['field_name'],
174
- field_value_name=prop.get('field_value_name', None),
175
- field_value=prop['field_value']))
320
+
176
321
  bodies = []
177
322
  for test_case in test_cases_data:
323
+ # Map properties from user format to API format
324
+ props = self.__map_properties_to_api_format(test_case, field_definitions)
325
+
178
326
  body = swagger_client.TestCaseWithCustomFieldResource(properties=props)
179
- body.name = test_case.get('Name')
180
- body.precondition = test_case.get('Precondition')
181
- body.description = test_case.get('Description')
327
+
328
+ # Only set fields if they are explicitly provided in the input
329
+ # This prevents overwriting existing values with None during partial updates
330
+ if 'Name' in test_case:
331
+ body.name = test_case['Name']
332
+ if 'Precondition' in test_case:
333
+ body.precondition = test_case['Precondition']
334
+ if 'Description' in test_case:
335
+ body.description = test_case['Description']
336
+
182
337
  if parent_id:
183
338
  body.parent_id = parent_id
184
- test_steps_resources = []
185
- for step in test_case.get('Steps'):
186
- test_steps_resources.append(
187
- swagger_client.TestStepResource(description=step.get('Test Step Description'),
188
- expected=step.get('Test Step Expected Result')))
189
- body.test_steps = test_steps_resources
339
+
340
+ # Only set test_steps if Steps are provided in the input
341
+ # This prevents overwriting existing steps during partial updates
342
+ if 'Steps' in test_case and test_case['Steps'] is not None:
343
+ test_steps_resources = []
344
+ for step in test_case['Steps']:
345
+ test_steps_resources.append(
346
+ swagger_client.TestStepResource(description=step.get('Test Step Description'),
347
+ expected=step.get('Test Step Expected Result')))
348
+ body.test_steps = test_steps_resources
349
+
190
350
  bodies.append(body)
191
351
  return bodies
192
352
 
@@ -203,6 +363,100 @@ class QtestApiWrapper(BaseToolApiWrapper):
203
363
  Exception: \n {stacktrace}""")
204
364
  return modules
205
365
 
366
+ def __get_project_field_definitions(self) -> dict:
367
+ """
368
+ Get structured field definitions for test cases in the project.
369
+
370
+ Returns:
371
+ dict: Mapping of field names to their IDs and allowed values.
372
+ Example: {
373
+ 'Status': {
374
+ 'field_id': 12345,
375
+ 'required': True,
376
+ 'values': {'New': 1, 'In Progress': 2, 'Completed': 3}
377
+ },
378
+ 'Priority': {
379
+ 'field_id': 12346,
380
+ 'required': False,
381
+ 'values': {'High': 1, 'Medium': 2, 'Low': 3}
382
+ }
383
+ }
384
+ """
385
+ fields_api = self.__instantiate_fields_api_instance()
386
+ qtest_object = 'test-cases'
387
+
388
+ try:
389
+ fields = fields_api.get_fields(self.qtest_project_id, qtest_object)
390
+ except ApiException as e:
391
+ stacktrace = format_exc()
392
+ logger.error(f"Exception when calling FieldAPI->get_fields:\n {stacktrace}")
393
+ raise ValueError(
394
+ f"Unable to get test case fields for project {self.qtest_project_id}. Exception: \n {stacktrace}")
395
+
396
+ # Build structured mapping
397
+ field_mapping = {}
398
+ for field in fields:
399
+ field_name = field.label
400
+ field_mapping[field_name] = {
401
+ 'field_id': field.id,
402
+ 'required': getattr(field, 'required', False),
403
+ 'values': {}
404
+ }
405
+
406
+ # Map allowed values if field has them (dropdown/combobox fields)
407
+ if hasattr(field, 'allowed_values') and field.allowed_values:
408
+ for allowed_value in field.allowed_values:
409
+ # AllowedValueResource has 'label' for the display name and 'value' for the ID
410
+ # Note: 'value' is the field_value, not 'id'
411
+ value_label = allowed_value.label
412
+ value_id = allowed_value.value
413
+ field_mapping[field_name]['values'][value_label] = value_id
414
+
415
+ return field_mapping
416
+
417
+ def __format_field_info_for_display(self, field_definitions: dict) -> str:
418
+ """
419
+ Format field definitions in human-readable format for LLM.
420
+
421
+ Args:
422
+ field_definitions: Output from __get_project_field_definitions()
423
+
424
+ Returns:
425
+ Formatted string with field information
426
+ """
427
+ output = [f"Available Test Case Fields for Project {self.qtest_project_id}:\n"]
428
+
429
+ for field_name, field_info in sorted(field_definitions.items()):
430
+ required_marker = " (Required)" if field_info.get('required') else ""
431
+ output.append(f"\n{field_name}{required_marker}:")
432
+
433
+ if field_info.get('values'):
434
+ for value_name, value_id in sorted(field_info['values'].items()):
435
+ output.append(f" - {value_name} (id: {value_id})")
436
+ else:
437
+ output.append(" Type: text")
438
+
439
+ output.append("\n\nUse these exact value names when creating or updating test cases.")
440
+ return ''.join(output)
441
+
442
+ def get_all_test_cases_fields_for_project(self, force_refresh: bool = False) -> str:
443
+ """
444
+ Get formatted information about available test case fields and their values.
445
+ This method is exposed as a tool for LLM to query field information.
446
+
447
+ Args:
448
+ force_refresh: If True, reload field definitions from API instead of using cache.
449
+ Use this if project configuration has changed (new fields added,
450
+ dropdown values modified, etc.).
451
+
452
+ Returns:
453
+ Formatted string with field names and allowed values
454
+ """
455
+ if force_refresh:
456
+ self.refresh_field_definitions_cache()
457
+ field_defs = self.__get_field_definitions_cached()
458
+ return self.__format_field_info_for_display(field_defs)
459
+
206
460
  def _parse_modules(self) -> list[dict]:
207
461
  modules = self.__get_all_modules_for_project()
208
462
  result = []
@@ -320,18 +574,7 @@ class QtestApiWrapper(BaseToolApiWrapper):
320
574
  parsed_data = self.__perform_search_by_dql(dql)
321
575
  return parsed_data[0]['QTest Id']
322
576
 
323
- def __get_properties_form_project(self) -> list[dict] | None:
324
- test_api_instance = self.__instantiate_test_api_instance()
325
- expand_props = 'true'
326
- try:
327
- response = test_api_instance.get_test_cases(self.qtest_project_id, 1, 1, expand_props=expand_props)
328
- return response[0]['properties']
329
- except ApiException as e:
330
- stacktrace = format_exc()
331
- logger.error(f"Exception when calling TestCaseApi->get_test_cases: \n {stacktrace}")
332
- raise e
333
-
334
- def __is_jira_requirement_present(self, jira_issue_id: str) -> (bool, dict):
577
+ def __is_jira_requirement_present(self, jira_issue_id: str) -> tuple[bool, dict]:
335
578
  """ Define if particular Jira requirement is present in qtest or not """
336
579
  dql = f"'External Id' = '{jira_issue_id}'"
337
580
  search_instance: SearchApi = swagger_client.SearchApi(self._client)
@@ -505,5 +748,12 @@ class QtestApiWrapper(BaseToolApiWrapper):
505
748
  "description": self.get_modules.__doc__,
506
749
  "args_schema": GetModules,
507
750
  "ref": self.get_modules,
751
+ },
752
+ {
753
+ "name": "get_all_test_cases_fields_for_project",
754
+ "mode": "get_all_test_cases_fields_for_project",
755
+ "description": "Get information about available test case fields and their valid values for the project. Shows which property values are allowed (e.g., Status: 'New', 'In Progress', 'Completed') based on the project configuration. Use force_refresh=true if project configuration has changed.",
756
+ "args_schema": GetAllTestCasesFieldsForProject,
757
+ "ref": self.get_all_test_cases_fields_for_project,
508
758
  }
509
759
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.419
3
+ Version: 0.3.421
4
4
  Summary: SDK for building langchain agents using resources from Alita
5
5
  Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "alita_sdk"
7
- version = "0.3.419"
7
+ version = "0.3.421"
8
8
  description = "SDK for building langchain agents using resources from Alita"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes