alita-sdk 0.3.406__tar.gz → 0.3.408__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 (370) hide show
  1. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/assistant.py +4 -1
  3. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/application.py +8 -1
  4. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/application.py +7 -0
  5. alita_sdk-0.3.408/alita_sdk/tools/sharepoint/authorization_helper.py +187 -0
  6. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk.egg-info/PKG-INFO +1 -1
  7. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/pyproject.toml +1 -1
  8. alita_sdk-0.3.406/alita_sdk/tools/sharepoint/authorization_helper.py +0 -185
  9. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/LICENSE +0 -0
  10. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/README.md +0 -0
  11. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/__init__.py +0 -0
  12. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/community/__init__.py +0 -0
  13. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/community/utils.py +0 -0
  14. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/__init__.py +0 -0
  15. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/ado.py +0 -0
  16. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/azure_search.py +0 -0
  17. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/bigquery.py +0 -0
  18. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/bitbucket.py +0 -0
  19. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/browser.py +0 -0
  20. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/carrier.py +0 -0
  21. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/confluence.py +0 -0
  22. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/delta_lake.py +0 -0
  23. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/embedding.py +0 -0
  24. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/figma.py +0 -0
  25. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/github.py +0 -0
  26. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/gitlab.py +0 -0
  27. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/google_places.py +0 -0
  28. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/jira.py +0 -0
  29. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/pgvector.py +0 -0
  30. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/postman.py +0 -0
  31. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/qtest.py +0 -0
  32. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/rally.py +0 -0
  33. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/report_portal.py +0 -0
  34. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/salesforce.py +0 -0
  35. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/service_now.py +0 -0
  36. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/sharepoint.py +0 -0
  37. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/slack.py +0 -0
  38. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/sonar.py +0 -0
  39. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/sql.py +0 -0
  40. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/testio.py +0 -0
  41. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/testrail.py +0 -0
  42. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/xray.py +0 -0
  43. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/zephyr.py +0 -0
  44. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
  45. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/configurations/zephyr_essential.py +0 -0
  46. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/__init__.py +0 -0
  47. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/clients/__init__.py +0 -0
  48. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/clients/artifact.py +0 -0
  49. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/clients/client.py +0 -0
  50. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/clients/datasource.py +0 -0
  51. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/clients/prompt.py +0 -0
  52. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/clients/sandbox_client.py +0 -0
  53. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/__init__.py +0 -0
  54. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  55. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  56. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  57. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/constants.py +0 -0
  58. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  59. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  60. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  61. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  62. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  63. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  64. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  65. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  66. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
  67. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  68. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
  69. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
  70. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
  71. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
  72. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  73. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  74. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
  75. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
  76. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  77. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
  78. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  79. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/indexer.py +0 -0
  80. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  81. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  82. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  83. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  84. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  85. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  86. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  87. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  88. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  89. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  90. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  91. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  92. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  93. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  94. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  95. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  96. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  97. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  98. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  99. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  100. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  101. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  102. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  103. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  104. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/langchain/utils.py +0 -0
  105. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/llms/__init__.py +0 -0
  106. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/llms/preloaded.py +0 -0
  107. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  108. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  109. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/configurations.py +0 -0
  110. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  111. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  112. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  113. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/tools.py +0 -0
  114. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  115. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/__init__.py +0 -0
  116. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/agent.py +0 -0
  117. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/artifact.py +0 -0
  118. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/datasource.py +0 -0
  119. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/echo.py +0 -0
  120. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/function.py +0 -0
  121. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/graph.py +0 -0
  122. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/image_generation.py +0 -0
  123. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  124. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/llm.py +0 -0
  125. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/loop.py +0 -0
  126. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/loop_output.py +0 -0
  127. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  128. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  129. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/prompt.py +0 -0
  130. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/router.py +0 -0
  131. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/sandbox.py +0 -0
  132. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/tool.py +0 -0
  133. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/vectorstore.py +0 -0
  134. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/tools/vectorstore_base.py +0 -0
  135. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  136. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/__init__.py +0 -0
  137. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/constants.py +0 -0
  138. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/evaluate.py +0 -0
  139. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/logging.py +0 -0
  140. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  141. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/streamlit.py +0 -0
  142. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
  143. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
  144. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/runtime/utils/utils.py +0 -0
  145. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/__init__.py +0 -0
  146. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/__init__.py +0 -0
  147. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/repos/__init__.py +0 -0
  148. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
  149. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
  150. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  151. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/utils.py +0 -0
  152. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
  153. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  154. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
  155. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  156. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  157. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  158. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/aws/__init__.py +0 -0
  159. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
  160. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
  161. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
  162. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
  163. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  164. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
  165. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  166. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/base/__init__.py +0 -0
  167. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/base/tool.py +0 -0
  168. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/base_indexer_toolkit.py +0 -0
  169. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/bitbucket/__init__.py +0 -0
  170. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
  171. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  172. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  173. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/browser/__init__.py +0 -0
  174. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/browser/crawler.py +0 -0
  175. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  176. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  177. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/browser/utils.py +0 -0
  178. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/browser/wiki.py +0 -0
  179. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/__init__.py +0 -0
  180. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  181. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  182. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  183. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  184. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  185. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  186. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  187. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  188. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  189. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  190. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  191. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/tools.py +0 -0
  192. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  193. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  194. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/carrier/utils.py +0 -0
  195. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/__init__.py +0 -0
  196. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  197. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  198. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  199. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  200. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  201. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  202. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  203. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  204. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  205. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  206. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  207. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  208. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  209. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  210. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  211. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  212. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  213. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  214. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/models.py +0 -0
  215. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  216. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  217. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
  218. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  219. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  220. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  221. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/chunkers/utils.py +0 -0
  222. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/__init__.py +0 -0
  223. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  224. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  225. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  226. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  227. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  228. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  229. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  230. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  231. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/code/__init__.py +0 -0
  232. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/code/linter/__init__.py +0 -0
  233. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  234. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  235. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  236. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  237. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/code_indexer_toolkit.py +0 -0
  238. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/confluence/__init__.py +0 -0
  239. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  240. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/confluence/loader.py +0 -0
  241. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/confluence/utils.py +0 -0
  242. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  243. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  244. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/elastic/__init__.py +0 -0
  245. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  246. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/elitea_base.py +0 -0
  247. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/figma/__init__.py +0 -0
  248. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  249. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/github/__init__.py +0 -0
  250. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/github/api_wrapper.py +0 -0
  251. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/github/github_client.py +0 -0
  252. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  253. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/github/schemas.py +0 -0
  254. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/github/tool.py +0 -0
  255. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/github/tool_prompts.py +0 -0
  256. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gitlab/__init__.py +0 -0
  257. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
  258. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gitlab/tools.py +0 -0
  259. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gitlab/utils.py +0 -0
  260. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  261. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  262. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gmail/__init__.py +0 -0
  263. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  264. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/gmail/utils.py +0 -0
  265. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/google/__init__.py +0 -0
  266. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
  267. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
  268. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
  269. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/google/bigquery/tool.py +0 -0
  270. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/google_places/__init__.py +0 -0
  271. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  272. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/jira/__init__.py +0 -0
  273. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  274. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/keycloak/__init__.py +0 -0
  275. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  276. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/llm/__init__.py +0 -0
  277. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/llm/img_utils.py +0 -0
  278. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/llm/llm_utils.py +0 -0
  279. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/localgit/__init__.py +0 -0
  280. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/localgit/local_git.py +0 -0
  281. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/localgit/tool.py +0 -0
  282. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/memory/__init__.py +0 -0
  283. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
  284. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ocr/__init__.py +0 -0
  285. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  286. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/ocr/text_detection.py +0 -0
  287. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/openapi/__init__.py +0 -0
  288. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/__init__.py +0 -0
  289. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  290. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  291. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  292. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  293. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  294. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  295. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  296. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  297. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  298. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  299. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  300. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  301. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  302. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  303. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  304. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  305. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  306. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  307. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/postman/__init__.py +0 -0
  308. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  309. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  310. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pptx/__init__.py +0 -0
  311. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  312. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/qtest/__init__.py +0 -0
  313. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
  314. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/qtest/tool.py +0 -0
  315. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/rally/__init__.py +0 -0
  316. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  317. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/report_portal/__init__.py +0 -0
  318. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  319. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  320. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/salesforce/__init__.py +0 -0
  321. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  322. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/salesforce/model.py +0 -0
  323. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/servicenow/__init__.py +0 -0
  324. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  325. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  326. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/sharepoint/__init__.py +0 -0
  327. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
  328. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/sharepoint/utils.py +0 -0
  329. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/slack/__init__.py +0 -0
  330. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  331. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/sql/__init__.py +0 -0
  332. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  333. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/sql/models.py +0 -0
  334. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/testio/__init__.py +0 -0
  335. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  336. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/testrail/__init__.py +0 -0
  337. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
  338. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/utils/__init__.py +0 -0
  339. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
  340. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/utils/content_parser.py +0 -0
  341. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
  342. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
  343. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/xray/__init__.py +0 -0
  344. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  345. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/yagmail/__init__.py +0 -0
  346. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  347. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  348. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr/__init__.py +0 -0
  349. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  350. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  351. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
  352. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  353. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  354. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
  355. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
  356. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_essential/client.py +0 -0
  357. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  358. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
  359. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  360. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  361. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  362. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk.egg-info/SOURCES.txt +0 -0
  363. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk.egg-info/dependency_links.txt +0 -0
  364. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk.egg-info/requires.txt +0 -0
  365. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/alita_sdk.egg-info/top_level.txt +0 -0
  366. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/setup.cfg +0 -0
  367. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/tests/test_ado_analysis.py +0 -0
  368. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/tests/test_github_analysis.py +0 -0
  369. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/tests/test_gitlab_analysis.py +0 -0
  370. {alita_sdk-0.3.406 → alita_sdk-0.3.408}/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.406
