alita-sdk 0.3.204__tar.gz → 0.3.206__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 (325) hide show
  1. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/PKG-INFO +3 -1
  2. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/clients/client.py +45 -5
  3. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/assistant.py +22 -21
  4. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +1 -4
  5. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/application.py +5 -10
  6. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/tools.py +0 -1
  7. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/vectorstore.py +157 -13
  8. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/streamlit.py +33 -30
  9. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/utils.py +5 -0
  10. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/__init__.py +4 -0
  11. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/repos/repos_wrapper.py +20 -13
  12. alita_sdk-0.3.206/alita_sdk/tools/aws/__init__.py +7 -0
  13. alita_sdk-0.3.206/alita_sdk/tools/aws/delta_lake/__init__.py +136 -0
  14. alita_sdk-0.3.206/alita_sdk/tools/aws/delta_lake/api_wrapper.py +220 -0
  15. alita_sdk-0.3.206/alita_sdk/tools/aws/delta_lake/schemas.py +20 -0
  16. alita_sdk-0.3.206/alita_sdk/tools/aws/delta_lake/tool.py +35 -0
  17. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/bitbucket/api_wrapper.py +5 -5
  18. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +54 -29
  19. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/elitea_base.py +55 -5
  20. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/gitlab/__init__.py +22 -10
  21. alita_sdk-0.3.206/alita_sdk/tools/gitlab/api_wrapper.py +501 -0
  22. alita_sdk-0.3.206/alita_sdk/tools/gitlab/tools.py +354 -0
  23. alita_sdk-0.3.206/alita_sdk/tools/google/__init__.py +7 -0
  24. alita_sdk-0.3.206/alita_sdk/tools/google/bigquery/__init__.py +154 -0
  25. alita_sdk-0.3.206/alita_sdk/tools/google/bigquery/api_wrapper.py +502 -0
  26. alita_sdk-0.3.206/alita_sdk/tools/google/bigquery/schemas.py +102 -0
  27. alita_sdk-0.3.206/alita_sdk/tools/google/bigquery/tool.py +34 -0
  28. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/llm/llm_utils.py +0 -6
  29. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/openapi/__init__.py +14 -3
  30. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/sharepoint/__init__.py +2 -1
  31. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/sharepoint/api_wrapper.py +71 -7
  32. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/testrail/__init__.py +9 -1
  33. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/testrail/api_wrapper.py +154 -5
  34. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/utils/content_parser.py +77 -13
  35. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_scale/api_wrapper.py +271 -22
  36. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk.egg-info/PKG-INFO +3 -1
  37. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk.egg-info/SOURCES.txt +10 -1
  38. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk.egg-info/requires.txt +2 -0
  39. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/pyproject.toml +2 -2
  40. alita_sdk-0.3.204/alita_sdk/runtime/llms/alita.py +0 -259
  41. alita_sdk-0.3.204/alita_sdk/tools/gitlab/api_wrapper.py +0 -476
  42. alita_sdk-0.3.204/alita_sdk/tools/gitlab/tools.py +0 -376
  43. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/LICENSE +0 -0
  44. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/README.md +0 -0
  45. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/__init__.py +0 -0
  46. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/__init__.py +0 -0
  47. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/__init__.py +0 -0
  48. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/ado_analyse/__init__.py +0 -0
  49. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/ado_analyse/api_wrapper.py +0 -0
  50. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/github_analyse/__init__.py +0 -0
  51. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/github_analyse/api_wrapper.py +0 -0
  52. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/gitlab_analyse/__init__.py +0 -0
  53. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/gitlab_analyse/api_wrapper.py +0 -0
  54. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
  55. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
  56. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/community/utils.py +0 -0
  57. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/__init__.py +0 -0
  58. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/clients/__init__.py +0 -0
  59. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/clients/artifact.py +0 -0
  60. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/clients/datasource.py +0 -0
  61. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/clients/prompt.py +0 -0
  62. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/__init__.py +0 -0
  63. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
  64. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
  65. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
  66. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/constants.py +0 -0
  67. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  68. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  69. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  70. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  71. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  72. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  73. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  74. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
  75. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  76. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  77. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
  78. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
  79. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
  80. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
  81. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/indexer.py +0 -0
  82. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
  83. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
  84. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
  85. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
  86. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
  87. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
  88. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
  89. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
  90. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
  91. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
  92. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/store_manager.py +0 -0
  93. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
  94. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
  95. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  96. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  97. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
  98. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
  99. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/git.py +0 -0
  100. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/log.py +0 -0
  101. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
  102. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/state.py +0 -0
  103. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
  104. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
  105. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/langchain/utils.py +0 -0
  106. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/llms/__init__.py +0 -0
  107. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/llms/preloaded.py +0 -0
  108. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/__init__.py +0 -0
  109. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/artifact.py +0 -0
  110. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/datasource.py +0 -0
  111. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/prompt.py +0 -0
  112. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
  113. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
  114. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/__init__.py +0 -0
  115. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/agent.py +0 -0
  116. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/application.py +0 -0
  117. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/artifact.py +0 -0
  118. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/datasource.py +0 -0
  119. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/echo.py +0 -0
  120. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/function.py +0 -0
  121. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
  122. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/llm.py +0 -0
  123. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/loop.py +0 -0
  124. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/loop_output.py +0 -0
  125. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
  126. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
  127. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/prompt.py +0 -0
  128. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/router.py +0 -0
  129. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/tools/tool.py +0 -0
  130. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
  131. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/__init__.py +0 -0
  132. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/constants.py +0 -0
  133. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/evaluate.py +0 -0
  134. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/logging.py +0 -0
  135. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
  136. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/__init__.py +0 -0
  137. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/repos/__init__.py +0 -0
  138. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
  139. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
  140. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/utils.py +0 -0
  141. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
  142. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
  143. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
  144. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
  145. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
  146. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
  147. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/azure_ai/__init__.py +0 -0
  148. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
  149. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
  150. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/base/__init__.py +0 -0
  151. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/base/tool.py +0 -0
  152. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/bitbucket/__init__.py +0 -0
  153. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
  154. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/bitbucket/tools.py +0 -0
  155. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/browser/__init__.py +0 -0
  156. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/browser/crawler.py +0 -0
  157. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
  158. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/browser/google_search_rag.py +0 -0
  159. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/browser/utils.py +0 -0
  160. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/browser/wiki.py +0 -0
  161. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/__init__.py +0 -0
  162. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
  163. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
  164. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
  165. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
  166. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
  167. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
  168. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
  169. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
  170. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
  171. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
  172. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
  173. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/tools.py +0 -0
  174. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
  175. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
  176. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/carrier/utils.py +0 -0
  177. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/__init__.py +0 -0
  178. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
  179. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
  180. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/constants.py +0 -0
  181. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
  182. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
  183. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
  184. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
  185. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
  186. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
  187. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
  188. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
  189. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
  190. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
  191. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
  192. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
  193. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
  194. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
  195. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
  196. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/models.py +0 -0
  197. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
  198. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
  199. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
  200. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
  201. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
  202. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/chunkers/utils.py +0 -0
  203. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/__init__.py +0 -0
  204. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
  205. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
  206. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
  207. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
  208. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
  209. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
  210. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
  211. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
  212. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/code/__init__.py +0 -0
  213. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/code/linter/__init__.py +0 -0
  214. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
  215. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
  216. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/code/sonar/__init__.py +0 -0
  217. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
  218. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/confluence/__init__.py +0 -0
  219. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
  220. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/confluence/loader.py +0 -0
  221. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/confluence/utils.py +0 -0
  222. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
  223. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
  224. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/elastic/__init__.py +0 -0
  225. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
  226. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/figma/__init__.py +0 -0
  227. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/figma/api_wrapper.py +0 -0
  228. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/github/__init__.py +0 -0
  229. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/github/api_wrapper.py +0 -0
  230. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/github/github_client.py +0 -0
  231. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
  232. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/github/schemas.py +0 -0
  233. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/github/tool.py +0 -0
  234. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/github/tool_prompts.py +0 -0
  235. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/gitlab/utils.py +0 -0
  236. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
  237. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
  238. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/gmail/__init__.py +0 -0
  239. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
  240. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/gmail/utils.py +0 -0
  241. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/google_places/__init__.py +0 -0
  242. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
  243. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/jira/__init__.py +0 -0
  244. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/jira/api_wrapper.py +0 -0
  245. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/keycloak/__init__.py +0 -0
  246. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
  247. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/llm/__init__.py +0 -0
  248. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/llm/img_utils.py +0 -0
  249. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/localgit/__init__.py +0 -0
  250. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/localgit/local_git.py +0 -0
  251. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/localgit/tool.py +0 -0
  252. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/memory/__init__.py +0 -0
  253. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ocr/__init__.py +0 -0
  254. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
  255. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/ocr/text_detection.py +0 -0
  256. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/__init__.py +0 -0
  257. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
  258. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
  259. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
  260. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
  261. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
  262. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
  263. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
  264. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
  265. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
  266. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
  267. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
  268. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
  269. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
  270. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
  271. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
  272. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
  273. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
  274. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
  275. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/postman/__init__.py +0 -0
  276. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/postman/api_wrapper.py +0 -0
  277. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/postman/postman_analysis.py +0 -0
  278. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pptx/__init__.py +0 -0
  279. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
  280. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/qtest/__init__.py +0 -0
  281. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
  282. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/qtest/tool.py +0 -0
  283. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/rally/__init__.py +0 -0
  284. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/rally/api_wrapper.py +0 -0
  285. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/report_portal/__init__.py +0 -0
  286. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
  287. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
  288. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/salesforce/__init__.py +0 -0
  289. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
  290. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/salesforce/model.py +0 -0
  291. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/servicenow/__init__.py +0 -0
  292. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
  293. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
  294. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
  295. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/sharepoint/utils.py +0 -0
  296. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/slack/__init__.py +0 -0
  297. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/slack/api_wrapper.py +0 -0
  298. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/sql/__init__.py +0 -0
  299. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/sql/api_wrapper.py +0 -0
  300. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/sql/models.py +0 -0
  301. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/testio/__init__.py +0 -0
  302. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/testio/api_wrapper.py +0 -0
  303. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/utils/__init__.py +0 -0
  304. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/xray/__init__.py +0 -0
  305. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/xray/api_wrapper.py +0 -0
  306. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/yagmail/__init__.py +0 -0
  307. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
  308. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
  309. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr/__init__.py +0 -0
  310. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
  311. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr/rest_client.py +0 -0
  312. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
  313. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
  314. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
  315. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
  316. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
  317. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
  318. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
  319. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk.egg-info/dependency_links.txt +0 -0
  320. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/alita_sdk.egg-info/top_level.txt +0 -0
  321. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/setup.cfg +0 -0
  322. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/tests/test_ado_analysis.py +0 -0
  323. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/tests/test_github_analysis.py +0 -0
  324. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/tests/test_gitlab_analysis.py +0 -0
  325. {alita_sdk-0.3.204 → alita_sdk-0.3.206}/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.204
