alita-sdk 0.3.220__tar.gz → 0.3.222__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 (323) hide show
  1. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/artifact.py +0 -1
  3. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/bitbucket/__init__.py +5 -1
  4. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/confluence/__init__.py +6 -1
  5. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/elitea_base.py +21 -47
  6. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/figma/__init__.py +5 -1
  7. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/github/__init__.py +5 -2
  8. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gitlab/__init__.py +5 -2
  9. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/jira/__init__.py +11 -1
  10. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/sharepoint/__init__.py +5 -1
  11. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -1
  12. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/testrail/__init__.py +5 -1
  13. alita_sdk-0.3.222/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +91 -0
  14. alita_sdk-0.3.222/alita_sdk/tools/vector_adapters/__init__.py +0 -0
  15. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/xray/__init__.py +11 -1
  16. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_enterprise/__init__.py +5 -2
  17. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +63 -20
  18. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_essential/__init__.py +5 -2
  19. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -1
  20. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -1
  21. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk.egg-info/PKG-INFO +1 -1
  22. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk.egg-info/SOURCES.txt +2 -0
  23. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/pyproject.toml +1 -1
  24. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/LICENSE +0 -0
  25. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/README.md +0 -0
  26. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/__init__.py +0 -0
  27. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/community/__init__.py +0 -0
  28. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/community/utils.py +0 -0
  29. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/__init__.py +0 -0
  30. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/clients/__init__.py +0 -0
  31. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/clients/artifact.py +0 -0
  32. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/clients/client.py +0 -0
  33. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/clients/datasource.py +0 -0
  34. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/clients/prompt.py +0 -0
  35. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/__init__.py +0 -0
  36. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  37. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  38. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/assistant.py +0 -0
  39. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  40. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/constants.py +0 -0
  41. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  42. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  43. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  44. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  45. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  46. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  47. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  48. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  49. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  50. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
  51. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
  52. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  53. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  54. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
  55. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  56. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
  57. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  58. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/indexer.py +0 -0
  59. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  60. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  61. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  62. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  63. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  64. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  65. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  66. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  67. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  68. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  69. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  70. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  71. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  72. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  73. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  74. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  75. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  76. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  77. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  78. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  79. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  80. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  81. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  82. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  83. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/langchain/utils.py +0 -0
  84. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/llms/__init__.py +0 -0
  85. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/llms/preloaded.py +0 -0
  86. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  87. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/application.py +0 -0
  88. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  89. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  90. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  91. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  92. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/tools.py +0 -0
  93. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  94. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/__init__.py +0 -0
  95. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/agent.py +0 -0
  96. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/application.py +0 -0
  97. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/datasource.py +0 -0
  98. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/echo.py +0 -0
  99. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/function.py +0 -0
  100. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  101. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/llm.py +0 -0
  102. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/loop.py +0 -0
  103. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/loop_output.py +0 -0
  104. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  105. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  106. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/prompt.py +0 -0
  107. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/router.py +0 -0
  108. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/tool.py +0 -0
  109. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/tools/vectorstore.py +0 -0
  110. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  111. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/__init__.py +0 -0
  112. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/constants.py +0 -0
  113. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/evaluate.py +0 -0
  114. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/logging.py +0 -0
  115. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  116. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/streamlit.py +0 -0
  117. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
  118. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
  119. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/runtime/utils/utils.py +0 -0
  120. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/__init__.py +0 -0
  121. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/__init__.py +0 -0
  122. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/repos/__init__.py +0 -0
  123. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
  124. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
  125. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  126. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/utils.py +0 -0
  127. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
  128. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  129. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
  130. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  131. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  132. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  133. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/aws/__init__.py +0 -0
  134. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
  135. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
  136. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
  137. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
  138. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  139. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
  140. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  141. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/base/__init__.py +0 -0
  142. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/base/tool.py +0 -0
  143. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
  144. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  145. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  146. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/bitbucket/tools.py +0 -0
  147. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/browser/__init__.py +0 -0
  148. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/browser/crawler.py +0 -0
  149. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  150. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  151. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/browser/utils.py +0 -0
  152. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/browser/wiki.py +0 -0
  153. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/__init__.py +0 -0
  154. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  155. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  156. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  157. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  158. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  159. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  160. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  161. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  162. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  163. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  164. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  165. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/tools.py +0 -0
  166. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  167. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  168. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/carrier/utils.py +0 -0
  169. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/__init__.py +0 -0
  170. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  171. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  172. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  173. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  174. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  175. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  176. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  177. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  178. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  179. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  180. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  181. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  182. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  183. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  184. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  185. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  186. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  187. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  188. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/models.py +0 -0
  189. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  190. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  191. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  192. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  193. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  194. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/chunkers/utils.py +0 -0
  195. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/__init__.py +0 -0
  196. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  197. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  198. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  199. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  200. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  201. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  202. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  203. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  204. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/code/__init__.py +0 -0
  205. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/code/linter/__init__.py +0 -0
  206. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  207. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  208. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  209. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  210. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  211. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/confluence/loader.py +0 -0
  212. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/confluence/utils.py +0 -0
  213. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  214. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  215. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/elastic/__init__.py +0 -0
  216. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  217. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  218. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/github/api_wrapper.py +0 -0
  219. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/github/github_client.py +0 -0
  220. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  221. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/github/schemas.py +0 -0
  222. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/github/tool.py +0 -0
  223. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/github/tool_prompts.py +0 -0
  224. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
  225. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gitlab/tools.py +0 -0
  226. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gitlab/utils.py +0 -0
  227. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  228. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  229. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gmail/__init__.py +0 -0
  230. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  231. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/gmail/utils.py +0 -0
  232. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/google/__init__.py +0 -0
  233. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
  234. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
  235. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
  236. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/google/bigquery/tool.py +0 -0
  237. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/google_places/__init__.py +0 -0
  238. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  239. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  240. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/keycloak/__init__.py +0 -0
  241. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  242. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/llm/__init__.py +0 -0
  243. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/llm/img_utils.py +0 -0
  244. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/llm/llm_utils.py +0 -0
  245. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/localgit/__init__.py +0 -0
  246. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/localgit/local_git.py +0 -0
  247. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/localgit/tool.py +0 -0
  248. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/memory/__init__.py +0 -0
  249. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ocr/__init__.py +0 -0
  250. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  251. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/ocr/text_detection.py +0 -0
  252. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/openapi/__init__.py +0 -0
  253. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/__init__.py +0 -0
  254. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  255. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  256. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  257. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  258. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  259. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  260. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  261. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  262. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  263. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  264. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  265. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  266. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  267. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  268. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  269. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  270. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  271. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  272. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/postman/__init__.py +0 -0
  273. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  274. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  275. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pptx/__init__.py +0 -0
  276. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  277. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/qtest/__init__.py +0 -0
  278. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
  279. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/qtest/tool.py +0 -0
  280. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/rally/__init__.py +0 -0
  281. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  282. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/report_portal/__init__.py +0 -0
  283. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  284. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  285. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/salesforce/__init__.py +0 -0
  286. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  287. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/salesforce/model.py +0 -0
  288. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/servicenow/__init__.py +0 -0
  289. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  290. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  291. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  292. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/sharepoint/utils.py +0 -0
  293. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/slack/__init__.py +0 -0
  294. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  295. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/sql/__init__.py +0 -0
  296. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  297. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/sql/models.py +0 -0
  298. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/testio/__init__.py +0 -0
  299. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  300. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
  301. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/utils/__init__.py +0 -0
  302. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/utils/content_parser.py +0 -0
  303. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  304. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/yagmail/__init__.py +0 -0
  305. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  306. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  307. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr/__init__.py +0 -0
  308. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  309. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  310. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  311. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_essential/client.py +0 -0
  312. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  313. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  314. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  315. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  316. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk.egg-info/dependency_links.txt +0 -0
  317. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk.egg-info/requires.txt +0 -0
  318. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/alita_sdk.egg-info/top_level.txt +0 -0
  319. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/setup.cfg +0 -0
  320. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/tests/test_ado_analysis.py +0 -0
  321. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/tests/test_github_analysis.py +0 -0
  322. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/tests/test_gitlab_analysis.py +0 -0
  323. {alita_sdk-0.3.220 → alita_sdk-0.3.222}/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.220
