alita-sdk 0.3.145__tar.gz → 0.3.147__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 (329) hide show
  1. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/PKG-INFO +218 -30
  2. alita_sdk-0.3.147/README.md +314 -0
  3. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/function.py +0 -2
  4. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/indexer_tool.py +4 -2
  5. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/repos/__init__.py +3 -1
  6. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/test_plan/__init__.py +2 -0
  7. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/wiki/__init__.py +17 -15
  8. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/work_item/__init__.py +4 -1
  9. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/advanced_jira_mining/__init__.py +10 -1
  10. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/azure_ai/search/__init__.py +7 -1
  11. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/__init__.py +9 -1
  12. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/__init__.py +1 -1
  13. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/__init__.py +2 -4
  14. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/aws/__init__.py +10 -1
  15. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/linter/__init__.py +5 -1
  16. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/sonar/__init__.py +11 -2
  17. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/__init__.py +3 -1
  18. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/custom_open_api/__init__.py +4 -1
  19. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/elastic/__init__.py +2 -1
  20. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/figma/__init__.py +3 -1
  21. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/__init__.py +5 -2
  22. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/__init__.py +3 -1
  23. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab_org/__init__.py +3 -1
  24. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/google_places/__init__.py +11 -2
  25. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/jira/__init__.py +4 -2
  26. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/keycloak/__init__.py +3 -2
  27. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ocr/__init__.py +6 -2
  28. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/__init__.py +5 -2
  29. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pptx/__init__.py +5 -2
  30. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/qtest/__init__.py +3 -1
  31. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/rally/__init__.py +4 -2
  32. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/report_portal/__init__.py +3 -1
  33. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/salesforce/__init__.py +5 -1
  34. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/servicenow/__init__.py +3 -1
  35. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/__init__.py +6 -1
  36. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sql/__init__.py +9 -2
  37. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testio/__init__.py +3 -1
  38. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testrail/__init__.py +5 -1
  39. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/xray/__init__.py +9 -1
  40. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/__init__.py +10 -2
  41. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_enterprise/__init__.py +8 -2
  42. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_scale/__init__.py +2 -0
  43. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/PKG-INFO +218 -30
  44. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/requires.txt +1 -1
  45. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/pyproject.toml +2 -2
  46. alita_sdk-0.3.145/README.md +0 -126
  47. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/LICENSE +0 -0
  48. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/__init__.py +0 -0
  49. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/__init__.py +0 -0
  50. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/__init__.py +0 -0
  51. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/ado_analyse/__init__.py +0 -0
  52. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/ado_analyse/api_wrapper.py +0 -0
  53. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/github_analyse/__init__.py +0 -0
  54. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/github_analyse/api_wrapper.py +0 -0
  55. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/gitlab_analyse/__init__.py +0 -0
  56. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/gitlab_analyse/api_wrapper.py +0 -0
  57. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
  58. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
  59. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/browseruse/__init__.py +0 -0
  60. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/browseruse/api_wrapper.py +0 -0
  61. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/__init__.py +0 -0
  62. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/__init__.py +0 -0
  63. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/baseclass.py +0 -0
  64. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/knowledge_gap_agent.py +0 -0
  65. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/long_writer_agent.py +0 -0
  66. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/planner_agent.py +0 -0
  67. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/proofreader_agent.py +0 -0
  68. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/thinking_agent.py +0 -0
  69. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_agents/__init__.py +0 -0
  70. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_agents/crawl_agent.py +0 -0
  71. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_agents/search_agent.py +0 -0
  72. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_selector_agent.py +0 -0
  73. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/utils/__init__.py +0 -0
  74. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/utils/parse_output.py +0 -0
  75. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/writer_agent.py +0 -0
  76. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/api_wrapper.py +0 -0
  77. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/deep_research.py +0 -0
  78. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/examples/deep_example.py +0 -0
  79. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/examples/iterative_example.py +0 -0
  80. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/examples/report_plan_example.py +0 -0
  81. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/iterative_research.py +0 -0
  82. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/llm_config.py +0 -0
  83. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/main.py +0 -0
  84. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/tools/__init__.py +0 -0
  85. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/tools/crawl_website.py +0 -0
  86. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/tools/web_search.py +0 -0
  87. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/utils/__init__.py +0 -0
  88. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/utils/md_to_pdf.py +0 -0
  89. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/utils/os.py +0 -0
  90. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/utils.py +0 -0
  91. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/__init__.py +0 -0
  92. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/__init__.py +0 -0
  93. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/artifact.py +0 -0
  94. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/client.py +0 -0
  95. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/datasource.py +0 -0
  96. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/prompt.py +0 -0
  97. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/__init__.py +0 -0
  98. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  99. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  100. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/assistant.py +0 -0
  101. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  102. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/constants.py +0 -0
  103. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  104. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  105. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  106. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  107. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  108. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  109. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  110. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  111. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  112. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  113. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  114. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  115. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
  116. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  117. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/indexer.py +0 -0
  118. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  119. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  120. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
  121. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  122. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  123. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  124. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  125. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  126. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  127. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  128. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  129. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  130. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  131. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  132. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  133. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  134. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  135. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  136. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  137. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  138. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  139. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  140. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  141. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/utils.py +0 -0
  142. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/llms/__init__.py +0 -0
  143. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/llms/alita.py +0 -0
  144. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/llms/preloaded.py +0 -0
  145. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  146. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/application.py +0 -0
  147. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  148. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  149. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  150. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  151. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/tools.py +0 -0
  152. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  153. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/__init__.py +0 -0
  154. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/agent.py +0 -0
  155. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/application.py +0 -0
  156. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/artifact.py +0 -0
  157. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/datasource.py +0 -0
  158. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/echo.py +0 -0
  159. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/llm.py +0 -0
  160. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/loop.py +0 -0
  161. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/loop_output.py +0 -0
  162. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  163. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  164. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/prompt.py +0 -0
  165. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/router.py +0 -0
  166. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/tool.py +0 -0
  167. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/vectorstore.py +0 -0
  168. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  169. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/__init__.py +0 -0
  170. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/constants.py +0 -0
  171. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/evaluate.py +0 -0
  172. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/logging.py +0 -0
  173. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  174. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/streamlit.py +0 -0
  175. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/utils.py +0 -0
  176. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/__init__.py +0 -0
  177. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/__init__.py +0 -0
  178. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
  179. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  180. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/utils.py +0 -0
  181. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  182. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  183. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  184. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  185. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  186. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/base/__init__.py +0 -0
  187. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/base/tool.py +0 -0
  188. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
  189. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  190. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
  191. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/tools.py +0 -0
  192. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/crawler.py +0 -0
  193. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  194. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  195. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/utils.py +0 -0
  196. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/wiki.py +0 -0
  197. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  198. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  199. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  200. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  201. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  202. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  203. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/tools.py +0 -0
  204. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  205. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/utils.py +0 -0
  206. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/__init__.py +0 -0
  207. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  208. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  209. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  210. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  211. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  212. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  213. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  214. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  215. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  216. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  217. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  218. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  219. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  220. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  221. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  222. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  223. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  224. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  225. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/models.py +0 -0
  226. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  227. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  228. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  229. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  230. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  231. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/utils.py +0 -0
  232. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/__init__.py +0 -0
  233. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  234. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  235. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  236. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  237. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  238. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  239. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  240. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/__init__.py +0 -0
  241. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  242. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  243. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  244. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  245. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/loader.py +0 -0
  246. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/utils.py +0 -0
  247. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  248. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  249. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/elitea_base.py +0 -0
  250. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  251. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/api_wrapper.py +0 -0
  252. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/github_client.py +0 -0
  253. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  254. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/schemas.py +0 -0
  255. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/tool.py +0 -0
  256. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/tool_prompts.py +0 -0
  257. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
  258. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/tools.py +0 -0
  259. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/utils.py +0 -0
  260. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  261. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gmail/__init__.py +0 -0
  262. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  263. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gmail/utils.py +0 -0
  264. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  265. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  266. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  267. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/llm/__init__.py +0 -0
  268. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/llm/img_utils.py +0 -0
  269. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/llm/llm_utils.py +0 -0
  270. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/localgit/__init__.py +0 -0
  271. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/localgit/local_git.py +0 -0
  272. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/localgit/tool.py +0 -0
  273. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  274. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ocr/text_detection.py +0 -0
  275. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/openapi/__init__.py +0 -0
  276. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  277. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  278. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  279. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  280. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  281. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  282. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  283. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  284. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  285. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  286. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  287. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  288. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  289. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  290. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  291. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  292. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  293. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  294. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  295. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
  296. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/qtest/tool.py +0 -0
  297. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  298. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  299. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  300. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  301. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/salesforce/model.py +0 -0
  302. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  303. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  304. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
  305. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  306. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/utils.py +0 -0
  307. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  308. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sql/models.py +0 -0
  309. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  310. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
  311. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/utils/__init__.py +0 -0
  312. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/utils/content_parser.py +0 -0
  313. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  314. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/yagmail/__init__.py +0 -0
  315. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  316. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  317. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  318. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  319. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  320. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  321. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
  322. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/SOURCES.txt +0 -0
  323. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/dependency_links.txt +0 -0
  324. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/top_level.txt +0 -0
  325. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/setup.cfg +0 -0
  326. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/tests/test_ado_analysis.py +0 -0
  327. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/tests/test_github_analysis.py +0 -0
  328. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/tests/test_gitlab_analysis.py +0 -0
  329. {alita_sdk-0.3.145 → alita_sdk-0.3.147}/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.145
