alita-sdk 0.3.229__tar.gz → 0.3.231__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 (341) hide show
  1. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/PKG-INFO +2 -2
  2. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/README.md +1 -1
  3. alita_sdk-0.3.231/alita_sdk/runtime/langchain/document_loaders/AlitaDocLoader.py +29 -0
  4. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/constants.py +6 -0
  5. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/utils.py +22 -1
  6. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/vectorstore.py +167 -46
  7. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/__init__.py +2 -3
  8. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/repos/__init__.py +12 -10
  9. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/repos/repos_wrapper.py +1 -0
  10. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/test_plan/__init__.py +17 -15
  11. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +1 -0
  12. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/wiki/__init__.py +18 -20
  13. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/wiki/ado_wrapper.py +1 -0
  14. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/work_item/__init__.py +18 -19
  15. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/work_item/ado_wrapper.py +1 -0
  16. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/azure_ai/search/__init__.py +7 -4
  17. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/__init__.py +9 -4
  18. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/__init__.py +9 -5
  19. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/elitea_base.py +35 -38
  20. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/figma/__init__.py +8 -5
  21. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/figma/api_wrapper.py +37 -12
  22. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/__init__.py +9 -10
  23. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/__init__.py +10 -5
  24. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/__init__.py +7 -2
  25. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/jira/__init__.py +9 -5
  26. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/postman/__init__.py +7 -2
  27. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/qtest/__init__.py +7 -2
  28. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/servicenow/__init__.py +7 -3
  29. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/__init__.py +8 -5
  30. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/slack/__init__.py +7 -3
  31. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testrail/__init__.py +9 -4
  32. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/utils/content_parser.py +16 -26
  33. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +18 -11
  34. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/PKG-INFO +2 -2
  35. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/SOURCES.txt +1 -0
  36. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/pyproject.toml +1 -1
  37. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/LICENSE +0 -0
  38. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/__init__.py +0 -0
  39. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/community/__init__.py +0 -0
  40. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/community/utils.py +0 -0
  41. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/__init__.py +0 -0
  42. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/ado.py +0 -0
  43. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/azure_search.py +0 -0
  44. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/bigquery.py +0 -0
  45. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/bitbucket.py +0 -0
  46. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/confluence.py +0 -0
  47. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/delta_lake.py +0 -0
  48. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/github.py +0 -0
  49. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/gitlab.py +0 -0
  50. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/jira.py +0 -0
  51. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/pgvector.py +0 -0
  52. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/postman.py +0 -0
  53. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/qtest.py +0 -0
  54. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/service_now.py +0 -0
  55. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/slack.py +0 -0
  56. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/testrail.py +0 -0
  57. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/__init__.py +0 -0
  58. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/__init__.py +0 -0
  59. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/artifact.py +0 -0
  60. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/client.py +0 -0
  61. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/datasource.py +0 -0
  62. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/prompt.py +0 -0
  63. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/__init__.py +0 -0
  64. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  65. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  66. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/assistant.py +0 -0
  67. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  68. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/constants.py +0 -0
  69. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  70. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  71. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  72. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  73. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  74. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  75. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  76. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  77. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  78. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
  79. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
  80. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  81. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  82. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
  83. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  84. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/indexer.py +0 -0
  85. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  86. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  87. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  88. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  89. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  90. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  91. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  92. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  93. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  94. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  95. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  96. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  97. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  98. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  99. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  100. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  101. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  102. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  103. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  104. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  105. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  106. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  107. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  108. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  109. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/utils.py +0 -0
  110. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/llms/__init__.py +0 -0
  111. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/llms/preloaded.py +0 -0
  112. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  113. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/application.py +0 -0
  114. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  115. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/configurations.py +0 -0
  116. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  117. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  118. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  119. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/tools.py +0 -0
  120. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  121. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/__init__.py +0 -0
  122. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/agent.py +0 -0
  123. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/application.py +0 -0
  124. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/artifact.py +0 -0
  125. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/datasource.py +0 -0
  126. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/echo.py +0 -0
  127. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/function.py +0 -0
  128. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  129. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/llm.py +0 -0
  130. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/loop.py +0 -0
  131. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/loop_output.py +0 -0
  132. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  133. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  134. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/prompt.py +0 -0
  135. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/router.py +0 -0
  136. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/tool.py +0 -0
  137. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  138. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/__init__.py +0 -0
  139. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/constants.py +0 -0
  140. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/evaluate.py +0 -0
  141. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/logging.py +0 -0
  142. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  143. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/streamlit.py +0 -0
  144. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
  145. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
  146. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/utils.py +0 -0
  147. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/__init__.py +0 -0
  148. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/utils.py +0 -0
  149. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  150. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  151. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/__init__.py +0 -0
  152. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
  153. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
  154. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
  155. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
  156. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  157. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  158. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/base/__init__.py +0 -0
  159. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/base/tool.py +0 -0
  160. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
  161. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  162. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  163. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/tools.py +0 -0
  164. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/__init__.py +0 -0
  165. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/crawler.py +0 -0
  166. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  167. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  168. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/utils.py +0 -0
  169. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/wiki.py +0 -0
  170. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/__init__.py +0 -0
  171. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  172. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  173. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  174. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  175. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  176. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  177. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  178. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  179. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  180. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  181. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  182. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/tools.py +0 -0
  183. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  184. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  185. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/utils.py +0 -0
  186. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/__init__.py +0 -0
  187. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  188. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  189. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  190. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  191. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  192. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  193. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  194. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  195. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  196. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  197. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  198. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  199. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  200. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  201. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  202. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  203. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  204. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  205. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/models.py +0 -0
  206. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  207. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  208. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  209. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  210. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  211. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/utils.py +0 -0
  212. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/__init__.py +0 -0
  213. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  214. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  215. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  216. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  217. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  218. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  219. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  220. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  221. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/__init__.py +0 -0
  222. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/linter/__init__.py +0 -0
  223. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  224. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  225. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  226. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  227. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  228. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/loader.py +0 -0
  229. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/utils.py +0 -0
  230. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  231. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  232. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/elastic/__init__.py +0 -0
  233. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  234. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/api_wrapper.py +0 -0
  235. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/github_client.py +0 -0
  236. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  237. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/schemas.py +0 -0
  238. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/tool.py +0 -0
  239. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/tool_prompts.py +0 -0
  240. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
  241. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/tools.py +0 -0
  242. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/utils.py +0 -0
  243. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  244. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  245. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gmail/__init__.py +0 -0
  246. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  247. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gmail/utils.py +0 -0
  248. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/__init__.py +0 -0
  249. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
  250. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
  251. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/tool.py +0 -0
  252. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google_places/__init__.py +0 -0
  253. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  254. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  255. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/keycloak/__init__.py +0 -0
  256. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  257. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/llm/__init__.py +0 -0
  258. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/llm/img_utils.py +0 -0
  259. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/llm/llm_utils.py +0 -0
  260. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/localgit/__init__.py +0 -0
  261. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/localgit/local_git.py +0 -0
  262. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/localgit/tool.py +0 -0
  263. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/memory/__init__.py +0 -0
  264. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ocr/__init__.py +0 -0
  265. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  266. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ocr/text_detection.py +0 -0
  267. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/openapi/__init__.py +0 -0
  268. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/__init__.py +0 -0
  269. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  270. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  271. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  272. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  273. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  274. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  275. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  276. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  277. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  278. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  279. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  280. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  281. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  282. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  283. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  284. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  285. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  286. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  287. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  288. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  289. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pptx/__init__.py +0 -0
  290. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  291. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
  292. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/qtest/tool.py +0 -0
  293. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/rally/__init__.py +0 -0
  294. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  295. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/report_portal/__init__.py +0 -0
  296. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  297. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  298. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/salesforce/__init__.py +0 -0
  299. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  300. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/salesforce/model.py +0 -0
  301. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  302. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  303. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
  304. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  305. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/utils.py +0 -0
  306. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  307. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sql/__init__.py +0 -0
  308. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  309. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sql/models.py +0 -0
  310. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testio/__init__.py +0 -0
  311. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  312. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
  313. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/utils/__init__.py +0 -0
  314. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
  315. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/xray/__init__.py +0 -0
  316. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  317. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/yagmail/__init__.py +0 -0
  318. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  319. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  320. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/__init__.py +0 -0
  321. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  322. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  323. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
  324. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  325. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  326. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
  327. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
  328. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_essential/client.py +0 -0
  329. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  330. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
  331. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  332. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  333. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  334. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/dependency_links.txt +0 -0
  335. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/requires.txt +0 -0
  336. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/top_level.txt +0 -0
  337. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/setup.cfg +0 -0
  338. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/tests/test_ado_analysis.py +0 -0
  339. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/tests/test_github_analysis.py +0 -0
  340. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/tests/test_gitlab_analysis.py +0 -0
  341. {alita_sdk-0.3.229 → alita_sdk-0.3.231}/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.229