3
+ Version: 0.3.206
4
4
  Summary: SDK for building langchain agents using resources from Alita
5
5
  Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedjik@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -125,6 +125,8 @@ Requires-Dist: yarl==1.17.1; extra == "tools"
125
125
  Requires-Dist: langmem==0.0.27; extra == "tools"
126
126
  Requires-Dist: textract-py3==2.1.1; extra == "tools"
127
127
  Requires-Dist: slack_sdk==3.35.0; extra == "tools"
128
+ Requires-Dist: deltalake==1.0.2; extra == "tools"
129
+ Requires-Dist: google_cloud_bigquery==3.34.0; extra == "tools"
128
130
  Provides-Extra: community
129
131
  Requires-Dist: retry-extended==0.2.3; extra == "community"
130
132
  Requires-Dist: pyobjtojson==0.3; extra == "community"
@@ -10,6 +10,7 @@ from langchain_core.messages import (
10
10
  )
11
11
  from langchain_core.tools import ToolException
12
12
  from langgraph.store.base import BaseStore
13
+ from langchain_openai import OpenAIEmbeddings, ChatOpenAI
13
14
 
14
15
  from ..langchain.assistant import Assistant as LangChainAssistant
15
16
  # from ..llamaindex.assistant import Assistant as LLamaAssistant
