alita-sdk 0.3.354__tar.gz → 0.3.356__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of alita-sdk might be problematic. Click here for more details.

Files changed (367) hide show
  1. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +1 -1
  3. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/artifact.py +0 -1
  4. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/vectorstore_base.py +5 -20
  5. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/repos/repos_wrapper.py +7 -9
  6. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/base_indexer_toolkit.py +73 -14
  7. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/bitbucket/api_wrapper.py +6 -4
  8. alita_sdk-0.3.356/alita_sdk/tools/code_indexer_toolkit.py +156 -0
  9. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/github/api_wrapper.py +9 -26
  10. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gitlab/api_wrapper.py +46 -26
  11. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/jira/api_wrapper.py +1 -1
  12. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/utils/content_parser.py +3 -1
  13. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk.egg-info/PKG-INFO +1 -1
  14. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk.egg-info/SOURCES.txt +1 -0
  15. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/pyproject.toml +1 -1
  16. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/LICENSE +0 -0
  17. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/README.md +0 -0
  18. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/__init__.py +0 -0
  19. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/community/__init__.py +0 -0
  20. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/community/utils.py +0 -0
  21. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/__init__.py +0 -0
  22. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/ado.py +0 -0
  23. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/azure_search.py +0 -0
  24. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/bigquery.py +0 -0
  25. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/bitbucket.py +0 -0
  26. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/browser.py +0 -0
  27. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/carrier.py +0 -0
  28. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/confluence.py +0 -0
  29. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/delta_lake.py +0 -0
  30. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/embedding.py +0 -0
  31. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/figma.py +0 -0
  32. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/github.py +0 -0
  33. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/gitlab.py +0 -0
  34. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/google_places.py +0 -0
  35. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/jira.py +0 -0
  36. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/pgvector.py +0 -0
  37. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/postman.py +0 -0
  38. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/qtest.py +0 -0
  39. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/rally.py +0 -0
  40. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/report_portal.py +0 -0
  41. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/salesforce.py +0 -0
  42. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/service_now.py +0 -0
  43. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/sharepoint.py +0 -0
  44. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/slack.py +0 -0
  45. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/sonar.py +0 -0
  46. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/sql.py +0 -0
  47. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/testio.py +0 -0
  48. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/testrail.py +0 -0
  49. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/xray.py +0 -0
  50. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/zephyr.py +0 -0
  51. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
  52. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/configurations/zephyr_essential.py +0 -0
  53. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/__init__.py +0 -0
  54. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/clients/__init__.py +0 -0
  55. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/clients/artifact.py +0 -0
  56. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/clients/client.py +0 -0
  57. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/clients/datasource.py +0 -0
  58. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/clients/prompt.py +0 -0
  59. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/__init__.py +0 -0
  60. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  61. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  62. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/assistant.py +0 -0
  63. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  64. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/constants.py +0 -0
  65. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  66. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  67. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  68. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  69. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  70. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  71. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  72. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  73. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
  74. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  75. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
  76. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
  77. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
  78. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
  79. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  80. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
  81. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
  82. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  83. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
  84. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  85. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/indexer.py +0 -0
  86. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  87. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  88. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  89. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  90. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  91. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  92. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  93. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  94. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  95. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  96. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  97. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  98. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  99. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  100. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  101. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  102. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  103. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  104. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  105. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  106. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  107. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  108. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  109. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  110. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/langchain/utils.py +0 -0
  111. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/llms/__init__.py +0 -0
  112. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/llms/preloaded.py +0 -0
  113. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  114. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/application.py +0 -0
  115. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/configurations.py +0 -0
  116. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  117. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  118. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  119. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/tools.py +0 -0
  120. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  121. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/__init__.py +0 -0
  122. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/agent.py +0 -0
  123. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/application.py +0 -0
  124. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/artifact.py +0 -0
  125. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/datasource.py +0 -0
  126. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/echo.py +0 -0
  127. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/function.py +0 -0
  128. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/graph.py +0 -0
  129. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  130. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/llm.py +0 -0
  131. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/loop.py +0 -0
  132. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/loop_output.py +0 -0
  133. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  134. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  135. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/prompt.py +0 -0
  136. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/router.py +0 -0
  137. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/sandbox.py +0 -0
  138. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/tool.py +0 -0
  139. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/tools/vectorstore.py +0 -0
  140. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  141. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/__init__.py +0 -0
  142. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/constants.py +0 -0
  143. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/evaluate.py +0 -0
  144. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/logging.py +0 -0
  145. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  146. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/streamlit.py +0 -0
  147. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
  148. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
  149. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/runtime/utils/utils.py +0 -0
  150. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/__init__.py +0 -0
  151. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/__init__.py +0 -0
  152. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/repos/__init__.py +0 -0
  153. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
  154. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  155. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/utils.py +0 -0
  156. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
  157. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  158. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
  159. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  160. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  161. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  162. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/aws/__init__.py +0 -0
  163. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
  164. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
  165. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
  166. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
  167. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  168. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
  169. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  170. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/base/__init__.py +0 -0
  171. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/base/tool.py +0 -0
  172. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/bitbucket/__init__.py +0 -0
  173. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  174. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  175. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/browser/__init__.py +0 -0
  176. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/browser/crawler.py +0 -0
  177. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  178. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  179. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/browser/utils.py +0 -0
  180. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/browser/wiki.py +0 -0
  181. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/__init__.py +0 -0
  182. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  183. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  184. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  185. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  186. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  187. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  188. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  189. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  190. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  191. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  192. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  193. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/tools.py +0 -0
  194. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  195. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  196. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/carrier/utils.py +0 -0
  197. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/__init__.py +0 -0
  198. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  199. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  200. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  201. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  202. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  203. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  204. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  205. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  206. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  207. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  208. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  209. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  210. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  211. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  212. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  213. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  214. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  215. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  216. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/models.py +0 -0
  217. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  218. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  219. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
  220. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  221. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  222. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  223. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/chunkers/utils.py +0 -0
  224. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/__init__.py +0 -0
  225. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  226. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  227. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  228. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  229. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  230. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  231. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  232. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  233. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/code/__init__.py +0 -0
  234. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/code/linter/__init__.py +0 -0
  235. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  236. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  237. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  238. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  239. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/confluence/__init__.py +0 -0
  240. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  241. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/confluence/loader.py +0 -0
  242. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/confluence/utils.py +0 -0
  243. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  244. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  245. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/elastic/__init__.py +0 -0
  246. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  247. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/elitea_base.py +0 -0
  248. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/figma/__init__.py +0 -0
  249. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  250. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/github/__init__.py +0 -0
  251. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/github/github_client.py +0 -0
  252. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  253. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/github/schemas.py +0 -0
  254. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/github/tool.py +0 -0
  255. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/github/tool_prompts.py +0 -0
  256. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gitlab/__init__.py +0 -0
  257. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gitlab/tools.py +0 -0
  258. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gitlab/utils.py +0 -0
  259. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  260. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  261. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gmail/__init__.py +0 -0
  262. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  263. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/gmail/utils.py +0 -0
  264. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/google/__init__.py +0 -0
  265. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
  266. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
  267. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
  268. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/google/bigquery/tool.py +0 -0
  269. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/google_places/__init__.py +0 -0
  270. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  271. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/jira/__init__.py +0 -0
  272. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/keycloak/__init__.py +0 -0
  273. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  274. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/llm/__init__.py +0 -0
  275. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/llm/img_utils.py +0 -0
  276. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/llm/llm_utils.py +0 -0
  277. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/localgit/__init__.py +0 -0
  278. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/localgit/local_git.py +0 -0
  279. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/localgit/tool.py +0 -0
  280. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/memory/__init__.py +0 -0
  281. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
  282. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ocr/__init__.py +0 -0
  283. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  284. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/ocr/text_detection.py +0 -0
  285. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/openapi/__init__.py +0 -0
  286. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/__init__.py +0 -0
  287. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  288. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  289. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  290. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  291. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  292. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  293. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  294. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  295. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  296. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  297. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  298. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  299. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  300. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  301. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  302. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  303. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  304. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  305. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/postman/__init__.py +0 -0
  306. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  307. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  308. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pptx/__init__.py +0 -0
  309. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  310. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/qtest/__init__.py +0 -0
  311. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
  312. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/qtest/tool.py +0 -0
  313. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/rally/__init__.py +0 -0
  314. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  315. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/report_portal/__init__.py +0 -0
  316. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  317. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  318. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/salesforce/__init__.py +0 -0
  319. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  320. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/salesforce/model.py +0 -0
  321. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/servicenow/__init__.py +0 -0
  322. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  323. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  324. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/sharepoint/__init__.py +0 -0
  325. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
  326. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  327. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/sharepoint/utils.py +0 -0
  328. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/slack/__init__.py +0 -0
  329. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  330. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/sql/__init__.py +0 -0
  331. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  332. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/sql/models.py +0 -0
  333. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/testio/__init__.py +0 -0
  334. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  335. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/testrail/__init__.py +0 -0
  336. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
  337. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/utils/__init__.py +0 -0
  338. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
  339. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
  340. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
  341. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/xray/__init__.py +0 -0
  342. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  343. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/yagmail/__init__.py +0 -0
  344. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  345. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  346. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr/__init__.py +0 -0
  347. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  348. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  349. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
  350. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  351. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  352. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
  353. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
  354. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_essential/client.py +0 -0
  355. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  356. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
  357. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  358. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  359. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  360. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk.egg-info/dependency_links.txt +0 -0
  361. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk.egg-info/requires.txt +0 -0
  362. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/alita_sdk.egg-info/top_level.txt +0 -0
  363. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/setup.cfg +0 -0
  364. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/tests/test_ado_analysis.py +0 -0
  365. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/tests/test_github_analysis.py +0 -0
  366. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/tests/test_gitlab_analysis.py +0 -0
  367. {alita_sdk-0.3.354 → alita_sdk-0.3.356}/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.354
