alita-sdk 0.3.451__tar.gz → 0.3.453__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.
Files changed (377) hide show
  1. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/langraph_agent.py +57 -20
  3. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/tools.py +1 -0
  4. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/function.py +2 -1
  5. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/qtest/api_wrapper.py +158 -25
  6. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk.egg-info/PKG-INFO +1 -1
  7. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/pyproject.toml +1 -1
  8. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/LICENSE +0 -0
  9. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/README.md +0 -0
  10. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/__init__.py +0 -0
  11. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/community/__init__.py +0 -0
  12. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/community/utils.py +0 -0
  13. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/__init__.py +0 -0
  14. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/ado.py +0 -0
  15. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/azure_search.py +0 -0
  16. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/bigquery.py +0 -0
  17. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/bitbucket.py +0 -0
  18. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/browser.py +0 -0
  19. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/carrier.py +0 -0
  20. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/confluence.py +0 -0
  21. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/delta_lake.py +0 -0
  22. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/embedding.py +0 -0
  23. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/figma.py +0 -0
  24. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/github.py +0 -0
  25. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/gitlab.py +0 -0
  26. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/google_places.py +0 -0
  27. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/jira.py +0 -0
  28. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/pgvector.py +0 -0
  29. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/postman.py +0 -0
  30. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/qtest.py +0 -0
  31. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/rally.py +0 -0
  32. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/report_portal.py +0 -0
  33. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/salesforce.py +0 -0
  34. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/service_now.py +0 -0
  35. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/sharepoint.py +0 -0
  36. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/slack.py +0 -0
  37. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/sonar.py +0 -0
  38. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/sql.py +0 -0
  39. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/testio.py +0 -0
  40. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/testrail.py +0 -0
  41. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/xray.py +0 -0
  42. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/zephyr.py +0 -0
  43. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
  44. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/configurations/zephyr_essential.py +0 -0
  45. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/__init__.py +0 -0
  46. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/__init__.py +0 -0
  47. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/artifact.py +0 -0
  48. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/client.py +0 -0
  49. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/datasource.py +0 -0
  50. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/mcp_discovery.py +0 -0
  51. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/mcp_manager.py +0 -0
  52. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/prompt.py +0 -0
  53. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/clients/sandbox_client.py +0 -0
  54. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/__init__.py +0 -0
  55. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  56. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  57. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/assistant.py +0 -0
  58. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  59. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/constants.py +0 -0
  60. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  61. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  62. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  63. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  64. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  65. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  66. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  67. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  68. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
  69. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  70. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
  71. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
  72. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
  73. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
  74. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  75. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  76. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
  77. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
  78. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  79. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
  80. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  81. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/indexer.py +0 -0
  82. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  83. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  84. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  85. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  86. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  87. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  88. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  89. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  90. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  91. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  92. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  93. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  94. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  95. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  96. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  97. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  98. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  99. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  100. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  101. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  102. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  103. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  104. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  105. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/langchain/utils.py +0 -0
  106. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/llms/__init__.py +0 -0
  107. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/llms/preloaded.py +0 -0
  108. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/models/mcp_models.py +0 -0
  109. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  110. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/application.py +0 -0
  111. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  112. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/configurations.py +0 -0
  113. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  114. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/mcp.py +0 -0
  115. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  116. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  117. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  118. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/__init__.py +0 -0
  119. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/agent.py +0 -0
  120. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/application.py +0 -0
  121. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/artifact.py +0 -0
  122. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/datasource.py +0 -0
  123. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/echo.py +0 -0
  124. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/graph.py +0 -0
  125. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/image_generation.py +0 -0
  126. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  127. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/llm.py +0 -0
  128. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/loop.py +0 -0
  129. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/loop_output.py +0 -0
  130. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/mcp_inspect_tool.py +0 -0
  131. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/mcp_remote_tool.py +0 -0
  132. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  133. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  134. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/prompt.py +0 -0
  135. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/router.py +0 -0
  136. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/sandbox.py +0 -0
  137. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/tool.py +0 -0
  138. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/vectorstore.py +0 -0
  139. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/tools/vectorstore_base.py +0 -0
  140. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  141. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/__init__.py +0 -0
  142. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/constants.py +0 -0
  143. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/evaluate.py +0 -0
  144. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/logging.py +0 -0
  145. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/mcp_oauth.py +0 -0
  146. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/mcp_sse_client.py +0 -0
  147. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  148. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/streamlit.py +0 -0
  149. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
  150. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
  151. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/runtime/utils/utils.py +0 -0
  152. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/__init__.py +0 -0
  153. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/__init__.py +0 -0
  154. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/repos/__init__.py +0 -0
  155. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
  156. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
  157. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  158. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/utils.py +0 -0
  159. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
  160. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  161. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
  162. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  163. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  164. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  165. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/aws/__init__.py +0 -0
  166. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
  167. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
  168. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
  169. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
  170. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  171. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
  172. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  173. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/base/__init__.py +0 -0
  174. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/base/tool.py +0 -0
  175. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/base_indexer_toolkit.py +0 -0
  176. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/bitbucket/__init__.py +0 -0
  177. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
  178. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  179. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  180. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/browser/__init__.py +0 -0
  181. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/browser/crawler.py +0 -0
  182. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  183. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  184. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/browser/utils.py +0 -0
  185. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/browser/wiki.py +0 -0
  186. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/__init__.py +0 -0
  187. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  188. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  189. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  190. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  191. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  192. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  193. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  194. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  195. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  196. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  197. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  198. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/tools.py +0 -0
  199. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  200. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  201. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/carrier/utils.py +0 -0
  202. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/__init__.py +0 -0
  203. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  204. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  205. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  206. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  207. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  208. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  209. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  210. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  211. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  212. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  213. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  214. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  215. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  216. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  217. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  218. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  219. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  220. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  221. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/models.py +0 -0
  222. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  223. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  224. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
  225. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  226. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  227. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  228. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/chunkers/utils.py +0 -0
  229. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/__init__.py +0 -0
  230. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  231. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  232. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  233. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  234. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  235. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  236. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  237. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  238. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/code/__init__.py +0 -0
  239. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/code/linter/__init__.py +0 -0
  240. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  241. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  242. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  243. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  244. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/code_indexer_toolkit.py +0 -0
  245. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/confluence/__init__.py +0 -0
  246. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  247. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/confluence/loader.py +0 -0
  248. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/confluence/utils.py +0 -0
  249. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  250. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  251. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/elastic/__init__.py +0 -0
  252. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  253. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/elitea_base.py +0 -0
  254. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/figma/__init__.py +0 -0
  255. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  256. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/github/__init__.py +0 -0
  257. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/github/api_wrapper.py +0 -0
  258. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/github/github_client.py +0 -0
  259. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  260. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/github/schemas.py +0 -0
  261. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/github/tool.py +0 -0
  262. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/github/tool_prompts.py +0 -0
  263. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gitlab/__init__.py +0 -0
  264. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
  265. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gitlab/tools.py +0 -0
  266. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gitlab/utils.py +0 -0
  267. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  268. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  269. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gmail/__init__.py +0 -0
  270. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  271. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/gmail/utils.py +0 -0
  272. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/google/__init__.py +0 -0
  273. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
  274. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
  275. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
  276. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/google/bigquery/tool.py +0 -0
  277. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/google_places/__init__.py +0 -0
  278. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  279. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/jira/__init__.py +0 -0
  280. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  281. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/keycloak/__init__.py +0 -0
  282. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  283. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/llm/__init__.py +0 -0
  284. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/llm/img_utils.py +0 -0
  285. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/llm/llm_utils.py +0 -0
  286. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/localgit/__init__.py +0 -0
  287. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/localgit/local_git.py +0 -0
  288. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/localgit/tool.py +0 -0
  289. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/memory/__init__.py +0 -0
  290. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
  291. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ocr/__init__.py +0 -0
  292. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  293. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/ocr/text_detection.py +0 -0
  294. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/openapi/__init__.py +0 -0
  295. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/__init__.py +0 -0
  296. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  297. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  298. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  299. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  300. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  301. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  302. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  303. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  304. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  305. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  306. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  307. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  308. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  309. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  310. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  311. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  312. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  313. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  314. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/postman/__init__.py +0 -0
  315. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  316. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  317. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pptx/__init__.py +0 -0
  318. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  319. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/qtest/__init__.py +0 -0
  320. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/qtest/tool.py +0 -0
  321. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/rally/__init__.py +0 -0
  322. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  323. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/report_portal/__init__.py +0 -0
  324. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  325. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  326. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/salesforce/__init__.py +0 -0
  327. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  328. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/salesforce/model.py +0 -0
  329. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/servicenow/__init__.py +0 -0
  330. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  331. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  332. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/sharepoint/__init__.py +0 -0
  333. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
  334. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  335. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/sharepoint/utils.py +0 -0
  336. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/slack/__init__.py +0 -0
  337. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  338. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/sql/__init__.py +0 -0
  339. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  340. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/sql/models.py +0 -0
  341. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/testio/__init__.py +0 -0
  342. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  343. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/testrail/__init__.py +0 -0
  344. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
  345. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/utils/__init__.py +0 -0
  346. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
  347. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/utils/content_parser.py +0 -0
  348. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
  349. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
  350. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/xray/__init__.py +0 -0
  351. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  352. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/yagmail/__init__.py +0 -0
  353. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  354. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  355. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr/__init__.py +0 -0
  356. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  357. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  358. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
  359. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  360. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  361. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
  362. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
  363. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_essential/client.py +0 -0
  364. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  365. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
  366. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  367. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  368. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  369. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk.egg-info/SOURCES.txt +0 -0
  370. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk.egg-info/dependency_links.txt +0 -0
  371. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk.egg-info/requires.txt +0 -0
  372. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/alita_sdk.egg-info/top_level.txt +0 -0
  373. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/setup.cfg +0 -0
  374. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/tests/test_ado_analysis.py +0 -0
  375. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/tests/test_github_analysis.py +0 -0
  376. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/tests/test_gitlab_analysis.py +0 -0
  377. {alita_sdk-0.3.451 → alita_sdk-0.3.453}/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.451
