alita-sdk 0.3.253__tar.gz → 0.3.255__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 (351) hide show
  1. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/slack.py +1 -1
  3. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/client.py +13 -8
  4. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +4 -2
  5. alita_sdk-0.3.255/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +73 -0
  6. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/constants.py +16 -11
  7. alita_sdk-0.3.255/alita_sdk/runtime/tools/mcp_server_tool.py +101 -0
  8. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/vectorstore.py +13 -2
  9. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/vectorstore_base.py +5 -11
  10. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/work_item/__init__.py +1 -1
  11. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/base_indexer_toolkit.py +6 -38
  12. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +30 -3
  13. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/__init__.py +3 -0
  14. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/api_wrapper.py +10 -5
  15. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/elitea_base.py +59 -9
  16. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/api_wrapper.py +24 -25
  17. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testrail/api_wrapper.py +2 -2
  18. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/utils/content_parser.py +32 -37
  19. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/PKG-INFO +1 -1
  20. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/SOURCES.txt +1 -0
  21. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/pyproject.toml +1 -1
  22. alita_sdk-0.3.253/alita_sdk/runtime/tools/mcp_server_tool.py +0 -73
  23. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/LICENSE +0 -0
  24. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/README.md +0 -0
  25. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/__init__.py +0 -0
  26. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/community/__init__.py +0 -0
  27. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/community/utils.py +0 -0
  28. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/__init__.py +0 -0
  29. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/ado.py +0 -0
  30. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/azure_search.py +0 -0
  31. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/bigquery.py +0 -0
  32. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/bitbucket.py +0 -0
  33. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/confluence.py +0 -0
  34. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/delta_lake.py +0 -0
  35. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/embedding.py +0 -0
  36. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/figma.py +0 -0
  37. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/github.py +0 -0
  38. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/gitlab.py +0 -0
  39. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/jira.py +0 -0
  40. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/pgvector.py +0 -0
  41. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/postman.py +0 -0
  42. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/qtest.py +0 -0
  43. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/rally.py +0 -0
  44. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/service_now.py +0 -0
  45. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/testrail.py +0 -0
  46. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/xray.py +0 -0
  47. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/zephyr.py +0 -0
  48. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
  49. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/__init__.py +0 -0
  50. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/__init__.py +0 -0
  51. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/artifact.py +0 -0
  52. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/datasource.py +0 -0
  53. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/prompt.py +0 -0
  54. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/__init__.py +0 -0
  55. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  56. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  57. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/assistant.py +0 -0
  58. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  59. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/constants.py +0 -0
  60. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  61. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  62. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  63. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  64. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  65. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  66. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  67. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  68. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
  69. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
  70. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  71. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  72. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
  73. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  74. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  75. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/indexer.py +0 -0
  76. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  77. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  78. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  79. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  80. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  81. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  82. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  83. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  84. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  85. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  86. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  87. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  88. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  89. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  90. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  91. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  92. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  93. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  94. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  95. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  96. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  97. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  98. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  99. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  100. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/utils.py +0 -0
  101. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/llms/__init__.py +0 -0
  102. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/llms/preloaded.py +0 -0
  103. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  104. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/application.py +0 -0
  105. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  106. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/configurations.py +0 -0
  107. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  108. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  109. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  110. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/tools.py +0 -0
  111. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  112. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/__init__.py +0 -0
  113. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/agent.py +0 -0
  114. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/application.py +0 -0
  115. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/artifact.py +0 -0
  116. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/datasource.py +0 -0
  117. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/echo.py +0 -0
  118. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/function.py +0 -0
  119. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  120. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/llm.py +0 -0
  121. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/loop.py +0 -0
  122. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/loop_output.py +0 -0
  123. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  124. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/prompt.py +0 -0
  125. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/router.py +0 -0
  126. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/tool.py +0 -0
  127. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  128. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/__init__.py +0 -0
  129. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/constants.py +0 -0
  130. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/evaluate.py +0 -0
  131. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/logging.py +0 -0
  132. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  133. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/streamlit.py +0 -0
  134. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
  135. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
  136. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/utils.py +0 -0
  137. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/__init__.py +0 -0
  138. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/__init__.py +0 -0
  139. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/repos/__init__.py +0 -0
  140. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
  141. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
  142. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  143. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/utils.py +0 -0
  144. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
  145. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  146. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  147. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  148. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  149. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/__init__.py +0 -0
  150. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
  151. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
  152. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
  153. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
  154. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  155. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
  156. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  157. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/base/__init__.py +0 -0
  158. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/base/tool.py +0 -0
  159. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/__init__.py +0 -0
  160. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
  161. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  162. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  163. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/tools.py +0 -0
  164. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/__init__.py +0 -0
  165. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/crawler.py +0 -0
  166. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  167. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  168. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/utils.py +0 -0
  169. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/wiki.py +0 -0
  170. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/__init__.py +0 -0
  171. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  172. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  173. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  174. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  175. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  176. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  177. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  178. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  179. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  180. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  181. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  182. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/tools.py +0 -0
  183. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  184. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  185. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/utils.py +0 -0
  186. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/__init__.py +0 -0
  187. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  188. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  189. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  190. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  191. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  192. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  193. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  194. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  195. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  196. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  197. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  198. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  199. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  200. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  201. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  202. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  203. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  204. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  205. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/models.py +0 -0
  206. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  207. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  208. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  209. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  210. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/utils.py +0 -0
  211. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/__init__.py +0 -0
  212. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  213. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  214. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  215. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  216. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  217. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  218. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  219. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  220. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/__init__.py +0 -0
  221. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/linter/__init__.py +0 -0
  222. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  223. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  224. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  225. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  226. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/loader.py +0 -0
  227. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/utils.py +0 -0
  228. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  229. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  230. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/elastic/__init__.py +0 -0
  231. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  232. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/figma/__init__.py +0 -0
  233. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  234. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/__init__.py +0 -0
  235. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/api_wrapper.py +0 -0
  236. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/github_client.py +0 -0
  237. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  238. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/schemas.py +0 -0
  239. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/tool.py +0 -0
  240. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/tool_prompts.py +0 -0
  241. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/__init__.py +0 -0
  242. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
  243. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/tools.py +0 -0
  244. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/utils.py +0 -0
  245. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  246. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  247. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gmail/__init__.py +0 -0
  248. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  249. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gmail/utils.py +0 -0
  250. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/__init__.py +0 -0
  251. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
  252. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
  253. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
  254. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/tool.py +0 -0
  255. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google_places/__init__.py +0 -0
  256. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  257. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/jira/__init__.py +0 -0
  258. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  259. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/keycloak/__init__.py +0 -0
  260. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  261. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/llm/__init__.py +0 -0
  262. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/llm/img_utils.py +0 -0
  263. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/llm/llm_utils.py +0 -0
  264. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/localgit/__init__.py +0 -0
  265. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/localgit/local_git.py +0 -0
  266. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/localgit/tool.py +0 -0
  267. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/memory/__init__.py +0 -0
  268. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
  269. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ocr/__init__.py +0 -0
  270. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  271. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ocr/text_detection.py +0 -0
  272. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/openapi/__init__.py +0 -0
  273. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/__init__.py +0 -0
  274. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  275. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  276. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  277. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  278. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  279. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  280. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  281. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  282. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  283. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  284. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  285. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  286. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  287. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  288. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  289. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  290. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  291. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  292. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/postman/__init__.py +0 -0
  293. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  294. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  295. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pptx/__init__.py +0 -0
  296. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  297. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/qtest/__init__.py +0 -0
  298. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
  299. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/qtest/tool.py +0 -0
  300. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/rally/__init__.py +0 -0
  301. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  302. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/report_portal/__init__.py +0 -0
  303. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  304. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  305. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/salesforce/__init__.py +0 -0
  306. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  307. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/salesforce/model.py +0 -0
  308. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/servicenow/__init__.py +0 -0
  309. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  310. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  311. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/__init__.py +0 -0
  312. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  313. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/utils.py +0 -0
  314. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/slack/__init__.py +0 -0
  315. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  316. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sql/__init__.py +0 -0
  317. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  318. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sql/models.py +0 -0
  319. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testio/__init__.py +0 -0
  320. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  321. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testrail/__init__.py +0 -0
  322. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/utils/__init__.py +0 -0
  323. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
  324. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
  325. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/xray/__init__.py +0 -0
  326. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  327. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/yagmail/__init__.py +0 -0
  328. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  329. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  330. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/__init__.py +0 -0
  331. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  332. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  333. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
  334. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  335. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  336. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
  337. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
  338. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_essential/client.py +0 -0
  339. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  340. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
  341. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  342. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  343. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  344. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/dependency_links.txt +0 -0
  345. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/requires.txt +0 -0
  346. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/top_level.txt +0 -0
  347. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/setup.cfg +0 -0
  348. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/tests/test_ado_analysis.py +0 -0
  349. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/tests/test_github_analysis.py +0 -0
  350. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/tests/test_gitlab_analysis.py +0 -0
  351. {alita_sdk-0.3.253 → alita_sdk-0.3.255}/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.253