3
+ Version: 0.3.222
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
@@ -90,7 +90,6 @@ class ArtifactWrapper(BaseVectorStoreToolApiWrapper):
90
90
  yield Document(page_content=str(value), metadata=metadata)
91
91
  else:
92
92
  document.page_content = json.dumps(str(page_content))
93
- yield document
94
93
 
95
94
  @extend_with_vector_tools
96
95
  def get_available_tools(self):
@@ -27,7 +27,7 @@ def get_tools(tool):
27
27
  llm=tool['settings'].get('llm', None),
28
28
  alita=tool['settings'].get('alita', None),
29
29
  connection_string=tool['settings'].get('connection_string', None),
30
- collection_name=str(tool['id']),
30
+ collection_name=str(tool['toolkit_name']),
31
31
  doctype='code',
32
32
  embedding_model="HuggingFaceEmbeddings",
33
33
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
@@ -60,6 +60,10 @@ class AlitaBitbucketToolkit(BaseToolkit):
60
60
  connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
61
61
  default=None,
62
62
  json_schema_extra={'secret': True})),
63
+
64
+ # embedder settings
65
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
66
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
63
67
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
64
68
  __config__=ConfigDict(json_schema_extra=
65
69
  {
@@ -27,7 +27,7 @@ def get_tools(tool):
27
27
  toolkit_name=tool.get('toolkit_name'),
28
28
  # indexer settings
29
29
  connection_string = tool['settings'].get('connection_string', None),
30
- collection_name=str(tool['id']),
30
+ collection_name=str(tool['toolkit_name']),
31
31
  doctype='doc',
32
32
  embedding_model="HuggingFaceEmbeddings",
33
33
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
@@ -84,6 +84,11 @@ class ConfluenceToolkit(BaseToolkit):
84
84
  connection_string = (Optional[SecretStr], Field(description="Connection string for vectorstore",
85
85
  default=None,
86
86
  json_schema_extra={'secret': True})),
87
+
88
+ # embedder settings
89
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
90
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
91
+
87
92
  __config__=ConfigDict(json_schema_extra={
88
93
  'metadata': {
89
94
  "label": "Confluence",
@@ -12,6 +12,7 @@ from pydantic import BaseModel, create_model, Field, SecretStr
12
12
  from alita_sdk.runtime.langchain.interfaces.llm_processor import get_embeddings
13
13
  from .chunkers import markdown_chunker
14
14
  from .utils import TOOLKIT_SPLITTER
15
+ from .vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
15
16
  from ..runtime.utils.utils import IndexerKeywords
16
17
 
17
18
  logger = logging.getLogger(__name__)
@@ -219,6 +220,10 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
219
220
  embedding_model_params: Optional[Dict[str, Any]] = {"model_name": "sentence-transformers/all-MiniLM-L6-v2"}
220
221
  vectorstore_type: Optional[str] = "PGVector"
221
222
 
223
+ def __init__(self, **kwargs):
224
+ super().__init__(**kwargs)
225
+ self._adapter = VectorStoreAdapterFactory.create_adapter(self.vectorstore_type)
226
+
222
227
  def _index_tool_params(self, **kwargs) -> dict[str, tuple[type, Field]]:
223
228
  """
224
229
  Returns a list of fields for index_data args schema.
@@ -329,36 +334,24 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
329
334
 
330
335
  # TODO: init store once and re-use the instance
331
336
  def _init_vector_store(self, collection_suffix: str = "", embeddings: Optional[Any] = None):
332
- """ Initializes the vector store wrapper with the provided parameters."""
337
+ """Initializes the vector store wrapper with the provided parameters."""
333
338
  try:
334
339
  from alita_sdk.runtime.tools.vectorstore import VectorStoreWrapper
335
340
  except ImportError:
336
341
  from alita_sdk.runtime.tools.vectorstore import VectorStoreWrapper
337
-
342
+
338
343
  # Validate collection_suffix length
339
344
  if collection_suffix and len(collection_suffix.strip()) > 7:
340
345
  raise ToolException("collection_suffix must be 7 characters or less")
341
-
346
+
342
347
  # Create collection name with suffix if provided
343
348
  collection_name = str(self.collection_name)
344
349
  if collection_suffix and collection_suffix.strip():
345
350
  collection_name = f"{self.collection_name}_{collection_suffix.strip()}"
346
-
347
- if self.vectorstore_type == 'PGVector':
348
- vectorstore_params = {
349
- "use_jsonb": True,
350
- "collection_name": collection_name,
351
- "create_extension": True,
352
- "alita_sdk_options": {
353
- "target_schema": collection_name,
354
- },
355
- "connection_string": self.connection_string.get_secret_value()
356
- }
357
- elif self.vectorstore_type == 'Chroma':
358
- vectorstore_params = {
359
- "collection_name": collection_name,
360
- "persist_directory": "./indexer_db"
361
- }
351
+
352
+ # Get database-specific parameters using adapter
353
+ connection_string = self.connection_string.get_secret_value() if self.connection_string else None
354
+ vectorstore_params = self._adapter.get_vectorstore_params(collection_name, connection_string)
362
355
 
363
356
  return VectorStoreWrapper(
364
357
  llm=self.llm,
@@ -371,36 +364,17 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
371
364
  )
372
365
 
373
366
  def remove_index(self, collection_suffix: str = ""):
374
- """
375
- Cleans the indexed data in the collection
376
- """
377
-
378
- self._init_vector_store(collection_suffix)._remove_collection()
367
+ """Cleans the indexed data in the collection."""
368
+ vectorstore_wrapper = self._init_vector_store(collection_suffix)
369
+ collection_name = f"{self.collection_name}_{collection_suffix}" if collection_suffix else str(self.collection_name)
370
+ self._adapter.remove_collection(vectorstore_wrapper, collection_name)
371
+ return (f"Collection '{collection_name}' has been removed from the vector store.\n"
372
+ f"Available collections: {self.list_collections()}")
379
373
 
380
374
  def list_collections(self):
381
- """
382
- Lists all collections in the vector store
383
- """
384
- if self.vectorstore_type.lower() == 'PGVector'.lower():
385
- from sqlalchemy import text
386
- from sqlalchemy.orm import Session
387
-
388
- # schema_name = self.vectorstore.collection_name
389
- with Session(self._init_vector_store().vectorstore.session_maker.bind) as session:
390
- get_collections = text("""
391
- SELECT table_schema
392
- FROM information_schema.columns
393
- WHERE udt_name = 'vector';
394
- """)
395
-
396
- # Execute the raw SQL query
397
- result = session.execute(get_collections)
398
-
399
- # Fetch all rows from the result
400
- docs = result.fetchall()
401
- return str(docs)
402
- vector_client = self._init_vector_store().vectoradapter.vectorstore._client
403
- return ','.join([collection.name for collection in vector_client.list_collections()])
375
+ """Lists all collections in the vector store."""
376
+ vectorstore_wrapper = self._init_vector_store()
377
+ return self._adapter.list_collections(vectorstore_wrapper)
404
378
 
405
379
  def search_index(self,
406
380
  query: str,
@@ -22,7 +22,7 @@ def get_tools(tool):
22
22
  # indexer settings
23
23
  llm=tool['settings'].get('llm', None),
24
24
  connection_string = tool['settings'].get('connection_string', None),
25
- collection_name=str(tool['id']),
25
+ collection_name=str(tool['toolkit_name']),
26
26
  doctype='doc',
27
27
  embedding_model="HuggingFaceEmbeddings",
28
28
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
@@ -57,6 +57,10 @@ class FigmaToolkit(BaseToolkit):
57
57
  connection_string = (Optional[SecretStr], Field(description="Connection string for vectorstore",
58
58
  default=None,
59
59
  json_schema_extra={'secret': True})),
60
+
61
+ # embedder settings
62
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
63
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
60
64
  __config__=ConfigDict(
61
65
  json_schema_extra={
62
66
  "metadata": {
@@ -25,7 +25,7 @@ def _get_toolkit(tool) -> BaseToolkit:
25
25
  llm=tool['settings'].get('llm', None),
26
26
  alita=tool['settings'].get('alita', None),
27
27
  connection_string=tool['settings'].get('connection_string', None),
28
- collection_name=str(tool['id']),
28
+ collection_name=str(tool['toolkit_name']),
29
29
  doctype='code',
30
30
  embedding_model="HuggingFaceEmbeddings",
31
31
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
@@ -96,6 +96,10 @@ class AlitaGitHubToolkit(BaseToolkit):
96
96
  default=None,
97
97
  json_schema_extra={'secret': True})),
98
98
 
99
+ # embedder settings
100
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
101
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
102
+
99
103
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools}))
100
104
  )
101
105
 
@@ -123,4 +127,3 @@ class AlitaGitHubToolkit(BaseToolkit):
123
127
 
124
128
  def get_tools(self):
125
129
  return self.tools
126
-
@@ -7,7 +7,6 @@ from pydantic import create_model, BaseModel, ConfigDict, SecretStr
7
7
  from pydantic.fields import Field
8
8
 
9
9
  from .api_wrapper import GitLabAPIWrapper
10
- # from .tools import __all__
11
10
  from ..utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length
12
11
 
13
12
  name = "gitlab"
@@ -24,7 +23,7 @@ def get_tools(tool):
24
23
  llm=tool['settings'].get('llm', None),
25
24
  alita=tool['settings'].get('alita', None),
26
25
  connection_string=tool['settings'].get('connection_string', None),
27
- collection_name=f"{tool.get('toolkit_name')}_{str(tool['id'])}",
26
+ collection_name=str(tool['toolkit_name']),
28
27
  doctype='code',
29
28
  embedding_model="HuggingFaceEmbeddings",
30
29
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
@@ -51,6 +50,10 @@ class AlitaGitlabToolkit(BaseToolkit):
51
50
  connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
52
51
  default=None,
53
52
  json_schema_extra={'secret': True})),
53
+
54
+ # embedder settings
55
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
56
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
54
57
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
55
58
  __config__=ConfigDict(json_schema_extra={
56
59
  'metadata': {
@@ -25,7 +25,7 @@ def get_tools(tool):
25
25
  llm=tool['settings'].get('llm', None),
26
26
  alita=tool['settings'].get('alita', None),
27
27
  connection_string=tool['settings'].get('connection_string', None),
28
- collection_name=f"{tool.get('toolkit_name')}_{str(tool['id'])}",
28
+ collection_name=str(tool['toolkit_name']),
29
29
  embedding_model="HuggingFaceEmbeddings",
30
30
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
31
31
  vectorstore_type="PGVector",
@@ -81,6 +81,16 @@ class JiraToolkit(BaseToolkit):
81
81
  )),
82
82
  verify_ssl=(bool, Field(description="Verify SSL", default=True)),
83
83
  additional_fields=(Optional[str], Field(description="Additional fields", default="")),
84
+
85
+ # indexer settings
86
+ connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
87
+ default=None,
88
+ json_schema_extra={'secret': True})),
89
+
90
+ # embedder settings
91
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
92
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
93
+
84
94
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
85
95
  __config__=ConfigDict(json_schema_extra={
86
96
  'metadata': {
@@ -18,7 +18,7 @@ def get_tools(tool):
18
18
  llm=tool['settings'].get('llm'),
19
19
  # indexer settings
20
20
  connection_string=tool['settings'].get('connection_string', None),
21
- collection_name=f"{tool.get('toolkit_name')}_{str(tool['id'])}",
21
+ collection_name=str(tool['toolkit_name']),
22
22
  embedding_model="HuggingFaceEmbeddings",
23
23
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
24
24
  vectorstore_type="PGVector")
@@ -43,6 +43,10 @@ class SharepointToolkit(BaseToolkit):
43
43
  connection_string = (Optional[SecretStr], Field(description="Connection string for vectorstore",
44
44
  default=None,
45
45
  json_schema_extra={'secret': True})),
46
+
47
+ # embedder settings
48
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
49
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
46
50
  __config__=ConfigDict(json_schema_extra={
47
51
  'metadata': {
48
52
  "label": "Sharepoint", "icon_url": "sharepoint.svg",
@@ -172,7 +172,6 @@ class SharepointApiWrapper(BaseVectorStoreToolApiWrapper):
172
172
  yield Document(page_content=str(content), metadata=new_metadata)
173
173
  else:
174
174
  document.page_content = str(doc_content)
175
- yield document
176
175
 
177
176
  @extend_with_vector_tools
178
177
  def get_available_tools(self):
@@ -21,7 +21,7 @@ def get_tools(tool):
21
21
 
22
22
  # indexer settings
23
23
  connection_string=tool['settings'].get('connection_string', None),
24
- collection_name=f"{tool.get('toolkit_name')}_{str(tool['id'])}",
24
+ collection_name=f"{tool.get('toolkit_name')}",
25
25
  embedding_model="HuggingFaceEmbeddings",
26
26
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
27
27
  vectorstore_type="PGVector"
@@ -55,6 +55,10 @@ class TestrailToolkit(BaseToolkit):
55
55
  connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
56
56
  default=None,
57
57
  json_schema_extra={'secret': True})),
58
+
59
+ # embedder settings
60
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
61
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
58
62
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
59
63
  __config__=ConfigDict(json_schema_extra={'metadata':
60
64
  {"label": "Testrail", "icon_url": "testrail-icon.svg",
@@ -0,0 +1,91 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import Any, Dict, Optional
3
+
4
+
5
+ class VectorStoreAdapter(ABC):
6
+ """Abstract base class for vector store adapters."""
7
+
8
+ @abstractmethod
9
+ def get_vectorstore_params(self, collection_name: str, connection_string: Optional[str] = None) -> Dict[str, Any]:
10
+ """Get vector store specific parameters."""
11
+ pass
12
+
13
+ @abstractmethod
14
+ def list_collections(self, vectorstore_wrapper) -> str:
15
+ """List all collections in the vector store."""
16
+ pass
17
+
18
+ @abstractmethod
19
+ def remove_collection(self, vectorstore_wrapper, collection_name: str):
20
+ """Remove a collection from the vector store."""
21
+ pass
22
+
23
+
24
+ class PGVectorAdapter(VectorStoreAdapter):
25
+ """Adapter for PGVector database operations."""
26
+
27
+ def get_vectorstore_params(self, collection_name: str, connection_string: Optional[str] = None) -> Dict[str, Any]:
28
+ return {
29
+ "use_jsonb": True,
30
+ "collection_name": collection_name,
31
+ "create_extension": True,
32
+ "alita_sdk_options": {
33
+ "target_schema": collection_name,
34
+ },
35
+ "connection_string": connection_string
36
+ }
37
+
38
+ def list_collections(self, vectorstore_wrapper) -> str:
39
+ from sqlalchemy import text
40
+ from sqlalchemy.orm import Session
41
+
42
+ with Session(vectorstore_wrapper.vectorstore.session_maker.bind) as session:
43
+ get_collections = text("""
44
+ SELECT table_schema
45
+ FROM information_schema.columns
46
+ WHERE udt_name = 'vector';
47
+ """)
48
+ result = session.execute(get_collections)
49
+ docs = result.fetchall()
50
+ return str(docs)
51
+
52
+ def remove_collection(self, vectorstore_wrapper, collection_name: str):
53
+ vectorstore_wrapper._remove_collection()
54
+
55
+
56
+ class ChromaAdapter(VectorStoreAdapter):
57
+ """Adapter for Chroma database operations."""
58
+
59
+ def get_vectorstore_params(self, collection_name: str, connection_string: Optional[str] = None) -> Dict[str, Any]:
60
+ return {
61
+ "collection_name": collection_name,
62
+ "persist_directory": "./indexer_db"
63
+ }
64
+
65
+ def list_collections(self, vectorstore_wrapper) -> str:
66
+ vector_client = vectorstore_wrapper.vectoradapter.vectorstore._client
67
+ return ','.join([collection.name for collection in vector_client.list_collections()])
68
+
69
+ def remove_collection(self, vectorstore_wrapper, collection_name: str):
70
+ vectorstore_wrapper.vectoradapter.vectorstore.delete_collection()
71
+
72
+
73
+ class VectorStoreAdapterFactory:
74
+ """Factory for creating vector store adapters."""
75
+
76
+ _adapters = {
77
+ 'PGVector': PGVectorAdapter,
78
+ 'Chroma': ChromaAdapter,
79
+ }
80
+
81
+ @classmethod
82
+ def create_adapter(cls, vectorstore_type: str) -> VectorStoreAdapter:
83
+ adapter_class = cls._adapters.get(vectorstore_type)
84
+ if not adapter_class:
85
+ raise ValueError(f"Unsupported vectorstore type: {vectorstore_type}")
86
+ return adapter_class()
87
+
88
+ @classmethod
89
+ def register_adapter(cls, vectorstore_type: str, adapter_class: type):
90
+ """Register a new adapter for a vector store type."""
91
+ cls._adapters[vectorstore_type] = adapter_class
@@ -24,7 +24,7 @@ def get_tools(tool):
24
24
 
25
25
  # indexer settings
26
26
  connection_string=tool['settings'].get('connection_string', None),
27
- collection_name=f"{tool.get('toolkit_name')}_{str(tool['id'])}",
27
+ collection_name=str(tool['toolkit_name']),
28
28
  embedding_model="HuggingFaceEmbeddings",
29
29
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
30
30
  vectorstore_type="PGVector"
@@ -45,6 +45,16 @@ class XrayToolkit(BaseToolkit):
45
45
  client_id=(str, Field(description="Client ID")),
46
46
  client_secret=(SecretStr, Field(description="Client secret", json_schema_extra={'secret': True})),
47
47
  limit=(Optional[int], Field(description="Limit", default=100)),
48
+
49
+ # indexer settings
50
+ connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
51
+ default=None,
52
+ json_schema_extra={'secret': True})),
53
+
54
+ # embedder settings
55
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
56
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
57
+
48
58
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
49
59
  __config__={'json_schema_extra':
50
60
  {
@@ -18,7 +18,7 @@ def get_tools(tool):
18
18
 
19
19
  # indexer settings
20
20
  connection_string=tool['settings'].get('connection_string', None),
21
- collection_name=f"{tool.get('toolkit_name')}_{str(tool['id'])}",
21
+ collection_name=str(tool['toolkit_name']),
22
22
  embedding_model="HuggingFaceEmbeddings",
23
23
  embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
24
24
  vectorstore_type="PGVector"
@@ -41,6 +41,10 @@ class ZephyrEnterpriseToolkit(BaseToolkit):
41
41
  connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
42
42
  default=None,
43
43
  json_schema_extra={'secret': True})),
44
+
45
+ # embedder settings
46
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
47
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
44
48
  selected_tools=(List[Literal[tuple(selected_tools)]], []),
45
49
  __config__=ConfigDict(json_schema_extra={
46
50
  'metadata': {
@@ -71,4 +75,3 @@ class ZephyrEnterpriseToolkit(BaseToolkit):
71
75
 
72
76
  def get_tools(self) -> List[BaseTool]:
73
77
  return self.tools
74
-
@@ -1,15 +1,29 @@
1
1
  import logging
2
- from typing import Optional, List
2
+ from importlib.metadata import metadata
3
+ from operator import ifloordiv
4
+ from typing import Optional, List, Generator
3
5
 
4
6
  from langchain_core.tools import ToolException
5
7
  from pydantic import create_model, model_validator, PrivateAttr, Field, SecretStr
6
8
 
9
+ from langchain_core.documents import Document
7
10
  from .zephyr_enterprise import ZephyrClient
8
- from ..elitea_base import BaseToolApiWrapper
11
+ from ..elitea_base import BaseToolApiWrapper, BaseVectorStoreToolApiWrapper, extend_with_vector_tools
9
12
 
10
13
  logger = logging.getLogger(__name__)
11
14
 
12
- class ZephyrApiWrapper(BaseToolApiWrapper):
15
+ zql_description = """
16
+ ZQL query to search for test cases.
17
+ Supported: estimatedTime, testcaseId, creator, release,
18
+ project, priority, altId, version,
19
+ versionId, automated, folder, contents,
20
+ name, comment, tag
21
+
22
+ It has to follow the syntax in examples:
23
+ "folder=\"TestToolkit\"", "name~\"TestToolkit5\"
24
+ """
25
+
26
+ class ZephyrApiWrapper(BaseVectorStoreToolApiWrapper):
13
27
  base_url: str
14
28
  token: SecretStr
15
29
  _client: Optional[ZephyrClient] = PrivateAttr()
@@ -39,7 +53,7 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
39
53
  return ToolException(f"Unable to retrieve Zephyr entities: {e}")
40
54
 
41
55
 
42
- def get_testcases_by_zql(self, zql: str):
56
+ def get_testcases_by_zql(self, zql: str, return_as_list: bool = False):
43
57
 
44
58
  """
45
59
  Retrieve testcases by zql.
@@ -50,8 +64,12 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
50
64
  testcases = self._client.get_testcases_by_zql(zql)
51
65
  parsed_test_cases = []
52
66
  if testcases['resultSize'] == 0:
67
+ if return_as_list:
68
+ return []
53
69
  return "No test cases found for the provided ZQL query."
54
70
  logger.info(f"Retrieved test cases: {testcases}")
71
+ if return_as_list:
72
+ return [test_case['testcase'] for test_case in testcases['results']]
55
73
  for test_case in testcases['results']:
56
74
  parsed_test_cases.append(f"Test case ID: {test_case.get('id')}, Test case: {test_case['testcase']}")
57
75
  return "\n".join(parsed_test_cases)
@@ -69,6 +87,20 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
69
87
  except Exception as e:
70
88
  return ToolException(f"Unable to retrieve Zephyr entities: {e}")
71
89
 
90
+ def get_test_case_steps(self, testcase_tree_id: str):
91
+ last_version = self.get_last_version(testcase_tree_id)
92
+ return self._client.get_testcase_steps(last_version)
93
+
94
+ def get_last_version(self, testcase_tree_id: str):
95
+ # get test case id
96
+ test_case_id = self._client.get_test_case(testcase_tree_id)['testcase']['testcaseId']
97
+ logger.info(f"Test case id: {test_case_id}")
98
+ # get test case version id
99
+ return self._client.get_testcase_versions(test_case_id)[-1]['id']
100
+
101
+ def get_test_case_steps_by_version(self, test_case_version_id: str):
102
+ return self._client.get_testcase_steps(test_case_version_id)
103
+
72
104
  def add_steps(self, testcase_tree_id: str, steps: Optional[List[dict]] = []):
73
105
 
74
106
  """
@@ -81,14 +113,10 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
81
113
  if not steps:
82
114
  return ToolException("Steps cannot be empty.")
83
115
 
84
- # get test case id
85
- test_case_id = self._client.get_test_case(testcase_tree_id)['testcase']['testcaseId']
86
- logger.info(f"Test case id: {test_case_id}")
87
- # get test case version id
88
- test_case_version_id = self._client.get_testcase_versions(test_case_id)[-1]['id']
116
+ test_case_version_id = self.get_last_version(testcase_tree_id)
89
117
  logger.info(f"Test case version id: {test_case_version_id}")
90
118
  # get test case steps
91
- test_case_steps = self._client.get_testcase_steps(test_case_version_id)
119
+ test_case_steps = self.get_test_case_steps_by_version(test_case_version_id)
92
120
  logger.info(f"Test case steps: {test_case_steps}")
93
121
  # add steps
94
122
  actual_steps = test_case_steps['steps'] if test_case_steps else None
@@ -120,6 +148,30 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
120
148
  except Exception as e:
121
149
  return ToolException(f"Unable to retrieve Zephyr entities: {e}")
122
150
 
151
+ def _index_tool_params(self, **kwargs) -> dict[str, tuple[type, Field]]:
152
+ """
153
+ Returns a list of fields for index_data args schema.
154
+ """
155
+ return {
156
+ "zql": (str, Field(description=zql_description, examples=["folder=\"TestToolkit\"", "name~\"TestToolkit5\""))
157
+ }
158
+
159
+ def _base_loader(self, zql: str) -> Generator[Document, None, None]:
160
+ test_cases = self.get_testcases_by_zql(zql)
161
+ for test_case in test_cases:
162
+ metadata = {
163
+ ("updated_on" if k == "lastModifiedOn" else "id" if k == "testcaseId" else k): str(v)
164
+ for k, v in test_case
165
+ if k != "id"
166
+ }
167
+ yield Document(page_content='', metadata=metadata)
168
+
169
+ def _process_document(self, document: Document) -> Generator[Document, None, None]:
170
+ id = document.metadata['id']
171
+ test_case_content = self.get_test_case_steps(id)
172
+ document.page_content = test_case_content
173
+
174
+ @extend_with_vector_tools
123
175
  def get_available_tools(self):
124
176
  return [
125
177
  {
@@ -188,16 +240,7 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
188
240
  "description": self.get_testcases_by_zql.__doc__,
189
241
  "args_schema": create_model(
190
242
  "TestCaseByZqlModel",
191
- zql=(str, Field(description="""
192
- ZQL query to search for test cases.
193
- Supported: estimatedTime, testcaseId, creator, release,
194
- project, priority, altId, version,
195
- versionId, automated, folder, contents,
196
- name, comment, tag
197
-
198
- It has to follow the syntax in examples:
199
- "folder=\"TestToolkit\"", "name~\"TestToolkit5\"
200
- """, examples=["folder=\"TestToolkit\"", "name~\"TestToolkit5\""]))
243
+ zql=(str, Field(description=zql_description, examples=["folder=\"TestToolkit\"", "name~\"TestToolkit5\""]))
201
244
  ),
202
245
  "ref": self.get_testcases_by_zql,
203
246
  }
@@ -18,7 +18,7 @@ def get_tools(tool):
18
18
 
19
19
  # indexer settings
20
20
  connection_string = tool['settings'].get('connection_string', None),
21
- collection_name = f"{tool.get('toolkit_name')}_{str(tool['id'])}",
21
+ collection_name=str(tool['toolkit_name']),
22
22
  embedding_model = "HuggingFaceEmbeddings",
23
23
  embedding_model_params = {"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
24
24
  vectorstore_type = "PGVector"
@@ -41,6 +41,10 @@ class ZephyrEssentialToolkit(BaseToolkit):
41
41
  connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
42
42
  default=None,
43
43
  json_schema_extra={'secret': True})),
44
+
45
+ # embedder settings
46
+ embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
47
+ embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
44
48
  __config__={'json_schema_extra': {'metadata': {"label": "Zephyr Essential", "icon_url": "zephyr.svg",
45
49
  "categories": ["test management"],
46
50
  "extra_categories": ["test automation", "test case management", "test planning"]
@@ -67,4 +71,3 @@ class ZephyrEssentialToolkit(BaseToolkit):
67
71
 
68
72
  def get_tools(self):
69
73
  return self.tools
70
-
@@ -253,7 +253,6 @@ class ZephyrEssentialApiWrapper(BaseVectorStoreToolApiWrapper):
253
253
  base_data['test_case_content'] = additional_content
254
254
 
255
255
  document.page_content = json.dumps(base_data)
256
- yield document
257
256
  except json.JSONDecodeError as e:
258
257
  raise ToolException(f"Failed to decode JSON from document: {e}")
259
258