3
+ Version: 0.3.231
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 <lifedjik@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -181,7 +181,7 @@ venv\Scripts\activate
181
181
  Install all required dependencies for the SDK and toolkits:
182
182
 
183
183
  ```bash
184
- pip install -r req_bkup/requirements-all.txt
184
+ pip install -U '.[all]'
185
185
  ```
186
186
 
187
187
  Environment Setup
@@ -36,7 +36,7 @@ venv\Scripts\activate
36
36
  Install all required dependencies for the SDK and toolkits:
37
37
 
38
38
  ```bash
39
- pip install -r req_bkup/requirements-all.txt
39
+ pip install -U '.[all]'
40
40
  ```
41
41
 
42
42
  Environment Setup
@@ -0,0 +1,29 @@
1
+ from langchain_core.document_loaders import BaseLoader
2
+ from langchain_core.documents import Document
3
+
4
+ from .utils import file_to_bytes
5
+
6
+
7
+ class AlitaDocLoader(BaseLoader):
8
+
9
+ def __init__(self, **kwargs):
10
+ if kwargs.get('file_path'):
11
+ self.file_path = kwargs['file_path']
12
+ elif kwargs.get('file_content'):
13
+ self.file_content = kwargs['file_content']
14
+ self.file_name = kwargs['file_name']
15
+ else:
16
+ raise ValueError(
17
+ "Path parameter is required (either as 'file_path' positional argument or 'path' keyword argument)")
18
+
19
+ def load(self):
20
+ result_content = self.get_content()
21
+ return [Document(page_content=result_content, metadata={'source': str(self.file_path if hasattr(self, 'file_path') else self.file_name)})]
22
+
23
+ def get_content(self):
24
+ try:
25
+ import textract
26
+ content = textract.process(None, extension='doc', input_data=self.file_content if hasattr(self, 'file_content') else file_to_bytes(self.file_path)).decode('utf-8')
27
+ except Exception as e:
28
+ content = f"[Error extracting doc: {str(e)}]"
29
+ return content
@@ -18,6 +18,7 @@ from langchain_community.document_loaders import (
18
18
  UnstructuredPowerPointLoader, PythonLoader)