3
+ Version: 0.3.356
4
4
  Summary: SDK for building langchain agents using resources from Alita
5
5
  Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -63,7 +63,7 @@ class AlitaTableLoader(BaseLoader):
63
63
  "source": f'{self.file_path}:{idx+1}',
64
64
  "table_source": self.file_path,
65
65
  }
66
- if len(docs) == 0:
66
+ if len(docs) == 0 and not self.raw_content:
67
67
  header_metadata = metadata.copy()
68
68
  header_metadata["header"] = "true"
69
69
  header = "\t".join([str(value) for value in row.keys()])
@@ -20,7 +20,6 @@ class ArtifactToolkit(BaseToolkit):
20
20
  ArtifactToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
21
21
  return create_model(
22
22
  "artifact",
23
- # client = (Any, FieldInfo(description="Client object", required=True, autopopulate=True)),
24
23
  bucket = (str, FieldInfo(description="Bucket name", json_schema_extra={'toolkit_name': True, 'max_toolkit_length': ArtifactToolkit.toolkit_max_length})),
25
24
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
26
25
  # indexer settings
@@ -187,12 +187,12 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
187
187
  """
188
188
  Clean the vectorstore collection by deleting all indexed data.
189
189
  """
190
- self._log_data(
190
+ self._log_tool_event(
191
191
  f"Cleaning collection '{self.dataset}'",
192
192
  tool_name="_clean_collection"
193
193
  )
194
194
  self.vector_adapter.clean_collection(self, collection_suffix)
195
- self._log_data(
195
+ self._log_tool_event(
196
196
  f"Collection '{self.dataset}' has been cleaned. ",
197
197
  tool_name="_clean_collection"
198
198
  )
@@ -212,10 +212,10 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
212
212
 
213
213
  def _clean_index(self, collection_suffix: str):
214
214
  logger.info("Cleaning index before re-indexing all documents.")
215
- self._log_data("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
215
+ self._log_tool_event("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
216
216
  try:
217
217
  self._clean_collection(collection_suffix)
218
- self._log_data("Previous index has been removed",
218
+ self._log_tool_event("Previous index has been removed",
219
219
  tool_name="index_documents")
220
220
  except Exception as e:
221
221
  logger.warning(f"Failed to clean index: {str(e)}. Continuing with re-indexing.")
@@ -261,7 +261,7 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
261
261
  if percent >= next_progress_point:
262
262
  msg = f"Indexing progress: {percent}%. Processed {documents_count} of {total_docs} documents."
263
263
  logger.debug(msg)
264
- self._log_data(msg)
264
+ self._log_tool_event(msg)
265
265
  next_progress_point += progress_step
266
266
  except Exception:
267
267
  from traceback import format_exc
@@ -569,21 +569,6 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
569
569
  ])
570
570
  return result.content
571
571
 
572
- def _log_data(self, message: str, tool_name: str = "index_data"):
573
- """Log data and dispatch custom event for indexing progress"""
574
-
575
- try:
576
- dispatch_custom_event(
577
- name="thinking_step",
578
- data={
579
- "message": message,
580
- "tool_name": tool_name,
581
- "toolkit": "vectorstore",
582
- },
583
- )
584
- except Exception as e:
585
- logger.warning(f"Failed to dispatch progress event: {str(e)}")
586
-
587
572
  def get_available_tools(self):
588
573
  return [
589
574
  {
@@ -24,7 +24,8 @@ from msrest.authentication import BasicAuthentication
24
24
  from pydantic import Field, PrivateAttr, create_model, model_validator, SecretStr
25
25
 
26
26
  from ..utils import extract_old_new_pairs, generate_diff, get_content_from_generator
27
- from ...elitea_base import BaseCodeToolApiWrapper
27
+ from ...code_indexer_toolkit import CodeIndexerToolkit
28
+ from ...utils.available_tools_decorator import extend_with_parent_available_tools
28
29
 
29
30
  logger = logging.getLogger(__name__)
30
31
 
@@ -242,7 +243,7 @@ class ArgsSchema(Enum):
242
243
  )
243
244
 
244
245
 
245
- class ReposApiWrapper(BaseCodeToolApiWrapper):
246
+ class ReposApiWrapper(CodeIndexerToolkit):
246
247
  # TODO use ado_repos_configuration fields
247
248
  organization_url: Optional[str]
248
249
  project: Optional[str]
@@ -293,7 +294,7 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
293
294
  if not branch_exists(active_branch):
294
295
  raise ToolException(f"The active branch '{active_branch}' does not exist.")
295
296
 
296
- return values
297
+ return super().validate_toolkit(values)
297
298
 
298
299
  def _get_commits(self, file_path: str, branch: str, top: int = None) -> List[GitCommitRef]:
299
300
  """
@@ -1174,9 +1175,10 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
1174
1175
  except Exception as e:
1175
1176
  return ToolException(f"Unable to retrieve commits due to error:\n{str(e)}")
1176
1177
 
1178
+ @extend_with_parent_available_tools
1177
1179
  def get_available_tools(self):
1178
1180
  """Return a list of available tools."""
1179
- tools = [
1181
+ return [
1180
1182
  {
1181
1183
  "ref": self.list_branches_in_repo,
1182
1184
  "name": "list_branches_in_repo",
@@ -1267,8 +1269,4 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
1267
1269
  "description": self.get_commits.__doc__,
1268
1270
  "args_schema": ArgsSchema.GetCommits.value,
1269
1271
  },
1270
- ] # Add vector search tools from base class (includes index_data + search tools)
1271
- vector_search_tools = self._get_vector_search_tools()
1272
- tools.extend(vector_search_tools)
1273
-
1274
- return tools
1272
+ ]
@@ -159,20 +159,73 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
159
159
  self._log_tool_event(f"Indexing data into collection with suffix '{collection_suffix}'. It can take some time...")
160
160
  self._log_tool_event(f"Loading the documents to index...{kwargs}")
161
161
  documents = self._base_loader(**kwargs)
162
+ documents = list(documents) # consume/exhaust generator to count items
163
+ documents_count = len(documents)
164
+ documents = (doc for doc in documents)
162
165
  self._log_tool_event(f"Base documents were pre-loaded. "
163
166
  f"Search for possible document duplicates and remove them from the indexing list...")
164
- documents = self._reduce_duplicates(documents, collection_suffix)
167
+ # documents = self._reduce_duplicates(documents, collection_suffix)
165
168
  self._log_tool_event(f"Duplicates were removed. "
166
169
  f"Processing documents to collect dependencies and prepare them for indexing...")
167
- documents = self._extend_data(documents) # update content of not-reduced base document if needed (for sharepoint and similar)
168
- documents = self._collect_dependencies(documents) # collect dependencies for base documents
169
- self._log_tool_event(f"Documents were processed. "
170
- f"Applying chunking tool '{chunking_tool}' if specified and preparing documents for indexing...")
171
- documents = self._apply_loaders_chunkers(documents, chunking_tool, chunking_config)
172
- list_documents = list(documents)
173
- self._clean_metadata(list_documents)
174
- self._log_tool_event(f"Documents are ready for indexing. Total documents to index: {len(list_documents)}")
175
- return self._save_index(list_documents, collection_suffix=collection_suffix, progress_step=progress_step)
170
+ return self._save_index_generator(documents, documents_count, chunking_tool, chunking_config, collection_suffix=collection_suffix, progress_step=progress_step)
171
+
172
+ def _save_index_generator(self, base_documents: Generator[Document, None, None], base_total: int, chunking_tool, chunking_config, collection_suffix: Optional[str] = None, progress_step: int = 20):
173
+ self._log_tool_event(f"Base documents are ready for indexing. {base_total} base documents in total to index.")
174
+ from ..runtime.langchain.interfaces.llm_processor import add_documents
175
+ #
176
+ base_doc_counter = 0
177
+ total_counter = 0
178
+ pg_vector_add_docs_chunk = []
179
+ for base_doc in base_documents:
180
+ base_doc_counter += 1
181
+ self._log_tool_event(f"Processing dependent documents for base documents #{base_doc_counter}.")
182
+
183
+ # (base_doc for _ in range(1)) - wrap single base_doc to Generator in order to reuse existing code
184
+ documents = self._extend_data((base_doc for _ in range(1))) # update content of not-reduced base document if needed (for sharepoint and similar)
185
+ documents = self._collect_dependencies(documents) # collect dependencies for base documents
186
+ self._log_tool_event(f"Dependent documents were processed. "
187
+ f"Applying chunking tool '{chunking_tool}' if specified and preparing documents for indexing...")
188
+ documents = self._apply_loaders_chunkers(documents, chunking_tool, chunking_config)
189
+ self._clean_metadata(documents)
190
+
191
+ logger.debug(f"Indexing base document #{base_doc_counter}: {base_doc} and all dependent documents: {documents}")
192
+
193
+ dependent_docs_counter = 0
194
+ #
195
+ for doc in documents:
196
+ if not doc.page_content:
197
+ # To avoid case when all documents have empty content
198
+ # See llm_processor.add_documents which exclude metadata of docs with empty content
199
+ continue
200
+ #
201
+ if 'id' not in doc.metadata or 'updated_on' not in doc.metadata:
202
+ logger.warning(f"Document is missing required metadata field 'id' or 'updated_on': {doc.metadata}")
203
+ #
204
+ # if collection_suffix is provided, add it to metadata of each document
205
+ if collection_suffix:
206
+ if not doc.metadata.get('collection'):
207
+ doc.metadata['collection'] = collection_suffix
208
+ else:
209
+ doc.metadata['collection'] += f";{collection_suffix}"
210
+ #
211
+ try:
212
+ pg_vector_add_docs_chunk.append(doc)
213
+ dependent_docs_counter += 1
214
+ if len(pg_vector_add_docs_chunk) >= self.max_docs_per_add:
215
+ add_documents(vectorstore=self.vectorstore, documents=pg_vector_add_docs_chunk)
216
+ self._log_tool_event(f"{len(pg_vector_add_docs_chunk)} documents have been indexed. Continuing...")
217
+ pg_vector_add_docs_chunk = []
218
+ except Exception:
219
+ from traceback import format_exc
220
+ logger.error(f"Error: {format_exc()}")
221
+ return {"status": "error", "message": f"Error: {format_exc()}"}
222
+ msg = f"Indexed base document #{base_doc_counter} out of {base_total} (with {dependent_docs_counter} dependencies)."
223
+ logger.debug(msg)
224
+ self._log_tool_event(msg)
225
+ total_counter += dependent_docs_counter
226
+ if pg_vector_add_docs_chunk:
227
+ add_documents(vectorstore=self.vectorstore, documents=pg_vector_add_docs_chunk)
228
+ return {"status": "ok", "message": f"successfully indexed {total_counter} documents"}
176
229
 
177
230
  def _apply_loaders_chunkers(self, documents: Generator[Document, None, None], chunking_tool: str=None, chunking_config=None) -> Generator[Document, None, None]:
178
231
  from ..tools.chunkers import __all__ as chunkers
@@ -222,11 +275,12 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
222
275
  dep.metadata[IndexerKeywords.PARENT.value] = document.metadata.get('id', None)
223
276
  yield dep
224
277
 
225
- def _clean_metadata(self, documents: list[Document]):
278
+ def _clean_metadata(self, documents: Generator[Document, None, None]):
226
279
  for document in documents:
227
280
  remove_keys = self._remove_metadata_keys()
228
281
  for key in remove_keys:
229
282
  document.metadata.pop(key, None)
283
+ yield document
230
284
 
231
285
  def _reduce_duplicates(
232
286
  self,
@@ -235,11 +289,11 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
235
289
  log_msg: str = "Verification of documents to index started"
236
290
  ) -> Generator[Document, None, None]:
237
291
  """Generic duplicate reduction logic for documents."""
238
- self._log_data(log_msg, tool_name="index_documents")
292
+ self._log_tool_event(log_msg, tool_name="index_documents")
239
293
  indexed_data = self._get_indexed_data(collection_suffix)
240
294
  indexed_keys = set(indexed_data.keys())
241
295
  if not indexed_keys:
242
- self._log_data("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
296
+ self._log_tool_event("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
243
297
  yield from documents
244
298
  return
245
299
 
@@ -257,7 +311,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
257
311
  yield document
258
312
 
259
313
  if docs_to_remove:
260
- self._log_data(
314
+ self._log_tool_event(
261
315
  f"Removing {len(docs_to_remove)} documents from vectorstore that are already indexed with different updated_on.",
262
316
  tool_name="index_documents"
263
317
  )
@@ -303,6 +357,11 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
303
357
  **kwargs):
304
358
  """ Searches indexed documents in the vector store."""
305
359
  # build filter on top of collection_suffix
360
+
361
+ available_collections = super().list_collections()
362
+ if collection_suffix and collection_suffix not in available_collections:
363
+ return f"Collection '{collection_suffix}' not found. Available collections: {available_collections}"
364
+
306
365
  filter = self._build_collection_filter(filter, collection_suffix)
307
366
  found_docs = super().search_documents(
308
367
  query,
@@ -11,7 +11,8 @@ from .bitbucket_constants import create_pr_data
11
11
  from .cloud_api_wrapper import BitbucketCloudApi, BitbucketServerApi
12
12
  from pydantic.fields import PrivateAttr
13
13
 
14
- from ..elitea_base import BaseCodeToolApiWrapper
14
+ from ..code_indexer_toolkit import CodeIndexerToolkit
15
+ from ..utils.available_tools_decorator import extend_with_parent_available_tools
15
16
 
16
17
  logger = logging.getLogger(__name__)
17
18
 
@@ -117,7 +118,7 @@ CommentOnIssueModel = create_model(
117
118
  )
118
119
 
119
120
 
120
- class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
121
+ class BitbucketAPIWrapper(CodeIndexerToolkit):
121
122
  """Wrapper for Bitbucket API."""
122
123
 
123
124
  _bitbucket: Any = PrivateAttr()
@@ -167,7 +168,7 @@ class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
167
168
  repository=values['repository']
168
169
  )
169
170
  cls._active_branch = values.get('branch')
170
- return values
171
+ return super().validate_toolkit(values)
171
172
 
172
173
  def set_active_branch(self, branch_name: str) -> str:
173
174
  """Set the active branch for the bot."""
@@ -399,6 +400,7 @@ class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
399
400
  except Exception as e:
400
401
  return f"Failed to read file {file_path}: {str(e)}"
401
402
 
403
+ @extend_with_parent_available_tools
402
404
  def get_available_tools(self):
403
405
  return [
404
406
  {
@@ -473,4 +475,4 @@ class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
473
475
  "description": self.add_pull_request_comment.__doc__ or "Add a comment to a pull request in the repository.",
474
476
  "args_schema": AddPullRequestCommentModel,
475
477
  }
476
- ] + self._get_vector_search_tools()
478
+ ]
@@ -0,0 +1,156 @@
1
+ import ast
2
+ import fnmatch
3
+ import logging
4
+ from typing import Optional, List, Generator
5
+
6
+ from langchain_core.documents import Document
7
+ from langchain_core.tools import ToolException
8
+ from pydantic import Field
9
+
10
+ from alita_sdk.tools.base_indexer_toolkit import BaseIndexerToolkit
11
+ from .chunkers.code.codeparser import parse_code_files_for_db
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ class CodeIndexerToolkit(BaseIndexerToolkit):
17
+ def _get_indexed_data(self, collection_suffix: str):
18
+ if not self.vector_adapter:
19
+ raise ToolException("Vector adapter is not initialized. "
20
+ "Check your configuration: embedding_model and vectorstore_type.")
21
+ return self.vector_adapter.get_code_indexed_data(self, collection_suffix)
22
+
23
+ def key_fn(self, document: Document):
24
+ return document.metadata.get('id')
25
+
26
+ def compare_fn(self, document: Document, idx_data):
27
+ return (document.metadata.get('commit_hash') and
28
+ idx_data.get('commit_hashes') and
29
+ document.metadata.get('commit_hash') in idx_data.get('commit_hashes')
30
+ )
31
+
32
+ def remove_ids_fn(self, idx_data, key: str):
33
+ return idx_data[key]['ids']
34
+
35
+ def _base_loader(
36
+ self,
37
+ branch: Optional[str] = None,
38
+ whitelist: Optional[List[str]] = None,
39
+ blacklist: Optional[List[str]] = None,
40
+ **kwargs) -> Generator[Document, None, None]:
41
+ """Index repository files in the vector store using code parsing."""
42
+ yield from self.loader(
43
+ branch=branch,
44
+ whitelist=whitelist,
45
+ blacklist=blacklist
46
+ )
47
+
48
+ def _extend_data(self, documents: Generator[Document, None, None]):
49
+ yield from parse_code_files_for_db(documents)
50
+
51
+ def _index_tool_params(self):
52
+ """Return the parameters for indexing data."""
53
+ return {
54
+ "branch": (Optional[str], Field(
55
+ description="Branch to index files from. Defaults to active branch if None.",
56
+ default=None)),
57
+ "whitelist": (Optional[List[str]], Field(
58
+ description='File extensions or paths to include. Defaults to all files if None. Example: ["*.md", "*.java"]',
59
+ default=None)),
60
+ "blacklist": (Optional[List[str]], Field(
61
+ description='File extensions or paths to exclude. Defaults to no exclusions if None. Example: ["*.md", "*.java"]',
62
+ default=None)),
63
+ }
64
+
65
+ def loader(self,
66
+ branch: Optional[str] = None,
67
+ whitelist: Optional[List[str]] = None,
68
+ blacklist: Optional[List[str]] = None) -> Generator[Document, None, None]:
69
+ """
70
+ Generates file content from a branch, respecting whitelist and blacklist patterns.
71
+
72
+ Parameters:
73
+ - branch (Optional[str]): Branch for listing files. Defaults to the current branch if None.
74
+ - whitelist (Optional[List[str]]): File extensions or paths to include. Defaults to all files if None.
75
+ - blacklist (Optional[List[str]]): File extensions or paths to exclude. Defaults to no exclusions if None.
76
+
77
+ Returns:
78
+ - generator: Yields content from files matching the whitelist but not the blacklist.
79
+
80
+ Example:
81
+ # Use 'feature-branch', include '.py' files, exclude 'test_' files
82
+ file_generator = loader(branch='feature-branch', whitelist=['*.py'], blacklist=['*test_*'])
83
+
84
+ Notes:
85
+ - Whitelist and blacklist use Unix shell-style wildcards.
86
+ - Files must match the whitelist and not the blacklist to be included.
87
+ """
88
+
89
+ _files = self.__handle_get_files("", self.__get_branch(branch))
90
+ self._log_tool_event(message="Listing files in branch", tool_name="loader")
91
+ logger.info(f"Files in branch: {_files}")
92
+
93
+ def is_whitelisted(file_path: str) -> bool:
94
+ if whitelist:
95
+ return (any(fnmatch.fnmatch(file_path, pattern) for pattern in whitelist)
96
+ or any(file_path.endswith(f'.{pattern}') for pattern in whitelist))
97
+ return True
98
+
99
+ def is_blacklisted(file_path: str) -> bool:
100
+ if blacklist:
101
+ return (any(fnmatch.fnmatch(file_path, pattern) for pattern in blacklist)
102
+ or any(file_path.endswith(f'.{pattern}') for pattern in blacklist))
103
+ return False
104
+
105
+ def file_content_generator():
106
+ self._log_tool_event(message="Reading the files", tool_name="loader")
107
+ # log the progress of file reading
108
+ total_files = len(_files)
109
+ for idx, file in enumerate(_files, 1):
110
+ if is_whitelisted(file) and not is_blacklisted(file):
111
+ # read file ONLY if it matches whitelist and does not match blacklist
112
+ try:
113
+ file_content = self._read_file(file, self.__get_branch(branch))
114
+ except Exception as e:
115
+ logger.error(f"Failed to read file {file}: {e}")
116
+ file_content = ""
117
+ if not file_content:
118
+ # empty file, skip
119
+ continue
120
+ # hash the file content to ensure uniqueness
121
+ import hashlib
122
+ file_hash = hashlib.sha256(file_content.encode("utf-8")).hexdigest()
123
+ yield {"file_name": file,
124
+ "file_content": file_content,
125
+ "commit_hash": file_hash}
126
+ if idx % 10 == 0 or idx == total_files:
127
+ self._log_tool_event(message=f"{idx} out of {total_files} files have been read", tool_name="loader")
128
+ self._log_tool_event(message=f"{len(_files)} have been read", tool_name="loader")
129
+
130
+ return file_content_generator()
131
+
132
+ def __handle_get_files(self, path: str, branch: str):
133
+ """
134
+ Handles the retrieval of files from a specific path and branch.
135
+ This method should be implemented in subclasses to provide the actual file retrieval logic.
136
+ """
137
+ _files = self._get_files(path=path, branch=branch)
138
+ if isinstance(_files, str):
139
+ try:
140
+ # Attempt to convert the string to a list using ast.literal_eval
141
+ _files = ast.literal_eval(_files)
142
+ # Ensure that the result is actually a list of strings
143
+ if not isinstance(_files, list) or not all(isinstance(item, str) for item in _files):
144
+ raise ValueError("The evaluated result is not a list of strings")
145
+ except (SyntaxError, ValueError):
146
+ # Handle the case where the string cannot be converted to a list
147
+ raise ValueError("Expected a list of strings, but got a string that cannot be converted")
148
+
149
+ # Ensure _files is a list of strings
150
+ if not isinstance(_files, list) or not all(isinstance(item, str) for item in _files):
151
+ raise ValueError("Expected a list of strings")
152
+ return _files
153
+
154
+ def __get_branch(self, branch):
155
+ return (branch or getattr(self, 'active_branch', None)
156
+ or getattr(self, '_active_branch', None) or getattr(self, 'branch', None))
@@ -1,9 +1,7 @@
1
- from typing import Any, Dict, List, Optional, Union, Tuple
2
1
  import logging
3
- import traceback
4
- import json
5
- import re
6
- from pydantic import BaseModel, model_validator, Field, SecretStr
2
+ from typing import Any, Dict, Optional
3
+
4
+ from pydantic import model_validator, Field, SecretStr
7
5
 
8
6
  from .github_client import GitHubClient
9
7
  from .graphql_client_wrapper import GraphQLClientWrapper
@@ -11,28 +9,17 @@ from .schemas import (
11
9
  GitHubAuthConfig,
12
10
  GitHubRepoConfig
13
11
  )
14
-
15
- from ..elitea_base import BaseCodeToolApiWrapper
16
-
17
- from langchain_core.callbacks import dispatch_custom_event
12
+ from ..code_indexer_toolkit import CodeIndexerToolkit
13
+ from ..utils.available_tools_decorator import extend_with_parent_available_tools
18
14
 
19
15
  logger = logging.getLogger(__name__)
20
16
 
21
17
  # Import prompts for tools
22
- from .tool_prompts import (
23
- UPDATE_FILE_PROMPT,
24
- CREATE_ISSUE_PROMPT,
25
- UPDATE_ISSUE_PROMPT,
26
- CREATE_ISSUE_ON_PROJECT_PROMPT,
27
- UPDATE_ISSUE_ON_PROJECT_PROMPT
28
- )
29
18
 
30
19
  # Create schema models for the new indexing functionality
31
- from pydantic import create_model
32
- from typing import Literal
33
20
 
34
21
 
35
- class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
22
+ class AlitaGitHubAPIWrapper(CodeIndexerToolkit):
36
23
  """
37
24
  Wrapper for GitHub API that integrates both REST and GraphQL functionality.
38
25
  """
@@ -117,7 +104,7 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
117
104
  if "llm" not in values:
118
105
  values["llm"] = None
119
106
 
120
- return values
107
+ return super().validate_toolkit(values)
121
108
 
122
109
  # Expose GitHub REST client methods directly via property
123
110
  @property
@@ -131,7 +118,7 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
131
118
  """Access to GitHub GraphQL client methods"""
132
119
  return self.graphql_client_instance
133
120
 
134
-
121
+ @extend_with_parent_available_tools
135
122
  def get_available_tools(self):
136
123
  # this is horrible, I need to think on something better
137
124
  if not self.github_client_instance:
@@ -142,12 +129,8 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
142
129
  graphql_tools = GraphQLClientWrapper.model_construct().get_available_tools()
143
130
  else:
144
131
  graphql_tools = self.graphql_client_instance.get_available_tools()
145
-
146
- # Add vector search tools from base class (includes index_data + search tools)
147
- vector_search_tools = self._get_vector_search_tools()
148
132
 
149
- tools = github_tools + graphql_tools + vector_search_tools
150
- return tools
133
+ return github_tools + graphql_tools
151
134
 
152
135
  def _get_files(self, path: str = "", branch: str = None):
153
136
  """Get list of files from GitHub repository."""