3
+ Version: 0.3.408
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
@@ -17,6 +17,7 @@ from .constants import REACT_ADDON, REACT_VARS, XML_ADDON
17
17
  from .chat_message_template import Jinja2TemplatedChatMessagesTemplate
18
18
  from ..tools.echo import EchoTool
19
19
  from langchain_core.tools import BaseTool, ToolException
20
+ from jinja2 import Environment, DebugUndefined
20
21
 
21
22
  logger = logging.getLogger(__name__)
22
23
 
@@ -349,5 +350,7 @@ class Assistant:
349
350
  continue
350
351
  # take only the content of the system message from the openai prompt
351
352
  if isinstance(message, SystemMessage):
352
- return message.content
353
+ environment = Environment(undefined=DebugUndefined)
354
+ template = environment.from_string(message.content)
355
+ return template.render(self.prompt.partial_variables)
353
356
  return None
@@ -39,7 +39,14 @@ class ApplicationToolkit(BaseToolkit):
39
39
  description=app_details.get("description"),
40
40
  application=app,
41
41
  args_schema=applicationToolSchema,
42
- return_type='str')])
42
+ return_type='str',
43
+ client=client,
44
+ args_runnable={
45
+ "application_id": application_id,
46
+ "application_version_id": application_version_id,
47
+ "store": store,
48
+ "llm": client.get_llm(version_details['llm_settings']['model_name'], model_settings),
49
+ })])
43
50
 