3
+ Version: 0.3.255
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
@@ -27,6 +27,6 @@ class SlackConfiguration(BaseModel):
27
27
  }
28
28
  }
29
29
  )
30
- name: Optional[SecretStr] = Field(description="Slack Bot Token")
30
+ name: Optional[str] = Field(description="Slack name")
31
31
  slack_token: Optional[SecretStr] = Field(description="Slack Token like XOXB-*****-*****-*****-*****")
32
32
  channel_id:Optional[str] = Field(description="Channel ID")
@@ -602,16 +602,22 @@ class AlitaClient:
602
602
  import logging
603
603
  logger = logging.getLogger(__name__)
604
604
  toolkit_config_parsed_json = None
605
+ events_dispatched = []
606
+
605
607
  try:
606
608
  toolkit_config_type = toolkit_config.get('type')
607
- toolkit_class = get_available_toolkit_models().get(toolkit_config_type)['toolkit_class']
608
- toolkit_config_model_class = toolkit_class.toolkit_config_schema()
609
- toolkit_config_validated_settings = toolkit_config_model_class(
610
- **toolkit_config.get('settings', {})
611
- ).model_dump(mode='json')
612
-
609
+ available_toolkit_models = get_available_toolkit_models().get(toolkit_config_type)
613
610
  toolkit_config_parsed_json = deepcopy(toolkit_config)