3
+ Version: 0.3.453
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
@@ -475,10 +475,14 @@ def create_graph(
475
475
  if toolkit_name:
476
476
  tool_name = f"{clean_string(toolkit_name)}{TOOLKIT_SPLITTER}{tool_name}"
477
477
  logger.info(f"Node: {node_id} : {node_type} - {tool_name}")
478
- if node_type in ['function', 'tool', 'loop', 'loop_from_tool', 'indexer', 'subgraph', 'pipeline', 'agent']:
478
+ if node_type in ['function', 'toolkit', 'mcp', 'tool', 'loop', 'loop_from_tool', 'indexer', 'subgraph', 'pipeline', 'agent']:
479
+ if node_type == 'mcp' and tool_name not in [tool.name for tool in tools]:
480
+ # MCP is not connected and node cannot be added
481
+ raise ToolException(f"MCP tool '{tool_name}' not found in the provided tools. "
482
+ f"Make sure it is connected properly. Available tools: {[tool.name for tool in tools]}")
479
483
  for tool in tools:
480
484
  if tool.name == tool_name:
481
- if node_type == 'function':
485
+ if node_type in ['function', 'toolkit', 'mcp']:
482
486
  lg_builder.add_node(node_id, FunctionTool(
483
487
  tool=tool, name=node_id, return_type='dict',
484
488
  output_variables=node.get('output', []),
@@ -663,7 +667,7 @@ def create_graph(
663
667
  lg_builder.add_node(reset_node_id, PrinterNode(
664
668
  input_mapping={'printer': {'type': 'fixed', 'value': ''}}
665
669
  ))
666
- lg_builder.add_edge(node_id, reset_node_id)
670
+ lg_builder.add_conditional_edges(node_id, TransitionalEdge(reset_node_id))
667
671
  lg_builder.add_conditional_edges(reset_node_id, TransitionalEdge(clean_string(node['transition'])))
668
672
  continue
669
673
  if node.get('transition'):
@@ -814,35 +818,59 @@ class LangGraphAgentRunnable(CompiledStateGraph):
814
818
  input['messages'] = [convert_dict_to_message(msg) for msg in chat_history]
815
819
 
816
820
  # handler for LLM node: if no input (Chat perspective), then take last human message
821
+ # Track if input came from messages to handle content extraction properly
822
+ input_from_messages = False
817
823
  if not input.get('input'):
818
824
  if input.get('messages'):
819
- input['input'] = [next((msg for msg in reversed(input['messages']) if isinstance(msg, HumanMessage)),
820
- None)]
825
+ input['input'] = next((msg for msg in reversed(input['messages']) if isinstance(msg, HumanMessage)),
826
+ None)
827
+ if input['input'] is not None:
828
+ input_from_messages = True
821
829
 
822
830
  # Append current input to existing messages instead of overwriting
823
831
  if input.get('input'):
824
- if isinstance(input['input'], str):
825
- current_message = input['input']
826
- else:
827
- current_message = input.get('input')[-1]
832
+ current_message = input['input']
828
833
 
829
834
  # TODO: add handler after we add 2+ inputs (filterByType, etc.)
830
835
  if isinstance(current_message, HumanMessage):
831
836
  current_content = current_message.content
832
837
  if isinstance(current_content, list):
833
- text_contents = [
834
- item['text'] if isinstance(item, dict) and item.get('type') == 'text'
835
- else item if isinstance(item, str)
836
- else None
837
- for item in current_content
838
- ]
839
- text_contents = [text for text in text_contents if text is not None]
840
- input['input'] = ". ".join(text_contents)
838
+ # Extract text parts and keep non-text parts (images, etc.)
839
+ text_contents = []
840
+ non_text_parts = []
841
+
842
+ for item in current_content:
843
+ if isinstance(item, dict) and item.get('type') == 'text':
844
+ text_contents.append(item['text'])
845
+ elif isinstance(item, str):
846
+ text_contents.append(item)
847
+ else:
848
+ # Keep image_url and other non-text content
849
+ non_text_parts.append(item)
850
+
851
+ # Set input to the joined text
852
+ input['input'] = ". ".join(text_contents) if text_contents else ""
853
+
854
+ # If this message came from input['messages'], update or remove it
855
+ if input_from_messages:
856
+ if non_text_parts:
857
+ # Keep the message but only with non-text content (images, etc.)
858
+ current_message.content = non_text_parts
859
+ else:
860
+ # All content was text, remove this message from the list
861
+ input['messages'] = [msg for msg in input['messages'] if msg is not current_message]
862
+
841
863
  elif isinstance(current_content, str):
842
864
  # on regenerate case
843
865
  input['input'] = current_content
866
+ # If from messages and all content is text, remove the message
867
+ if input_from_messages:
868
+ input['messages'] = [msg for msg in input['messages'] if msg is not current_message]
844
869
  else:
845
870
  input['input'] = str(current_content)
871
+ # If from messages, remove since we extracted the content
872
+ if input_from_messages:
873
+ input['messages'] = [msg for msg in input['messages'] if msg is not current_message]
846
874
  elif isinstance(current_message, str):
847
875
  input['input'] = current_message
848
876
  else:
@@ -852,9 +880,18 @@ class LangGraphAgentRunnable(CompiledStateGraph):
852
880
  input['messages'] = [convert_dict_to_message(msg) for msg in input['messages']]
853
881
  # Append to existing messages
854
882
  # input['messages'].append(current_message)
855
- else:
856
- # No existing messages, create new list
857
- input['messages'] = [current_message]
883
+ # else:
884
+ # NOTE: Commented out to prevent duplicates with input['input']
885
+ # input['messages'] = [current_message]
886
+
887
+ # Validate that input is not empty after all processing
888
+ if not input.get('input'):
889
+ raise RuntimeError(
890
+ "Empty input after processing. Cannot send empty string to LLM. "
891
+ "This likely means the message contained only non-text content "
892
+ "with no accompanying text."
893
+ )
894
+
858
895
  logging.info(f"Input: {thread_id} - {input}")
859
896
  if self.checkpointer and self.checkpointer.get_tuple(config):
860
897
  self.update_state(config, input)
@@ -110,6 +110,7 @@ def get_tools(tools_list: list, alita_client, llm, memory_store: BaseStore = Non
110
110
  toolkit_name=tool.get('toolkit_name', ''),
111
111
  **tool['settings']).get_tools())
112
112
  elif tool['type'] == 'mcp':
113
+ # remote mcp tool initialization with token injection
113
114
  settings = dict(tool['settings'])
114
115
  url = settings.get('url')
115
116
  headers = settings.get('headers')
@@ -120,7 +120,8 @@ class FunctionTool(BaseTool):
120
120
  messages_dict = {
121
121
  "messages": [{
122
122
  "role": "assistant",
123
- "content": dumps(tool_result) if not isinstance(tool_result, ToolException)
123
+ "content": dumps(tool_result)
124
+ if not isinstance(tool_result, ToolException) and not isinstance(tool_result, str)
124
125
  else str(tool_result)
125
126
  }]
126
127
  }
@@ -5,6 +5,7 @@ import re
5
5
  from traceback import format_exc
6
6
  from typing import Any, Optional
7
7
 
8
+ import requests
8
9
  import swagger_client
9
10
  from langchain_core.tools import ToolException
10
11
  from pydantic import Field, PrivateAttr, model_validator, create_model, SecretStr
@@ -414,6 +415,143 @@ class QtestApiWrapper(BaseToolApiWrapper):
414
415
  Exception: \n {stacktrace}""")
415
416
  return modules
416
417
 
418
+ def __get_field_definitions_from_properties_api(self) -> dict:
419
+ """
420
+ Fallback method: Get field definitions using /properties and /properties-info APIs.
421
+
422
+ These APIs don't require Field Management permission and are available to all users.
423
+ Requires 2 API calls + 1 search to get a test case ID.
424
+
425
+ Returns:
426
+ dict: Same structure as __get_project_field_definitions()
427
+ """
428
+ logger.info(
429
+ "Using properties API fallback (no Field Management permission). "
430
+ "This requires getting a template test case first."
431
+ )
432
+
433
+ # Step 1: Get any test case ID to query properties
434
+ search_instance = swagger_client.SearchApi(self._client)
435
+ body = swagger_client.ArtifactSearchParams(
436
+ object_type='test-cases',
437
+ fields=['*'],
438
+ query='' # Empty query returns all test cases
439
+ )
440
+
441
+ try:
442
+ # Search for any test case - just need one
443
+ response = search_instance.search_artifact(
444
+ self.qtest_project_id,
445
+ body,
446
+ page_size=1,
447
+ page=1
448
+ )
449
+ except ApiException as e:
450
+ stacktrace = format_exc()
451
+ logger.error(f"Failed to find test case for properties API: {stacktrace}")
452
+ raise ValueError(
453
+ f"Cannot find any test case to query field definitions. "
454
+ f"Please create at least one test case in project {self.qtest_project_id}"
455
+ ) from e
456
+
457
+ if not response or not response.get('items') or len(response['items']) == 0:
458
+ raise ValueError(
459
+ f"No test cases found in project {self.qtest_project_id}. "
460
+ f"Please create at least one test case to retrieve field definitions."
461
+ )
462
+
463
+ test_case_id = response['items'][0]['id']
464
+ logger.info(f"Using test case ID {test_case_id} to retrieve field definitions")
465
+
466
+ # Step 2: Call /properties API
467
+ headers = {
468
+ "Authorization": f"Bearer {self.qtest_api_token.get_secret_value()}"
469
+ }
470
+
471
+ properties_url = f"{self.base_url}/api/v3/projects/{self.qtest_project_id}/test-cases/{test_case_id}/properties"
472
+ properties_info_url = f"{self.base_url}/api/v3/projects/{self.qtest_project_id}/test-cases/{test_case_id}/properties-info"
473
+
474
+ try:
475
+ # Get properties with current values and field metadata
476
+ props_response = requests.get(
477
+ properties_url,
478
+ headers=headers,
479
+ params={'calledBy': 'testcase_properties'}
480
+ )
481
+ props_response.raise_for_status()
482
+ properties_data = props_response.json()
483
+
484
+ # Get properties-info with data types and allowed values
485
+ info_response = requests.get(properties_info_url, headers=headers)
486
+ info_response.raise_for_status()
487
+ info_data = info_response.json()
488
+
489
+ except requests.exceptions.RequestException as e:
490
+ stacktrace = format_exc()
491
+ logger.error(f"Failed to call properties API: {stacktrace}")
492
+ raise ValueError(
493
+ f"Unable to retrieve field definitions using properties API. "
494
+ f"Error: {stacktrace}"
495
+ ) from e
496
+
497
+ # Step 3: Build field mapping by merging both responses
498
+ field_mapping = {}
499
+
500
+ # Create lookup by field ID from properties-info
501
+ metadata_by_id = {item['id']: item for item in info_data['metadata']}
502
+
503
+ # Data type mapping to determine 'multiple' flag
504
+ MULTI_SELECT_TYPES = {
505
+ 'UserListDataType',
506
+ 'MultiSelectionDataType',
507
+ 'CheckListDataType'
508
+ }
509
+
510
+ USER_FIELD_TYPES = {'UserListDataType'}
511
+
512
+ # System fields to exclude (same as in property mapping)
513
+ excluded_fields = {'Shared', 'Projects Shared to'}
514
+
515
+ for prop in properties_data:
516
+ field_name = prop.get('name')
517
+ field_id = prop.get('id')
518
+
519
+ if not field_name or field_name in excluded_fields:
520
+ continue
521
+
522
+ # Get metadata for this field
523
+ metadata = metadata_by_id.get(field_id, {})
524
+ data_type_str = metadata.get('data_type')
525
+
526
+ # Determine data_type number (5 for user fields, None for others)
527
+ data_type = 5 if data_type_str in USER_FIELD_TYPES else None
528
+
529
+ # Determine if multi-select
530
+ is_multiple = data_type_str in MULTI_SELECT_TYPES
531
+
532
+ field_mapping[field_name] = {
533
+ 'field_id': field_id,
534
+ 'required': prop.get('required', False),
535
+ 'data_type': data_type,
536
+ 'multiple': is_multiple,
537
+ 'values': {}
538
+ }
539
+
540
+ # Map allowed values from metadata
541
+ allowed_values = metadata.get('allowed_values', [])
542
+ for allowed_val in allowed_values:
543
+ value_text = allowed_val.get('value_text')
544
+ value_id = allowed_val.get('id')
545
+ if value_text and value_id:
546
+ field_mapping[field_name]['values'][value_text] = value_id
547
+
548
+ logger.info(
549
+ f"Retrieved {len(field_mapping)} field definitions using properties API. "
550
+ f"This method works for all users without Field Management permission."
551
+ )
552
+
553
+ return field_mapping
554
+
417
555
  def __get_project_field_definitions(self) -> dict:
418
556
  """
419
557
  Get structured field definitions for test cases in the project.
@@ -439,6 +577,15 @@ class QtestApiWrapper(BaseToolApiWrapper):
439
577
  try:
440
578
  fields = fields_api.get_fields(self.qtest_project_id, qtest_object)
441
579
  except ApiException as e:
580
+ # Check if permission denied (403) - use fallback
581
+ if e.status == 403:
582
+ logger.warning(
583
+ "get_fields permission denied (Field Management permission required). "
584
+ "Using properties API fallback..."
585
+ )
586
+ return self.__get_field_definitions_from_properties_api()
587
+
588
+ # Other API errors
442
589
  stacktrace = format_exc()
443
590
  logger.error(f"Exception when calling FieldAPI->get_fields:\n {stacktrace}")
444
591
  raise ValueError(
@@ -556,8 +703,8 @@ class QtestApiWrapper(BaseToolApiWrapper):
556
703
  def __parse_data(self, response_to_parse: dict, parsed_data: list, extract_images: bool=False, prompt: str=None):
557
704
  import html
558
705
 
559
- # Get field definitions to ensure all fields are included (uses cached version)
560
- field_definitions = self.__get_field_definitions_cached()
706
+ # PERMISSION-FREE: Parse properties directly from API response
707
+ # No get_fields call needed - works for all users
561
708
 
562
709
  for item in response_to_parse['items']:
563
710
  # Start with core fields (always present)
@@ -574,29 +721,15 @@ class QtestApiWrapper(BaseToolApiWrapper):
574
721
  }, enumerate(item['test_steps']))),
575
722
  }