19
19
 
20
20
  from .AlitaCSVLoader import AlitaCSVLoader
21
+ from .AlitaDocLoader import AlitaDocLoader
21
22
  from .AlitaDocxMammothLoader import AlitaDocxMammothLoader
22
23
  from .AlitaExcelLoader import AlitaExcelLoader
23
24
  from .AlitaImageLoader import AlitaImageLoader
@@ -124,6 +125,11 @@ loaders_map = {
124
125
  'is_multimodal_processing': True,
125
126
  'kwargs': {}
126
127
  },
128
+ '.doc': {
129
+ 'class': AlitaDocLoader,
130
+ 'is_multimodal_processing': True,
131
+ 'kwargs': {}
132
+ },
127
133
  '.json': {
128
134
  'class': AlitaTextLoader,
129
135
  'is_multimodal_processing': False,
@@ -60,4 +60,25 @@ def create_temp_file(file_content: bytes):
60
60
  temp_file.flush() # Ensure data is written
61
61
 
62
62
  # Get the file path for operations
63
- return temp_file.name
63
+ return temp_file.name
64
+
65
+ def file_to_bytes(filepath):
66
+ """
67
+ Reads a file and returns its content as a bytes object.
68
+
69
+ Args:
70
+ filepath (str): The path to the file.
71
+
72
+ Returns:
73
+ bytes: The content of the file as a bytes object.
74
+ """
75
+ try:
76
+ with open(filepath, "rb") as f:
77
+ file_content_bytes = f.read()
78
+ return file_content_bytes
79
+ except FileNotFoundError:
80
+ logger.error(f"File not found: {filepath}")
81
+ return None
82
+ except Exception as e:
83
+ logger.error(f"Error reading file {filepath}: {e}")
84
+ return None
@@ -210,38 +210,48 @@ class VectorStoreWrapper(BaseToolApiWrapper):
210
210
  tool_name="_remove_collection"
211
211
  )
212
212
 
213
- def _get_indexed_ids(self, store):
213
+ def _get_indexed_ids(self, collection_suffix: Optional[str] = '') -> List[str]:
214
214
  """Get all indexed document IDs from vectorstore"""
215
215
 
216
216
  # Check if this is a PGVector store
217
- if hasattr(store, 'session_maker') and hasattr(store, 'EmbeddingStore'):
218
- return self._get_pgvector_indexed_ids(store)
217
+ if self._is_pgvector():
218
+ return self._get_pgvector_indexed_ids(collection_suffix)
219
219
  else:
220
220
  # Fall back to Chroma implementation
221
- return self._get_chroma_indexed_ids(store)
221
+ # TODO: update filter by collection_suffix for Chroma
222
+ return self._get_chroma_indexed_ids(collection_suffix)
222
223
 
223
- def _get_pgvector_indexed_ids(self, store):
224
+ def _get_pgvector_indexed_ids(self, collection_suffix: Optional[str] = ''):
224
225
  """Get all indexed document IDs from PGVector"""
225
226
  from sqlalchemy.orm import Session
227
+ from sqlalchemy import func
226
228
 
229
+ store = self.vectorstore
227
230
  try:
228
231
  with Session(store.session_maker.bind) as session:
229
- ids = session.query(store.EmbeddingStore.id).all()
230
- return [str(id_tuple[0]) for id_tuple in ids]
232
+ # Start building the query
233
+ query = session.query(store.EmbeddingStore.id)
234
+ # Apply filter only if collection_suffix is provided
235
+ if collection_suffix:
236
+ query = query.filter(
237
+ func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata, 'collection') == collection_suffix
238
+ )
239
+ ids = query.all()
240
+ return [str(id_tuple[0]) for id_tuple in ids]
231
241
  except Exception as e:
