alita-sdk 0.3.123__tar.gz → 0.3.124__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 (107) hide show
  1. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/pyproject.toml +1 -1
  3. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/clients/client.py +12 -0
  4. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/toolkits/tools.py +45 -0
  5. alita_sdk-0.3.124/src/alita_sdk/tools/mcp_server_tool.py +58 -0
  6. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk.egg-info/PKG-INFO +1 -1
  7. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk.egg-info/SOURCES.txt +1 -0
  8. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/LICENSE +0 -0
  9. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/README.md +0 -0
  10. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/requirements.txt +0 -0
  11. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/setup.cfg +0 -0
  12. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/__init__.py +0 -0
  13. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/__init__.py +0 -0
  14. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/agents/__init__.py +0 -0
  15. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/agents/llamaAgentParser.py +0 -0
  16. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/clients/__init__.py +0 -0
  17. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/clients/artifact.py +0 -0
  18. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/clients/datasource.py +0 -0
  19. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/clients/prompt.py +0 -0
  20. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/community/__init__.py +0 -0
  21. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/community/analysis/__init__.py +0 -0
  22. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
  23. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
  24. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/community/browseruse/__init__.py +0 -0
  25. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/community/browseruse/api_wrapper.py +0 -0
  26. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/community/utils.py +0 -0
  27. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/__init__.py +0 -0
  28. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/agents/__init__.py +0 -0
  29. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/agents/xml_chat.py +0 -0
  30. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/assistant.py +0 -0
  31. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/chat_message_template.py +0 -0
  32. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/constants.py +0 -0
  33. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  34. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  35. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  36. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  37. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  38. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  39. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  40. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaImageLoader.py +0 -0
  41. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  42. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  43. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/AlitaTableLoader.py +0 -0
  44. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/__init__.py +0 -0
  45. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/constants.py +0 -0
  46. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/document_loaders/utils.py +0 -0
  47. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/indexer.py +0 -0
  48. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/interfaces/__init__.py +0 -0
  49. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/interfaces/kwextractor.py +0 -0
  50. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/interfaces/llm_processor.py +0 -0
  51. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/interfaces/loaders.py +0 -0
  52. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/interfaces/splitters.py +0 -0
  53. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/langraph_agent.py +0 -0
  54. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/mixedAgentParser.py +0 -0
  55. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/mixedAgentRenderes.py +0 -0
  56. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/retrievers/AlitaRetriever.py +0 -0
  57. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/retrievers/VectorstoreRetriever.py +0 -0
  58. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/retrievers/__init__.py +0 -0
  59. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/__init__.py +0 -0
  60. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/bdd_parser/__init__.py +0 -0
  61. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  62. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  63. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/bdd_parser/feature_types.py +0 -0
  64. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/bdd_parser/parser.py +0 -0
  65. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/git.py +0 -0
  66. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/log.py +0 -0
  67. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/quota.py +0 -0
  68. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/state.py +0 -0
  69. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/utils.py +0 -0
  70. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/tools/vector.py +0 -0
  71. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/langchain/utils.py +0 -0
  72. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/llamaindex/assistant.py +0 -0
  73. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/llms/__init__.py +0 -0
  74. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/llms/alita.py +0 -0
  75. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/llms/preloaded.py +0 -0
  76. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/toolkits/__init__.py +0 -0
  77. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/toolkits/application.py +0 -0
  78. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/toolkits/artifact.py +0 -0
  79. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/toolkits/datasource.py +0 -0
  80. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/toolkits/prompt.py +0 -0
  81. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/toolkits/vectorstore.py +0 -0
  82. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/__init__.py +0 -0
  83. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/application.py +0 -0
  84. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/artifact.py +0 -0
  85. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/datasource.py +0 -0
  86. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/echo.py +0 -0
  87. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/function.py +0 -0
  88. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/indexer_tool.py +0 -0
  89. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/llm.py +0 -0
  90. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/loop.py +0 -0
  91. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/loop_output.py +0 -0
  92. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/pgvector_search.py +0 -0
  93. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/prompt.py +0 -0
  94. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/router.py +0 -0
  95. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/tool.py +0 -0
  96. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/tools/vectorstore.py +0 -0
  97. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/utils/AlitaCallback.py +0 -0
  98. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/utils/__init__.py +0 -0
  99. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/utils/evaluate.py +0 -0
  100. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/utils/logging.py +0 -0
  101. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/utils/streamlit.py +0 -0
  102. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk/utils/utils.py +0 -0
  103. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk.egg-info/dependency_links.txt +0 -0
  104. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk.egg-info/requires.txt +0 -0
  105. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/alita_sdk.egg-info/top_level.txt +0 -0
  106. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/tests/__init__.py +0 -0
  107. {alita_sdk-0.3.123 → alita_sdk-0.3.124}/src/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.123