576
723
 
577
- # Dynamically add all custom fields from project configuration
578
- # This ensures consistency and includes fields even if they have null/empty values
579
- for field_name in field_definitions.keys():
580
- field_def = field_definitions[field_name]
581
- is_multiple = field_def.get('multiple', False)
582
-
583
- # Find the property value in the response (if exists)
584
- field_value = None
585
- for prop in item['properties']:
586
- if prop['field_name'] == field_name:
587
- # Use field_value_name if available (for dropdowns), otherwise field_value
588
- field_value = prop.get('field_value_name') or prop.get('field_value') or ''
589
- break
590
-
591
- # Format based on field type
592
- if is_multiple and (field_value is None or field_value == ''):
593
- # Multi-select field with no value: show empty array with hint
594
- parsed_data_row[field_name] = '[] (multi-select)'
595
- elif field_value is not None:
596
- parsed_data_row[field_name] = field_value
597
- else:
598
- # Regular field with no value
599
- parsed_data_row[field_name] = ''
724
+ # Add custom fields directly from API response properties
725
+ for prop in item['properties']:
726
+ field_name = prop.get('field_name')
727
+ if not field_name:
728
+ continue
729
+
730
+ # Use field_value_name if available (for dropdowns/users), otherwise field_value
731
+ field_value = prop.get('field_value_name') or prop.get('field_value') or ''
732
+ parsed_data_row[field_name] = field_value
600
733
 
601
734
  parsed_data.append(parsed_data_row)
602
735
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.451
3
+ Version: 0.3.453
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.451"
7
+ version = "0.3.453"
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