232
242
  logger.error(f"Failed to get indexed IDs from PGVector: {str(e)}")
233
243
  return []
234
244
 
235
- def _get_chroma_indexed_ids(self, store):
245
+ def _get_chroma_indexed_ids(self, collection_suffix: Optional[str] = ''):
236
246
  """Get all indexed document IDs from Chroma"""
237
247
  try:
238
- data = store.get(include=[]) # Only get IDs, no metadata
248
+ data = self.vectorstore.get(include=[]) # Only get IDs, no metadata
239
249
  return data.get('ids', [])
240
250
  except Exception as e:
241
251
  logger.error(f"Failed to get indexed IDs from Chroma: {str(e)}")
242
252
  return []
243
253
 
244
- def _clean_collection(self):
254
+ def _clean_collection(self, collection_suffix: str = ''):
245
255
  """
246
256
  Clean the vectorstore collection by deleting all indexed data.
247
257
  """
@@ -251,33 +261,37 @@ class VectorStoreWrapper(BaseToolApiWrapper):
251
261
  )
252
262
  # This logic deletes all data from the vectorstore collection without removal of collection.
253
263
  # Collection itself remains available for future indexing.
254
- self.vectoradapter.vectorstore.delete(ids=self._get_indexed_ids(self.vectoradapter.vectorstore))
264
+ self.vectorstore.delete(ids=self._get_indexed_ids(collection_suffix))
255
265
 
256
266
  self._log_data(
257
267
  f"Collection '{self.dataset}' has been cleaned. ",
258
268
  tool_name="_clean_collection"
259
269
  )
260
270
 
271
+ def _is_pgvector(self) -> bool:
272
+ """Check if the vectorstore is a PGVector store."""
273
+ return hasattr(self.vectorstore, 'session_maker') and hasattr(self.vectorstore, 'EmbeddingStore')
274
+
261
275
  # TODO: refactor to use common method for different vectorstores in a separate vectorstore wrappers
262
- def _get_indexed_data(self, store):
276
+ def _get_indexed_data(self):
263
277
  """ Get all indexed data from vectorstore for non-code content """
264
278
 
265
279
  # Check if this is a PGVector store
266
- if hasattr(store, 'session_maker') and hasattr(store, 'EmbeddingStore'):
267
- return self._get_pgvector_indexed_data(store)
280
+ if self._is_pgvector():
281
+ return self._get_pgvector_indexed_data()
268
282
  else:
269
283
  # Fall back to original Chroma implementation
270
- return self._get_chroma_indexed_data(store)
284
+ return self._get_chroma_indexed_data(self.vectorstore)
271
285
 
272
- def _get_pgvector_indexed_data(self, store):
286
+ def _get_pgvector_indexed_data(self):
273
287
  """ Get all indexed data from PGVector for non-code content """
274
288
  from sqlalchemy.orm import Session
275
289
 
276
290
  result = {}
277
291
  try:
278
292
  self._log_data("Retrieving already indexed data from PGVector vectorstore",
279
- tool_name="index_documents")
280
-
293
+ tool_name="get_indexed_data")
294
+ store = self.vectorstore
281
295
  with Session(store.session_maker.bind) as session:
282
296
  docs = session.query(
283
297
  store.EmbeddingStore.id,
@@ -320,7 +334,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
320
334
  result = {}
321
335
  try:
322
336
  self._log_data("Retrieving already indexed data from Chroma vectorstore",
323
- tool_name="index_documents")
337
+ tool_name="get_indexed_data")
324
338
  data = store.get(include=['metadatas'])
325
339
 
326
340
  # Re-structure data to be more usable
@@ -349,21 +363,63 @@ class VectorStoreWrapper(BaseToolApiWrapper):
349
363
 
350
364
  return result
351
365
 
352
- def _get_code_indexed_data(self, store) -> Dict[str, Dict[str, Any]]:
366
+ def _get_code_indexed_data(self) -> Dict[str, Dict[str, Any]]:
353
367
  """ Get all indexed data from vectorstore for code content """
354
368
 
355
369
  # get already indexed data
370
+ if self._is_pgvector():
371
+ result = self._get_pgvector_code_indexed_data()
372
+ else:
373
+ result = self._get_chroma_code_indexed_data()
374
+ return result
375
+
376
+ def _get_chroma_code_indexed_data(self) -> Dict[str, Dict[str, Any]]:
377
+ """Get all indexed code data from Chroma."""
356
378
  result = {}
357
379
  try:
358
- self._log_data("Retrieving already indexed code data from vectorstore",
359
- tool_name="index_documents")
360
- data = store.get(include=['metadatas'])
361
- # re-structure data to be more usable
380
+ self._log_data("Retrieving already indexed code data from Chroma vectorstore",
381
+ tool_name="index_code_data")
382
+ data = self.vectorstore.get(include=['metadatas'])
362
383
  for meta, db_id in zip(data['metadatas'], data['ids']):