3
+ Version: 0.3.124
4
4
  Summary: SDK for building langchain agents using resouces 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
  Project-URL: Homepage, https://projectalita.ai
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "alita_sdk"
7
- version = "0.3.123"
7
+ version = "0.3.124"
8
8
  description = "SDK for building langchain agents using resouces from Alita"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -50,6 +50,8 @@ class AlitaClient:
50
50
  self.datasources_predict = f"{self.base_url}{self.api_path}/datasources/predict/prompt_lib/{self.project_id}"
51
51
  self.datasources_search = f"{self.base_url}{self.api_path}/datasources/search/prompt_lib/{self.project_id}"
52
52
  self.app = f"{self.base_url}{self.api_path}/applications/application/prompt_lib/{self.project_id}"
53
+ self.mcp_tools_list = f"{self.base_url}{self.api_path}/mcp_sse/tools_list/{self.project_id}"
54
+ self.mcp_tools_call = f"{self.base_url}{self.api_path}/mcp_sse/tools_call/{self.project_id}"
53
55
  self.application_versions = f"{self.base_url}{self.api_path}/applications/version/prompt_lib/{self.project_id}"
54
56
  self.list_apps_url = f"{self.base_url}{self.api_path}/applications/applications/prompt_lib/{self.project_id}"
55
57
  self.integration_details = f"{self.base_url}{self.api_path}/integrations/integration/{self.project_id}"
@@ -61,6 +63,16 @@ class AlitaClient:
61
63
  self.ai_section_url = f'{self.base_url}{self.api_path}/integrations/integrations/default/{self.project_id}?section=ai'
62
64
  self.configurations: list = configurations or []
63
65
 
66
+ def get_mcp_toolkits(self):
67
+ url = self.mcp_tools_list
68
+ data = requests.get(url, headers=self.headers, verify=False).json()
69
+ return data
70
+
71
+ def mcp_tool_call(self, params: dict[str, Any]):
72
+ url = self.mcp_tools_call
73
+ data = requests.post(url, headers=self.headers, json=params, verify=False).json()
74
+ return data
75
+
64
76
  def prompt(self, prompt_id, prompt_version_id, chat_history=None, return_tool=False):
65
77
  url = f"{self.prompt_versions}/{prompt_id}/{prompt_version_id}"
66
78
  data = requests.get(url, headers=self.headers, verify=False).json()
@@ -13,6 +13,8 @@ from .vectorstore import VectorStoreToolkit
13
13
  from ..community.analysis.jira_analyse import AnalyseJira
14
14
  from ..community.browseruse import BrowserUseToolkit
15
15
 
16
+ from ..tools.mcp_server_tool import McpServerTool
17
+
16
18
  logger = logging.getLogger(__name__)
17
19
 
18
20
 
@@ -36,6 +38,7 @@ def get_toolkits():
36
38
  def get_tools(tools_list: list, alita: 'AlitaClient', llm: 'LLMLikeObject') -> list:
37
39
  prompts = []
38
40
  tools = []
41
+
39
42
  for tool in tools_list:
40
43
  if tool['type'] == 'prompt':