614
- toolkit_config_parsed_json['settings'] = toolkit_config_validated_settings
611
+ if available_toolkit_models:
612
+ toolkit_class = available_toolkit_models['toolkit_class']
613
+ toolkit_config_model_class = toolkit_class.toolkit_config_schema()
614
+ toolkit_config_validated_settings = toolkit_config_model_class(
615
+ **toolkit_config.get('settings', {})
616
+ ).model_dump(mode='json')
617
+ toolkit_config_parsed_json['settings'] = toolkit_config_validated_settings
618
+ else:
619
+ logger.warning(f"Toolkit type '{toolkit_config_type}' is skipping model validation")
620
+ toolkit_config_parsed_json['settings'] = None
615
621
  except Exception as toolkit_config_error:
616
622
  logger.error(f"Failed to validate toolkit configuration: {str(toolkit_config_error)}")
617
623
  return {
@@ -635,7 +641,6 @@ class AlitaClient:
635
641
  # Create RunnableConfig for callback support
636
642
  config = None
637
643
  callbacks = []
638
- events_dispatched = []
639
644
 
640
645
  if runtime_config:
641
646
  callbacks = runtime_config.get('callbacks', [])
@@ -9,6 +9,7 @@ from langchain_core.documents import Document
9
9
  from mammoth import convert_to_html
10
10
  from markdownify import markdownify
11
11
 
12
+ from alita_sdk.tools.chunkers.sematic.markdown_chunker import markdown_by_headers_chunker
12
13
  from .utils import perform_llm_prediction_for_image_bytes
13
14
 
14
15
 
@@ -35,6 +36,7 @@ class AlitaDocxMammothLoader(BaseLoader):
35
36
  self.extract_images = kwargs.get('extract_images')
36
37
  self.llm = kwargs.get("llm")
37
38
  self.prompt = kwargs.get("prompt")
39
+ self.max_tokens = kwargs.get('max_tokens', 512)
38
40
 
39
41
  def __handle_image(self, image) -> dict:
40
42
  """
@@ -100,11 +102,11 @@ class AlitaDocxMammothLoader(BaseLoader):
100
102
  Loads and converts the Docx file to markdown format.
101
103
 
102
104
  Returns:
103
- List[Document]: A list containing a single Document with the markdown content
105
+ List[Document]: A list containing a Documents with the markdown content
104
106
  and metadata including the source file path.
105
107
  """
106
108
  result_content = self.get_content()
107
- return [Document(page_content=result_content, metadata={'source': str(self.path)})]
109
+ return list(markdown_by_headers_chunker(iter([Document(page_content=result_content, metadata={'source': str(self.path)})]), config={'max_tokens':self.max_tokens}))
108
110
 
109
111
  def get_content(self):
110
112
  """
@@ -0,0 +1,73 @@
1
+ import json
2
+ from typing import Iterator
3
+
4
+ from langchain_core.documents import Document
5
+
6
+ from langchain_community.document_loaders.base import BaseLoader
7
+ from langchain_community.document_loaders.helpers import detect_file_encodings
8
+ from langchain_core.tools import ToolException
9
+ from langchain_text_splitters import RecursiveJsonSplitter
10
+
11
+
12
+ class AlitaJSONLoader(BaseLoader):
13
+
14
+ def __init__(self, **kwargs):
15
+ """Initialize with file path."""
16
+ if kwargs.get('file_path'):
17
+ self.file_path = kwargs['file_path']
18
+ elif kwargs.get('file_content'):
19
+ self.file_content = kwargs['file_content']
20
+ self.file_name = kwargs['file_name']
21
+ else:
22
+ raise ToolException("'file_path' or 'file_content' parameter should be provided.")
23
+ self.encoding = kwargs.get('encoding', 'utf-8')
24
+ self.autodetect_encoding = kwargs.get('autodetect_encoding', False)
25
+ self.max_tokens = kwargs.get('max_tokens', 512)
26
+
27
+ def get_content(self):
28
+ try:
29
+ if hasattr(self, 'file_path') and self.file_path:
30
+ with open(self.file_path, encoding=self.encoding) as f:
31
+ return json.load(f)
32
+ elif hasattr(self, 'file_content') and self.file_content:
33
+ return json.load(self.file_content)
34
+ else:
35
+ raise ValueError("Neither file_path nor file_content is provided.")
36
+
37
+ except UnicodeDecodeError as e:
38
+ if self.autodetect_encoding:
39
+ if hasattr(self, 'file_path') and self.file_path:
40
+ detected_encodings = detect_file_encodings(self.file_path)
41
+ for encoding in detected_encodings:
42
+ try:
43
+ with open(self.file_path, encoding=encoding.encoding) as f:
44
+ return f.read()
45
+ break
46
+ except UnicodeDecodeError:
47
+ continue
48
+ elif hasattr(self, 'file_content') and self.file_content:
49
+ detected_encodings = detect_file_encodings(self.file_content)
50
+ for encoding in detected_encodings:
51
+ try:
52
+ return self.file_content.decode(encoding.encoding)
53
+ except UnicodeDecodeError:
54
+ continue
55
+ else:
56
+ raise ValueError("Neither file_path nor file_content is provided for encoding detection.")
57
+ else:
58
+ raise RuntimeError(f"Error loading content with encoding {self.encoding}.") from e
59
+ except Exception as e:
60
+ raise RuntimeError(f"Error loading content.") from e
61
+
62
+ def lazy_load(self) -> Iterator[Document]:
63
+ """Load from file path."""
64
+ content_json = self.get_content()
65
+
66
+ if isinstance(content_json, list):
67
+ data_dict = {str(i): item for i, item in enumerate(content_json)}
68
+ else:
69
+ data_dict = content_json
70
+ chunks = RecursiveJsonSplitter(max_chunk_size=self.max_tokens).split_json(json_data=data_dict)
71
+ for chunk in chunks:
72
+ metadata = {"source": str(self.file_path) if hasattr(self, 'file_path') else self.file_name}
73
+ yield Document(page_content=json.dumps(chunk), metadata=metadata)
@@ -13,17 +13,18 @@
13
13
  # limitations under the License.
14
14
 
15
15
  from langchain_community.document_loaders import (
16
- UnstructuredMarkdownLoader,
17
- AirbyteJSONLoader, UnstructuredHTMLLoader,
18
- UnstructuredPowerPointLoader, PythonLoader)
16
+ UnstructuredMarkdownLoader,
17
+ AirbyteJSONLoader, UnstructuredHTMLLoader,
18
+ PythonLoader)
19
19
 
20
20
  from .AlitaCSVLoader import AlitaCSVLoader
21
21
  from .AlitaDocxMammothLoader import AlitaDocxMammothLoader
22
22
  from .AlitaExcelLoader import AlitaExcelLoader
23
23
  from .AlitaImageLoader import AlitaImageLoader
24
+ from .AlitaJSONLoader import AlitaJSONLoader
24
25
  from .AlitaPDFLoader import AlitaPDFLoader
25
- from .AlitaTextLoader import AlitaTextLoader
26
26
  from .AlitaPowerPointLoader import AlitaPowerPointLoader
27
+ from .AlitaTextLoader import AlitaTextLoader
27
28
 
28
29
  loaders_map = {
29
30
  '.png': {
@@ -122,7 +123,9 @@ loaders_map = {
122
123
  '.docx': {
123
124
  'class': AlitaDocxMammothLoader,
124
125
  'is_multimodal_processing': True,
125
- 'kwargs': {}
126
+ 'kwargs': {
127
+ 'extract_images': True
128
+ }
126
129
  },
127
130
  '.doc': {
128
131
  'class': AlitaTextLoader,
@@ -130,11 +133,9 @@ loaders_map = {
130
133
  'kwargs': {}
131
134
  },
132
135
  '.json': {
133
- 'class': AlitaTextLoader,
136
+ 'class': AlitaJSONLoader,
134
137
  'is_multimodal_processing': False,
135
- 'kwargs': {
136
- 'autodetect_encoding': True
137
- }
138
+ 'kwargs': {}
138
139
  },
139
140
  '.jsonl': {
140
141
  'class': AirbyteJSONLoader,
@@ -154,12 +155,16 @@ loaders_map = {
154
155
  '.ppt': {
155
156
  'class': AlitaPowerPointLoader,
156
157
  'is_multimodal_processing': False,
157
- 'kwargs': {}
158
+ 'kwargs': {
159
+ 'mode': 'paged'
160
+ }
158
161
  },
159
162
  '.pptx': {
160
163
  'class': AlitaPowerPointLoader,
161
164
  'is_multimodal_processing': False,
162
- 'kwargs': {}
165
+ 'kwargs': {
166
+ 'mode': 'paged'
167
+ }
163
168
  },
164
169
  '.py': {
165
170
  'class': PythonLoader,
@@ -0,0 +1,101 @@
1
+ import uuid
2
+ from logging import getLogger
3
+ from typing import Any, Type, Literal, Optional, Union, List
4
+
5
+ from langchain_core.tools import BaseTool
6
+ from pydantic import BaseModel, Field, create_model, EmailStr, constr
7
+
8
+ logger = getLogger(__name__)
9
+
10
+
11
+ class McpServerTool(BaseTool):
12
+ name: str
13
+ description: str
14
+ args_schema: Optional[Type[BaseModel]] = None
15
+ return_type: str = "str"
16
+ client: Any
17
+ server: str
18
+ tool_timeout_sec: int = 60
19
+
20
+
21
+ @staticmethod
22
+ def create_pydantic_model_from_schema(schema: dict, model_name: str = "ArgsSchema"):
23
+ def parse_type(field: dict, name: str = "Field") -> Any:
24
+ if "allOf" in field:
25
+ merged = {}
26
+ required = set()
27
+ for idx, subschema in enumerate(field["allOf"]):
28
+ sub_type = parse_type(subschema, f"{name}AllOf{idx}")
29
+ if hasattr(sub_type, "__fields__"):
30
+ merged.update({k: (v.outer_type_, v.default) for k, v in sub_type.__fields__.items()})
31
+ required.update({k for k, v in sub_type.__fields__.items() if v.required})
32
+ if merged:
33
+ return create_model(f"{name}AllOf", **merged)
34
+ return Any
35
+ if "anyOf" in field or "oneOf" in field:
36
+ key = "anyOf" if "anyOf" in field else "oneOf"
37
+ types = [parse_type(sub, f"{name}{key.capitalize()}{i}") for i, sub in enumerate(field[key])]
38
+ # Check for null type
39
+ if any(sub.get("type") == "null" for sub in field[key]):
40
+ non_null_types = [parse_type(sub, f"{name}{key.capitalize()}{i}")
41
+ for i, sub in enumerate(field[key]) if sub.get("type") != "null"]
42
+ if len(non_null_types) == 1:
43
+ return Optional[non_null_types[0]]
44
+ return Union[tuple(types)]
45
+ t = field.get("type")
46
+ if isinstance(t, list):
47
+ if "null" in t:
48
+ non_null = [x for x in t if x != "null"]
49
+ if len(non_null) == 1:
50
+ field = dict(field)
51
+ field["type"] = non_null[0]
52
+ return Optional[parse_type(field, name)]
53
+ return Any
54
+ return Any
55
+ if t == "string":
56
+ if "enum" in field:
57
+ return Literal[tuple(field["enum"])]
58
+ if field.get("format") == "email":
59
+ return EmailStr
60
+ if "pattern" in field:
61
+ return constr(regex=field["pattern"])
62
+ return str
63
+ if t == "integer":
64
+ return int
65
+ if t == "number":
66
+ return float
67
+ if t == "boolean":
68
+ return bool
69
+ if t == "object":
70
+ return McpServerTool.create_pydantic_model_from_schema(field, name.capitalize())
71
+ if t == "array":
72
+ items = field.get("items", {})
73
+ return List[parse_type(items, name + "Item")]
74
+ return Any
75
+
76
+ properties = schema.get("properties", {})
77
+ required = set(schema.get("required", []))
78
+ fields = {}
79
+ for name, prop in properties.items():
80
+ typ = parse_type(prop, name.capitalize())
81
+ default = prop.get("default", ... if name in required else None)
82
+ field_args = {}
83
+ if "description" in prop:
84
+ field_args["description"] = prop["description"]
85
+ if "format" in prop:
86
+ field_args["format"] = prop["format"]
87
+ fields[name] = (typ, Field(default, **field_args))
88
+ return create_model(model_name, **fields)
89
+
90
+ def _run(self, *args, **kwargs):
91
+ call_data = {
92
+ "server": self.server,
93
+ "tool_timeout_sec": self.tool_timeout_sec,
94
+ "tool_call_id": str(uuid.uuid4()),
95
+ "params": {
96
+ "name": self.name,
97
+ "arguments": kwargs
98
+ }
99
+ }
100
+
101
+ return self.client.mcp_tool_call(call_data)
@@ -336,6 +336,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
336
336
 
337
337
  from ..langchain.interfaces.llm_processor import add_documents
338
338
 
339
+ self._log_tool_event(message=f"Starting the indexing... Parameters: {collection_suffix=}, {clean_index=}, {is_code}", tool_name="index_documents")
339
340
  # pre-process documents if needed (find duplicates, etc.)
340
341
  if clean_index:
341
342
  logger.info("Cleaning index before re-indexing all documents.")
@@ -351,9 +352,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
351
352
  if isinstance(documents, types.GeneratorType):
352
353
  documents = list(documents)
353
354
  else:
355
+ self._log_tool_event(
356
+ message="Filter for duplicates",
357
+ tool_name="index_documents")
354
358
  # remove duplicates based on metadata 'id' and 'updated_on' or 'commit_hash' fields
355
359
  documents = self._reduce_code_duplicates(documents, collection_suffix) if is_code \
356
360
  else self._reduce_non_code_duplicates(documents, collection_suffix)
361
+ self._log_tool_event(
362
+ message="All the duplicates were filtered out. Proceeding with indexing.",
363
+ tool_name="index_documents")
357
364
 
358
365
  if not documents or len(documents) == 0:
359
366
  logger.info("No new documents to index after duplicate check.")
@@ -362,8 +369,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
362
369
  # if func is provided, apply it to documents
363
370
  # used for processing of documents before indexing,
364
371
  # e.g. to avoid time-consuming operations for documents that are already indexed
372
+ self._log_tool_event(message=f"Processing the dependent documents (attachments, etc.)", tool_name="index_documents")
365
373
  dependent_docs_generator = self.process_document_func(documents) if self.process_document_func else []
366
-
367
374
  # notify user about missed required metadata fields: id, updated_on
368
375
  # it is not required to have them, but it is recommended to have them for proper re-indexing and duplicate detection
369
376
  for doc in documents:
@@ -375,6 +382,9 @@ class VectorStoreWrapper(BaseToolApiWrapper):
375
382
 
376
383
  documents = documents + list(dependent_docs_generator)
377
384
 
385
+ self._log_tool_event(message=f"Documents for indexing were processed. Total documents: {len(documents)}",
386
+ tool_name="index_documents")
387
+
378
388
  # if collection_suffix is provided, add it to metadata of each document
379
389
  if collection_suffix:
380
390
  for doc in documents:
@@ -386,7 +396,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
386
396
  total_docs = len(documents)
387
397
  documents_count = 0
388
398
  _documents = []
389
-
399
+ self._log_tool_event(message=f"Starting the indexing of processed documents. Total documents: {len(documents)}",
400
+ tool_name="index_documents")
390
401
  # set default progress step to 20 if out of 0...100 or None
391
402
  progress_step = 20 if progress_step not in range(0, 100) else progress_step
392
403
  next_progress_point = progress_step
@@ -1,18 +1,16 @@
1
1
  import json
2
2
  import math
3
- import types
4
- from typing import Any, Optional, List, Dict, Callable, Generator
3
+ from logging import getLogger
4
+ from typing import Any, Optional, List, Dict, Generator
5
5
 
6
6
  from langchain_core.documents import Document
7
- from pydantic import BaseModel, model_validator, Field
8
- from ..langchain.tools.vector import VectorAdapter
9
7
  from langchain_core.messages import HumanMessage
8
+ from pydantic import BaseModel, model_validator, Field
9
+
10
10
  from alita_sdk.tools.elitea_base import BaseToolApiWrapper
11
11
  from alita_sdk.tools.vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
12
- from logging import getLogger
13
-
12
+ from ..langchain.tools.vector import VectorAdapter
14
13
  from ..utils.logging import dispatch_custom_event
15
- from ..utils.utils import IndexerKeywords
16
14
 
17
15
  logger = getLogger(__name__)
18
16
 
@@ -212,10 +210,6 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
212
210
  tool_name="_clean_collection"
213
211
  )
214
212
 
215
- def _add_to_collection(self, entry_id, new_collection_value):
216
- """Add a new collection name to the `collection` key in the `metadata` column."""
217
- self.vector_adapter.add_to_collection(self, entry_id, new_collection_value)
218
-
219
213
  def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True):
220
214
  """ Index documents in the vectorstore.
221
215
 
@@ -26,7 +26,7 @@ class AzureDevOpsWorkItemsToolkit(BaseToolkit):
26
26
  'toolkit_name': True,
27
27
  'max_toolkit_length': AzureDevOpsWorkItemsToolkit.toolkit_max_length})