363
- filename = meta['filename']
384
+ filename = meta.get('filename')
385
+ commit_hash = meta.get('commit_hash')
386
+ if not filename:
387
+ continue
388
+ if filename not in result:
389
+ result[filename] = {
390
+ 'commit_hashes': [],
391
+ 'ids': []
392
+ }
393
+ if commit_hash is not None:
394
+ result[filename]['commit_hashes'].append(commit_hash)
395
+ result[filename]['ids'].append(db_id)
396
+ except Exception as e:
397
+ logger.error(f"Failed to get indexed code data from Chroma: {str(e)}. Continuing with empty index.")
398
+ return result
399
+
400
+ def _get_pgvector_code_indexed_data(self) -> Dict[str, Dict[str, Any]]:
401
+ """Get all indexed code data from PGVector."""
402
+ from sqlalchemy.orm import Session
403
+
404
+ result = {}
405
+ try:
406
+ self._log_data("Retrieving already indexed code data from PGVector vectorstore",
407
+ tool_name="index_code_data")
408
+ store = self.vectorstore
409
+ with Session(store.session_maker.bind) as session:
410
+ docs = session.query(
411
+ store.EmbeddingStore.id,
412
+ store.EmbeddingStore.cmetadata
413
+ ).all()
414
+
415
+ for db_id, meta in docs:
416
+ filename = meta.get('filename')
364
417
  commit_hash = meta.get('commit_hash')
418
+ if not filename:
419
+ continue
365
420
  if filename not in result:
366
421
  result[filename] = {
422
+ 'metadata': meta,
367
423
  'commit_hashes': [],
368
424
  'ids': []
369
425
  }
@@ -371,13 +427,64 @@ class VectorStoreWrapper(BaseToolApiWrapper):
371
427
  result[filename]['commit_hashes'].append(commit_hash)
372
428
  result[filename]['ids'].append(db_id)
373
429
  except Exception as e:
374
- logger.error(f"Failed to get indexed code data from vectorstore: {str(e)}. Continuing with empty index.")
430
+ logger.error(f"Failed to get indexed code data from PGVector: {str(e)}. Continuing with empty index.")
375
431
  return result
376
432
 
433
+
434
+ def _add_to_collection(self, entry_id, new_collection_value):
435
+ """Add a new collection name to the `collection` key in the `metadata` column."""
436
+
437
+ from sqlalchemy import func
438
+ from sqlalchemy.orm import Session
439
+
440
+ store = self.vectorstore
441
+ try:
442
+ with Session(store.session_maker.bind) as session:
443
+ # Query the current value of the `collection` key
444
+ current_collection_query = session.query(
445
+ func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata, 'collection')
446
+ ).filter(store.EmbeddingStore.id == entry_id).scalar()
447
+
448
+ # If the `collection` key is NULL or doesn't contain the new value, update it
449
+ if current_collection_query is None:
450
+ # If `collection` is NULL, initialize it with the new value
451
+ session.query(store.EmbeddingStore).filter(
452
+ store.EmbeddingStore.id == entry_id
453
+ ).update(
454
+ {
455
+ store.EmbeddingStore.cmetadata: func.jsonb_set(
456
+ func.coalesce(store.EmbeddingStore.cmetadata, '{}'),
457
+ '{collection}', # Path to the `collection` key
458
+ f'"{new_collection_value}"', # New value for the `collection` key
459
+ True # Create the key if it doesn't exist
460
+ )
461
+ }
462
+ )
463
+ elif new_collection_value not in current_collection_query.split(";"):
464
+ # If `collection` exists but doesn't contain the new value, append it
465
+ updated_collection_value = f"{current_collection_query};{new_collection_value}"
466
+ session.query(store.EmbeddingStore).filter(
467
+ store.EmbeddingStore.id == entry_id
468
+ ).update(
469
+ {
470
+ store.EmbeddingStore.cmetadata: func.jsonb_set(
471
+ store.EmbeddingStore.cmetadata,
472
+ '{collection}', # Path to the `collection` key
473
+ f'"{updated_collection_value}"', # Concatenated value as a valid JSON string
474
+ True # Create the key if it doesn't exist
475
+ )
476
+ }
477
+ )
478
+
479
+ session.commit()
480
+ logger.info(f"Successfully updated collection for entry ID {entry_id}.")
481
+ except Exception as e:
482
+ logger.error(f"Failed to update collection for entry ID {entry_id}: {str(e)}")
483
+
377
484
  def _reduce_duplicates(
378
485
  self,
379
486
  documents: Generator[Any, None, None],
380
- store,
487
+ collection_suffix: str,
381
488
  get_indexed_data: Callable,
382
489
  key_fn: Callable,
383
490
  compare_fn: Callable,
@@ -386,7 +493,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
386
493
  ) -> List[Any]:
387
494
  """Generic duplicate reduction logic for documents."""
388
495
  self._log_data(log_msg, tool_name="index_documents")
