alita-sdk 0.3.168__py3-none-any.whl → 0.3.170__py3-none-any.whl

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.
@@ -162,7 +162,9 @@ class AlitaClient:
162
162
  resp = requests.patch(url, headers=self.headers, verify=False, json={'configurations': configs})
163
163
  if resp.ok:
164
164
  return resp.json()
165
- raise ApiDetailsRequestError
165
+ logger.error(f"Failed to fetch application version details: {resp.status_code} - {resp.text}."
166
+ f" Application ID: {application_id}, Version ID: {application_version_id}")
167
+ raise ApiDetailsRequestError(f"Failed to fetch application version details for {application_id}/{application_version_id}.")
166
168
 
167
169
  def get_integration_details(self, integration_id: str, format_for_model: bool = False):
168
170
  url = f"{self.integration_details}/{integration_id}"
@@ -54,7 +54,7 @@ _safe_import_tool('zephyr_enterprise', 'zephyr_enterprise', 'get_tools', 'Zephyr
54
54
  _safe_import_tool('ado', 'ado', 'get_tools')
55
55
  _safe_import_tool('ado_repos', 'ado.repos', 'get_tools', 'AzureDevOpsReposToolkit')
56
56
  _safe_import_tool('ado_plans', 'ado.test_plan', None, 'AzureDevOpsPlansToolkit')
57
- _safe_import_tool('ado_work_items', 'ado.work_item', None, 'AzureDevOpsWorkItemsToolkit')
57
+ _safe_import_tool('ado_boards', 'ado.work_item', None, 'AzureDevOpsWorkItemsToolkit')
58
58
  _safe_import_tool('ado_wiki', 'ado.wiki', None, 'AzureDevOpsWikiToolkit')
59
59
  _safe_import_tool('rally', 'rally', 'get_tools', 'RallyToolkit')
60
60
  _safe_import_tool('sql', 'sql', 'get_tools', 'SQLToolkit')
@@ -97,17 +97,16 @@ def get_tools(tools_list, alita, llm, store: Optional[BaseStore] = None, *args,
97
97
  tool['settings']['llm'] = llm
98
98
  tool['settings']['store'] = store
99
99
  tool_type = tool['type']
100
-
100
+
101
+ # Handle special cases for ADO tools
102
+ if tool_type in ['ado_boards', 'ado_wiki', 'ado_plans']:
103
+ tools.extend(AVAILABLE_TOOLS['ado']['get_tools'](tool_type, tool))
104
+
101
105
  # Check if tool is available and has get_tools function
102
- if tool_type in AVAILABLE_TOOLS and 'get_tools' in AVAILABLE_TOOLS[tool_type]:
106
+ elif tool_type in AVAILABLE_TOOLS and 'get_tools' in AVAILABLE_TOOLS[tool_type]:
103
107
  try:
104
108
  get_tools_func = AVAILABLE_TOOLS[tool_type]['get_tools']
105
-
106
- # Handle special cases for ADO tools
107
- if tool_type in ['ado_boards', 'ado_wiki', 'ado_plans']:
108
- tools.extend(get_tools_func(tool_type, tool))
109
- else:
110
- tools.extend(get_tools_func(tool))
109
+ tools.extend(get_tools_func(tool))
111
110
 
112
111
  except Exception as e:
113
112
  logger.error(f"Error getting tools for {tool_type}: {e}")
@@ -3,6 +3,8 @@ from typing import List, Literal, Optional
3
3
  from langchain_core.tools import BaseTool, BaseToolkit
4
4
  from pydantic import BaseModel, Field, create_model, SecretStr
5
5
 
6
+ import requests
7
+ from alita_tools.utils import check_connection_response
6
8
  from ...base.tool import BaseAction
7
9
  from .repos_wrapper import ReposApiWrapper
8
10
  from ...utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length
@@ -43,7 +45,7 @@ class AzureDevOpsReposToolkit(BaseToolkit):
43
45
  def toolkit_config_schema() -> BaseModel:
44
46
  selected_tools = {x['name']: x['args_schema'].schema() for x in ReposApiWrapper.model_construct().get_available_tools()}
45
47
  AzureDevOpsReposToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
46
- return create_model(
48
+ m = create_model(
47
49
  name,
48
50
  organization_url=(Optional[str], Field(default="", title="Organization URL", description="ADO organization url")),
49
51
  project=(Optional[str], Field(default="", title="Project", description="ADO project")),
@@ -78,6 +80,18 @@ class AzureDevOpsReposToolkit(BaseToolkit):
78
80
  }}}
79
81
  )
80
82
 
83
+ @check_connection_response
84
+ def check_connection(self):
85
+ response = requests.get(
86
+ f'{self.organization_url}/{self.project}/_apis/git/repositories/{self.repository_id}?api-version=7.0',
87
+ headers = {'Authorization': f'Bearer {self.token}'},
88
+ timeout=5
89
+ )
90
+ return response
91
+
92
+ m.check_connection = check_connection
93
+ return m
94
+
81
95
  @classmethod
82
96
  def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
83
97
  from os import environ
@@ -191,10 +191,14 @@ class ArgsSchema(Enum):
191
191
  "CreatePullRequest",
192
192
  pull_request_title=(str, Field(description="Title of the pull request")),
193
193
  pull_request_body=(str, Field(description="Body of the pull request")),
194
- branch_name=(
194
+ target_branch=(
195
195
  str,
196
- Field(description="The name of the branch, e.g. `my_branch`."),
196
+ Field(description="The name of the target branch, e.g. `my_branch`."),
197
197
  ),
198
+ source_branch=(
199
+ str,
200
+ Field(description="The name of the source branch, e.g. `feature_branch`."),
201
+ )
198
202
  )
199
203
  GetCommits = create_model(
200
204
  "GetCommits",
@@ -1041,7 +1045,7 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
1041
1045
  return ToolException(msg)
1042
1046
 
1043
1047
  def create_pr(
1044
- self, pull_request_title: str, pull_request_body: str, branch_name: str
1048
+ self, pull_request_title: str, pull_request_body: str, target_branch: str, source_branch: str
1045
1049
  ) -> str:
1046
1050
  """
1047
1051
  Creates a pull request in Azure DevOps from the active branch to the base branch mentioned in params.
@@ -1049,18 +1053,19 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
1049
1053
  Parameters:
1050
1054
  pull_request_title (str): Title of the pull request.
1051
1055
  pull_request_body (str): Description/body of the pull request.
1052
- branch_name (str): The name of the branch which is used as target branch for pull request.
1056
+ target_branch (str): The name of the branch which is used as target branch for pull request.
1057
+ source_branch (str): The name of the source branch which is used as source branch for pull request.
1053
1058
 
1054
1059
  Returns:
1055
1060
  str: A success or failure message.
1056
1061
  """
1057
- if self.active_branch == branch_name:
1058
- return f"Cannot create a pull request because the source branch '{self.active_branch}' is the same as the target branch '{branch_name}'"
1062
+ if source_branch == target_branch:
1063
+ return f"Cannot create a pull request because the source branch '{source_branch}' is the same as the target branch '{target_branch}'"
1059
1064
 
1060
1065
  try:
1061
1066
  pull_request = {
1062
- "sourceRefName": f"refs/heads/{self.active_branch}",
1063
- "targetRefName": f"refs/heads/{branch_name}",
1067
+ "sourceRefName": f"refs/heads/{source_branch}",
1068
+ "targetRefName": f"refs/heads/{target_branch}",
1064
1069
  "title": pull_request_title,
1065
1070
  "description": pull_request_body,
1066
1071
  "reviewers": [],
@@ -6,8 +6,7 @@ from pydantic import create_model, BaseModel, Field, SecretStr
6
6
  from ...base.tool import BaseAction
7
7
  from ...utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length
8
8
 
9
- name = "azure_devops_boards"
10
- name_alias = 'ado_boards'
9
+ name = "ado_boards"
11
10
 
12
11
  class AzureDevOpsWorkItemsToolkit(BaseToolkit):
13
12
  tools: List[BaseTool] = []
@@ -18,7 +17,7 @@ class AzureDevOpsWorkItemsToolkit(BaseToolkit):
18
17
  selected_tools = {x['name']: x['args_schema'].schema() for x in AzureDevOpsApiWrapper.model_construct().get_available_tools()}
19
18
  AzureDevOpsWorkItemsToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
20
19
  return create_model(
21
- name_alias,
20
+ name,
22
21
  name=(str, Field(description="Toolkit name",
23
22
  json_schema_extra={
24
23
  'toolkit_name': True,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.168
3
+ Version: 0.3.170
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
@@ -44,7 +44,7 @@ alita_sdk/community/deep_researcher/utils/os.py,sha256=Q1xX7c7_p7EmuzzXIAY9TDmra
44
44
  alita_sdk/runtime/__init__.py,sha256=4W0UF-nl3QF2bvET5lnah4o24CoTwSoKXhuN0YnwvEE,828
45
45
  alita_sdk/runtime/clients/__init__.py,sha256=BdehU5GBztN1Qi1Wul0cqlU46FxUfMnI6Vq2Zd_oq1M,296
46
46
  alita_sdk/runtime/clients/artifact.py,sha256=4N2t5x3GibyXLq3Fvrv2o_VA7Z000yNfc-UN4eGsHZg,2679
47
- alita_sdk/runtime/clients/client.py,sha256=jbC_M72CybwZgFfMRL6paj-NmICrSuk1vVnVTm_u-kc,19734
47
+ alita_sdk/runtime/clients/client.py,sha256=6ezOJ92CSw6b2PVs4uFMQKQdp40uT1awoFEqWAfBH_A,20029
48
48
  alita_sdk/runtime/clients/datasource.py,sha256=HAZovoQN9jBg0_-lIlGBQzb4FJdczPhkHehAiVG3Wx0,1020
49
49
  alita_sdk/runtime/clients/prompt.py,sha256=li1RG9eBwgNK_Qf0qUaZ8QNTmsncFrAL2pv3kbxZRZg,1447
50
50
  alita_sdk/runtime/langchain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -129,17 +129,17 @@ alita_sdk/runtime/utils/logging.py,sha256=svPyiW8ztDfhqHFITv5FBCj8UhLxz6hWcqGIY6
129
129
  alita_sdk/runtime/utils/save_dataframe.py,sha256=i-E1wp-t4wb17Zq3nA3xYwgSILjoXNizaQAA9opWvxY,1576
130
130
  alita_sdk/runtime/utils/streamlit.py,sha256=z4J_bdxkA0zMROkvTB4u379YBRFCkKh-h7PD8RlnZWQ,85644
131
131
  alita_sdk/runtime/utils/utils.py,sha256=dM8whOJAuFJFe19qJ69-FLzrUp6d2G-G6L7d4ss2XqM,346
132
- alita_sdk/tools/__init__.py,sha256=iuEQDwXHY8MQvHt6qIkYpXD7VC_3no-iVgDCpHqwIy4,10018
132
+ alita_sdk/tools/__init__.py,sha256=48DhEi14KkaYhNb-KvXuM9XJ4WGC-v9sRcWfN7GFWd4,9963
133
133
  alita_sdk/tools/elitea_base.py,sha256=NQaIxPX6DVIerHCb18jwUR6maZxxk73NZaTsFHkBQWE,21119
134
134
  alita_sdk/tools/ado/__init__.py,sha256=mD6GHcYMTtffPJkJvFPe2rzvye_IRmXmWfI7xYuZhO4,912
135
135
  alita_sdk/tools/ado/utils.py,sha256=PTCludvaQmPLakF2EbCGy66Mro4-rjDtavVP-xcB2Wc,1252
136
- alita_sdk/tools/ado/repos/__init__.py,sha256=U8MA5VA3hDRomcbbZ2bS8zzwnGYnAfOlLN3jfIOdWMU,5217
137
- alita_sdk/tools/ado/repos/repos_wrapper.py,sha256=RfhHr7aL1peIubW1FgL9r7p5WExzFfXzotuZmeCzlO8,47931
136
+ alita_sdk/tools/ado/repos/__init__.py,sha256=1gieQi1YWGT8-1lXCLnYTqDoAD8Zlx09H1KzlLV9KpA,5715
137
+ alita_sdk/tools/ado/repos/repos_wrapper.py,sha256=_OWKAls7VFfFtEPTwqj_DxE1MSvpC0ivxdTIULEz3Tk,48206
138
138
  alita_sdk/tools/ado/test_plan/__init__.py,sha256=ctn2CUkH_xS0Wkv2gLrO3FHQ36BvNCc0VcpMuddvU8E,3404
139
139
  alita_sdk/tools/ado/test_plan/test_plan_wrapper.py,sha256=oIvVhLUMP5ZGctoAtK6sU0y6Si9gNv9-mbLqcWtw3gY,12525
140
140
  alita_sdk/tools/ado/wiki/__init__.py,sha256=92AIAXVYSEYKnNvEG08W2YmR2lC35Bn92CiXJ8T3vpA,3736
141
141
  alita_sdk/tools/ado/wiki/ado_wrapper.py,sha256=l4bc2QoKSUXg9UqNcx0ylv7YL9JPPQd35Ti5MXyEgC4,12690
142
- alita_sdk/tools/ado/work_item/__init__.py,sha256=ZF6x0IWESIuwJ7jggM4o5koaZycks4lMrwdWlEzBEp0,3873
142
+ alita_sdk/tools/ado/work_item/__init__.py,sha256=HcPX18wODKCn8oCnhs0DRXYKaRxiQ6GvEGgd1emHud8,3832
143
143
  alita_sdk/tools/ado/work_item/ado_wrapper.py,sha256=t0D9xubU0yy_JmRJ_zEtRCxwFLyanT1StbIrtHGaqpw,26108
144
144
  alita_sdk/tools/advanced_jira_mining/__init__.py,sha256=pUTzECqGvYaR5qWY3JPUhrImrZgc7pCXuqSe5eWIE80,4604
145
145
  alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py,sha256=nZPtuwVWp8VeHw1B8q9kdwf-6ZvHnlXTOGdcIMDkKpw,44211
@@ -326,8 +326,8 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=UHVQUVqcBc3SZvDfO78HSuBzwAsRw
326
326
  alita_sdk/tools/zephyr_squad/__init__.py,sha256=rq4jOb3lRW2GXvAguk4H1KinO5f-zpygzhBJf-E1Ucw,2773
327
327
  alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=iOMxyE7vOc_LwFB_nBMiSFXkNtvbptA4i-BrTlo7M0A,5854
328
328
  alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=IYUJoMFOMA70knLhLtAnuGoy3OK80RuqeQZ710oyIxE,3631
329
- alita_sdk-0.3.168.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
330
- alita_sdk-0.3.168.dist-info/METADATA,sha256=IwdlbGZD0vCpKWXvl9TfWgiRZ7MovliOOva3Emi2mm4,18757
331
- alita_sdk-0.3.168.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
332
- alita_sdk-0.3.168.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
333
- alita_sdk-0.3.168.dist-info/RECORD,,
329
+ alita_sdk-0.3.170.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
330
+ alita_sdk-0.3.170.dist-info/METADATA,sha256=Djs8vf5jNVfyDSg3HQxk9usbGV1nfetOVO_JZyWOcW0,18757
331
+ alita_sdk-0.3.170.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
332
+ alita_sdk-0.3.170.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
333
+ alita_sdk-0.3.170.dist-info/RECORD,,