41
44
  prompts.append([
@@ -82,4 +85,46 @@ def get_tools(tools_list: list, alita: 'AlitaClient', llm: 'LLMLikeObject') -> l
82
85
  if len(prompts) > 0:
83
86
  tools += PromptToolkit.get_toolkit(alita, prompts).get_tools()
84
87
  tools += alita_tools(tools_list, alita, llm)
88
+ tools += _mcp_tools(tools_list, alita)
89
+ return tools
90
+
91
+
92
+ def _mcp_tools(tools_list, alita):
93
+ all_available_toolkits = alita.get_mcp_toolkits()
94
+ toolkit_lookup = {tk["name"].lower(): tk for tk in all_available_toolkits}
95
+ tools = []
96
+ #
97
+ for selected_toolkit in tools_list:
98
+ toolkit_name = selected_toolkit['type'].lower()
99
+ toolkit_conf = toolkit_lookup.get(toolkit_name)
100
+ #
101
+ if not toolkit_conf:
102
+ logger.warning(f"Toolkit '{toolkit_name}' not found in available toolkits.")
103
+ continue
104
+ #
105
+ available_tools = toolkit_conf.get("tools", [])
106
+ selected_tools = [name.lower() for name in selected_toolkit['settings'].get('selected_tools', [])]
107
+ for available_tool in available_tools:
108
+ tool_name = available_tool.get("name", "").lower()
109
+ if not selected_tools or tool_name in selected_tools:
110
+ if server_tool := _init_single_mcp_tool(toolkit_name, available_tool, alita, selected_toolkit['settings']):
111
+ tools.append(server_tool)
85
112
  return tools
113
+
114
+
115
+ def _init_single_mcp_tool(toolkit_name, available_tool, alita, toolkit_settings):
116
+ try:
117
+ tool_name = available_tool["name"]
118
+ return McpServerTool(
119
+ name=tool_name,
120
+ description=available_tool.get("description", ""),
121
+ args_schema=McpServerTool.create_pydantic_model_from_schema(
122
+ available_tool.get("inputSchema", {})
123
+ ),
124
+ client=alita,
125
+ server=toolkit_name,
126
+ tool_timeout_sec=toolkit_settings["timeout"]
127
+ )
128
+ except Exception as e:
129
+ logger.error(f"Failed to create McpServerTool for '{toolkit_name}.{tool_name}': {e}")
130
+ return None
@@ -0,0 +1,58 @@
1
+ import uuid
2
+ from logging import getLogger
3
+ from typing import Any, Type, Literal, Optional
4
+
5
+ from langchain_core.tools import BaseTool
6
+ from pydantic import BaseModel, Field, create_model
7
+
8
+ logger = getLogger(__name__)
9
+
10
+
11
+ class McpServerTool(BaseTool):
12
+ name: str
13
+ description: str
14
+ args_schema: Optional[Type[BaseModel]] = None
15
+ return_type: str = "str"
16
+ client: Any
17
+ server: str
18
+ tool_timeout_sec: int = 60
19
+
20
+
21
+ @staticmethod
22
+ def create_pydantic_model_from_schema(schema: dict):
23
+ fields = {}
24
+ for field_name, field_info in schema['properties'].items():
25
+ field_type = field_info['type']
26
+ field_description = field_info.get('description', '')
27
+ if field_type == 'string':
28
+ if 'enum' in field_info:
29
+ field_type = Literal[tuple(field_info['enum'])]
30
+ else:
31
+ field_type = str
32
+ elif field_type == 'integer':
33
+ field_type = int
34
+ elif field_type == 'number':
35
+ field_type = float
36
+ elif field_type == 'boolean':
37
+ field_type = bool
38
+ else:
39
+ raise ValueError(f"Unsupported field type: {field_type}")
40
+
41
+ if field_name in schema.get('required', []):
42
+ fields[field_name] = (field_type, Field(..., description=field_description))
43
+ else:
44
+ fields[field_name] = (Optional[field_type], Field(None, description=field_description))
45
+ return create_model('DynamicModel', **fields)
46
+
47
+ def _run(self, *args, **kwargs):
48
+ call_data = {
49
+ "server": self.server,
50
+ "tool_timeout_sec": self.tool_timeout_sec,
51
+ "tool_call_id": str(uuid.uuid4()),
52
+ "params": {
53
+ "name": self.name,
54
+ "arguments": kwargs
55
+ }
56
+ }
57
+
58
+ return self.client.mcp_tool_call(call_data)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.123
3
+ Version: 0.3.124
4
4
  Summary: SDK for building langchain agents using resouces 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
  Project-URL: Homepage, https://projectalita.ai
@@ -89,6 +89,7 @@ src/alita_sdk/tools/indexer_tool.py
89
89
  src/alita_sdk/tools/llm.py
90
90
  src/alita_sdk/tools/loop.py
91
91
  src/alita_sdk/tools/loop_output.py
92
+ src/alita_sdk/tools/mcp_server_tool.py
92
93
  src/alita_sdk/tools/pgvector_search.py
93
94
  src/alita_sdk/tools/prompt.py
94
95
  src/alita_sdk/tools/router.py
File without changes
File without changes
File without changes
File without changes