389
- indexed_data = get_indexed_data(store)
496
+ indexed_data = get_indexed_data()
390
497
  indexed_keys = set(indexed_data.keys())
391
498
  if not indexed_keys:
392
499
  self._log_data("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
@@ -397,8 +504,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
397
504
 
398
505
  for document in documents:
399
506
  key = key_fn(document)
400
- if key in indexed_keys:
507
+ if key in indexed_keys and collection_suffix == indexed_data[key]['metadata'].get('collection'):
401
508
  if compare_fn(document, indexed_data[key]):
509
+ # Disabled addition of new collection to already indexed documents
510
+ # # check metadata.collection and update if needed
511
+ # for update_collection_id in remove_ids_fn(indexed_data, key):
512
+ # self._add_to_collection(
513
+ # update_collection_id,
514
+ # collection_suffix
515
+ # )
402
516
  continue
403
517
  final_docs.append(document)
404
518
  docs_to_remove.update(remove_ids_fn(indexed_data, key))
@@ -410,14 +524,14 @@ class VectorStoreWrapper(BaseToolApiWrapper):
410
524
  f"Removing {len(docs_to_remove)} documents from vectorstore that are already indexed with different updated_on.",
411
525
  tool_name="index_documents"
412
526
  )
413
- store.delete(ids=list(docs_to_remove))
527
+ self.vectorstore.delete(ids=list(docs_to_remove))
414
528
 
415
529
  return final_docs
416
530
 