44
51
  def get_tools(self):
45
52
  return self.tools
@@ -50,6 +50,8 @@ class Application(BaseTool):
50
50
  application: Any
51
51
  args_schema: Type[BaseModel] = applicationToolSchema
52
52
  return_type: str = "str"
53
+ client: Any
54
+ args_runnable: dict = {}
53
55
 
54
56
  @field_validator('name', mode='before')
55
57
  @classmethod
@@ -66,6 +68,11 @@ class Application(BaseTool):
66
68
  return self._run(*config, **all_kwargs)
67
69
 
68
70
  def _run(self, *args, **kwargs):
71
+ if self.client and self.args_runnable:
72
+ # Recreate new LanggraphAgentRunnable in order to reflect the current input_mapping (it can be dynamic for pipelines).
73
+ # Actually, for pipelines agent toolkits LanggraphAgentRunnable is created (for LLMNode) before pipeline's schema parsing.
74
+ application_variables = {k: {"name": k, "value": v} for k, v in kwargs.items()}
75
+ self.application = self.client.application(**self.args_runnable, application_variables=application_variables)
69
76
  response = self.application.invoke(formulate_query(kwargs))
70
77
  if self.return_type == "str":
71
78
  return response["output"]
@@ -0,0 +1,187 @@
1
+ from datetime import datetime, timezone
2
+ from urllib.parse import unquote, urlparse, quote
3
+
4
+ import jwt
5
+ import requests
6
+ from botocore.response import get_response
7
+
8
+
9
+ class SharepointAuthorizationHelper:
10
+
11
+ def __init__(self, tenant, client_id, client_secret, scope, token_json):
12
+ self.tenant = tenant
13
+ self.client_id = client_id
14
+ self.client_secret = client_secret
15
+ self.scope = scope
16
+ self.auth_code = None
17
+ self.access_token = None
18
+ self.token_json = token_json
19
+ self.state = "12345" # Static state for this example
20
+ self.redirect_url = None
21
+
22
+ def refresh_access_token(self) -> str:
23
+ url = f"https://login.microsoftonline.com/{self.tenant}/oauth2/v2.0/token"
24
+ headers = {
25
+ 'Content-Type': 'application/x-www-form-urlencoded'
26
+ }
27
+ data = {
28
+ 'grant_type': 'refresh_token',
29
+ 'client_id': self.client_id,
30
+ 'client_secret': self.client_secret,
31
+ 'refresh_token': self.token_json,
32
+ 'scope': self.scope
33
+ }
34
+ response = requests.post(url, headers=headers, data=data)
35
+ if response.status_code == 200:
36
+ return response.json()["access_token"]
37
+ else:
38
+ print(f"Error: {response.status_code}")
39
+ print(response.text)
40
+ return None
41
+
42
+ def get_access_token(self) -> str:
43
+ if (self.is_token_valid(self.token_json)):
44
+ return self.token_json['access_token']
45
+ else:
46
+ return self.refresh_access_token()
47
+
48
+
49
+ def is_token_valid(self, access_token) -> bool:
50
+ try:
51
+ decoded_token = jwt.decode(access_token, options={"verify_signature": False})
52
+ exp_timestamp = decoded_token.get("exp")
53
+ if exp_timestamp is None:
54
+ return False
55
+ expiration_time = datetime.fromtimestamp(exp_timestamp, timezone.utc)
56
+ return expiration_time > datetime.now(timezone.utc)
57
+ except jwt.ExpiredSignatureError:
58
+ return False
59
+ except jwt.InvalidTokenError:
60
+ return False
61
+
62
+ def _validate_response(self, response, required_field, error_prefix=None):
63
+ if response.status_code != 200:
64
+ raise RuntimeError(f"{error_prefix or 'Request'} failed: {response.status_code} {response.text}")
65
+ json_data = response.json()
66
+ if required_field not in json_data:
67
+ raise KeyError(f"'{required_field}' missing in response")
68
+ return json_data[required_field]
69
+
70
+ def generate_token_and_site_id(self, site_url: str) -> tuple[str, str]:
71
+ try:
72
+ parsed = urlparse(site_url)
73
+ domain = parsed.hostname
74
+ site_path = parsed.path.strip('/')
75
+ if not domain or not site_path:
76
+ raise ValueError(f"site_url missing domain or site path: {site_url}")
77
+ app_name = domain.split('.')[0]
78
+ openid_config_url = f"https://login.microsoftonline.com/{app_name}.onmicrosoft.com/v2.0/.well-known/openid-configuration"
79
+ response = requests.get(openid_config_url)
80
+ token_url = self._validate_response(response, required_field="token_endpoint", error_prefix="OpenID config")
81
+ token_data = {
82
+ "grant_type": "client_credentials",
83
+ "client_id": self.client_id,
84
+ "client_secret": self.client_secret,
85
+ "scope": "https://graph.microsoft.com/.default"
86
+ }
87
+ token_response = requests.post(token_url, data=token_data)
88
+ access_token = self._validate_response(token_response, required_field="access_token", error_prefix="Token request")
89
+ graph_site_url = f"https://graph.microsoft.com/v1.0/sites/{domain}:/{site_path}"
90
+ headers = {"Authorization": f"Bearer {access_token}"}
91
+ site_response = requests.get(graph_site_url, headers=headers)
92
+ site_id = self._validate_response(site_response, required_field="id", error_prefix="Site info")
93
+ return access_token, site_id
94
+ except Exception as e:
95
+ raise RuntimeError(f"Error while obtaining access_token and site_id: {e}")
96
+
97
+ def get_files_list(self, site_url: str, folder_name: str = None, limit_files: int = 100):
98
+ if not site_url or not site_url.startswith("https://"):
99
+ raise ValueError(f"Invalid site_url format: {site_url}")
100
+ if limit_files is not None and (not isinstance(limit_files, int) or limit_files <= 0):
101
+ raise ValueError(f"limit_files must be a positive integer, got: {limit_files}")
102
+ try:
103
+ access_token, site_id = self.generate_token_and_site_id(site_url)
104
+ headers = {"Authorization": f"Bearer {access_token}"}
105
+ drives_url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives"
106
+ drives_response = requests.get(drives_url, headers=headers)
107
+ drives = self._validate_response(drives_response, required_field="value", error_prefix="Drives request")
108
+ result = []
109
+ def _recurse_drive(drive_id, drive_path, parent_folder, limit_files):
110
+ # Escape folder_name for URL safety if present
111
+ if parent_folder:
112
+ safe_folder_name = quote(parent_folder.strip('/'), safe="/")
113
+ url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives/{drive_id}/root:/{safe_folder_name}:/children?$top={limit_files}"
114
+ else:
115
+ url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives/{drive_id}/root/children?$top={limit_files}"
116
+ response = requests.get(url, headers=headers)
117
+ if response.status_code != 200:
118
+ return []
119
+ files_json = response.json()
120
+ if "value" not in files_json:
121
+ return []
122
+ files = []
123
+ for file in files_json["value"]:
124
+ file_name = file.get('name', '')
125
+ # Build full path reflecting nested folders
126
+ if parent_folder:
127
+ full_path = '/' + '/'.join([drive_path.strip('/'), parent_folder.strip('/'), file_name.strip('/')])
128
+ else:
129
+ full_path = '/' + '/'.join([drive_path.strip('/'), file_name.strip('/')])
130
+ temp_props = {
131
+ 'Name': file_name,
132
+ 'Path': full_path,
133
+ 'Created': file.get('createdDateTime'),
134
+ 'Modified': file.get('lastModifiedDateTime'),
135
+ 'Link': file.get('webUrl'),
136
+ 'id': file.get('id')
137
+ }
138
+ if not all([temp_props['Name'], temp_props['Path'], temp_props['id']]):
139
+ continue # skip files with missing required fields
140
+ if 'folder' in file:
141
+ # Recursively extract files from this folder
142
+ inner_folder = parent_folder + '/' + file_name if parent_folder else file_name
143
+ inner_files = _recurse_drive(drive_id, drive_path, inner_folder, limit_files)
144
+ files.extend(inner_files)
145
+ else:
146
+ files.append(temp_props)
147
+ if limit_files is not None and len(result) + len(files) >= limit_files:
148
+ return files[:limit_files - len(result)]
149
+ return files
150
+ for drive in drives:
151
+ drive_id = drive.get("id")
152
+ drive_path = unquote(urlparse(drive.get("webUrl")).path) if drive.get("webUrl") else ""
153
+ if not drive_id:
154
+ continue # skip drives without id
155
+ files = _recurse_drive(drive_id, drive_path, folder_name, limit_files)
156
+ result.extend(files)
157
+ if limit_files is not None and len(result) >= limit_files:
158
+ return result[:limit_files]
159
+ return result
160
+ except Exception as e:
161
+ raise RuntimeError(f"Error in get_files_list: {e}")
162
+
163
+ def get_file_content(self, site_url: str, path: str):
164
+ try:
165
+ access_token, site_id = self.generate_token_and_site_id(site_url)
166
+ headers = {"Authorization": f"Bearer {access_token}"}
167
+ drives_url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives"
168
+ drives_response = requests.get(drives_url, headers=headers)
169
+ drives = self._validate_response(drives_response, required_field="value", error_prefix="Drives request")
170
+ path = path.strip('/')
171
+ #
172
+ for drive in drives:
173
+ drive_path = unquote(urlparse(drive.get("webUrl")).path).strip('/')
174
+ if not drive_path or not path.startswith(drive_path):
175
+ continue
176
+ drive_id = drive.get("id")
177
+ if not drive_id:
178
+ continue
179
+ path = path.replace(drive_path, '').strip('/')
180
+ safe_path = quote(path, safe="")
181
+ url = f"https://graph.microsoft.com/v1.0/drives/{drive_id}/root:/{safe_path}:/content"
182
+ response = requests.get(url, headers=headers)
183
+ if response.status_code == 200:
184
+ return response.content
185
+ raise RuntimeError(f"File '{path}' not found in any private or shared documents.")
186
+ except Exception as e:
187
+ raise RuntimeError(f"Error in get_file_content: {e}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.406
3
+ Version: 0.3.408
4
4
  Summary: SDK for building langchain agents using resources from Alita
5
5
  Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "alita_sdk"
7
- version = "0.3.406"
7
+ version = "0.3.408"
8
8
  description = "SDK for building langchain agents using resources from Alita"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,185 +0,0 @@
1
- from datetime import datetime, timezone
2
- from urllib.parse import unquote, urlparse
3
-
4
- import jwt
5
- import requests
6
-
7
- class SharepointAuthorizationHelper:
8
-
9
- def __init__(self, tenant, client_id, client_secret, scope, token_json):
10
- self.tenant = tenant
11
- self.client_id = client_id
12
- self.client_secret = client_secret
13
- self.scope = scope
14
- self.auth_code = None
15
- self.access_token = None
16
- self.token_json = token_json
17
- self.state = "12345" # Static state for this example
18
- self.redirect_url = None
19
-
20
- def refresh_access_token(self) -> str:
21
- url = f"https://login.microsoftonline.com/{self.tenant}/oauth2/v2.0/token"
22
- headers = {
23
- 'Content-Type': 'application/x-www-form-urlencoded'
24
- }
25
- data = {
26
- 'grant_type': 'refresh_token',
27
- 'client_id': self.client_id,
28
- 'client_secret': self.client_secret,
29
- 'refresh_token': self.token_json,
30
- 'scope': self.scope
31
- }
32
- response = requests.post(url, headers=headers, data=data)
33
- if response.status_code == 200:
34
- return response.json()["access_token"]
35
- else:
36
- print(f"Error: {response.status_code}")
37
- print(response.text)
38
- return None
39
-
40
- def get_access_token(self) -> str:
41
- if (self.is_token_valid(self.token_json)):
42
- return self.token_json['access_token']
43
- else:
44
- return self.refresh_access_token()
45
-
46
-
47
- def is_token_valid(self, access_token) -> bool:
48
- try:
49
- decoded_token = jwt.decode(access_token, options={"verify_signature": False})
50
- exp_timestamp = decoded_token.get("exp")
51
- if exp_timestamp is None:
52
- return False
53
- expiration_time = datetime.fromtimestamp(exp_timestamp, timezone.utc)
54
- return expiration_time > datetime.now(timezone.utc)
55
- except jwt.ExpiredSignatureError:
56
- return False
57
- except jwt.InvalidTokenError:
58
- return False
59
-
60
-
61
- def generate_token_and_site_id(self, site_url: str) -> tuple[str, str]:
62
- try:
63
- parsed = urlparse(site_url)
64
- domain = parsed.hostname
65
- site_path = parsed.path.strip('/')
66
- if not domain or not site_path:
67
- raise ValueError(f"site_url missing domain or site path: {site_url}")
68
- #
69
- app_name = domain.split('.')[0]
70
- openid_config_url = f"https://login.microsoftonline.com/{app_name}.onmicrosoft.com/v2.0/.well-known/openid-configuration"
71
- response = requests.get(openid_config_url)
72
- if response.status_code != 200:
73
- raise RuntimeError(f"Failed to get OpenID config: {response.status_code} {response.text}")
74
- token_url = response.json().get("token_endpoint")
75
- if not token_url:
76
- raise KeyError("'token_endpoint' missing in OpenID config response")
77
- #
78
- token_data = {
79
- "grant_type": "client_credentials",
80
- "client_id": self.client_id,
81
- "client_secret": self.client_secret,
82
- "scope": "https://graph.microsoft.com/.default"
83
- }
84
- token_response = requests.post(token_url, data=token_data)
85
- if token_response.status_code != 200:
86
- raise RuntimeError(f"Failed to get access token: {token_response.status_code} {token_response.text}")
87
- access_token = token_response.json().get("access_token")
88
- if not access_token:
89
- raise KeyError("'access_token' missing in token response")
90
- #
91
- graph_site_url = f"https://graph.microsoft.com/v1.0/sites/{domain}:/{site_path}"
92
- headers = {"Authorization": f"Bearer {access_token}"}
93
- site_response = requests.get(graph_site_url, headers=headers)
94
- if site_response.status_code != 200:
95
- raise RuntimeError(f"Failed to get site info: {site_response.status_code} {site_response.text}")
96
- site_id = site_response.json().get("id")
97
- if not site_id:
98
- raise KeyError("'id' missing in site response")
99
- #
100
- return access_token, site_id
101
- except Exception as e:
102
- raise RuntimeError(f"Error while obtaining access_token and site_id: {e}")
103
-
104
- def get_files_list(self, site_url: str, folder_name: str = None, limit_files: int = 100):
105
- if not site_url or not site_url.startswith("https://"):
106
- raise ValueError(f"Invalid site_url format: {site_url}")
107
- if limit_files is not None and (not isinstance(limit_files, int) or limit_files <= 0):
108
- raise ValueError(f"limit_files must be a positive integer, got: {limit_files}")
109
- try:
110
- access_token, site_id = self.generate_token_and_site_id(site_url)
111
- headers = {"Authorization": f"Bearer {access_token}"}
112
- drives_url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives"
113
- drives_response = requests.get(drives_url, headers=headers)
114
- if drives_response.status_code != 200:
115
- raise RuntimeError(f"Failed to get drives: {drives_response.status_code} {drives_response.text}")
116
- drives_json = drives_response.json()
117
- if "value" not in drives_json or not drives_json["value"]:
118
- raise KeyError("'value' missing or empty in drives response")
119
- drive_id = drives_json["value"][0].get("id")
120
- drive_path = unquote(urlparse(drives_json["value"][0].get("webUrl")).path)
121
- if not drive_id:
122
- raise KeyError("'id' missing in drive object")
123
- #
124
- # Build the correct endpoint for folder or root
125
- if folder_name:
126
- # Validate folder_name for safe URL usage
127
- if any(c in folder_name for c in ['..', '//', '\\']):
128
- raise ValueError(f"Unsafe folder_name: {folder_name}")
129
- url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives/{drive_id}/root:/{folder_name}:/children?$top={limit_files}"
130
- else:
131
- url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives/{drive_id}/root/children?$top={limit_files}"
132
- response = requests.get(url, headers=headers)
133
- if response.status_code != 200:
134
- raise RuntimeError(f"Failed to get files list: {response.status_code} {response.text}")
135
- files_json = response.json()
136
- if "value" not in files_json:
137
- raise KeyError("'value' missing in files response")
138
- #
139
- result = []
140
- for file in files_json["value"]:
141
- file_name = file.get('name', '')
142
- parts = [drive_path.strip('/'), folder_name.strip('/') if folder_name else '', file_name.strip('/')]
143
- #
144
- temp_props = {
145
- 'Name': file_name,
146
- 'Path': '/'.join([part for part in parts if part]),
147
- 'Created': file.get('createdDateTime'),
148
- 'Modified': file.get('lastModifiedDateTime'),
149
- 'Link': file.get('webUrl'),
150
- 'id': file.get('id')
151
- }
152
- if not all([temp_props['Name'], temp_props['Path'], temp_props['id']]):
153
- raise KeyError(f"Missing required file fields in: {file}")
154
- result.append(temp_props)
155
- # If API doesn't respect $top, slice in Python
156
- if limit_files is not None:
157
- result = result[:limit_files]
158
- return result
159
- except Exception as e:
160
- raise RuntimeError(f"Error in get_files_list: {e}")
161
-
162
- def get_file_content(self, site_url: str, path: str):
163
- try:
164
- access_token, site_id = self.generate_token_and_site_id(site_url)
165
- headers = {"Authorization": f"Bearer {access_token}"}
166
- drives_url = f"https://graph.microsoft.com/v1.0/sites/{site_id}/drives"
167
- drives_response = requests.get(drives_url, headers=headers)
168
- if drives_response.status_code != 200:
169
- raise RuntimeError(f"Failed to get drives: {drives_response.status_code} {drives_response.text}")
170
- drives_json = drives_response.json()
171
- if "value" not in drives_json or not drives_json["value"]:
172
- raise KeyError("'value' missing or empty in drives response")
173
- drive_id = drives_json["value"][0].get("id")
174
- if not drive_id:
175
- raise KeyError("'id' missing in drive object")
176
- #
177
- # Build the endpoint for file content
178
- url = f"https://graph.microsoft.com/v1.0/drives/{drive_id}/root:/{path}:/content"
179
- response = requests.get(url, headers=headers)
180
- if response.status_code != 200:
181
- raise RuntimeError(f"Failed to get files list: {response.status_code} {response.text}")
182
- #
183
- return response.content
184
- except Exception as e:
185
- raise RuntimeError(f"Error in get_files_list: {e}")
File without changes
File without changes