3
+ Version: 0.3.147
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>
6
6
  License-Expression: Apache-2.0
@@ -62,7 +62,7 @@ Requires-Dist: rlpycairo==0.3.0; extra == "runtime"
62
62
  Requires-Dist: cairocffi==1.7.1; extra == "runtime"
63
63
  Requires-Dist: docx2txt==0.8; extra == "runtime"
64
64
  Requires-Dist: mammoth==1.9.0; extra == "runtime"
65
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.25.0; extra == "runtime"
65
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == "runtime"
66
66
  Requires-Dist: sentence-transformers==2.7.0; extra == "runtime"
67
67
  Provides-Extra: tools
68
68
  Requires-Dist: dulwich==0.21.6; extra == "tools"
@@ -152,23 +152,28 @@ Before you begin, ensure you have the following requirements met:
152
152
  Installation
153
153
  ------------
154
154
 
155
- First, you need to install the Langchain library. Alita SDK depends on Langchain for its core functionalities. You can install Langchain using pip:
155
+ It is recommended to use a Python virtual environment to avoid dependency conflicts and keep your environment isolated.
156
156
 
157
+ ### 1. Create and activate a virtual environment
158
+
159
+ For **Unix/macOS**:
157
160
  ```bash
158
- pip install langchain
161
+ python3 -m venv .venv
162
+ source .venv/bin/activate
159
163
  ```