417
- def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None], store) -> List[Any]:
531
+ def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
418
532
  return self._reduce_duplicates(
419
533
  documents,
420
- store,
534
+ collection_suffix,
421
535
  self._get_indexed_data,
422
536
  lambda doc: doc.metadata.get('id'),
423
537
  lambda doc, idx: (
@@ -434,10 +548,10 @@ class VectorStoreWrapper(BaseToolApiWrapper):
434
548
  log_msg="Verification of documents to index started"
435
549
  )
436
550
 
437
- def _reduce_code_duplicates(self, documents: Generator[Any, None, None], store) -> List[Any]:
551
+ def _reduce_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
438
552
  return self._reduce_duplicates(
439
553
  documents,
440
- store,
554
+ collection_suffix,
441
555
  self._get_code_indexed_data,
442
556
  lambda doc: doc.metadata.get('filename'),
443
557
  lambda doc, idx: (
@@ -449,7 +563,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
449
563
  log_msg="Verification of code documents to index started"
450
564
  )
451
565
 
452
- def index_documents(self, documents: Generator[Document, None, None], progress_step: int = 20, clean_index: bool = True, is_code: bool = False):
566
+ def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True, is_code: bool = False):
453
567
  """ Index documents in the vectorstore.
454
568
 
455
569
  Args:
@@ -465,7 +579,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
465
579
  logger.info("Cleaning index before re-indexing all documents.")
466
580
  self._log_data("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
467
581
  try:
468
- self._clean_collection()
582
+ self._clean_collection(collection_suffix)
469
583
  self.vectoradapter.persist()
470
584
  self.vectoradapter.vacuum()
471
585
  self._log_data("Previous index has been removed",
@@ -476,8 +590,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
476
590
  documents = list(documents)
477
591
  else:
478
592
  # remove duplicates based on metadata 'id' and 'updated_on' or 'commit_hash' fields
479
- documents = self._reduce_code_duplicates(documents, self.vectoradapter.vectorstore) if is_code \
480
- else self._reduce_non_code_duplicates(documents, self.vectoradapter.vectorstore)
593
+ documents = self._reduce_code_duplicates(documents, collection_suffix) if is_code \
594
+ else self._reduce_non_code_duplicates(documents, collection_suffix)
481
595
 
482
596
  if not documents or len(documents) == 0:
483
597
  logger.info("No new documents to index after duplicate check.")
@@ -498,6 +612,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
498
612
  logger.debug(self.vectoradapter)
499
613
 
500
614
  documents = documents + list(dependent_docs_generator)
615
+
616
+ # if collection_suffix is provided, add it to metadata of each document
617
+ if collection_suffix:
618
+ for doc in documents:
619
+ if not doc.metadata.get('collection'):
620
+ doc.metadata['collection'] = collection_suffix
621
+ else:
622
+ doc.metadata['collection'] += f";{collection_suffix}"
623
+
501
624
  total_docs = len(documents)
502
625
  documents_count = 0
503
626
  _documents = []
@@ -511,8 +634,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
511
634
  try:
512
635
  _documents.append(document)
513
636
  if len(_documents) >= self.max_docs_per_add:
514
- add_documents(vectorstore=self.vectoradapter.vectorstore, documents=_documents)
515
- self.vectoradapter.persist()
637
+ add_documents(vectorstore=self.vectorstore, documents=_documents)
516
638
  _documents = []
517
639
 
518
640
  percent = math.floor((documents_count / total_docs) * 100)
@@ -526,8 +648,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
526
648
  logger.error(f"Error: {format_exc()}")
527
649
  return {"status": "error", "message": f"Error: {format_exc()}"}
528
650
  if _documents:
529
- add_documents(vectorstore=self.vectoradapter.vectorstore, documents=_documents)
530
- self.vectoradapter.persist()
651
+ add_documents(vectorstore=self.vectorstore, documents=_documents)
531
652
  return {"status": "ok", "message": f"successfully indexed {documents_count} documents"}
532
653
 
533
654
  def search_documents(self, query:str, doctype: str = 'code',
@@ -562,7 +683,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
562
683
  }
563
684
 
564
685
  try:
565
- document_items = self.vectoradapter.vectorstore.similarity_search_with_score(
686
+ document_items = self.vectorstore.similarity_search_with_score(
566
687
  query, filter=document_filter, k=search_top
567
688
  )
568
689
  # Add document results to unique docs
@@ -595,7 +716,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
595
716
  }
596
717
 
597
718
  try:
598
- chunk_items = self.vectoradapter.vectorstore.similarity_search_with_score(
719
+ chunk_items = self.vectorstore.similarity_search_with_score(
599
720
  query, filter=chunk_filter, k=search_top
600
721
  )
601
722
 
@@ -628,7 +749,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
628
749
  }
629
750
 
630
751
  try:
631
- fetch_items = self.vectoradapter.vectorstore.similarity_search_with_score(
752
+ fetch_items = self.vectorstore.similarity_search_with_score(
632
753
  query, filter=doc_filter, k=1
633
754
  )
634
755
  if fetch_items:
@@ -642,7 +763,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
642
763
  else:
643
764
  # Default search behavior (unchanged)
644
765
  max_search_results = 30 if search_top * 3 > 30 else search_top * 3
645
- vector_items = self.vectoradapter.vectorstore.similarity_search_with_score(
766
+ vector_items = self.vectorstore.similarity_search_with_score(
646
767
  query, filter=filter, k=max_search_results
647
768
  )
648
769
 
@@ -10,13 +10,12 @@ def get_tools(tool_type, tool):
10
10
  # common
11
11
  "selected_tools": tool['settings'].get('selected_tools', []),
12
12
  "organization_url": tool['settings']['organization_url'],
13
- "project": tool['settings'].get('project', None),
14
- "token": tool['settings'].get('token', None),
13
+ "ado_configuration": tool['settings']['ado_configuration'],
15
14
  "limit": tool['settings'].get('limit', 5),
16
15
  "toolkit_name": tool.get('toolkit_name', ''),
17
16
  # indexer settings
18
17
  "llm": tool['settings'].get('llm', None),
19
- "connection_string": tool['settings'].get('connection_string', None),
18
+ "pgvector_configuration": tool['settings'].get('pgvector_configuration', {}),
20
19
  "collection_name": tool['toolkit_name'],
21
20
  "doctype": 'doc',
22
21
  "embedding_model": "HuggingFaceEmbeddings",
@@ -17,15 +17,12 @@ name = "ado_repos"
17
17
  def _get_toolkit(tool) -> BaseToolkit:
18
18
  return AzureDevOpsReposToolkit().get_toolkit(
19
19
  selected_tools=tool['settings'].get('selected_tools', []),
20
- organization_url=tool['settings'].get('ado_repos_configuration').get('ado_configuration').get('organization_url', ""),
21
- project=tool['settings'].get('ado_repos_configuration').get('ado_configuration').get('project', ""),
22
- token=tool['settings'].get('ado_repos_configuration').get('ado_configuration').get('token', ""),
20
+ ado_repos_configuration=tool['settings']['ado_repos_configuration'],
23
21
  limit=tool['settings'].get('limit', 5),
24
- repository_id=tool['settings'].get('ado_repos_configuration').get('repository_id', ""),
25
22
  base_branch=tool['settings'].get('base_branch', ""),
26
23
  active_branch=tool['settings'].get('active_branch', ""),
27
24
  toolkit_name=tool['settings'].get('toolkit_name', ""),
28
- connection_string=tool['settings'].get('connection_string', None),
25
+ pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
29
26
  collection_name=tool['toolkit_name'],
30
27
  doctype='code',
31
28
  embedding_model="HuggingFaceEmbeddings",
@@ -49,14 +46,13 @@ class AzureDevOpsReposToolkit(BaseToolkit):
49
46
  AzureDevOpsReposToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
50
47
  m = create_model(
51
48
  name,
52
- ado_repos_configuration=(Optional[AdoReposConfiguration], Field(description="Ado Repos configuration", default=None,
49
+ ado_repos_configuration=(AdoReposConfiguration, Field(description="Ado Repos configuration", default=None,
53
50
  json_schema_extra={'configuration_types': ['ado_repos']})),
54
51
  base_branch=(Optional[str], Field(default="", title="Base branch", description="ADO base branch (e.g., main)")),
55
52
  active_branch=(Optional[str], Field(default="", title="Active branch", description="ADO active branch (e.g., main)")),
56
53
 
57
54
  # indexer settings
58
- pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector configuration", default=None, json_schema_extra={'configuration_types': ['pgvector']})),
59
- json_schema_extra={'secret': True})),
55
+ pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
60
56
  # embedder settings
61
57
  embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
62
58
  default="HuggingFaceEmbeddings")),
@@ -110,8 +106,14 @@ class AzureDevOpsReposToolkit(BaseToolkit):
110
106
  environ["AZURE_DEVOPS_CACHE_DIR"] = "/tmp/.azure-devops"
111
107
  if selected_tools is None:
112
108
  selected_tools = []
113
-
114
- azure_devops_repos_wrapper = ReposApiWrapper(**kwargs)
109
+
110
+ wrapper_payload = {
111
+ **kwargs,
112
+ # TODO use ado_repos_configuration fields
113
+ **kwargs['ado_repos_configuration'],
114
+ **(kwargs.get('pgvector_configuration') or {}),
115
+ }
116
+ azure_devops_repos_wrapper = ReposApiWrapper(**wrapper_payload)
115
117
  available_tools = azure_devops_repos_wrapper.get_available_tools()
116
118
  tools = []
117
119
  prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
@@ -242,6 +242,7 @@ class ArgsSchema(Enum):
242
242
 
243
243
 
244
244
  class ReposApiWrapper(BaseCodeToolApiWrapper):
245
+ # TODO use ado_repos_configuration fields
245
246
  organization_url: Optional[str]
246
247
  project: Optional[str]
247
248
  repository_id: Optional[str]
@@ -1,9 +1,11 @@
1
1
  from typing import List, Optional, Literal
2
2
 
3
3
  from langchain_core.tools import BaseTool, BaseToolkit
4
- from pydantic import create_model, BaseModel, Field, SecretStr
4
+ from pydantic import create_model, BaseModel, Field
5
5
 
6
6
  import requests
7
+ from ....configurations.ado import AdoConfiguration
8
+ from ....configurations.pgvector import PgVectorConfiguration
7
9
  from .test_plan_wrapper import TestPlanApiWrapper
8
10
  from ...base.tool import BaseAction
9
11
  from ...utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length, check_connection_response
@@ -24,19 +26,10 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
24
26
  m = create_model(
25
27
  name_alias,
26
28
  name=(str, Field(description="Toolkit name", json_schema_extra={'toolkit_name': True, 'max_toolkit_length': AzureDevOpsPlansToolkit.toolkit_max_length})),
27
- organization_url=(str, Field(title="Organization URL",
28
- description="ADO organization url",
29
- json_schema_extra={
30
- 'configuration': True,
31
- 'configuration_title': True
32
- })),
33
- project=(str, Field(title="Project", description="ADO project", json_schema_extra={'configuration': True})),
29
+ ado_configuration=(AdoConfiguration, Field(description="Ado configuration", json_schema_extra={'configuration_types': ['ado']})),
34
30
  limit=(Optional[int], Field(description="ADO plans limit used for limitation of the list with results", default=5)),
35
- token=(SecretStr, Field(description="ADO token", json_schema_extra={'secret': True, 'configuration': True})),
36
31
  # indexer settings
37
- connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
38
- default=None,
39
- json_schema_extra={'secret': True})),
32
+ pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
40
33
  # embedder settings
41
34
  embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
42
35
  default="HuggingFaceEmbeddings")),
@@ -75,9 +68,12 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
75
68
 
76
69
  @check_connection_response
77
70
  def check_connection(self):
71
+ ado_config = self.ado_test_plan_configuration.ado_configuration if self.ado_test_plan_configuration else None
72
+ if not ado_config:
73
+ raise ValueError("ADO test plan configuration is required")
78
74
  response = requests.get(
79
- f'{self.organization_url}/{self.project}/_apis/testplan/plans?api-version=7.0',
80
- headers = {'Authorization': f'Bearer {self.token}'},
75
+ f'{ado_config.organization_url}/{ado_config.project}/_apis/testplan/plans?api-version=7.0',
76
+ headers = {'Authorization': f'Bearer {ado_config.token}'},
81
77
  timeout=5
82
78
  )
83
79
  return response
@@ -92,7 +88,13 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
92
88
  environ['AZURE_DEVOPS_CACHE_DIR'] = '/tmp/.azure-devops'
93
89
  if selected_tools is None:
94
90
  selected_tools = []
95
- azure_devops_api_wrapper = TestPlanApiWrapper(**kwargs)
91
+ wrapper_payload = {
92
+ **kwargs,
93
+ # TODO use ado_configuration fields in TestPlanApiWrapper
94
+ **kwargs['ado_configuration'],
95
+ **(kwargs.get('pgvector_configuration') or {}),
96
+ }
97
+ azure_devops_api_wrapper = TestPlanApiWrapper(**wrapper_payload)
96
98
  available_tools = azure_devops_api_wrapper.get_available_tools()
97
99
  tools = []
98
100
  prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''