28
28
  ),
29
- ado_configuration=(AdoConfiguration, Field(description="Ado Work Item configuration", json_schema_extra={'configuration_types': ['ado_work_item']})),
29
+ ado_configuration=(AdoConfiguration, Field(description="Ado Work Item configuration", json_schema_extra={'configuration_types': ['ado']})),
30
30
  limit=(Optional[int], Field(description="ADO plans limit used for limitation of the list with results", default=5)),
31
31
  selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
32
32
  # indexer settings
@@ -6,7 +6,6 @@ from langchain_core.documents import Document
6
6
  from pydantic import create_model, Field, SecretStr
7
7
 
8
8
  # from alita_sdk.runtime.langchain.interfaces.llm_processor import get_embeddings
9
- from .chunkers import markdown_chunker
10
9
  from .utils.content_parser import process_content_by_type
11
10
  from .vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
12
11
  from ..runtime.tools.vectorstore_base import VectorStoreWrapperBase
@@ -141,7 +140,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
141
140
  def _base_loader(self, **kwargs) -> Generator[Document, None, None]:
142
141
  """ Loads documents from a source, processes them,
143
142
  and returns a list of Document objects with base metadata: id and created_on."""
144
- pass
143
+ yield from ()
145
144
 
146
145
  def _process_document(self, base_document: Document) -> Generator[Document, None, None]:
147
146
  """ Process an existing base document to extract relevant metadata for full document preparation.
@@ -153,7 +152,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
153
152
 
154
153
  Returns:
155
154
  Document: The processed document with metadata."""
156
- pass
155
+ yield from ()
157
156
 
158
157
  def index_data(self, **kwargs):
159
158
  collection_suffix = kwargs.get("collection_suffix")
@@ -174,18 +173,20 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
174
173
  return self._save_index(list(documents), collection_suffix=collection_suffix, progress_step=progress_step)
175
174
 
176
175
  def _apply_loaders_chunkers(self, documents: Generator[Document, None, None], chunking_tool: str=None, chunking_config=None) -> Generator[Document, None, None]:
177
- from alita_sdk.tools.chunkers import __confluence_chunkers__ as chunkers, __confluence_models__ as models
176
+ from alita_sdk.tools.chunkers import __confluence_chunkers__ as chunkers
178
177
 
179
178
  if chunking_config is None:
180
179
  chunking_config = {}
181
180
  chunking_config['embedding'] = self._embedding
182
181
  chunking_config['llm'] = self.llm
183
-
182
+
184
183
  for document in documents:
185
184
  if content_type := document.metadata.get('loader_content_type', None):
186
185
  # apply parsing based on content type and chunk if chunker was applied to parent doc