160
164
 
161
- Next, clone the Alita SDK repository (assuming it's available on GitHub or another source):
162
-
163
- ```bash
164
- git clone https://github.com/ProjectAlita/alita-sdk.git
165
- cd alita-sdk
165
+ For **Windows**:
166
+ ```bat
167
+ python -m venv .venv
168
+ venv\Scripts\activate
166
169
  ```
167
170
 
168
- Install the SDK along with its dependencies:
171
+ ### 2. Install dependencies
172
+
173
+ Install all required dependencies for the SDK and toolkits:
169
174
 
170
175
  ```bash
171
- pip install -r requirements.txt
176
+ pip install -r req_bkup/requirements-all.txt
172
177
  ```
173
178
 
174
179
  Environment Setup
@@ -180,10 +185,12 @@ Before running your Alita agents, set up your environment variables. Create a `.
180
185
  DEPLOYMENT_URL=<your_deployment_url>
181
186
  API_KEY=<your_api_key>
182
187
  PROJECT_ID=<your_project_id>
183
- INTEGRATION_UID=<your_integration_uid>
184
- MODEL_NAME=<your_model_name>
185
188
  ```
186
189
 
190
+ NOTE: these variables can be grabbed from your Elitea platform configuration page.
191
+ ![Platform configuration](docs/readme_imgs/platform_config.png "Platform configuration")
192
+
193
+
187
194
 
188
195
  Using SDK with Streamlit for Local Development
189
196
  ----------------------------------------------
@@ -200,8 +207,12 @@ To use the SDK with Streamlit for local development, follow these steps:
200
207
  streamlit run alita_local.py
201
208
  ```
202
209
 
203
- Note: If **streamlite** throws an error related to **pytorch**, add this `--server.fileWatcherType none` extra arguments.
204
- Sometimes it try to index **pytorch** modules and since they are **C** modules it raises an exception.
210
+ Note: If **streamlit** throws an error related to **pytorch**, add this `--server.fileWatcherType none` extra arguments.
211
+ Sometimes it tries to index **pytorch** modules, and since they are **C** modules it raises an exception.
212
+
213
+ Example of launch configuration for Streamlit:
214
+ Important: Make sure to set the correct path to your `.env` file and streamlit.
215
+ ![Launch configuration example](docs/readme_imgs/launch_config.png "Launch configuration")
205
216
 
206
217
  Streamlit Web Application
207
218
  ------------------------
@@ -227,7 +238,7 @@ The Alita SDK includes a Streamlit web application that provides a user-friendly
227
238
  - After authentication, you'll see a list of available agents
228
239
  - Select an agent from the dropdown menu
229
240
  - Specify a version name (default: 'latest')
230
- - Optionally select an agent type and add custom tools
241
+ - Optionally, select an agent type and add custom tools
231
242
  - Click "Load Agent" to initialize the agent
232
243
 
233
244
  3. **Interacting with the Agent**:
@@ -241,23 +252,200 @@ The Alita SDK includes a Streamlit web application that provides a user-friendly
241
252
 
242
253
  This web application simplifies the process of testing and interacting with your Alita agents, making development and debugging more efficient.
243
254
 
244
- Adding Alita-Tools to PYTHONPATH
245
- --------------------------------
255
+ Using Elitea toolkits and tools with Streamlit for Local Development
256
+ ----------------------------------------------
246
257
 
247
- If you have another repository containing Alita tools, you can add it to your PYTHONPATH to make the tools available to your project. For example:
258
+ Actually, toolkits are part of the Alita SDK (`alita-sdk/tools`), so you can use them in your local development environment as well.
259
+ To debug it, you can use the `alita_local.py` file, which is a Streamlit application that allows you
260
+ to interact with your agents and toolkits by setting the breakpoints in the code of corresponding tool.
248
261
 
249
- 1. Clone the repository containing the Alita tools:
250
- ```bash
251
- git clone https://github.com/yourusername/alita-tools.git
252
- ```
262
+ # Example of agent's debugging with Streamlit:
263
+ Assume we try to debug the user's agent called `Questionnaire` with the `Confluence` toolkit and `get_pages_with_label` method.
264
+ Pre-requisites:
265
+ - Make sure you have set correct variables in your `.env` file
266
+ - Set the breakpoints in the `alita_sdk/tools/confluence/api_wrapper.py` file, in the `get_pages_with_label` method
253
267
 
254
- 2. Add the repository to your PYTHONPATH:
268
+ 1. Run the Streamlit app (using debug):
255
269
  ```bash
256
- export PYTHONPATH=$PYTHONPATH:/path/to/alita-tools
270
+ streamlit run alita_local.py
257
271
  ```
272
+ 2. Login into the application with your credentials (populated from .env file)
273
+ - Enter your deployment URL, API key, and project ID (optionally)
274
+ - Click "Login" to authenticate with the Alita Platform
258
275
 
259
- 3. Verify that the tools are accessible in your project:
260
- ```python
261
- import sys
262
- print(sys.path)
263
- ```
276
+ ![login](docs/readme_imgs/login.png "login")
277
+ 3. Select `Questionnaire` agent
278
+
279
+ ![agent_selection](docs/readme_imgs/agent_selection.png "agent_selection")
280
+ 4. Query the agent with the required prompt:
281
+ ```
282
+ get pages with label `ai-mb`
283
+ ```
284
+ 5. Debug the agent's code:
285
+ - The Streamlit app will call the `get_pages_with_label` method of the `Confluence` toolkit
286
+ - The execution will stop at the breakpoint you set in the `alita_sdk/tools/confluence/api_wrapper.py` file
287
+ - You can inspect variables, step through the code, and analyze the flow of execution
288
+ ![debugging](docs/readme_imgs/debugging.png "debugging")
289
+
290
+
291
+ How to create a new toolkit
292
+ ----------------------------------------------
293
+ The toolkit is a collection of pre-built tools and functionalities designed to simplify the development of AI agents. These toolkits provide developers with the necessary resources, such as APIs, data connectors to required services and systems.
294
+ As an initial step, you have to decide on its capabilities to design required tools and its args schema.
295
+ Example of the Testrail toolkit's capabilities:
296
+ - `get_test_cases`: Retrieve test cases from Testrail
297
+ - `get_test_runs`: Retrieve test runs from Testrail
298
+ - `get_test_plans`: Retrieve test plans from Testrail
299
+ - `create_test_case`: Create a new test case in Testrail
300
+ - etc.
301
+
302
+ ### General Steps to Create a Toolkit
303
+ ### 1. Create the Toolkit package
304
+ Create a new package under `alita_sdk/tools/` for your toolkit, e.g., `alita_sdk/tools/mytoolkit/`.
305
+
306
+ ### 2. Implement the API Wrapper
307
+ Create an `api_wrapper.py` file in your toolkit directory. This file should:
308
+ - Define a config class (subclassing `BaseToolApiWrapper`).
309
+ - Implement methods for each tool/action you want to implement.
310
+ - Provide a `get_available_tools()` method that returns tools' metadata and argument schemas.
311
+
312
+ Note:
313
+ - args schema should be defined using Pydantic models, which will help in validating the input parameters for each tool.
314
+ - make sure tools descriptions are clear and concise, as they will be used by LLM to define on tool's execution chain.
315
+ - clearly define the input parameters for each tool, as they will be used by LLM to generate the correct input for the tool and whether it is required or optional (refer to https://docs.pydantic.dev/2.2/migration/#required-optional-and-nullable-fields if needed).
316
+
317
+ **Example:**
318
+ ```python
319
+ # alita_sdk/tools/mytoolkit/api_wrapper.py
320
+ from ...elitea_base import BaseToolApiWrapper
321
+ from pydantic import create_model, Field
322
+
323
+
324
+ class MyToolkitConfig(BaseToolApiWrapper):
325
+
326
+
327
+ # Define config fields (e.g., API keys, endpoints)
328
+ api_key: str
329
+
330
+
331
+ def do_something(self, param1: str):
332
+
333
+
334
+ """Perform an action with param1."""
335
+ # Implement your logic here
336
+ return {"result": f"Did something with {param1}"}
337
+
338
+
339
+ def get_available_tools(self):
340
+
341
+
342
+ return [
343
+ {
344
+ "name": "do_something",
345
+ "ref": self.do_something,
346
+ "description": self.do_something.__doc__,
347
+ "args_schema": create_model(
348
+ "DoSomethingModel",
349
+ param1=(str, Field(description="Parameter 1"))
350
+ ),
351
+ }
352
+ ]
353
+ ```
354
+
355
+ ### 3. Implement the Toolkit Configuration Class
356
+ Create an `__init__.py` file in your toolkit directory. This file should:
357
+ - Define a `toolkit_config_schema()` static method for toolkit's configuration (this data is used for toolkit configuration card rendering on UI).
358
+ - Implement a `get_tools(tool)` method to grab toolkit's configuration parameters based on the configuration on UI.
359
+ - Implement a `get_toolkit()` class method to instantiate tools.
360
+ - Return a list of tool instances via `get_tools()`.
361
+ **Example:**
362
+ ```python
363
+ # alita_sdk/tools/mytoolkit/__init__.py
364
+ from pydantic import BaseModel, Field, create_model
365
+ from langchain_core.tools import BaseToolkit, BaseTool
366
+ from .api_wrapper import MyToolkitConfig
367
+ from ...base.tool import BaseAction
368
+
369
+ name = "mytoolkit"
370
+
371
+ def get_tools(tool):
372
+ return MyToolkit().get_toolkit(
373
+ selected_tools=tool['settings'].get('selected_tools', []),
374
+ url=tool['settings']['url'],
375
+ password=tool['settings'].get('password', None),
376
+ email=tool['settings'].get('email', None),
377
+ toolkit_name=tool.get('toolkit_name')
378
+ ).get_tools()
379
+
380
+ class MyToolkit(BaseToolkit):
381
+
382
+
383
+ tools: list[BaseTool] = []
384
+
385
+
386
+ @staticmethod
387
+ def toolkit_config_schema() -> BaseModel:
388
+
389
+
390
+ return create_model(
391
+ name,
392
+ url=(str, Field(title="Base URL", description="Base URL for the API")),
393
+ email=(str, Field(title="Email", description="Email for authentication", default=None)),
394
+ password=(str, Field(title="Password", description="Password for authentication", default=None)),
395
+ selected_tools=(list[str], Field(title="Selected Tools", description="List of tools to enable", default=[])),
396
+ )
397
+
398
+
399
+ @classmethod
400
+ def get_toolkit(cls, selected_tools=None, toolkit_name=None, **kwargs):
401
+ config = MyToolkitConfig(**kwargs)
402
+
403
+
404
+ available_tools = config.get_available_tools()
405
+ tools = []
406
+ for tool in available_tools:
407
+ if selected_tools and tool["name"] not in selected_tools:
408
+ continue
409
+ tools.append(BaseAction(
410
+ api_wrapper=config,
411
+ name=tool["name"],
412
+ description=tool["description"],
413
+ args_schema=tool["args_schema"]
414
+ ))
415
+ return cls(tools=tools)
416
+
417
+
418
+ def get_tools(self) -> list[BaseTool]:
419
+
420
+
421
+ return self.tools
422
+ ```
423
+
424
+ ### 4. Add the Toolkit to the SDK
425
+ Update the `__init__.py` file in the `alita_sdk/tools/` directory to include your new toolkit:
426
+
427
+ ```python
428
+ # alita_sdk/tools/__init__.py
429
+
430
+ def get_tools(tools_list, alita: 'AlitaClient', llm: 'LLMLikeObject', *args, **kwargs):
431
+ ...
432
+ # add your toolkit here with proper type
433
+ elif tool['type'] == 'mytoolkittype':
434
+ tools.extend(get_mytoolkit(tool))
435
+
436
+ # add toolkit's config schema
437
+ def get_toolkits():
438
+ return [
439
+ ...,
440
+ MyToolkit.toolkit_config_schema(),
441
+ ]
442
+ ```
443
+
444
+ ### 5. Test Your Toolkit
445
+ To test your toolkit, you can use the Streamlit application (`alita_local.py`) to load and interact with your toolkit.
446
+ - Login to the platform
447
+ - Select `Toolkit testing` tab
448
+ - Choose your toolkit from the dropdown menu.
449
+ - Adjust the configuration parameters as needed, and then test the tools by sending queries to them.
450
+
451
+ ![custom_toolkit_config](docs/readme_imgs/custom_toolkit_config.png "custom_toolkit_config")
@@ -0,0 +1,314 @@
1
+ Alita SDK
2
+ =========
3
+
4
+ Alita SDK, built on top of Langchain, enables the creation of intelligent agents within the Alita Platform using project-specific prompts and data sources. This SDK is designed for developers looking to integrate advanced AI capabilities into their projects with ease.
5
+
6
+ Prerequisites
7
+ -------------
8
+
9
+ Before you begin, ensure you have the following requirements met:
10
+
11
+ * Python 3.10+
12
+ * An active deployment of Project Alita
13
+ * Access to personal project
14
+
15
+ Installation
16
+ ------------
17
+
18
+ It is recommended to use a Python virtual environment to avoid dependency conflicts and keep your environment isolated.
19
+
20
+ ### 1. Create and activate a virtual environment
21
+
22
+ For **Unix/macOS**:
23
+ ```bash
24
+ python3 -m venv .venv
25
+ source .venv/bin/activate
26
+ ```
27
+
28
+ For **Windows**:
29
+ ```bat
30
+ python -m venv .venv
31
+ venv\Scripts\activate
32
+ ```
33
+
34
+ ### 2. Install dependencies
35
+
36
+ Install all required dependencies for the SDK and toolkits:
37
+
38
+ ```bash
39
+ pip install -r req_bkup/requirements-all.txt
40
+ ```
41
+
42
+ Environment Setup
43
+ -----------------
44
+
45
+ Before running your Alita agents, set up your environment variables. Create a `.env` file in the root directory of your project and include your Project Alita credentials:
46
+
47
+ ```.env
48
+ DEPLOYMENT_URL=<your_deployment_url>
49
+ API_KEY=<your_api_key>
50
+ PROJECT_ID=<your_project_id>
51
+ ```
52
+
53
+ NOTE: these variables can be grabbed from your Elitea platform configuration page.
54
+ ![Platform configuration](docs/readme_imgs/platform_config.png "Platform configuration")
55
+
56
+
57
+
58
+ Using SDK with Streamlit for Local Development
59
+ ----------------------------------------------
60
+
61
+ To use the SDK with Streamlit for local development, follow these steps:
62
+
63
+ 1. Ensure you have Streamlit installed:
64
+ ```bash
65
+ pip install streamlit
66
+ ```
67
+
68
+ 2. Run the Streamlit app:
69
+ ```bash
70
+ streamlit run alita_local.py
71
+ ```
72
+
73
+ Note: If **streamlit** throws an error related to **pytorch**, add this `--server.fileWatcherType none` extra arguments.
74
+ Sometimes it tries to index **pytorch** modules, and since they are **C** modules it raises an exception.
75
+
76
+ Example of launch configuration for Streamlit:
77
+ Important: Make sure to set the correct path to your `.env` file and streamlit.
78
+ ![Launch configuration example](docs/readme_imgs/launch_config.png "Launch configuration")
79
+
80
+ Streamlit Web Application
81
+ ------------------------
82
+
83
+ The Alita SDK includes a Streamlit web application that provides a user-friendly interface for interacting with Alita agents. This application is powered by the `streamlit.py` module included in the SDK.
84
+
85
+ ### Key Features
86
+
87
+ - **Agent Management**: Load and interact with agents created in the Alita Platform
88
+ - **Authentication**: Easily connect to your Alita/Elitea deployment using your credentials
89
+ - **Chat Interface**: User-friendly chat interface for communicating with your agents
90
+ - **Toolkit Integration**: Add and configure toolkits for your agents
91
+ - **Session Management**: Maintain conversation history and thread state
92
+
93
+ ### Using the Web Application
94
+
95
+ 1. **Authentication**:
96
+ - Navigate to the "Alita Settings" tab in the sidebar
97
+ - Enter your deployment URL, API key, and project ID
98
+ - Click "Login" to authenticate with the Alita Platform
99
+
100
+ 2. **Loading an Agent**:
101
+ - After authentication, you'll see a list of available agents
102
+ - Select an agent from the dropdown menu
103
+ - Specify a version name (default: 'latest')
104
+ - Optionally, select an agent type and add custom tools
105
+ - Click "Load Agent" to initialize the agent
106
+
107
+ 3. **Interacting with the Agent**:
108
+ - Use the chat input at the bottom of the screen to send messages to the agent
109
+ - The agent's responses will appear in the chat window
110
+ - Your conversation history is maintained until you clear it
111
+
112
+ 4. **Clearing Data**:
113
+ - Use the "Clear Chat" button to reset the conversation history
114
+ - Use the "Clear Config" button to reset toolkit configurations
115
+
116
+ This web application simplifies the process of testing and interacting with your Alita agents, making development and debugging more efficient.
117
+
118
+ Using Elitea toolkits and tools with Streamlit for Local Development
119
+ ----------------------------------------------
120
+
121
+ Actually, toolkits are part of the Alita SDK (`alita-sdk/tools`), so you can use them in your local development environment as well.
122
+ To debug it, you can use the `alita_local.py` file, which is a Streamlit application that allows you
123
+ to interact with your agents and toolkits by setting the breakpoints in the code of corresponding tool.
124
+
125
+ # Example of agent's debugging with Streamlit:
126
+ Assume we try to debug the user's agent called `Questionnaire` with the `Confluence` toolkit and `get_pages_with_label` method.
127
+ Pre-requisites:
128
+ - Make sure you have set correct variables in your `.env` file
129
+ - Set the breakpoints in the `alita_sdk/tools/confluence/api_wrapper.py` file, in the `get_pages_with_label` method
130
+
131
+ 1. Run the Streamlit app (using debug):
132
+ ```bash
133
+ streamlit run alita_local.py
134
+ ```
135
+ 2. Login into the application with your credentials (populated from .env file)
136
+ - Enter your deployment URL, API key, and project ID (optionally)
137
+ - Click "Login" to authenticate with the Alita Platform
138
+
139
+ ![login](docs/readme_imgs/login.png "login")
140
+ 3. Select `Questionnaire` agent
141
+
142
+ ![agent_selection](docs/readme_imgs/agent_selection.png "agent_selection")
143
+ 4. Query the agent with the required prompt:
144
+ ```
145
+ get pages with label `ai-mb`
146
+ ```
147
+ 5. Debug the agent's code:
148
+ - The Streamlit app will call the `get_pages_with_label` method of the `Confluence` toolkit
149
+ - The execution will stop at the breakpoint you set in the `alita_sdk/tools/confluence/api_wrapper.py` file
150
+ - You can inspect variables, step through the code, and analyze the flow of execution
151
+ ![debugging](docs/readme_imgs/debugging.png "debugging")
152
+
153
+
154
+ How to create a new toolkit
155
+ ----------------------------------------------
156
+ The toolkit is a collection of pre-built tools and functionalities designed to simplify the development of AI agents. These toolkits provide developers with the necessary resources, such as APIs, data connectors to required services and systems.
157
+ As an initial step, you have to decide on its capabilities to design required tools and its args schema.
158
+ Example of the Testrail toolkit's capabilities:
159
+ - `get_test_cases`: Retrieve test cases from Testrail
160
+ - `get_test_runs`: Retrieve test runs from Testrail
161
+ - `get_test_plans`: Retrieve test plans from Testrail
162
+ - `create_test_case`: Create a new test case in Testrail
163
+ - etc.
164
+
165
+ ### General Steps to Create a Toolkit
166
+ ### 1. Create the Toolkit package
167
+ Create a new package under `alita_sdk/tools/` for your toolkit, e.g., `alita_sdk/tools/mytoolkit/`.
168
+
169
+ ### 2. Implement the API Wrapper
170
+ Create an `api_wrapper.py` file in your toolkit directory. This file should:
171
+ - Define a config class (subclassing `BaseToolApiWrapper`).
172
+ - Implement methods for each tool/action you want to implement.
173
+ - Provide a `get_available_tools()` method that returns tools' metadata and argument schemas.
174
+
175
+ Note:
176
+ - args schema should be defined using Pydantic models, which will help in validating the input parameters for each tool.
177
+ - make sure tools descriptions are clear and concise, as they will be used by LLM to define on tool's execution chain.
178
+ - clearly define the input parameters for each tool, as they will be used by LLM to generate the correct input for the tool and whether it is required or optional (refer to https://docs.pydantic.dev/2.2/migration/#required-optional-and-nullable-fields if needed).
179
+
180
+ **Example:**
181
+ ```python
182
+ # alita_sdk/tools/mytoolkit/api_wrapper.py
183
+ from ...elitea_base import BaseToolApiWrapper
184
+ from pydantic import create_model, Field
185
+
186
+
187
+ class MyToolkitConfig(BaseToolApiWrapper):
188
+
189
+
190
+ # Define config fields (e.g., API keys, endpoints)
191
+ api_key: str
192
+
193
+
194
+ def do_something(self, param1: str):
195
+
196
+
197
+ """Perform an action with param1."""
198
+ # Implement your logic here
199
+ return {"result": f"Did something with {param1}"}
200
+
201
+
202
+ def get_available_tools(self):
203
+
204
+
205
+ return [
206
+ {
207
+ "name": "do_something",
208
+ "ref": self.do_something,
209
+ "description": self.do_something.__doc__,
210
+ "args_schema": create_model(
211
+ "DoSomethingModel",
212
+ param1=(str, Field(description="Parameter 1"))
213
+ ),
214
+ }
215
+ ]
216
+ ```
217
+
218
+ ### 3. Implement the Toolkit Configuration Class
219
+ Create an `__init__.py` file in your toolkit directory. This file should:
220
+ - Define a `toolkit_config_schema()` static method for toolkit's configuration (this data is used for toolkit configuration card rendering on UI).
221
+ - Implement a `get_tools(tool)` method to grab toolkit's configuration parameters based on the configuration on UI.
222
+ - Implement a `get_toolkit()` class method to instantiate tools.
223
+ - Return a list of tool instances via `get_tools()`.
224
+ **Example:**
225
+ ```python
226
+ # alita_sdk/tools/mytoolkit/__init__.py
227
+ from pydantic import BaseModel, Field, create_model
228
+ from langchain_core.tools import BaseToolkit, BaseTool
229
+ from .api_wrapper import MyToolkitConfig
230
+ from ...base.tool import BaseAction
231
+
232
+ name = "mytoolkit"
233
+
234
+ def get_tools(tool):
235
+ return MyToolkit().get_toolkit(
236
+ selected_tools=tool['settings'].get('selected_tools', []),
237
+ url=tool['settings']['url'],
238
+ password=tool['settings'].get('password', None),
239
+ email=tool['settings'].get('email', None),
240
+ toolkit_name=tool.get('toolkit_name')
241
+ ).get_tools()
242
+
243
+ class MyToolkit(BaseToolkit):
244
+
245
+
246
+ tools: list[BaseTool] = []
247
+
248
+
249
+ @staticmethod
250
+ def toolkit_config_schema() -> BaseModel:
251
+
252
+
253
+ return create_model(
254
+ name,
255
+ url=(str, Field(title="Base URL", description="Base URL for the API")),
256
+ email=(str, Field(title="Email", description="Email for authentication", default=None)),
257
+ password=(str, Field(title="Password", description="Password for authentication", default=None)),
258
+ selected_tools=(list[str], Field(title="Selected Tools", description="List of tools to enable", default=[])),
259
+ )
260
+
261
+
262
+ @classmethod
263
+ def get_toolkit(cls, selected_tools=None, toolkit_name=None, **kwargs):
264
+ config = MyToolkitConfig(**kwargs)
265
+
266
+
267
+ available_tools = config.get_available_tools()
268
+ tools = []
269
+ for tool in available_tools:
270
+ if selected_tools and tool["name"] not in selected_tools:
271
+ continue
272
+ tools.append(BaseAction(
273
+ api_wrapper=config,
274
+ name=tool["name"],
275
+ description=tool["description"],
276
+ args_schema=tool["args_schema"]
277
+ ))
278
+ return cls(tools=tools)
279
+
280
+
281
+ def get_tools(self) -> list[BaseTool]:
282
+
283
+
284
+ return self.tools
285
+ ```
286
+
287
+ ### 4. Add the Toolkit to the SDK
288
+ Update the `__init__.py` file in the `alita_sdk/tools/` directory to include your new toolkit:
289
+
290
+ ```python
291
+ # alita_sdk/tools/__init__.py
292
+
293
+ def get_tools(tools_list, alita: 'AlitaClient', llm: 'LLMLikeObject', *args, **kwargs):
294
+ ...
295
+ # add your toolkit here with proper type
296
+ elif tool['type'] == 'mytoolkittype':
297
+ tools.extend(get_mytoolkit(tool))
298
+
299
+ # add toolkit's config schema
300
+ def get_toolkits():
301
+ return [
302
+ ...,
303
+ MyToolkit.toolkit_config_schema(),
304
+ ]
305
+ ```
306
+
307
+ ### 5. Test Your Toolkit
308
+ To test your toolkit, you can use the Streamlit application (`alita_local.py`) to load and interact with your toolkit.
309
+ - Login to the platform
310
+ - Select `Toolkit testing` tab
311
+ - Choose your toolkit from the dropdown menu.
312
+ - Adjust the configuration parameters as needed, and then test the tools by sending queries to them.
313
+
314
+ ![custom_toolkit_config](docs/readme_imgs/custom_toolkit_config.png "custom_toolkit_config")
@@ -7,8 +7,6 @@ from langchain_core.runnables import RunnableConfig
7
7
  from langchain_core.tools import BaseTool
8
8
  from typing import Any, Optional, Union, Annotated
9
9
  from langchain_core.utils.function_calling import convert_to_openai_tool
10
- from langgraph.prebuilt import InjectedStore
11
- from langgraph.store.base import BaseStore
12
10
  from pydantic import ValidationError
13
11
  from ..langchain.utils import propagate_the_input_mapping
14
12
 
@@ -4,7 +4,7 @@ from traceback import format_exc
4
4
 
5
5
  from langchain_core.callbacks import dispatch_custom_event
6
6
  from langchain_core.runnables import RunnableConfig
7
- from langchain_core.tools import BaseTool
7
+ from langchain_core.tools import BaseTool, ToolException
8
8
  from typing import Any, Optional, Union
9
9
  from langchain_core.messages import ToolCall
10
10
  from langchain_core.utils.function_calling import convert_to_openai_tool
@@ -72,6 +72,8 @@ class IndexerNode(BaseTool):
72
72
  logger.error(f"Chunking error: {format_exc()}")
73
73
  return {"messages": [{"role": "assistant", "content": f"""Chunking tool {self.chunking_tool} raised an error.\n\nError: {format_exc()}"""}]}
74
74
  index_results = self.index_tool.invoke({"documents": chunks if chunks else result}, config=config, kwargs=kwargs)
75
+ if isinstance(index_results, ToolException):
76
+ raise index_results
75
77
  logger.info(f"IndexNode response: {index_results}")
76
78
  total_time = round((time() - start_time), 2)
77
79
  index_results['total_time'] = total_time
@@ -84,7 +86,7 @@ class IndexerNode(BaseTool):
84
86
  return {
85
87
  "messages": [{"role": "assistant", "content": f"""Tool input to the {self.tool.name} with value {result} raised ValidationError.
86
88
  \n\nTool schema is {dumps(params)} \n\nand the input to LLM was
87
- {func_args}"""}]}
89
+ {func_args}\n{e}"""}]}
88
90
 
89
91
  def _run(self, *args, **kwargs):
90
92
  return self.invoke(**kwargs)
@@ -72,7 +72,9 @@ class AzureDevOpsReposToolkit(BaseToolkit):
72
72
  }
73
73
  ]
74
74
  }
75
- }
75
+ },
76
+ "categories": ["code repositories"],
77
+ "extra_categories": ["code", "repository", "version control"]
76
78
  }}}
77
79
  )
78
80
 
@@ -31,6 +31,8 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
31
31
  {
32
32
  "label": "ADO plans",
33
33
  "icon_url": "ado-plans.svg",
34
+ "categories": ["test management"],
35
+ "extra_categories": ["test case management", "qa"],
34
36
  "sections": {
35
37
  "auth": {
36
38
  "required": True,