@@ -37,6 +38,7 @@ class AlitaClient:
37
38
 
38
39
  self.base_url = base_url.rstrip('/')
39
40
  self.api_path = '/api/v1'
41
+ self.llm_path = '/llm/v1'
40
42
  self.project_id = project_id
41
43
  self.auth_token = auth_token
42
44
  self.headers = {
@@ -152,6 +154,35 @@ class AlitaClient:
152
154
  return resp.json()
153
155
  return []
154
156
 
157
+ def get_llm(self, model_name: str, model_config: dict) -> ChatOpenAI:
158
+ """
159
+ Get a ChatOpenAI model instance based on the model name and configuration.
160
+
161
+ Args:
162
+ model_name: Name of the model to retrieve
163
+ model_config: Configuration parameters for the model
164
+
165
+ Returns:
166
+ An instance of ChatOpenAI configured with the provided parameters.
167
+ """
168
+ if not model_name:
169
+ raise ValueError("Model name must be provided")
170
+
171
+ logger.info(f"Creating ChatOpenAI model: {model_name} with config: {model_config}")
172
+
173
+ return ChatOpenAI(
174
+ base_url=f"{self.base_url}{self.llm_path}",
175
+ model=model_name,
176
+ api_key=self.auth_token,
177
+ stream_usage=model_config.get("stream_usage", True),
178
+ max_tokens=model_config.get("max_tokens", None),
179
+ top_p=model_config.get("top_p"),
180
+ temperature=model_config.get("temperature"),
181
+ max_retries=model_config.get("max_retries", 3),
182
+ seed=model_config.get("seed", None),
183
+ )
184
+
185
+
155
186
  def get_app_version_details(self, application_id: int, application_version_id: int) -> dict:
156
187
  url = f"{self.application_versions}/{application_id}/{application_version_id}"
157
188
  if self.configurations:
@@ -177,11 +208,12 @@ class AlitaClient:
177
208
  logger.info(f"Unsecret response: {data}")
178
209
  return data.get('value', None)
179
210
 
180
- def application(self, client: Any, application_id: int, application_version_id: int,
211
+ def application(self, application_id: int, application_version_id: int,
181
212
  tools: Optional[list] = None, chat_history: Optional[List[Any]] = None,
182
213
  app_type=None, memory=None, runtime='langchain',
183
214
  application_variables: Optional[dict] = None,
184
- version_details: Optional[dict] = None, store: Optional[BaseStore] = None):
215
+ version_details: Optional[dict] = None, store: Optional[BaseStore] = None,
216
+ llm: Optional[ChatOpenAI] = None):
185
217
  if tools is None:
186
218
  tools = []
187
219
  if chat_history is None:
@@ -200,7 +232,15 @@ class AlitaClient:
200
232
  for var in data.get('variables', {}):
201
233
  if var['name'] in application_variables:
202
234
  var.update(application_variables[var['name']])
203
-
235
+ if llm is None:
236
+ llm = self.get_llm(
237
+ model_name=data['llm_settings']['model_name'],
238
+ model_config = {
239
+ "max_tokens": data['llm_settings']['max_tokens'],
240
+ "top_p": data['llm_settings']['top_p'],
241
+ "temperature": data['llm_settings']['temperature']
242
+ }
243
+ )
204
244
  if not app_type:
205
245
  app_type = data.get("agent_type", "react")
206
246
  if app_type == "alita":
@@ -212,10 +252,10 @@ class AlitaClient:
212
252
  elif app_type == 'autogen':
213
253
  app_type = "openai"
214
254
  if runtime == 'nonrunnable':
215
- return LangChainAssistant(self, data, client, chat_history, app_type,
255
+ return LangChainAssistant(self, data, llm, chat_history, app_type,
216
256
  tools=tools, memory=memory, store=store)
217
257
  if runtime == 'langchain':
218
- return LangChainAssistant(self, data, client,
258
+ return LangChainAssistant(self, data, llm,
219
259
  chat_history, app_type,
220
260
  tools=tools, memory=memory, store=store).runnable()
221
261
  elif runtime == 'llama':
@@ -36,29 +36,30 @@ class Assistant:
36
36
 
37
37
  logger.debug("Data for agent creation: %s", data)
38
38
  logger.info("App type: %s", app_type)
39
-
39
+
40
+ self.client = client
40
41
  # For predict agents, use the client as-is since it's already configured
41
- if app_type == "predict":
42
- self.client = client
43
- else:
44
- # For other agent types, configure client from llm_settings
45
- self.client = copy(client)
46
- self.client.max_tokens = data['llm_settings']['max_tokens']
47
- self.client.temperature = data['llm_settings']['temperature']
48
- self.client.top_p = data['llm_settings']['top_p']
49
- self.client.top_k = data['llm_settings']['top_k']
50
- self.client.model_name = data['llm_settings']['model_name']
51
- self.client.integration_uid = data['llm_settings']['integration_uid']
42
+ # if app_type == "predict":
43
+ # self.client = client
44
+ # else:
45
+ # # For other agent types, configure client from llm_settings
46
+ # self.client = copy(client)
47
+ # self.client.max_tokens = data['llm_settings']['max_tokens']
48
+ # self.client.temperature = data['llm_settings']['temperature']
49
+ # self.client.top_p = data['llm_settings']['top_p']
50
+ # self.client.top_k = data['llm_settings']['top_k']
51
+ # self.client.model_name = data['llm_settings']['model_name']
52
+ # self.client.integration_uid = data['llm_settings']['integration_uid']
52
53
 
53
- model_type = data["llm_settings"]["indexer_config"]["ai_model"]
54
- model_params = data["llm_settings"]["indexer_config"]["ai_model_params"]
55
- #
56
- target_pkg, target_name = model_type.rsplit(".", 1)
57
- target_cls = getattr(
58
- importlib.import_module(target_pkg),
59
- target_name
60
- )
61
- self.client = target_cls(**model_params)
54
+ # model_type = data["llm_settings"]["indexer_config"]["ai_model"]
55
+ # model_params = data["llm_settings"]["indexer_config"]["ai_model_params"]
56
+ # #
57
+ # target_pkg, target_name = model_type.rsplit(".", 1)
58
+ # target_cls = getattr(
59
+ # importlib.import_module(target_pkg),
60
+ # target_name
61
+ # )
62
+ # self.client = target_cls(**model_params)
62
63
  # validate agents compatibility: non-pipeline agents cannot have pipelines as toolkits
63
64
  if app_type not in ["pipeline", "predict"]:
64
65
  tools_to_check = data.get('tools', [])
@@ -50,9 +50,6 @@ def get_model(model_type: str, model_params: dict):
50
50
  return get_llm(model_type)(**model_params)
51
51
  if model_type == "PreloadedChatModel":
52
52
  return PreloadedChatModel(**model_params)
53
- if model_type == "Alita":
54
- from ...llms.alita import AlitaClient
55
- return AlitaClient(**model_params)
56
53
  if model_type in chat_models:
57
54
  model = getattr(
58
55
  __import__("langchain_community.chat_models", fromlist=[model_type]),
@@ -185,7 +182,7 @@ def add_documents(vectorstore, documents):
185
182
  texts.append(document.page_content)
186
183
  for key in document.metadata:
187
184
  if isinstance(document.metadata[key], list):
188
- document.metadata[key] = "; ".join(document.metadata[key])
185
+ document.metadata[key] = "; ".join([str(val) for val in document.metadata[key]])
189
186
  if isinstance(document.metadata[key], dict):
190
187
  document.metadata[key] = dumps(document.metadata[key])
191
188
  metadata.append(document.metadata)
@@ -21,25 +21,20 @@ class ApplicationToolkit(BaseToolkit):
21
21
  )
22
22
 
23
23
  @classmethod
24
- def get_toolkit(cls, client: Any, application_id: int, application_version_id: int, app_api_key: str,
24
+ def get_toolkit(cls, client: 'AlitaClient', application_id: int, application_version_id: int,
25
25
  selected_tools: list[str] = [], store: Optional[BaseStore] = None):
26
- from ..llms.alita import AlitaChatModel
27
26
 
28
27
  app_details = client.get_app_details(application_id)
29
28
  version_details = client.get_app_version_details(application_id, application_version_id)
30
- settings = {
31
- "deployment": client.base_url,
32
- "model": version_details['llm_settings']['model_name'],
33
- "api_key": app_api_key,
34
- "project_id": client.project_id,
35
- "integration_uid": version_details['llm_settings']['integration_uid'],
29
+ model_settings = {
36
30
  "max_tokens": version_details['llm_settings']['max_tokens'],
37
31
  "top_p": version_details['llm_settings']['top_p'],
38
- "top_k": version_details['llm_settings']['top_k'],
39
32
  "temperature": version_details['llm_settings']['temperature'],
40
33
  }
41
34
 
42
- app = client.application(AlitaChatModel(**settings), application_id, application_version_id, store=store)
35
+ app = client.application(application_id, application_version_id, store=store,
36
+ llm=client.get_llm(version_details['llm_settings']['model_name'],
37
+ model_settings))
43
38
  return cls(tools=[Application(name=app_details.get("name"),
44
39
  description=app_details.get("description"),
45
40
  application=app,
@@ -54,7 +54,6 @@ def get_tools(tools_list: list, alita_client, llm, memory_store: BaseStore = Non
54
54
  alita_client,
55
55
  application_id=int(tool['settings']['application_id']),
56
56
  application_version_id=int(tool['settings']['application_version_id']),
57
- app_api_key=alita_client.auth_token,
58
57
  selected_tools=[]
59
58
  ).get_tools())
60
59
  elif tool['type'] == 'application' and tool.get('agent_type', '') == 'pipeline':
@@ -1,13 +1,18 @@
1
1
  import json
2
- from json import dumps
3
- from typing import Any, Optional, List, Dict
2
+ import math
3
+ import types
4
+ from typing import Any, Optional, List, Dict, Callable, Generator
5
+
6
+ from langchain_core.documents import Document
4
7
  from pydantic import BaseModel, model_validator, Field
5
- from langchain_core.tools import ToolException
6
8
  from ..langchain.tools.vector import VectorAdapter
7
9
  from langchain_core.messages import HumanMessage
8
10
  from alita_sdk.tools.elitea_base import BaseToolApiWrapper
9
11
  from logging import getLogger
10
12
 
13
+ from ..utils.logging import dispatch_custom_event
14
+ from ..utils.utils import IndexerKeywords
15
+
11
16
  logger = getLogger(__name__)
12
17
 
13
18
  class IndexDocumentsModel(BaseModel):
@@ -139,6 +144,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
139
144
  vectoradapter: Any = None
140
145
  pg_helper: Any = None
141
146
  embeddings: Any = None
147
+ process_document_func: Optional[Callable] = None
142
148
 
143
149
  @model_validator(mode='before')
144
150
  @classmethod
@@ -182,18 +188,132 @@ class VectorStoreWrapper(BaseToolApiWrapper):
182
188
  except Exception as e:
183
189
  logger.error(f"Failed to initialize PGVectorSearch: {str(e)}")
184
190
 
185
- def index_documents(self, documents):
191
+ def _get_indexed_data(self, store):
192
+ """ Get all indexed data from vectorstore """
193
+
194
+ # get already indexed data
195
+ result = {}
196
+ try:
197
+ self._log_data("Retrieving already indexed data from vectorstore",
198
+ tool_name="index_documents")
199
+ data = store.get(include=['documents', 'metadatas'])
200
+ # re-structure data to be more usable
201
+ for doc_str, meta, db_id in zip(data['documents'], data['metadatas'], data['ids']):
202
+ doc = json.loads(doc_str)
203
+ doc_id = str(meta['id'])
204
+ dependent_docs = meta.get(IndexerKeywords.DEPENDENT_DOCS.value, [])
205
+ parent_id = meta.get(IndexerKeywords.PARENT.value, -1)
206
+ result[doc_id] = {
207
+ 'metadata': meta,
208
+ 'document': doc,
209
+ 'id': db_id,
210
+ IndexerKeywords.DEPENDENT_DOCS.value: dependent_docs,
211
+ IndexerKeywords.PARENT.value: parent_id
212
+ }
213
+ except Exception as e:
214
+ logger.error(f"Failed to get indexed data from vectorstore: {str(e)}. Continuing with empty index.")
215
+ return result
216
+
217
+ def _reduce_duplicates(self, documents: Generator[Document, None, None], store) -> List[Any]:
218
+ """Remove documents already indexed in the vectorstore based on metadata 'id' and 'updated_on' fields."""
219
+
220
+ self._log_data("Verification of documents to index started", tool_name="index_documents")
221
+
222
+ indexed_data = self._get_indexed_data(store)
223
+ indexed_ids = set(indexed_data.keys())
224
+ if not indexed_ids:
225
+ self._log_data("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
226
+ return list(documents)
227
+
228
+ final_docs = []
229
+ docs_to_remove = []
230
+
231
+ for document in documents:
232
+ doc_id = document.metadata.get('id')
233
+ # get document's metadata and id and check if already indexed
234
+ if doc_id in indexed_ids:
235
+ # document has been indexed already, then verify `updated_on`
236
+ to_index_updated_on = document.metadata.get('updated_on')
237
+ indexed_meta = indexed_data[doc_id]['metadata']
238
+ indexed_updated_on = indexed_meta.get('updated_on')
239
+ if to_index_updated_on and indexed_updated_on and to_index_updated_on == indexed_updated_on:
240
+ # same updated_on, skip indexing
241
+ continue
242
+ # if updated_on is missing or different, we will re-index the document and remove old one
243
+ # parent doc removal
244
+ docs_to_remove.append(indexed_data[doc_id]['id'])
245
+ # mark dependent docs for removal
246
+ for dependent_doc_id in indexed_data[doc_id][IndexerKeywords.DEPENDENT_DOCS.value]:
247
+ docs_to_remove.append(indexed_data[dependent_doc_id]['id'])
248
+ else:
249
+ final_docs.append(document)
250
+
251
+ if docs_to_remove:
252
+ self._log_data(
253
+ f"Removing {len(docs_to_remove)} documents from vectorstore that are already indexed with different updated_on.",
254
+ tool_name="index_documents"
255
+ )
256
+ store.delete(ids=docs_to_remove)
257
+
258
+ return final_docs
259
+
260
+ def index_documents(self, documents: Generator[Document, None, None], progress_step: int = 20, clean_index: bool = True):
261
+ """ Index documents in the vectorstore.
262
+
263
+ Args:
264
+ documents (Any): Generator or list of documents to index.
265
+ document_processing_func (Optional[Callable]): Function to process documents after duplicates removal and before indexing.
266
+ progress_step (int): Step for progress reporting, default is 20.
267
+ clean_index (bool): If True, clean the index before re-indexing all documents.
268
+ """
269
+
186
270
  from ..langchain.interfaces.llm_processor import add_documents
271
+
272
+ # pre-process documents if needed (find duplicates, etc.)
273
+ if clean_index:
274
+ logger.info("Cleaning index before re-indexing all documents.")
275
+ self._log_data("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
276
+ try:
277
+ self.vectoradapter.delete_dataset(self.dataset)
278
+ self.vectoradapter.persist()
279
+ self.vectoradapter.vacuum()
280
+ self._log_data("Previous index has been removed",
281
+ tool_name="index_documents")
282
+ except Exception as e:
283
+ logger.warning(f"Failed to clean index: {str(e)}. Continuing with re-indexing.")
284
+ if isinstance(documents, types.GeneratorType):
285
+ documents = list(documents)
286
+ else:
287
+ # remove duplicates based on metadata 'id' and 'updated_on' fields
288
+ documents = self._reduce_duplicates(documents, self.vectoradapter.vectorstore)
289
+
290
+
291
+ if not documents or len(documents) == 0:
292
+ logger.info("No new documents to index after duplicate check.")
293
+ return {"status": "ok", "message": "No new documents to index."}
294
+
295
+ # if func is provided, apply it to documents
296
+ # used for processing of documents before indexing,
297
+ # e.g. to avoid time-consuming operations for documents that are already indexed
298
+ dependent_docs_generator = self.process_document_func(documents) if self.process_document_func else []
299
+
300
+ # notify user about missed required metadata fields: id, updated_on
301
+ # it is not required to have them, but it is recommended to have them for proper re-indexing and duplicate detection
302
+ for doc in documents:
303
+ if 'id' not in doc.metadata or 'updated_on' not in doc.metadata:
304
+ logger.warning(f"Document is missing required metadata field 'id' or 'updated_on': {doc.metadata}")
305
+
187
306
  logger.debug(f"Indexing documents: {documents}")
188
307
  logger.debug(self.vectoradapter)
189
- self.vectoradapter.delete_dataset(self.dataset)
190
- self.vectoradapter.persist()
191
- logger.debug(f"Deleted Dataset")
192
- #
193
- self.vectoradapter.vacuum()
194
- #
308
+
309
+ documents = documents + list(dependent_docs_generator)
310
+ total_docs = len(documents)
195
311
  documents_count = 0
196
312
  _documents = []
313
+
314
+ # set default progress step to 20 if out of 0...100 or None
315
+ progress_step = 20 if progress_step not in range(0, 100) else progress_step
316
+ next_progress_point = progress_step
197
317
  for document in documents:
198
318
  documents_count += 1
199
319
  # logger.debug(f"Indexing document: {document}")
@@ -203,7 +323,14 @@ class VectorStoreWrapper(BaseToolApiWrapper):
203
323
  add_documents(vectorstore=self.vectoradapter.vectorstore, documents=_documents)
204
324
  self.vectoradapter.persist()
205
325
  _documents = []
206
- except Exception as e:
326
+
327
+ percent = math.floor((documents_count / total_docs) * 100)
328
+ if percent >= next_progress_point:
329
+ msg = f"Indexing progress: {percent}%. Processed {documents_count} of {total_docs} documents."
330
+ logger.debug(msg)
331
+ self._log_data(msg)
332
+ next_progress_point += progress_step
333
+ except Exception:
207
334
  from traceback import format_exc
208
335
  logger.error(f"Error: {format_exc()}")
209
336
  return {"status": "error", "message": f"Error: {format_exc()}"}
@@ -383,9 +510,11 @@ class VectorStoreWrapper(BaseToolApiWrapper):
383
510
  combined_items = [item for item in combined_items if abs(item[1]) >= cut_off]
384
511
 
385
512
  # Sort by score and limit results
386
- combined_items.sort(key=lambda x: x[1], reverse=True)
513
+
514
+ # for chroma we want ascending order (lower score is better), for others descending
515
+ combined_items.sort(key=lambda x: x[1], reverse= self.vectorstore_type.lower() != 'chroma')
387
516
  combined_items = combined_items[:search_top]
388
-
517
+
389
518
  # Format output based on doctype
390
519
  if doctype == 'code':
391
520
  return code_format(combined_items)
@@ -498,6 +627,21 @@ class VectorStoreWrapper(BaseToolApiWrapper):
498
627
  ])
499
628
  return result.content
500
629
 
630
+ def _log_data(self, message: str, tool_name: str = "index_data"):
631
+ """Log data and dispatch custom event for indexing progress"""
632
+
633
+ try:
634
+ dispatch_custom_event(
635
+ name="thinking_step",
636
+ data={
637
+ "message": message,
638
+ "tool_name": tool_name,
639
+ "toolkit": "vectorstore",
640
+ },
641
+ )
642
+ except Exception as e:
643
+ logger.warning(f"Failed to dispatch progress event: {str(e)}")
644
+
501
645
  def get_available_tools(self):
502
646
  return [
503
647
  {
@@ -65,7 +65,8 @@ def pil_to_base64_string(pil_image):
65
65
  return None
66
66
 
67
67
 
68
- from alita_sdk.runtime.llms.alita import AlitaChatModel
68
+ # from alita_sdk.runtime.llms.alita import AlitaChatModel
69
+ from alita_sdk.runtime.clients.client import AlitaClient
69
70
  from alita_sdk.runtime.utils.AlitaCallback import AlitaStreamlitCallback
70
71
  from alita_sdk.runtime.toolkits.tools import get_toolkits, get_tools
71
72
  from alita_sdk.community.utils import check_schema
@@ -369,7 +370,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
369
370
  st.rerun()
370
371
 
371
372
  # Determine login form title and expansion state
372
- if st.session_state.llm:
373
+ if st.session_state.client:
373
374
  login_title = "✅ Elitea Login (Connected)"
374
375
  # Collapse after successful login, but allow expansion
375
376
  if st.session_state.login_form_expanded is True:
@@ -385,13 +386,13 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
385
386
  deployment_secret = environ.get('XSECRET', 'secret')
386
387
  api_key_value = environ.get('API_KEY', None)
387
388
  project_id_value = int(environ.get('PROJECT_ID', 0))
388
- if st.session_state.llm:
389
- deployment_value = st.session_state.llm.deployment
390
- api_key_value = st.session_state.llm.api_token
391
- project_id_value = st.session_state.llm.project_id
392
-
389
+ if st.session_state.client:
390
+ deployment_value = st.session_state.client.base_url
391
+ api_key_value = st.session_state.client.auth_token
392
+ project_id_value = st.session_state.client.project_id
393
+
393
394
  # Show current connection status
394
- if st.session_state.llm:
395
+ if st.session_state.client:
395
396
  st.success(f"Connected to: {deployment_value}")
396
397
  st.info(f"Project ID: {project_id_value}")
397
398
 
@@ -403,22 +404,24 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
403
404
  deployment_secret = st.text_input("Deployment Secret", placeholder="Enter Deployment Secret", value=deployment_secret)
404
405
 
405
406
  # Change button text based on login status
406
- button_text = "Re-Login" if st.session_state.llm else "Login"
407
+ button_text = "Re-Login" if st.session_state.client else "Login"
407
408
  submitted = st.form_submit_button(button_text)
408
409
 
409
410
  if submitted:
410
411
  with st.spinner("Logging to Alita..."):
411
412
  try:
412
- st.session_state.llm = AlitaChatModel(**{
413
- "deployment": deployment,
414
- "api_token": api_key,
415
- "project_id": project_id,
416
- })
417
- client = st.session_state.llm.client
413
+
414
+ st.session_state.client = AlitaClient(
415
+ base_url=deployment,
416
+ project_id=project_id,
417
+ auth_token=api_key,
418
+ api_extra_headers={"X-SECRET": deployment_secret}
419
+ )
420
+
418
421
 
419
422
  # Fetch specific project secret for pgvector connection
420
423
  try:
421
- pgvector_connstr = client.unsecret('pgvector_project_connstr')
424
+ pgvector_connstr = st.session_state.client.unsecret('pgvector_project_connstr')
422
425
  if pgvector_connstr:
423
426
  st.session_state.project_secrets = {'pgvector_project_connstr': pgvector_connstr}
424
427
  logger.info("Successfully retrieved pgvector connection string from project secrets")
@@ -429,7 +432,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
429
432
  logger.warning(f"Could not retrieve pgvector connection string: {str(e)}")
430
433
  st.session_state.project_secrets = {}
431
434
 
432
- integrations = client.all_models_and_integrations()
435
+ integrations = st.session_state.client.all_models_and_integrations()
433
436
  unique_models = set()
434
437
  models_list = []
435
438
  for entry in integrations:
@@ -438,7 +441,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
438
441
  if model.get('capabilities', {}).get('chat_completion') and model['name'] not in unique_models:
439
442
  unique_models.add(model['name'])
440
443
  models_list.append({'name': model['name'], 'integration_id': entry['uid']})
441
- st.session_state.agents = client.get_list_of_apps()
444
+ st.session_state.agents = st.session_state.client.get_list_of_apps()
442
445
  st.session_state.models = models_list
443
446
  clear_chat_history()
444
447
 
@@ -454,6 +457,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
454
457
  except Exception as e:
455
458
  logger.error(f"Error loggin to ELITEA: {format_exc()}")
456
459
  st.session_state.agents = None
460
+ st.session_state.client = None
457
461
  st.session_state.models = None
458
462
  st.session_state.llm = None
459
463
  st.session_state.project_secrets = None
@@ -463,7 +467,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
463
467
  llmconfig, toolkit_config = st.tabs(["Alita Agents", "Toolkit Testing"])
464
468
 
465
469
  with llmconfig:
466
- if st.session_state.llm:
470
+ if st.session_state.client:
467
471
  st.title("Available Agents")
468
472
  st.write("This one will load latest version of agent")
469
473
  with st.form("agents_form", clear_on_submit=False):
@@ -477,7 +481,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
477
481
  agent = next((a for a in st.session_state.agents if a['name'] == options), None)
478
482
  if agent:
479
483
  agent_id = agent['id']
480
- agent_details = st.session_state.llm.client.get_app_details(agent_id)
484
+ agent_details = st.session_state.client.get_app_details(agent_id)
481
485
  latest_version = next((v for v in agent_details['versions'] if v['name'] == agent_version_name), None)
482
486
  if latest_version:
483
487
  agent_version_id = latest_version['id']
@@ -504,11 +508,11 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
504
508
 
505
509
  # Try to get the complete agent configuration
506
510
  try:
507
- agent_version_details = st.session_state.llm.client.get_app_version_details(agent_id, agent_version_id)
511
+ agent_version_details = st.session_state.client.get_app_version_details(agent_id, agent_version_id)
508
512
  agent_full_config = agent_version_details
509
513
  except AttributeError:
510
514
  try:
511
- agent_version_details = st.session_state.llm.client.get_application_version_details(agent_id, agent_version_id)
515
+ agent_version_details = st.session_state.client.get_application_version_details(agent_id, agent_version_id)
512
516
  agent_full_config = agent_version_details
513
517
  except AttributeError:
514
518
  # Use the version details we already have
@@ -630,8 +634,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
630
634
  st.session_state.agent_toolkit_configs = {}
631
635
  st.session_state.agent_raw_config = None
632
636
 
633
- st.session_state.agent_executor = st.session_state.llm.client.application(
634
- client=st.session_state.llm,
637
+ st.session_state.agent_executor = st.session_state.client.application(
635
638
  application_id=agent_id,
636
639
  application_version_id=agent_version_id,
637
640
  app_type=agent_type if agent_type else None,
@@ -658,7 +661,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
658
661
  """)
659
662
 
660
663
  # Check if user is logged in
661
- if not st.session_state.llm:
664
+ if not st.session_state.client:
662
665
  st.warning("⚠️ **Please log in first!**")
663
666
  st.info("""
664
667
  📋 **To use Toolkit Testing:**
@@ -671,7 +674,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
671
674
  st.stop()
672
675
 
673
676
  # User is logged in, proceed with toolkit testing
674
- if st.session_state.llm:
677
+ if st.session_state.client:
675
678
  # Show project secrets status with detailed debugging
676
679
  secrets_status = st.session_state.project_secrets
677
680
 
@@ -685,7 +688,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
685
688
  # Debug info (can be removed later)
686
689
  with st.expander("🔍 Debug Info", expanded=False):
687
690
  st.write(f"**Project Secrets Status:** {type(secrets_status)} - {secrets_status}")
688
- st.write(f"**LLM Status:** {'Connected' if st.session_state.llm else 'Not Connected'}")
691
+ # st.write(f"**LLM Status:** {'Connected' if st.session_state.llm else 'Not Connected'}")
689
692
 
690
693
  # Toolkit selection and configuration
691
694
  st.markdown("---")
@@ -1021,7 +1024,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
1021
1024
  st.markdown("👈 Please use the **Alita Login Form** in the sidebar to authenticate.")
1022
1025
 
1023
1026
  # Main content area
1024
- if st.session_state.llm and st.session_state.agent_executor and st.session_state.agent_chat:
1027
+ if st.session_state.client and st.session_state.agent_executor and st.session_state.agent_chat:
1025
1028
  try:
1026
1029
  st.title(st.session_state.agent_name)
1027
1030
  except:
@@ -1043,7 +1046,7 @@ def run_streamlit(st, ai_icon=None, user_icon=None):
1043
1046
  st.session_state.thread_id = response.get("thread_id", None)
1044
1047
  st.session_state.messages.append({"role": "assistant", "content": response["output"]})
1045
1048
 
1046
- elif st.session_state.llm and st.session_state.show_toolkit_testing and st.session_state.configured_toolkit:
1049
+ elif st.session_state.client and st.session_state.show_toolkit_testing and st.session_state.configured_toolkit:
1047
1050
  # Toolkit Testing Main View
1048
1051
  st.title("🚀 Toolkit Testing Interface")
1049
1052
 
@@ -1281,7 +1284,7 @@ Please explain how you would use these tools to help the user, even though I can
1281
1284
  st.rerun()
1282
1285
 
1283
1286
  else:
1284
- if st.session_state.llm:
1287
+ if st.session_state.client:
1285
1288
  st.title("🎯 Alita SDK Toolkit Interface")
1286
1289
  st.markdown("""
1287
1290
  ### Welcome to the Alita SDK!
@@ -1,7 +1,12 @@
1
1
  import re
2
+ from enum import Enum
2
3
 
3
4
  TOOLKIT_SPLITTER = "___"
4
5
 
6
+ class IndexerKeywords(Enum):
7
+ DEPENDENT_DOCS = 'dependent_docs'
8
+ PARENT = 'parent_id'
9
+
5
10
  # This pattern matches characters that are NOT alphanumeric, underscores, or hyphens
6
11
  clean_string_pattern = re.compile(r'[^a-zA-Z0-9_.-]')
7
12