186
+ content = document.metadata.pop('loader_content', None)
187
187
  yield from process_content_by_type(
188
188
  document=document,
189
+ content=content,
189
190
  extension_source=content_type, llm=self.llm, chunking_config=chunking_config)
190
191
  elif chunking_tool:
191
192
  # apply default chunker from toolkit config. No parsing.
@@ -205,9 +206,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
205
206
  for dep in dependencies:
206
207
  dep.metadata[IndexerKeywords.PARENT.value] = document.metadata.get('id', None)
207
208
  yield dep
208
-
209
- def _content_loader(self):
210
- pass
211
209
 
212
210
  def _reduce_duplicates(
213
211
  self,
@@ -255,36 +253,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
255
253
  def remove_ids_fn(self, idx_data, key: str):
256
254
  raise NotImplementedError("Subclasses must implement this method")
257
255
 
258
- def _process_documents(self, documents: List[Document]) -> Generator[Document, None, None]:
259
- """
260
- Process a list of base documents to extract relevant metadata for full document preparation.
261
- Used for late processing of documents after we ensure that the documents have to be indexed to avoid
262
- time-consuming operations for documents which might be useless.
263
- This function passed to index_documents method of vector store and called after _reduce_duplicates method.
264
-
265
- Args:
266
- documents (List[Document]): The base documents to process.
267
-
268
- Returns:
269
- Generator[Document, None, None]: A generator yielding processed documents with metadata.
270
- """
271
- for doc in documents:
272
- # Filter documents to process only those that either:
273
- # - do not have a 'chunk_id' in their metadata, or
274
- # - have 'chunk_id' explicitly set to 1.
275
- # This prevents processing of irrelevant or duplicate chunks, improving efficiency.
276
- chunk_id = doc.metadata.get("chunk_id")
277
- if chunk_id is None or chunk_id == 1:
278
- processed_docs = self._process_document(doc)
279
- if processed_docs: # Only proceed if the list is not empty
280
- for processed_doc in processed_docs:
281
- # map processed document (child) to the original document (parent)
282
- processed_doc.metadata[IndexerKeywords.PARENT.value] = doc.metadata.get('id', None)
283
- if chunker:=self._get_dependencies_chunker(processed_doc):
284
- yield from chunker(file_content_generator=iter([processed_doc]), config=self._get_dependencies_chunker_config())
285
- else:
286
- yield processed_doc
287
-
288
256
  def remove_index(self, collection_suffix: str = ""):
289
257
  """Cleans the indexed data in the collection."""
290
258
  super()._clean_collection(collection_suffix=collection_suffix)
@@ -1,7 +1,6 @@
1
1
  from typing import Generator
2
- from langchain.schema import Document
3
2
  from langchain_core.documents import Document
4
- from langchain_text_splitters import MarkdownHeaderTextSplitter
3
+ from langchain_text_splitters import MarkdownHeaderTextSplitter, ExperimentalMarkdownSyntaxTextSplitter
5
4
  from langchain.text_splitter import TokenTextSplitter
6
5
  from ..utils import tiktoken_length
7
6
  from copy import deepcopy as copy
@@ -50,4 +49,32 @@ def markdown_chunker(file_content_generator: Generator[Document, None, None], co
50
49
  yield Document(
51
50
  page_content=chunk.page_content,
52
51
  metadata=docmeta
53
- )
52
+ )
53
+
54
+
55
+ def markdown_by_headers_chunker(file_content_generator: Generator[Document, None, None], config: dict, *args, **kwargs) -> Generator[Document, None, None]:
56
+ strip_header = config.get("strip_header", False)
57
+ return_each_line = config.get("return_each_line", False)
58
+ headers_to_split_on = config.get("headers_to_split_on", [])
59
+ headers_to_split_on = [header.split(' ', 1) for header in headers_to_split_on]
60
+ for doc in file_content_generator:
61
+ doc_metadata = doc.metadata
62
+ doc_content = doc.page_content
63
+ chunk_id = 0
64
+ markdown_splitter = ExperimentalMarkdownSyntaxTextSplitter(
65
+ headers_to_split_on=headers_to_split_on,
66
+ strip_headers=strip_header,
67
+ return_each_line=return_each_line
68
+ )
69
+ md_header_splits = markdown_splitter.split_text(doc_content)
70
+ for chunk in md_header_splits:
71
+ chunk_id += 1
72
+ headers_meta = list(chunk.metadata.values())
73
+ docmeta = copy(doc_metadata)
74
+ docmeta.update({"headers": "; ".join(headers_meta)})
75
+ docmeta['chunk_id'] = chunk_id
76
+ docmeta['chunk_type'] = "document"
77
+ yield Document(
78
+ page_content=chunk.page_content,
79
+ metadata=docmeta
80
+ )
@@ -20,6 +20,7 @@ def get_tools(tool):
20
20
  confluence_configuration=tool['settings']['confluence_configuration'],
21
21
  limit=tool['settings'].get('limit', 5),
22
22
  labels=parse_list(tool['settings'].get('labels', None)),
23
+ custom_headers=tool['settings'].get('custom_headers', {}),
23
24
  additional_fields=tool['settings'].get('additional_fields', []),
24
25
  verify_ssl=tool['settings'].get('verify_ssl', True),
25
26
  alita=tool['settings'].get('alita'),
@@ -78,6 +79,8 @@ class ConfluenceToolkit(BaseToolkit):
78
79
  number_of_retries=(int, Field(description="Number of retries", default=2)),
79
80
  min_retry_seconds=(int, Field(description="Min retry, sec", default=10)),
80
81
  max_retry_seconds=(int, Field(description="Max retry, sec", default=60)),
82
+ # optional field for custom headers as dictionary
83
+ custom_headers=(Optional[dict], Field(description="Custom headers for API requests", default=None)),
81
84
  confluence_configuration=(Optional[ConfluenceConfiguration], Field(description="Confluence Configuration", json_schema_extra={'configuration_types': ['confluence']})),
82
85
  pgvector_configuration=(Optional[PgVectorConfiguration], Field(default = None,
83
86
  description="PgVector Configuration",
@@ -223,16 +223,21 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
223
223
  username = values.get('username')
224
224
  token = values.get('token')
225
225
  cloud = values.get('cloud')
226
- # if values.get('collection_name'):
227
- # values['collection_name'] = shortuuid.encode(values['collection_name'])
228
226
  if token and is_cookie_token(token):
229
227
  session = requests.Session()
230
228
  session.cookies.update(parse_cookie_string(token))
231
- values['client'] = Confluence(url=url, session=session, cloud=cloud)
229
+ client_instance = Confluence(url=url, session=session, cloud=cloud)
232
230
  elif token:
233
- values['client'] = Confluence(url=url, token=token, cloud=cloud)
231
+ client_instance = Confluence(url=url, token=token, cloud=cloud)
234
232
  else:
235
- values['client'] = Confluence(url=url, username=username, password=api_key, cloud=cloud)
233
+ client_instance = Confluence(url=url, username=username, password=api_key, cloud=cloud)
234
+
235
+ custom_headers = values.get('custom_headers', {})
236
+ logger.info(f"Jira tool: custom headers length: {len(custom_headers)}")
237
+ for header, value in custom_headers.items():
238
+ client_instance._update_header(header, value)
239
+
240
+ values['client'] = client_instance
236
241
  return values
237
242
 
238
243
  def __unquote_confluence_space(self) -> str | None: