alita-sdk 0.3.229__py3-none-any.whl → 0.3.230__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.
- alita_sdk/runtime/langchain/document_loaders/AlitaDocLoader.py +29 -0
- alita_sdk/runtime/langchain/document_loaders/constants.py +6 -0
- alita_sdk/runtime/langchain/document_loaders/utils.py +22 -1
- alita_sdk/tools/ado/__init__.py +2 -3
- alita_sdk/tools/ado/repos/__init__.py +12 -10
- alita_sdk/tools/ado/repos/repos_wrapper.py +1 -0
- alita_sdk/tools/ado/test_plan/__init__.py +17 -15
- alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +1 -0
- alita_sdk/tools/ado/wiki/__init__.py +18 -20
- alita_sdk/tools/ado/wiki/ado_wrapper.py +1 -0
- alita_sdk/tools/ado/work_item/__init__.py +18 -19
- alita_sdk/tools/ado/work_item/ado_wrapper.py +1 -0
- alita_sdk/tools/azure_ai/search/__init__.py +7 -4
- alita_sdk/tools/bitbucket/__init__.py +9 -4
- alita_sdk/tools/confluence/__init__.py +9 -5
- alita_sdk/tools/figma/__init__.py +8 -5
- alita_sdk/tools/figma/api_wrapper.py +37 -12
- alita_sdk/tools/github/__init__.py +9 -10
- alita_sdk/tools/gitlab/__init__.py +10 -5
- alita_sdk/tools/google/bigquery/__init__.py +7 -2
- alita_sdk/tools/jira/__init__.py +9 -5
- alita_sdk/tools/postman/__init__.py +7 -2
- alita_sdk/tools/qtest/__init__.py +7 -2
- alita_sdk/tools/servicenow/__init__.py +7 -3
- alita_sdk/tools/sharepoint/__init__.py +8 -5
- alita_sdk/tools/slack/__init__.py +7 -3
- alita_sdk/tools/testrail/__init__.py +9 -4
- alita_sdk/tools/utils/content_parser.py +16 -26
- {alita_sdk-0.3.229.dist-info → alita_sdk-0.3.230.dist-info}/METADATA +2 -2
- {alita_sdk-0.3.229.dist-info → alita_sdk-0.3.230.dist-info}/RECORD +33 -32
- {alita_sdk-0.3.229.dist-info → alita_sdk-0.3.230.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.229.dist-info → alita_sdk-0.3.230.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.229.dist-info → alita_sdk-0.3.230.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
from langchain_core.document_loaders import BaseLoader
|
2
|
+
from langchain_core.documents import Document
|
3
|
+
|
4
|
+
from .utils import file_to_bytes
|
5
|
+
|
6
|
+
|
7
|
+
class AlitaDocLoader(BaseLoader):
|
8
|
+
|
9
|
+
def __init__(self, **kwargs):
|
10
|
+
if kwargs.get('file_path'):
|
11
|
+
self.file_path = kwargs['file_path']
|
12
|
+
elif kwargs.get('file_content'):
|
13
|
+
self.file_content = kwargs['file_content']
|
14
|
+
self.file_name = kwargs['file_name']
|
15
|
+
else:
|
16
|
+
raise ValueError(
|
17
|
+
"Path parameter is required (either as 'file_path' positional argument or 'path' keyword argument)")
|
18
|
+
|
19
|
+
def load(self):
|
20
|
+
result_content = self.get_content()
|
21
|
+
return [Document(page_content=result_content, metadata={'source': str(self.file_path if hasattr(self, 'file_path') else self.file_name)})]
|
22
|
+
|
23
|
+
def get_content(self):
|
24
|
+
try:
|
25
|
+
import textract
|
26
|
+
content = textract.process(None, extension='doc', input_data=self.file_content if hasattr(self, 'file_content') else file_to_bytes(self.file_path)).decode('utf-8')
|
27
|
+
except Exception as e:
|
28
|
+
content = f"[Error extracting doc: {str(e)}]"
|
29
|
+
return content
|
@@ -18,6 +18,7 @@ from langchain_community.document_loaders import (
|
|
18
18
|
UnstructuredPowerPointLoader, PythonLoader)
|
19
19
|
|
20
20
|
from .AlitaCSVLoader import AlitaCSVLoader
|
21
|
+
from .AlitaDocLoader import AlitaDocLoader
|
21
22
|
from .AlitaDocxMammothLoader import AlitaDocxMammothLoader
|
22
23
|
from .AlitaExcelLoader import AlitaExcelLoader
|
23
24
|
from .AlitaImageLoader import AlitaImageLoader
|
@@ -124,6 +125,11 @@ loaders_map = {
|
|
124
125
|
'is_multimodal_processing': True,
|
125
126
|
'kwargs': {}
|
126
127
|
},
|
128
|
+
'.doc': {
|
129
|
+
'class': AlitaDocLoader,
|
130
|
+
'is_multimodal_processing': True,
|
131
|
+
'kwargs': {}
|
132
|
+
},
|
127
133
|
'.json': {
|
128
134
|
'class': AlitaTextLoader,
|
129
135
|
'is_multimodal_processing': False,
|
@@ -60,4 +60,25 @@ def create_temp_file(file_content: bytes):
|
|
60
60
|
temp_file.flush() # Ensure data is written
|
61
61
|
|
62
62
|
# Get the file path for operations
|
63
|
-
return temp_file.name
|
63
|
+
return temp_file.name
|
64
|
+
|
65
|
+
def file_to_bytes(filepath):
|
66
|
+
"""
|
67
|
+
Reads a file and returns its content as a bytes object.
|
68
|
+
|
69
|
+
Args:
|
70
|
+
filepath (str): The path to the file.
|
71
|
+
|
72
|
+
Returns:
|
73
|
+
bytes: The content of the file as a bytes object.
|
74
|
+
"""
|
75
|
+
try:
|
76
|
+
with open(filepath, "rb") as f:
|
77
|
+
file_content_bytes = f.read()
|
78
|
+
return file_content_bytes
|
79
|
+
except FileNotFoundError:
|
80
|
+
logger.error(f"File not found: {filepath}")
|
81
|
+
return None
|
82
|
+
except Exception as e:
|
83
|
+
logger.error(f"Error reading file {filepath}: {e}")
|
84
|
+
return None
|
alita_sdk/tools/ado/__init__.py
CHANGED
@@ -10,13 +10,12 @@ def get_tools(tool_type, tool):
|
|
10
10
|
# common
|
11
11
|
"selected_tools": tool['settings'].get('selected_tools', []),
|
12
12
|
"organization_url": tool['settings']['organization_url'],
|
13
|
-
"
|
14
|
-
"token": tool['settings'].get('token', None),
|
13
|
+
"ado_configuration": tool['settings']['ado_configuration'],
|
15
14
|
"limit": tool['settings'].get('limit', 5),
|
16
15
|
"toolkit_name": tool.get('toolkit_name', ''),
|
17
16
|
# indexer settings
|
18
17
|
"llm": tool['settings'].get('llm', None),
|
19
|
-
"
|
18
|
+
"pgvector_configuration": tool['settings'].get('pgvector_configuration', {}),
|
20
19
|
"collection_name": tool['toolkit_name'],
|
21
20
|
"doctype": 'doc',
|
22
21
|
"embedding_model": "HuggingFaceEmbeddings",
|
@@ -17,15 +17,12 @@ name = "ado_repos"
|
|
17
17
|
def _get_toolkit(tool) -> BaseToolkit:
|
18
18
|
return AzureDevOpsReposToolkit().get_toolkit(
|
19
19
|
selected_tools=tool['settings'].get('selected_tools', []),
|
20
|
-
|
21
|
-
project=tool['settings'].get('ado_repos_configuration').get('ado_configuration').get('project', ""),
|
22
|
-
token=tool['settings'].get('ado_repos_configuration').get('ado_configuration').get('token', ""),
|
20
|
+
ado_repos_configuration=tool['settings']['ado_repos_configuration'],
|
23
21
|
limit=tool['settings'].get('limit', 5),
|
24
|
-
repository_id=tool['settings'].get('ado_repos_configuration').get('repository_id', ""),
|
25
22
|
base_branch=tool['settings'].get('base_branch', ""),
|
26
23
|
active_branch=tool['settings'].get('active_branch', ""),
|
27
24
|
toolkit_name=tool['settings'].get('toolkit_name', ""),
|
28
|
-
|
25
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
29
26
|
collection_name=tool['toolkit_name'],
|
30
27
|
doctype='code',
|
31
28
|
embedding_model="HuggingFaceEmbeddings",
|
@@ -49,14 +46,13 @@ class AzureDevOpsReposToolkit(BaseToolkit):
|
|
49
46
|
AzureDevOpsReposToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
|
50
47
|
m = create_model(
|
51
48
|
name,
|
52
|
-
ado_repos_configuration=(
|
49
|
+
ado_repos_configuration=(AdoReposConfiguration, Field(description="Ado Repos configuration", default=None,
|
53
50
|
json_schema_extra={'configuration_types': ['ado_repos']})),
|
54
51
|
base_branch=(Optional[str], Field(default="", title="Base branch", description="ADO base branch (e.g., main)")),
|
55
52
|
active_branch=(Optional[str], Field(default="", title="Active branch", description="ADO active branch (e.g., main)")),
|
56
53
|
|
57
54
|
# indexer settings
|
58
|
-
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector
|
59
|
-
json_schema_extra={'secret': True})),
|
55
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
60
56
|
# embedder settings
|
61
57
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
|
62
58
|
default="HuggingFaceEmbeddings")),
|
@@ -110,8 +106,14 @@ class AzureDevOpsReposToolkit(BaseToolkit):
|
|
110
106
|
environ["AZURE_DEVOPS_CACHE_DIR"] = "/tmp/.azure-devops"
|
111
107
|
if selected_tools is None:
|
112
108
|
selected_tools = []
|
113
|
-
|
114
|
-
|
109
|
+
|
110
|
+
wrapper_payload = {
|
111
|
+
**kwargs,
|
112
|
+
# TODO use ado_repos_configuration fields
|
113
|
+
**kwargs['ado_repos_configuration'],
|
114
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
115
|
+
}
|
116
|
+
azure_devops_repos_wrapper = ReposApiWrapper(**wrapper_payload)
|
115
117
|
available_tools = azure_devops_repos_wrapper.get_available_tools()
|
116
118
|
tools = []
|
117
119
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
@@ -1,9 +1,11 @@
|
|
1
1
|
from typing import List, Optional, Literal
|
2
2
|
|
3
3
|
from langchain_core.tools import BaseTool, BaseToolkit
|
4
|
-
from pydantic import create_model, BaseModel, Field
|
4
|
+
from pydantic import create_model, BaseModel, Field
|
5
5
|
|
6
6
|
import requests
|
7
|
+
from ....configurations.ado import AdoConfiguration
|
8
|
+
from ....configurations.pgvector import PgVectorConfiguration
|
7
9
|
from .test_plan_wrapper import TestPlanApiWrapper
|
8
10
|
from ...base.tool import BaseAction
|
9
11
|
from ...utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length, check_connection_response
|
@@ -24,19 +26,10 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
|
|
24
26
|
m = create_model(
|
25
27
|
name_alias,
|
26
28
|
name=(str, Field(description="Toolkit name", json_schema_extra={'toolkit_name': True, 'max_toolkit_length': AzureDevOpsPlansToolkit.toolkit_max_length})),
|
27
|
-
|
28
|
-
description="ADO organization url",
|
29
|
-
json_schema_extra={
|
30
|
-
'configuration': True,
|
31
|
-
'configuration_title': True
|
32
|
-
})),
|
33
|
-
project=(str, Field(title="Project", description="ADO project", json_schema_extra={'configuration': True})),
|
29
|
+
ado_configuration=(AdoConfiguration, Field(description="Ado configuration", json_schema_extra={'configuration_types': ['ado']})),
|
34
30
|
limit=(Optional[int], Field(description="ADO plans limit used for limitation of the list with results", default=5)),
|
35
|
-
token=(SecretStr, Field(description="ADO token", json_schema_extra={'secret': True, 'configuration': True})),
|
36
31
|
# indexer settings
|
37
|
-
|
38
|
-
default=None,
|
39
|
-
json_schema_extra={'secret': True})),
|
32
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
40
33
|
# embedder settings
|
41
34
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
|
42
35
|
default="HuggingFaceEmbeddings")),
|
@@ -75,9 +68,12 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
|
|
75
68
|
|
76
69
|
@check_connection_response
|
77
70
|
def check_connection(self):
|
71
|
+
ado_config = self.ado_test_plan_configuration.ado_configuration if self.ado_test_plan_configuration else None
|
72
|
+
if not ado_config:
|
73
|
+
raise ValueError("ADO test plan configuration is required")
|
78
74
|
response = requests.get(
|
79
|
-
f'{
|
80
|
-
headers = {'Authorization': f'Bearer {
|
75
|
+
f'{ado_config.organization_url}/{ado_config.project}/_apis/testplan/plans?api-version=7.0',
|
76
|
+
headers = {'Authorization': f'Bearer {ado_config.token}'},
|
81
77
|
timeout=5
|
82
78
|
)
|
83
79
|
return response
|
@@ -92,7 +88,13 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
|
|
92
88
|
environ['AZURE_DEVOPS_CACHE_DIR'] = '/tmp/.azure-devops'
|
93
89
|
if selected_tools is None:
|
94
90
|
selected_tools = []
|
95
|
-
|
91
|
+
wrapper_payload = {
|
92
|
+
**kwargs,
|
93
|
+
# TODO use ado_configuration fields in TestPlanApiWrapper
|
94
|
+
**kwargs['ado_configuration'],
|
95
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
96
|
+
}
|
97
|
+
azure_devops_api_wrapper = TestPlanApiWrapper(**wrapper_payload)
|
96
98
|
available_tools = azure_devops_api_wrapper.get_available_tools()
|
97
99
|
tools = []
|
98
100
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
@@ -1,9 +1,11 @@
|
|
1
1
|
from typing import List, Literal, Optional
|
2
2
|
from .ado_wrapper import AzureDevOpsApiWrapper # Import the API wrapper for Azure DevOps
|
3
3
|
from langchain_core.tools import BaseTool, BaseToolkit
|
4
|
-
from pydantic import create_model, BaseModel, Field
|
4
|
+
from pydantic import create_model, BaseModel, Field
|
5
5
|
|
6
6
|
import requests
|
7
|
+
from ....configurations.ado import AdoConfiguration
|
8
|
+
from ....configurations.pgvector import PgVectorConfiguration
|
7
9
|
from ...base.tool import BaseAction
|
8
10
|
from ...utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length, check_connection_response
|
9
11
|
|
@@ -25,22 +27,9 @@ class AzureDevOpsWikiToolkit(BaseToolkit):
|
|
25
27
|
'toolkit_name': True,
|
26
28
|
'max_toolkit_length': AzureDevOpsWikiToolkit.toolkit_max_length})
|
27
29
|
),
|
28
|
-
|
29
|
-
description="ADO organization url", json_schema_extra={
|
30
|
-
'configuration': True,
|
31
|
-
})),
|
32
|
-
project=(str, Field(description="ADO project",
|
33
|
-
json_schema_extra={
|
34
|
-
'configuration': True
|
35
|
-
})),
|
36
|
-
token=(SecretStr,
|
37
|
-
Field(description="ADO token",
|
38
|
-
json_schema_extra={'secret': True, 'configuration': True }
|
39
|
-
)),
|
30
|
+
ado_configuration=(AdoConfiguration, Field(description="Ado configuration", json_schema_extra={'configuration_types': ['ado']})),
|
40
31
|
# indexer settings
|
41
|
-
|
42
|
-
default=None,
|
43
|
-
json_schema_extra={'secret': True})),
|
32
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
44
33
|
# embedder settings
|
45
34
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
|
46
35
|
default="HuggingFaceEmbeddings")),
|
@@ -53,7 +42,7 @@ class AzureDevOpsWikiToolkit(BaseToolkit):
|
|
53
42
|
'json_schema_extra': {
|
54
43
|
'metadata': {
|
55
44
|
"label": "ADO wiki",
|
56
|
-
"icon_url":
|
45
|
+
"icon_url": "ado-wiki-icon.svg",
|
57
46
|
"categories": ["documentation"],
|
58
47
|
"extra_categories": ["knowledge base", "documentation management", "wiki"],
|
59
48
|
"sections": {
|
@@ -77,9 +66,12 @@ class AzureDevOpsWikiToolkit(BaseToolkit):
|
|
77
66
|
|
78
67
|
@check_connection_response
|
79
68
|
def check_connection(self):
|
69
|
+
ado_config = self.ado_wiki_configuration.ado_configuration if self.ado_wiki_configuration else None
|
70
|
+
if not ado_config:
|
71
|
+
raise ValueError("ADO wiki configuration is required")
|
80
72
|
response = requests.get(
|
81
|
-
f'{
|
82
|
-
headers={'Authorization': f'Bearer {
|
73
|
+
f'{ado_config.organization_url}/{ado_config.project}/_apis/wiki/wikis?api-version=7.0',
|
74
|
+
headers={'Authorization': f'Bearer {ado_config.token}'},
|
83
75
|
timeout=5
|
84
76
|
)
|
85
77
|
return response
|
@@ -94,7 +86,13 @@ class AzureDevOpsWikiToolkit(BaseToolkit):
|
|
94
86
|
environ['AZURE_DEVOPS_CACHE_DIR'] = '/tmp/.azure-devops'
|
95
87
|
if selected_tools is None:
|
96
88
|
selected_tools = []
|
97
|
-
|
89
|
+
wrapper_payload = {
|
90
|
+
**kwargs,
|
91
|
+
# TODO use ado_configuration fields in AzureDevOpsApiWrapper
|
92
|
+
**kwargs['ado_configuration'],
|
93
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
94
|
+
}
|
95
|
+
azure_devops_api_wrapper = AzureDevOpsApiWrapper(**wrapper_payload)
|
98
96
|
available_tools = azure_devops_api_wrapper.get_available_tools()
|
99
97
|
tools = []
|
100
98
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
@@ -1,9 +1,11 @@
|
|
1
1
|
from typing import List, Optional, Literal
|
2
2
|
from .ado_wrapper import AzureDevOpsApiWrapper # Import the API wrapper for Azure DevOps
|
3
3
|
from langchain_core.tools import BaseTool, BaseToolkit
|
4
|
-
from pydantic import create_model, BaseModel, Field
|
4
|
+
from pydantic import create_model, BaseModel, Field
|
5
5
|
|
6
6
|
import requests
|
7
|
+
from ....configurations.ado import AdoConfiguration
|
8
|
+
from ....configurations.pgvector import PgVectorConfiguration
|
7
9
|
from ...base.tool import BaseAction
|
8
10
|
from ...utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length, check_connection_response
|
9
11
|
|
@@ -24,23 +26,11 @@ class AzureDevOpsWorkItemsToolkit(BaseToolkit):
|
|
24
26
|
'toolkit_name': True,
|
25
27
|
'max_toolkit_length': AzureDevOpsWorkItemsToolkit.toolkit_max_length})
|
26
28
|
),
|
27
|
-
|
28
|
-
description="ADO organization url",
|
29
|
-
json_schema_extra={
|
30
|
-
'configuration': True
|
31
|
-
})),
|
32
|
-
project=(str, Field(description="ADO project",
|
33
|
-
json_schema_extra={
|
34
|
-
'configuration': True
|
35
|
-
}
|
36
|
-
)),
|
37
|
-
token=(SecretStr, Field(description="ADO token", json_schema_extra={'secret': True, 'configuration': True})),
|
29
|
+
ado_configuration=(AdoConfiguration, Field(description="Ado Work Item configuration", json_schema_extra={'configuration_types': ['ado_work_item']})),
|
38
30
|
limit=(Optional[int], Field(description="ADO plans limit used for limitation of the list with results", default=5)),
|
39
31
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
40
32
|
# indexer settings
|
41
|
-
|
42
|
-
default=None,
|
43
|
-
json_schema_extra={'secret': True})),
|
33
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
44
34
|
# embedder settings
|
45
35
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
|
46
36
|
default="HuggingFaceEmbeddings")),
|
@@ -51,7 +41,7 @@ class AzureDevOpsWorkItemsToolkit(BaseToolkit):
|
|
51
41
|
'json_schema_extra': {
|
52
42
|
'metadata': {
|
53
43
|
"label": "ADO boards",
|
54
|
-
"icon_url":
|
44
|
+
"icon_url": "ado-boards-icon.svg",
|
55
45
|
"categories": ["project management"],
|
56
46
|
"extra_categories": ["work item management", "issue tracking", "agile boards"],
|
57
47
|
"sections": {
|
@@ -75,9 +65,12 @@ class AzureDevOpsWorkItemsToolkit(BaseToolkit):
|
|
75
65
|
|
76
66
|
@check_connection_response
|
77
67
|
def check_connection(self):
|
68
|
+
ado_config = self.ado_work_item_configuration.ado_configuration if self.ado_work_item_configuration else None
|
69
|
+
if not ado_config:
|
70
|
+
raise ValueError("ADO work item configuration is required")
|
78
71
|
response = requests.get(
|
79
|
-
f'{
|
80
|
-
headers={'Authorization': f'Bearer {
|
72
|
+
f'{ado_config.organization_url}/{ado_config.project}/_apis/wit/workitemtypes?api-version=7.0',
|
73
|
+
headers={'Authorization': f'Bearer {ado_config.token}'},
|
81
74
|
timeout=5
|
82
75
|
)
|
83
76
|
return response
|
@@ -93,7 +86,13 @@ class AzureDevOpsWorkItemsToolkit(BaseToolkit):
|
|
93
86
|
if selected_tools is None:
|
94
87
|
selected_tools = []
|
95
88
|
|
96
|
-
|
89
|
+
wrapper_payload = {
|
90
|
+
**kwargs,
|
91
|
+
# TODO use ado_configuration fields in AzureDevOpsApiWrapper
|
92
|
+
**kwargs['ado_configuration'],
|
93
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
94
|
+
}
|
95
|
+
azure_devops_api_wrapper = AzureDevOpsApiWrapper(**wrapper_payload)
|
97
96
|
available_tools = azure_devops_api_wrapper.get_available_tools()
|
98
97
|
tools = []
|
99
98
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
@@ -15,10 +15,8 @@ name = "azure_search"
|
|
15
15
|
def get_tools(tool):
|
16
16
|
return AzureSearchToolkit().get_toolkit(
|
17
17
|
selected_tools=tool['settings'].get('selected_tools', []),
|
18
|
-
|
19
|
-
endpoint=tool['settings'].get('azure_search_configuration', {}).get('endpoint', None),
|
18
|
+
azure_search_configuration=tool['settings']['azure_search_configuration'],
|
20
19
|
index_name=tool['settings'].get('index_name', None),
|
21
|
-
api_base=tool['settings'].get('azure_search_configuration', {}).get('api_base', None),
|
22
20
|
api_version=tool['settings'].get('api_version', None),
|
23
21
|
openai_api_key=tool['settings'].get('access_token', None),
|
24
22
|
model_name=tool['settings'].get('model_name', None),
|
@@ -71,7 +69,12 @@ class AzureSearchToolkit(BaseToolkit):
|
|
71
69
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
72
70
|
if selected_tools is None:
|
73
71
|
selected_tools = []
|
74
|
-
|
72
|
+
wrapper_payload = {
|
73
|
+
**kwargs,
|
74
|
+
# TODO use azure_search_configuration fields
|
75
|
+
**kwargs['azure_search_configuration'],
|
76
|
+
}
|
77
|
+
azure_search_api_wrapper = AzureSearchApiWrapper(**wrapper_payload)
|
75
78
|
available_tools = azure_search_api_wrapper.get_available_tools()
|
76
79
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
77
80
|
tools = []
|
@@ -22,13 +22,12 @@ def get_tools(tool):
|
|
22
22
|
url=tool['settings']['url'],
|
23
23
|
project=tool['settings']['project'],
|
24
24
|
repository=tool['settings']['repository'],
|
25
|
-
|
26
|
-
password=tool['settings'].get('bitbucket_configuration', {}).get('password', ''),
|
25
|
+
bitbucket_configuration=tool['settings']['bitbucket_configuration'],
|
27
26
|
branch=tool['settings']['branch'],
|
28
27
|
cloud=tool['settings'].get('cloud'),
|
29
28
|
llm=tool['settings'].get('llm', None),
|
30
29
|
alita=tool['settings'].get('alita', None),
|
31
|
-
|
30
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
32
31
|
collection_name=str(tool['toolkit_name']),
|
33
32
|
doctype='code',
|
34
33
|
embedding_model="HuggingFaceEmbeddings",
|
@@ -91,7 +90,13 @@ class AlitaBitbucketToolkit(BaseToolkit):
|
|
91
90
|
selected_tools = []
|
92
91
|
if kwargs["cloud"] is None:
|
93
92
|
kwargs["cloud"] = True if "bitbucket.org" in kwargs.get('url') else False
|
94
|
-
|
93
|
+
wrapper_payload = {
|
94
|
+
**kwargs,
|
95
|
+
# TODO use bitbucket_configuration fields
|
96
|
+
**kwargs['bitbucket_configuration'],
|
97
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
98
|
+
}
|
99
|
+
bitbucket_api_wrapper = BitbucketAPIWrapper(**wrapper_payload)
|
95
100
|
available_tools: List[Dict] = __all__
|
96
101
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
97
102
|
tools = []
|
@@ -17,9 +17,7 @@ def get_tools(tool):
|
|
17
17
|
base_url=tool['settings']['base_url'],
|
18
18
|
space=tool['settings'].get('space', None),
|
19
19
|
cloud=tool['settings'].get('cloud', True),
|
20
|
-
|
21
|
-
username=tool['settings'].get('confluence_configuration', {}).get('username', None),
|
22
|
-
token=tool['settings'].get('confluence_configuration', {}).get('token', None),
|
20
|
+
confluence_configuration=tool['settings']['confluence_configuration'],
|
23
21
|
limit=tool['settings'].get('limit', 5),
|
24
22
|
labels=parse_list(tool['settings'].get('labels', None)),
|
25
23
|
additional_fields=tool['settings'].get('additional_fields', []),
|
@@ -28,7 +26,7 @@ def get_tools(tool):
|
|
28
26
|
llm=tool['settings'].get('llm', None),
|
29
27
|
toolkit_name=tool.get('toolkit_name'),
|
30
28
|
# indexer settings
|
31
|
-
|
29
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
32
30
|
collection_name=str(tool['toolkit_name']),
|
33
31
|
doctype='doc',
|
34
32
|
embedding_model="HuggingFaceEmbeddings",
|
@@ -120,7 +118,13 @@ class ConfluenceToolkit(BaseToolkit):
|
|
120
118
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
121
119
|
if selected_tools is None:
|
122
120
|
selected_tools = []
|
123
|
-
|
121
|
+
wrapper_payload = {
|
122
|
+
**kwargs,
|
123
|
+
# TODO use confluence_configuration fields
|
124
|
+
**kwargs['confluence_configuration'],
|
125
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
126
|
+
}
|
127
|
+
confluence_api_wrapper = ConfluenceAPIWrapper(**wrapper_payload)
|
124
128
|
prefix = clean_string(toolkit_name, ConfluenceToolkit.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
125
129
|
available_tools = confluence_api_wrapper.get_available_tools()
|
126
130
|
tools = []
|
@@ -6,6 +6,7 @@ from pydantic import BaseModel, ConfigDict, Field, create_model, SecretStr
|
|
6
6
|
from ..base.tool import BaseAction
|
7
7
|
from .api_wrapper import FigmaApiWrapper, GLOBAL_LIMIT
|
8
8
|
from ..utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length
|
9
|
+
from ...configurations.pgvector import PgVectorConfiguration
|
9
10
|
|
10
11
|
name = "figma"
|
11
12
|
|
@@ -21,7 +22,7 @@ def get_tools(tool):
|
|
21
22
|
toolkit_name=tool.get('toolkit_name'),
|
22
23
|
# indexer settings
|
23
24
|
llm=tool['settings'].get('llm', None),
|
24
|
-
|
25
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
25
26
|
collection_name=str(tool['toolkit_name']),
|
26
27
|
doctype='doc',
|
27
28
|
embedding_model="HuggingFaceEmbeddings",
|
@@ -54,9 +55,7 @@ class FigmaToolkit(BaseToolkit):
|
|
54
55
|
Field(default=[], json_schema_extra={"args_schemas": selected_tools}),
|
55
56
|
),
|
56
57
|
# indexer settings
|
57
|
-
|
58
|
-
default=None,
|
59
|
-
json_schema_extra={'secret': True})),
|
58
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
60
59
|
|
61
60
|
# embedder settings
|
62
61
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
@@ -93,7 +92,11 @@ class FigmaToolkit(BaseToolkit):
|
|
93
92
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
94
93
|
if selected_tools is None:
|
95
94
|
selected_tools = []
|
96
|
-
|
95
|
+
wrapper_payload = {
|
96
|
+
**kwargs,
|
97
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
98
|
+
}
|
99
|
+
figma_api_wrapper = FigmaApiWrapper(**wrapper_payload)
|
97
100
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
98
101
|
available_tools = figma_api_wrapper.get_available_tools()
|
99
102
|
tools = []
|
@@ -4,7 +4,7 @@ import json
|
|
4
4
|
import logging
|
5
5
|
import re
|
6
6
|
from enum import Enum
|
7
|
-
from typing import Dict, Generator, Optional, Union
|
7
|
+
from typing import Dict, List, Generator, Optional, Union
|
8
8
|
|
9
9
|
import requests
|
10
10
|
from FigmaPy import FigmaPy
|
@@ -13,6 +13,7 @@ from langchain_core.tools import ToolException
|
|
13
13
|
from pydantic import Field, PrivateAttr, create_model, model_validator, SecretStr
|
14
14
|
|
15
15
|
from ..elitea_base import BaseVectorStoreToolApiWrapper, extend_with_vector_tools
|
16
|
+
from ..utils.content_parser import load_content_from_bytes
|
16
17
|
|
17
18
|
GLOBAL_LIMIT = 10000
|
18
19
|
|
@@ -235,15 +236,27 @@ class FigmaApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
235
236
|
global_regexp: Optional[str] = Field(default=None)
|
236
237
|
_client: Optional[FigmaPy] = PrivateAttr()
|
237
238
|
|
238
|
-
def _base_loader(self, project_id: str, **kwargs) -> Generator[Document, None, None]:
|
239
|
-
files =
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
239
|
+
def _base_loader(self, project_id: Optional[str] = None, file_keys: Optional[List[str]] = None, **kwargs) -> Generator[Document, None, None]:
|
240
|
+
files = []
|
241
|
+
if project_id:
|
242
|
+
files = json.loads(self.get_project_files(project_id)).get('files', [])
|
243
|
+
for file in files:
|
244
|
+
yield Document(page_content=json.dumps(file), metadata={
|
245
|
+
'id': file.get('key', ''),
|
246
|
+
'file_key': file.get('key', ''),
|
247
|
+
'name': file.get('name', ''),
|
248
|
+
'updated_on': file.get('last_modified', '')
|
249
|
+
})
|
250
|
+
elif file_keys:
|
251
|
+
for file_key in file_keys:
|
252
|
+
file = self._client.get_file(file_key)
|
253
|
+
metadata = {
|
254
|
+
'id': file_key,
|
255
|
+
'file_key': file_key,
|
256
|
+
'name': file.name,
|
257
|
+
'updated_on': file.last_modified
|
258
|
+
}
|
259
|
+
yield Document(page_content=json.dumps(metadata), metadata=metadata)
|
247
260
|
|
248
261
|
def _process_document(self, document: Document) -> Generator[Document, None, None]:
|
249
262
|
file_key = document.metadata.get('id', '')
|
@@ -257,12 +270,19 @@ class FigmaApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
257
270
|
|
258
271
|
# iterate over images values
|
259
272
|
for node_id, image_url in images.items():
|
273
|
+
if not image_url:
|
274
|
+
logging.warning(f"Image URL not found for node_id {node_id} in file {file_key}. Skipping.")
|
275
|
+
continue
|
260
276
|
response = requests.get(image_url)
|
261
277
|
if response.status_code == 200:
|
262
278
|
content_type = response.headers.get('Content-Type', '')
|
263
279
|
if 'text/html' not in content_type.lower():
|
280
|
+
extension = f".{content_type.split('/')[-1]}" if content_type.startswith('image') else '.txt'
|
281
|
+
page_content = load_content_from_bytes(
|
282
|
+
file_content=response.content,
|
283
|
+
extension=extension, llm = self.llm)
|
264
284
|
yield Document(
|
265
|
-
page_content=
|
285
|
+
page_content=page_content,
|
266
286
|
metadata={
|
267
287
|
'file_key': file_key,
|
268
288
|
'node_id': node_id,
|
@@ -273,7 +293,12 @@ class FigmaApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
273
293
|
def _index_tool_params(self):
|
274
294
|
"""Return the parameters for indexing data."""
|
275
295
|
return {
|
276
|
-
"project_id": (str, Field(
|
296
|
+
"project_id": (Optional[str], Field(
|
297
|
+
description="ID of the project to list files from: i.e. '55391681'",
|
298
|
+
default=None)),
|
299
|
+
'file_keys': (Optional[List[str]], Field(
|
300
|
+
description="List of file keys to index: i.e. ['Fp24FuzPwH0L74ODSrCnQo', 'jmhAr6q78dJoMRqt48zisY']",
|
301
|
+
default=None))
|
277
302
|
}
|
278
303
|
|
279
304
|
def _send_request(
|
@@ -19,14 +19,10 @@ def _get_toolkit(tool) -> BaseToolkit:
|
|
19
19
|
github_repository=tool['settings']['repository'],
|
20
20
|
active_branch=tool['settings']['active_branch'],
|
21
21
|
github_base_branch=tool['settings']['base_branch'],
|
22
|
-
|
23
|
-
github_username=tool['settings'].get('github_configuration', {}).get('username', ''),
|
24
|
-
github_password=tool['settings'].get('github_configuration', {}).get('password', ''),
|
25
|
-
github_app_id=tool['settings'].get('github_configuration', {}).get('app_id', None),
|
26
|
-
github_app_private_key=tool['settings'].get('github_configuration', {}).get('app_private_key', None),
|
22
|
+
github_configuration=tool['settings']['github_configuration'],
|
27
23
|
llm=tool['settings'].get('llm', None),
|
28
24
|
alita=tool['settings'].get('alita', None),
|
29
|
-
|
25
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
30
26
|
collection_name=str(tool['toolkit_name']),
|
31
27
|
doctype='code',
|
32
28
|
embedding_model="HuggingFaceEmbeddings",
|
@@ -71,9 +67,6 @@ class AlitaGitHubToolkit(BaseToolkit):
|
|
71
67
|
active_branch=(Optional[str], Field(description="Active branch", default="main")),
|
72
68
|
base_branch=(Optional[str], Field(description="Github Base branch", default="main")),
|
73
69
|
# indexer settings
|
74
|
-
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
75
|
-
default=None,
|
76
|
-
json_schema_extra={'secret': True})),
|
77
70
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
78
71
|
embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
|
79
72
|
selected_tools=(List[Literal[tuple(selected_tools)]],
|
@@ -84,7 +77,13 @@ class AlitaGitHubToolkit(BaseToolkit):
|
|
84
77
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
85
78
|
if selected_tools is None:
|
86
79
|
selected_tools = []
|
87
|
-
|
80
|
+
wrapper_payload = {
|
81
|
+
**kwargs,
|
82
|
+
# TODO use github_configuration fields
|
83
|
+
**kwargs['github_configuration'],
|
84
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
85
|
+
}
|
86
|
+
github_api_wrapper = AlitaGitHubAPIWrapper(**wrapper_payload)
|
88
87
|
available_tools: List[Dict] = github_api_wrapper.get_available_tools()
|
89
88
|
tools = []
|
90
89
|
prefix = clean_string(toolkit_name, AlitaGitHubToolkit.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
@@ -20,11 +20,11 @@ def get_tools(tool):
|
|
20
20
|
url=tool['settings']['url'],
|
21
21
|
repository=tool['settings']['repository'],
|
22
22
|
branch=tool['settings']['branch'],
|
23
|
-
|
23
|
+
gitlab_configuration=tool['settings']['gitlab_configuration'],
|
24
24
|
|
25
25
|
llm=tool['settings'].get('llm', None),
|
26
26
|
alita=tool['settings'].get('alita', None),
|
27
|
-
|
27
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
28
28
|
collection_name=str(tool['toolkit_name']),
|
29
29
|
doctype='code',
|
30
30
|
embedding_model="HuggingFaceEmbeddings",
|
@@ -49,8 +49,7 @@ class AlitaGitlabToolkit(BaseToolkit):
|
|
49
49
|
gitlab_configuration=(Optional[GitlabConfiguration], Field(description="GitLab configuration", json_schema_extra={'configuration_types': ['gitlab']})),
|
50
50
|
branch=(str, Field(description="Main branch", default="main")),
|
51
51
|
# indexer settings
|
52
|
-
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector
|
53
|
-
json_schema_extra={'configuration_types': ['pgvector']})),
|
52
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
54
53
|
# embedder settings
|
55
54
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
56
55
|
embedding_model_params=(dict, Field(description="Embedding model parameters: i.e. `{'model_name': 'sentence-transformers/all-MiniLM-L6-v2'}", default={"model_name": "sentence-transformers/all-MiniLM-L6-v2"})),
|
@@ -80,7 +79,13 @@ class AlitaGitlabToolkit(BaseToolkit):
|
|
80
79
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
81
80
|
if selected_tools is None:
|
82
81
|
selected_tools = []
|
83
|
-
|
82
|
+
wrapper_payload = {
|
83
|
+
**kwargs,
|
84
|
+
# TODO use gitlab_configuration fields
|
85
|
+
**kwargs['gitlab_configuration'],
|
86
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
87
|
+
}
|
88
|
+
gitlab_api_wrapper = GitLabAPIWrapper(**wrapper_payload)
|
84
89
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
85
90
|
available_tools: List[Dict] = gitlab_api_wrapper.get_available_tools()
|
86
91
|
tools = []
|
@@ -64,7 +64,7 @@ class BigQueryToolkitConfig(BaseModel):
|
|
64
64
|
def _get_toolkit(tool) -> BaseToolkit:
|
65
65
|
return BigQueryToolkit().get_toolkit(
|
66
66
|
selected_tools=tool["settings"].get("selected_tools", []),
|
67
|
-
|
67
|
+
bigquery_configuration=tool["settings"]["bigquery_configuration"],
|
68
68
|
toolkit_name=tool.get("toolkit_name"),
|
69
69
|
)
|
70
70
|
|
@@ -109,7 +109,12 @@ class BigQueryToolkit(BaseToolkit):
|
|
109
109
|
toolkit_name: Optional[str] = None,
|
110
110
|
**kwargs,
|
111
111
|
) -> "BigQueryToolkit":
|
112
|
-
|
112
|
+
wrapper_payload = {
|
113
|
+
**kwargs,
|
114
|
+
# TODO use bigquery_configuration fields
|
115
|
+
**kwargs['bigquery_configuration'],
|
116
|
+
}
|
117
|
+
bigquery_api_wrapper = BigQueryApiWrapper(**wrapper_payload)
|
113
118
|
instance = cls(
|
114
119
|
tools=[], api_wrapper=bigquery_api_wrapper, toolkit_name=toolkit_name
|
115
120
|
)
|
alita_sdk/tools/jira/__init__.py
CHANGED
@@ -16,9 +16,7 @@ def get_tools(tool):
|
|
16
16
|
selected_tools=tool['settings'].get('selected_tools', []),
|
17
17
|
base_url=tool['settings'].get('base_url'),
|
18
18
|
cloud=tool['settings'].get('cloud', True),
|
19
|
-
|
20
|
-
username=tool['settings'].get('jira_configuration', {}).get('username', None),
|
21
|
-
token=tool['settings'].get('jira_configuration', {}).get('token', None),
|
19
|
+
jira_configuration=tool['settings']['jira_configuration'],
|
22
20
|
limit=tool['settings'].get('limit', 5),
|
23
21
|
labels=parse_list(tool['settings'].get('labels', [])),
|
24
22
|
additional_fields=tool['settings'].get('additional_fields', []),
|
@@ -26,7 +24,7 @@ def get_tools(tool):
|
|
26
24
|
# indexer settings
|
27
25
|
llm=tool['settings'].get('llm', None),
|
28
26
|
alita=tool['settings'].get('alita', None),
|
29
|
-
|
27
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
30
28
|
collection_name=str(tool['toolkit_name']),
|
31
29
|
embedding_model="HuggingFaceEmbeddings",
|
32
30
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -123,7 +121,13 @@ class JiraToolkit(BaseToolkit):
|
|
123
121
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
124
122
|
if selected_tools is None:
|
125
123
|
selected_tools = []
|
126
|
-
|
124
|
+
wrapper_payload = {
|
125
|
+
**kwargs,
|
126
|
+
# TODO use jira_configuration fields
|
127
|
+
**kwargs['jira_configuration'],
|
128
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
129
|
+
}
|
130
|
+
jira_api_wrapper = JiraApiWrapper(**wrapper_payload)
|
127
131
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
128
132
|
available_tools = jira_api_wrapper.get_available_tools()
|
129
133
|
tools = []
|
@@ -30,7 +30,7 @@ def get_tools(tool):
|
|
30
30
|
environment_config = tool['settings'].get('environment_config', {})
|
31
31
|
toolkit = PostmanToolkit.get_toolkit(
|
32
32
|
selected_tools=tool['settings'].get('selected_tools', []),
|
33
|
-
|
33
|
+
postman_configuration=tool['settings']['postman_configuration'],
|
34
34
|
base_url=tool['settings'].get(
|
35
35
|
'base_url', 'https://api.getpostman.com'),
|
36
36
|
collection_id=tool['settings'].get('collection_id', None),
|
@@ -91,7 +91,12 @@ class PostmanToolkit(BaseToolkit):
|
|
91
91
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
92
92
|
if selected_tools is None:
|
93
93
|
selected_tools = []
|
94
|
-
|
94
|
+
wrapper_payload = {
|
95
|
+
**kwargs,
|
96
|
+
# TODO use postman_configuration fields
|
97
|
+
**kwargs['postman_configuration'],
|
98
|
+
}
|
99
|
+
postman_api_wrapper = PostmanApiWrapper(**wrapper_payload)
|
95
100
|
prefix = clean_string(str(toolkit_name), cls.toolkit_max_length) + \
|
96
101
|
TOOLKIT_SPLITTER if toolkit_name else ''
|
97
102
|
available_tools = postman_api_wrapper.get_available_tools()
|
@@ -17,7 +17,7 @@ def get_tools(tool):
|
|
17
17
|
selected_tools=tool['settings'].get('selected_tools', []),
|
18
18
|
base_url=tool['settings'].get('base_url', None),
|
19
19
|
qtest_project_id=tool['settings'].get('qtest_project_id', tool['settings'].get('project_id', None)),
|
20
|
-
|
20
|
+
qtest_configuration=tool['settings']['qtest_configuration'],
|
21
21
|
toolkit_name=tool.get('toolkit_name')
|
22
22
|
)
|
23
23
|
return toolkit.tools
|
@@ -60,7 +60,12 @@ class QtestToolkit(BaseToolkit):
|
|
60
60
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
61
61
|
if selected_tools is None:
|
62
62
|
selected_tools = []
|
63
|
-
|
63
|
+
wrapper_payload = {
|
64
|
+
**kwargs,
|
65
|
+
# TODO use qtest_configuration fields
|
66
|
+
**kwargs['qtest_configuration'],
|
67
|
+
}
|
68
|
+
qtest_api_wrapper = QtestApiWrapper(**wrapper_payload)
|
64
69
|
prefix = clean_string(str(toolkit_name), cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
65
70
|
available_tools = qtest_api_wrapper.get_available_tools()
|
66
71
|
tools = []
|
@@ -16,8 +16,7 @@ def get_tools(tool):
|
|
16
16
|
selected_tools=tool['settings'].get('selected_tools', []),
|
17
17
|
instance_alias=tool['settings'].get('instance_alias', None),
|
18
18
|
base_url=tool['settings']['base_url'],
|
19
|
-
|
20
|
-
username=tool['settings'].get('servicenow_configuration', {}).get('username', None),
|
19
|
+
servicenow_configuration=tool['settings']['servicenow_configuration'],
|
21
20
|
response_fields=tool['settings'].get('response_fields', None),
|
22
21
|
toolkit_name=tool.get('toolkit_name')
|
23
22
|
).get_tools()
|
@@ -72,7 +71,12 @@ class ServiceNowToolkit(BaseToolkit):
|
|
72
71
|
selected_tools = []
|
73
72
|
if 'response_fields' in kwargs and isinstance(kwargs['response_fields'], str):
|
74
73
|
kwargs['fields'] = [field.strip().lower() for field in kwargs['response_fields'].split(',') if field.strip()]
|
75
|
-
|
74
|
+
wrapper_payload = {
|
75
|
+
**kwargs,
|
76
|
+
# TODO use servicenow_configuration fields
|
77
|
+
**kwargs['servicenow_configuration'],
|
78
|
+
}
|
79
|
+
servicenow_api_wrapper = ServiceNowAPIWrapper(**wrapper_payload)
|
76
80
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
77
81
|
available_tools = servicenow_api_wrapper.get_available_tools()
|
78
82
|
tools = []
|
@@ -5,6 +5,7 @@ from pydantic import create_model, BaseModel, ConfigDict, Field, SecretStr
|
|
5
5
|
from .api_wrapper import SharepointApiWrapper
|
6
6
|
from ..base.tool import BaseAction
|
7
7
|
from ..utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length
|
8
|
+
from ...configurations.pgvector import PgVectorConfiguration
|
8
9
|
|
9
10
|
name = "sharepoint"
|
10
11
|
|
@@ -17,7 +18,7 @@ def get_tools(tool):
|
|
17
18
|
toolkit_name=tool.get('toolkit_name'),
|
18
19
|
llm=tool['settings'].get('llm'),
|
19
20
|
# indexer settings
|
20
|
-
|
21
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
21
22
|
collection_name=str(tool['toolkit_name']),
|
22
23
|
embedding_model="HuggingFaceEmbeddings",
|
23
24
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -40,9 +41,7 @@ class SharepointToolkit(BaseToolkit):
|
|
40
41
|
client_secret=(SecretStr, Field(description="Client Secret", json_schema_extra={'secret': True})),
|
41
42
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
42
43
|
# indexer settings
|
43
|
-
|
44
|
-
default=None,
|
45
|
-
json_schema_extra={'secret': True})),
|
44
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
46
45
|
|
47
46
|
# embedder settings
|
48
47
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
@@ -59,7 +58,11 @@ class SharepointToolkit(BaseToolkit):
|
|
59
58
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
60
59
|
if selected_tools is None:
|
61
60
|
selected_tools = []
|
62
|
-
|
61
|
+
wrapper_payload = {
|
62
|
+
**kwargs,
|
63
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
64
|
+
}
|
65
|
+
sharepoint_api_wrapper = SharepointApiWrapper(**wrapper_payload)
|
63
66
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
64
67
|
available_tools = sharepoint_api_wrapper.get_available_tools()
|
65
68
|
tools = []
|
@@ -20,7 +20,7 @@ name = "slack"
|
|
20
20
|
def get_tools(tool):
|
21
21
|
return SlackToolkit().get_toolkit(
|
22
22
|
selected_tools=tool['settings'].get('selected_tools', []),
|
23
|
-
|
23
|
+
slack_configuration=tool['settings']['slack_configuration'],
|
24
24
|
channel_id=tool['settings'].get('channel_id'),
|
25
25
|
toolkit_name=tool.get('toolkit_name')
|
26
26
|
).get_tools()
|
@@ -64,7 +64,12 @@ class SlackToolkit(BaseToolkit):
|
|
64
64
|
def get_toolkit(cls, selected_tools: Optional[List[str]] = None, toolkit_name: Optional[str] = None, **kwargs):
|
65
65
|
if selected_tools is None:
|
66
66
|
selected_tools = []
|
67
|
-
|
67
|
+
wrapper_payload = {
|
68
|
+
**kwargs,
|
69
|
+
# TODO use slack_configuration fields
|
70
|
+
**kwargs['slack_configuration'],
|
71
|
+
}
|
72
|
+
slack_api_wrapper = SlackApiWrapper(**wrapper_payload)
|
68
73
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
69
74
|
available_tools = slack_api_wrapper.get_available_tools()
|
70
75
|
tools = []
|
@@ -81,4 +86,3 @@ class SlackToolkit(BaseToolkit):
|
|
81
86
|
|
82
87
|
def get_tools(self) -> List[BaseTool]:
|
83
88
|
return self.tools
|
84
|
-
|
@@ -16,13 +16,12 @@ def get_tools(tool):
|
|
16
16
|
return TestrailToolkit().get_toolkit(
|
17
17
|
selected_tools=tool['settings'].get('selected_tools', []),
|
18
18
|
url=tool['settings']['url'],
|
19
|
-
|
20
|
-
email=tool['settings'].get('testrail_configuration', {}).get('username', None),
|
19
|
+
testrail_configuration=tool['settings']['testrail_configuration'],
|
21
20
|
toolkit_name=tool.get('toolkit_name'),
|
22
21
|
llm=tool['settings'].get('llm', None),
|
23
22
|
|
24
23
|
# indexer settings
|
25
|
-
|
24
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
26
25
|
collection_name=f"{tool.get('toolkit_name')}",
|
27
26
|
embedding_model="HuggingFaceEmbeddings",
|
28
27
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -80,7 +79,13 @@ class TestrailToolkit(BaseToolkit):
|
|
80
79
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
81
80
|
if selected_tools is None:
|
82
81
|
selected_tools = []
|
83
|
-
|
82
|
+
wrapper_payload = {
|
83
|
+
**kwargs,
|
84
|
+
# TODO use testrail_configuration fields
|
85
|
+
**kwargs['testrail_configuration'],
|
86
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
87
|
+
}
|
88
|
+
testrail_api_wrapper = TestrailAPIWrapper(**wrapper_payload)
|
84
89
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
85
90
|
available_tools = testrail_api_wrapper.get_available_tools()
|
86
91
|
tools = []
|
@@ -1,11 +1,11 @@
|
|
1
|
+
import os
|
2
|
+
import tempfile
|
3
|
+
from logging import getLogger
|
1
4
|
from pathlib import Path
|
2
5
|
|
3
6
|
from langchain_core.tools import ToolException
|
4
|
-
from logging import getLogger
|
5
|
-
from alita_sdk.runtime.langchain.document_loaders.constants import loaders_map
|
6
|
-
from langchain_core.documents import Document
|
7
7
|
|
8
|
-
from
|
8
|
+
from alita_sdk.runtime.langchain.document_loaders.constants import loaders_map
|
9
9
|
|
10
10
|
logger = getLogger(__name__)
|
11
11
|
|
@@ -147,26 +147,16 @@ def load_content(file_path: str, extension: str = None, loader_extra_config: dic
|
|
147
147
|
return ""
|
148
148
|
|
149
149
|
def load_content_from_bytes(file_content: bytes, extension: str = None, loader_extra_config: dict = None, llm = None) -> str:
|
150
|
-
|
151
|
-
return load_content(create_temp_file(file_content), extension, loader_extra_config, llm)
|
152
|
-
|
153
|
-
def file_to_bytes(filepath):
|
154
|
-
"""
|
155
|
-
Reads a file and returns its content as a bytes object.
|
156
|
-
|
157
|
-
Args:
|
158
|
-
filepath (str): The path to the file.
|
159
|
-
|
160
|
-
Returns:
|
161
|
-
bytes: The content of the file as a bytes object.
|
162
|
-
"""
|
150
|
+
temp_file_path = None
|
163
151
|
try:
|
164
|
-
with
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
152
|
+
with tempfile.NamedTemporaryFile(mode='w+b', delete=False) as temp_file:
|
153
|
+
temp_file.write(file_content)
|
154
|
+
temp_file.flush()
|
155
|
+
temp_file_path = temp_file.name
|
156
|
+
|
157
|
+
# Now the file is closed and can be read
|
158
|
+
result = load_content(temp_file_path, extension, loader_extra_config, llm)
|
159
|
+
return result
|
160
|
+
finally:
|
161
|
+
if temp_file_path and os.path.exists(temp_file_path):
|
162
|
+
os.remove(temp_file_path)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.230
|
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
|
@@ -181,7 +181,7 @@ venv\Scripts\activate
|
|
181
181
|
Install all required dependencies for the SDK and toolkits:
|
182
182
|
|
183
183
|
```bash
|
184
|
-
pip install -
|
184
|
+
pip install -U '.[all]'
|
185
185
|
```
|
186
186
|
|
187
187
|
Environment Setup
|
@@ -39,6 +39,7 @@ alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py,sha256=4
|
|
39
39
|
alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py,sha256=MZ2v-Nv7f7z2Lr6e6VWwi9nPzEjfYNSwHPhH-RV7agQ,1976
|
40
40
|
alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py,sha256=NzpoL4C7UzyzLouTSL_xTQw70MitNt-WZz3Eyl7QkTA,8294
|
41
41
|
alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py,sha256=fKezkgvIcLG7S2PVJp1a8sZd6C4XQKNZKAFC87DbQts,7003
|
42
|
+
alita_sdk/runtime/langchain/document_loaders/AlitaDocLoader.py,sha256=axlWTfTY0TfvLZqS9hUzXh9ZFzsbBB7C89b6WB-BSYM,1165
|
42
43
|
alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py,sha256=nHvXm5U5qa26FGRwl6YKCG7HGBV5erjqqyWowNWs7iI,5723
|
43
44
|
alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py,sha256=YBFYikrOEITfIavU0Xu7BQSNvPCFKzcmbJ_VDeQ6KdI,3078
|
44
45
|
alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py,sha256=5WXGcyHraSVj3ANHj_U6X4EDikoekrIYtS0Q_QqNIng,2608
|
@@ -50,8 +51,8 @@ alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py,sha256=CUVVnisx
|
|
50
51
|
alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py,sha256=B-wh9dtMhu5ImDfcPHAOkjMUFjaY2IRE7WFzKKDUf-U,3762
|
51
52
|
alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py,sha256=uNcV0En49_0u0RYB1sP1XfNspT2Xc5CacuJr9Jqv79Q,2972
|
52
53
|
alita_sdk/runtime/langchain/document_loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
|
-
alita_sdk/runtime/langchain/document_loaders/constants.py,sha256=
|
54
|
-
alita_sdk/runtime/langchain/document_loaders/utils.py,sha256=
|
54
|
+
alita_sdk/runtime/langchain/document_loaders/constants.py,sha256=QmNedd14q1t4px0LebVSvThKFo_X9z1YM_tFCXnOKj4,4577
|
55
|
+
alita_sdk/runtime/langchain/document_loaders/utils.py,sha256=9xghESf3axBbwxATyVuS0Yu-TWe8zWZnXgCD1ZVyNW0,2414
|
55
56
|
alita_sdk/runtime/langchain/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
57
|
alita_sdk/runtime/langchain/interfaces/kwextractor.py,sha256=kSJA9L8g8UArmHu7Bd9dIO0Rrq86JPUb8RYNlnN68FQ,3072
|
57
58
|
alita_sdk/runtime/langchain/interfaces/llm_processor.py,sha256=tbEsue5E31hz09HeMGDcdEipLyObQ5q1kFTIjEzUKDM,8667
|
@@ -112,16 +113,16 @@ alita_sdk/runtime/utils/toolkit_utils.py,sha256=I9QFqnaqfVgN26LUr6s3XlBlG6y0CoHU
|
|
112
113
|
alita_sdk/runtime/utils/utils.py,sha256=CpEl3LCeLbhzQySz08lkKPm7Auac6IiLF7WB8wmArMI,589
|
113
114
|
alita_sdk/tools/__init__.py,sha256=1AHqP2xyLjn92xVm70l9XIke6FkfHkLo5OoQVe4BuP8,10421
|
114
115
|
alita_sdk/tools/elitea_base.py,sha256=22P97EmUlO-eC8DoGPiSNjHNjTv8ru0Q05qnR3U9WWs,30572
|
115
|
-
alita_sdk/tools/ado/__init__.py,sha256=
|
116
|
+
alita_sdk/tools/ado/__init__.py,sha256=j4lt6MLWlpkIIVkHmAyVG3i_qQeQ3ZmL_g8BfMhVhVI,1289
|
116
117
|
alita_sdk/tools/ado/utils.py,sha256=PTCludvaQmPLakF2EbCGy66Mro4-rjDtavVP-xcB2Wc,1252
|
117
|
-
alita_sdk/tools/ado/repos/__init__.py,sha256=
|
118
|
-
alita_sdk/tools/ado/repos/repos_wrapper.py,sha256=
|
119
|
-
alita_sdk/tools/ado/test_plan/__init__.py,sha256=
|
120
|
-
alita_sdk/tools/ado/test_plan/test_plan_wrapper.py,sha256=
|
121
|
-
alita_sdk/tools/ado/wiki/__init__.py,sha256=
|
122
|
-
alita_sdk/tools/ado/wiki/ado_wrapper.py,sha256=
|
123
|
-
alita_sdk/tools/ado/work_item/__init__.py,sha256=
|
124
|
-
alita_sdk/tools/ado/work_item/ado_wrapper.py,sha256=
|
118
|
+
alita_sdk/tools/ado/repos/__init__.py,sha256=kc4ZJI3B9CDUp4q3jRSj7JZNc3fJwwMTsV40CiKO7Po,6111
|
119
|
+
alita_sdk/tools/ado/repos/repos_wrapper.py,sha256=nPVsS10Se52yHmZ_YXVGywCSaYLlBEYBTBlhBcDJr80,50143
|
120
|
+
alita_sdk/tools/ado/test_plan/__init__.py,sha256=w-tHu1uJakZSrREx0tD8sZ3-0Lz0rrv8Uj4phTzF4wU,5429
|
121
|
+
alita_sdk/tools/ado/test_plan/test_plan_wrapper.py,sha256=jQt8kFmdAzsopjByLTMiSnWtoqz_IUOmYkhPTVGeMnU,20265
|
122
|
+
alita_sdk/tools/ado/wiki/__init__.py,sha256=ARjmIAdx-1DcNvh_WW9Z-ZuFp86RKK-gDvzStxZHL_0,5358
|
123
|
+
alita_sdk/tools/ado/wiki/ado_wrapper.py,sha256=zg6wMRar1DTp-ZRlYaQifBEnpYmTrHXskTNPdrLdy8s,14759
|
124
|
+
alita_sdk/tools/ado/work_item/__init__.py,sha256=L7uYqUn1eAlJwtTiFWYdeSdc-33Am0beFdlC99DRXVY,5493
|
125
|
+
alita_sdk/tools/ado/work_item/ado_wrapper.py,sha256=ubeF2m8J6CGZF_gnkTEbmW_eh6YWsk7bD2clu9FmZpY,28313
|
125
126
|
alita_sdk/tools/advanced_jira_mining/__init__.py,sha256=pUTzECqGvYaR5qWY3JPUhrImrZgc7pCXuqSe5eWIE80,4604
|
126
127
|
alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py,sha256=nZPtuwVWp8VeHw1B8q9kdwf-6ZvHnlXTOGdcIMDkKpw,44211
|
127
128
|
alita_sdk/tools/aws/__init__.py,sha256=tB6GCOg4XGSpR6qgbgAF4MUQ5-YmQCbWurWgrVKEKQ8,181
|
@@ -130,11 +131,11 @@ alita_sdk/tools/aws/delta_lake/api_wrapper.py,sha256=bo0MPnhIQ787RL-dIA-e2dDMzxH
|
|
130
131
|
alita_sdk/tools/aws/delta_lake/schemas.py,sha256=yl8yYSCY3OrapElCcDSpirM9P-H2Hi6zZyZATv6JWrc,967
|
131
132
|
alita_sdk/tools/aws/delta_lake/tool.py,sha256=xXaaKnTGdoXhvYn89TmzWaV_zn79uTibpxCsi5FS_eU,1104
|
132
133
|
alita_sdk/tools/azure_ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
133
|
-
alita_sdk/tools/azure_ai/search/__init__.py,sha256=
|
134
|
+
alita_sdk/tools/azure_ai/search/__init__.py,sha256=FVWNSW4LlOXKt34fVUgXut5oZcok9-VZ7ZY7i7bPj1U,4157
|
134
135
|
alita_sdk/tools/azure_ai/search/api_wrapper.py,sha256=E4p6HPDlwgxfT_i6cvg9rN4Vn_47CVAyNBAKLIGq3mU,7265
|
135
136
|
alita_sdk/tools/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
136
137
|
alita_sdk/tools/base/tool.py,sha256=-N27AodZS49vdPCgFkU-bFS9bxoPopZBnNrmwInx3d0,864
|
137
|
-
alita_sdk/tools/bitbucket/__init__.py,sha256=
|
138
|
+
alita_sdk/tools/bitbucket/__init__.py,sha256=P5YgZI7PfL3PNLi1CCVxSMc7OZpdlTkY-j_mbJV22xo,5587
|
138
139
|
alita_sdk/tools/bitbucket/api_wrapper.py,sha256=OU55KjtFalYIZ4ioeBck0zjqTewB6BdwQuAS3Kud4R0,10847
|
139
140
|
alita_sdk/tools/bitbucket/bitbucket_constants.py,sha256=UsbhQ1iEvrKoxceTFPWTYhaXS1zSxbmjs1TwY0-P4gw,462
|
140
141
|
alita_sdk/tools/bitbucket/cloud_api_wrapper.py,sha256=VELi65tLXvszwCGQSqVfyVal0ylx9DgAmAGpRQL_Zkg,15522
|
@@ -202,7 +203,7 @@ alita_sdk/tools/code/linter/api_wrapper.py,sha256=wylpwhAw02Jt8L18CqBq2He5PbwIkx
|
|
202
203
|
alita_sdk/tools/code/loaders/codesearcher.py,sha256=XoXXZtIQZhvjIwZlnl_4wVGHC-3saYzFo5oDR_Zh3EY,529
|
203
204
|
alita_sdk/tools/code/sonar/__init__.py,sha256=u8wpgXJ_shToLl3G9-XEtGDor5dhmsnurIImh1-e-U0,3165
|
204
205
|
alita_sdk/tools/code/sonar/api_wrapper.py,sha256=nNqxcWN_6W8c0ckj-Er9HkNuAdgQLoWBXh5UyzNutis,2653
|
205
|
-
alita_sdk/tools/confluence/__init__.py,sha256=
|
206
|
+
alita_sdk/tools/confluence/__init__.py,sha256=y4nc4NoDvzeIEZaTlYqxgo8S8JVw6RtUl9_eOFddvQo,7389
|
206
207
|
alita_sdk/tools/confluence/api_wrapper.py,sha256=4WqjVeFWyFeb4-VD5v4_J69pbyjire4Op7cBSKU9EXw,85057
|
207
208
|
alita_sdk/tools/confluence/loader.py,sha256=4bf5qrJMEiJzuZp2NlxO2XObLD1w7fxss_WyMUpe8sg,9290
|
208
209
|
alita_sdk/tools/confluence/utils.py,sha256=Lxo6dBD0OlvM4o0JuK6qeB_4LV9BptiwJA9e1vqNcDw,435
|
@@ -210,16 +211,16 @@ alita_sdk/tools/custom_open_api/__init__.py,sha256=9aT5SPNPWcJC6jMZEM-3rUCXVULj_
|
|
210
211
|
alita_sdk/tools/custom_open_api/api_wrapper.py,sha256=sDSFpvEqpSvXHGiBISdQQcUecfO3md-_F8hAi6p2dvg,4340
|
211
212
|
alita_sdk/tools/elastic/__init__.py,sha256=iwnSRppRpzvJ1da2K3Glu8Uu41MhBDCYbguboLkEbW0,2818
|
212
213
|
alita_sdk/tools/elastic/api_wrapper.py,sha256=pl8CqQxteJAGwyOhMcld-ZgtOTFwwbv42OITQVe8rM0,1948
|
213
|
-
alita_sdk/tools/figma/__init__.py,sha256=
|
214
|
-
alita_sdk/tools/figma/api_wrapper.py,sha256=
|
215
|
-
alita_sdk/tools/github/__init__.py,sha256=
|
214
|
+
alita_sdk/tools/figma/__init__.py,sha256=281OU_aw4Y87Do09HhDSi5zL5ne9YlrsRLZQo8s1U8Q,5316
|
215
|
+
alita_sdk/tools/figma/api_wrapper.py,sha256=Rtgt9FvR8VD0oPdYhlgvVyXLVqLTjtiOPTlwNeaV80w,20560
|
216
|
+
alita_sdk/tools/github/__init__.py,sha256=CtU52t6-jd6JErWe3M2HF5XXWzFj9CqGmG7HBjUet6E,5348
|
216
217
|
alita_sdk/tools/github/api_wrapper.py,sha256=JRhn7Cgg2j6uEwlvuQCMeISNYvRV2Yahx-v-p8HspUQ,8767
|
217
218
|
alita_sdk/tools/github/github_client.py,sha256=nxnSXsDul2PPbWvYZS8TmAFFmR-5ALyakNoV5LN2D4U,86617
|
218
219
|
alita_sdk/tools/github/graphql_client_wrapper.py,sha256=d3AGjzLGH_hdQV2V8HeAX92dJ4dlnE5OXqUlCO_PBr0,71539
|
219
220
|
alita_sdk/tools/github/schemas.py,sha256=yFsqivfjCPRk9GxFJrL8sTz6nnjFCZ0j5DIfPtGSsvA,13852
|
220
221
|
alita_sdk/tools/github/tool.py,sha256=Jnnv5lenV5ds8AAdyo2m8hSzyJ117HZBjzHC6T1ck-M,1037
|
221
222
|
alita_sdk/tools/github/tool_prompts.py,sha256=y6ZW_FpUCE87Uop3WuQAZVRnzxO5t7xjBOI5bCqiluw,30194
|
222
|
-
alita_sdk/tools/gitlab/__init__.py,sha256=
|
223
|
+
alita_sdk/tools/gitlab/__init__.py,sha256=WuaIouTnMoQF7OTsfm7GblWW60Yf2IbUyQxjFHpK3ck,5127
|
223
224
|
alita_sdk/tools/gitlab/api_wrapper.py,sha256=KYCRO2pF8EPTLhWuEj64XsHPCYSucsf8S3R_ofJttrA,22301
|
224
225
|
alita_sdk/tools/gitlab/tools.py,sha256=vOGTlSaGaFmWn6LS6YFP-FuTqUPun9vnv1VrUcUHAZQ,16500
|
225
226
|
alita_sdk/tools/gitlab/utils.py,sha256=Z2XiqIg54ouqqt1to-geFybmkCb1I6bpE91wfnINH1I,2320
|
@@ -229,13 +230,13 @@ alita_sdk/tools/gmail/__init__.py,sha256=RkVWqVT335tpSUEVZUWqqPYMOYnxjkPmkBKLYdk
|
|
229
230
|
alita_sdk/tools/gmail/gmail_wrapper.py,sha256=t0IYM3zb77Ub8o9kv6HugNm_OoG5tN9T730hYmY8F-c,1312
|
230
231
|
alita_sdk/tools/gmail/utils.py,sha256=cu6pbSsyMIr1BQOSs9et1rbAkk-Z_u48PB9FtJwFhUs,448
|
231
232
|
alita_sdk/tools/google/__init__.py,sha256=YbDEXq3nBmWkXfqipqlPSc6kTAGTLckP8gswNfsA4jE,178
|
232
|
-
alita_sdk/tools/google/bigquery/__init__.py,sha256=
|
233
|
+
alita_sdk/tools/google/bigquery/__init__.py,sha256=Hmwvm8NTBxWfoLnkrJgG9ppAbEXigniiwYD3jLFHl3E,4463
|
233
234
|
alita_sdk/tools/google/bigquery/api_wrapper.py,sha256=I8wETiA36w6odKZwb_4TA1g_5RgUr1LOZg4hOpBC5to,19683
|
234
235
|
alita_sdk/tools/google/bigquery/schemas.py,sha256=Gb8KQZSoRkmjXiz21dTC95c1MHEHFcnA0lPTqb8ZjCY,4455
|
235
236
|
alita_sdk/tools/google/bigquery/tool.py,sha256=Esf9Hsp8I0e7-5EdkFqQ-bid0cfrg-bfSoHoW_IIARo,1027
|
236
237
|
alita_sdk/tools/google_places/__init__.py,sha256=mHKc7u9P2gqGDzqqJNQC9qiZYEm5gncnM_1XjtrM17o,3152
|
237
238
|
alita_sdk/tools/google_places/api_wrapper.py,sha256=7nZly6nk4f4Tm7s2MVdnnwlb-1_WHRrDhyjDiqoyPjA,4674
|
238
|
-
alita_sdk/tools/jira/__init__.py,sha256=
|
239
|
+
alita_sdk/tools/jira/__init__.py,sha256=CuE3LPxFuTtdel9YR7RS37wZzvxniPVCY6pDu4cBAdk,6927
|
239
240
|
alita_sdk/tools/jira/api_wrapper.py,sha256=gZXEtOZtWvINHipHPj8Dg6uNyYKZariLo4Bs3_wLJrA,75932
|
240
241
|
alita_sdk/tools/keycloak/__init__.py,sha256=0WB9yXMUUAHQRni1ghDEmd7GYa7aJPsTVlZgMCM9cQ0,3050
|
241
242
|
alita_sdk/tools/keycloak/api_wrapper.py,sha256=cOGr0f3S3-c6tRDBWI8wMnetjoNSxiV5rvC_0VHb8uw,3100
|
@@ -269,12 +270,12 @@ alita_sdk/tools/pandas/statsmodels/base_stats.py,sha256=jeKW1KfyaNi4M6wkru2iXHNr
|
|
269
270
|
alita_sdk/tools/pandas/statsmodels/descriptive.py,sha256=APdofBnEiRhMrn6tLKwH076NPp5uHe8VwmblN3lQLfQ,10217
|
270
271
|
alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py,sha256=fdNAayMB3W7avMfKJCcbf2_P54vUXbq8KVebOB48348,10508
|
271
272
|
alita_sdk/tools/pandas/statsmodels/regression.py,sha256=Y1pWK4u_qzrfA740K-FX0nZ5FREGGPk8mfvykPIYoiI,9164
|
272
|
-
alita_sdk/tools/postman/__init__.py,sha256
|
273
|
+
alita_sdk/tools/postman/__init__.py,sha256=-mAMWjyJ9ZI3UDt2vw29zO50gf0yy8XlnlLPiMVZwZk,5078
|
273
274
|
alita_sdk/tools/postman/api_wrapper.py,sha256=bKgnEQVGv3QhqTevzBOwiXxAd0-Y5vUI1-5U6YubJ5Q,96389
|
274
275
|
alita_sdk/tools/postman/postman_analysis.py,sha256=2d-Oi2UORosIePIUyncSONw9hY7dw8Zc7BQvCd4aqpg,45115
|
275
276
|
alita_sdk/tools/pptx/__init__.py,sha256=vVUrWnj7KWJgEk9oxGSsCAQ2SMSXrp_SFOdUHYQKcAo,3444
|
276
277
|
alita_sdk/tools/pptx/pptx_wrapper.py,sha256=yyCYcTlIY976kJ4VfPo4dyxj4yeii9j9TWP6W8ZIpN8,29195
|
277
|
-
alita_sdk/tools/qtest/__init__.py,sha256=
|
278
|
+
alita_sdk/tools/qtest/__init__.py,sha256=lfKftVpRQIQhoawufqAyv4f_gW6V4h1YpFxgQWtZoBg,3896
|
278
279
|
alita_sdk/tools/qtest/api_wrapper.py,sha256=cWXpmjjel9CYIXXjetJkARLYZXqvHufSghctTHN0ggc,22296
|
279
280
|
alita_sdk/tools/qtest/tool.py,sha256=kKzNPS4fUC76WQQttQ6kdVANViHEvKE8Kf174MQiNYU,562
|
280
281
|
alita_sdk/tools/rally/__init__.py,sha256=gw5EkDTeVQ77zGz7NSOkDuhycUpJ_DQC7g_bwwVn64k,4105
|
@@ -285,24 +286,24 @@ alita_sdk/tools/report_portal/report_portal_client.py,sha256=-wUDudCQJZCJ38LI2aA
|
|
285
286
|
alita_sdk/tools/salesforce/__init__.py,sha256=dwkLuvxPbfLZV31c1GqlQcDlhaloJxQ2X3Dc4z5BUEc,3003
|
286
287
|
alita_sdk/tools/salesforce/api_wrapper.py,sha256=kvl7WGzN8Kto5OSgm91AxMFmBFJHRhV_5aFwKWExFMM,9451
|
287
288
|
alita_sdk/tools/salesforce/model.py,sha256=wzpbTdUx5mANApAZFQIKzq7xXtYBiiSlKvrTX4ySQS8,1887
|
288
|
-
alita_sdk/tools/servicenow/__init__.py,sha256=
|
289
|
+
alita_sdk/tools/servicenow/__init__.py,sha256=_au5Ryd4gGEHJ6b1lPnJhbC_KUvd6iW8rdYgcjijXV8,4435
|
289
290
|
alita_sdk/tools/servicenow/api_wrapper.py,sha256=WpH-bBLGFdhehs4g-K-WAkNuaD1CSrwsDpdgB3RG53s,6120
|
290
291
|
alita_sdk/tools/servicenow/servicenow_client.py,sha256=Rdqfu-ll-qbnclMzChLZBsfXRDzgoX_FdeI2WLApWxc,3269
|
291
|
-
alita_sdk/tools/sharepoint/__init__.py,sha256=
|
292
|
+
alita_sdk/tools/sharepoint/__init__.py,sha256=ZoqNrKPqswuwTg2jTj8_jHlNUSCZQUiK1OEWDZCD6B0,4162
|
292
293
|
alita_sdk/tools/sharepoint/api_wrapper.py,sha256=YCD0DkdgTyrDs4cSOO_LQjTVfmoA8U_keGGJlefxSTo,9083
|
293
294
|
alita_sdk/tools/sharepoint/authorization_helper.py,sha256=n-nL5dlBoLMK70nHu7P2RYCb8C6c9HMA_gEaw8LxuhE,2007
|
294
295
|
alita_sdk/tools/sharepoint/utils.py,sha256=fZ1YzAu5CTjKSZeslowpOPH974902S8vCp1Wu7L44LM,446
|
295
|
-
alita_sdk/tools/slack/__init__.py,sha256=
|
296
|
+
alita_sdk/tools/slack/__init__.py,sha256=Z0gzBVHHISd3EO7bo6A0WJf-fU178s-7F8bBKkwLn-E,3801
|
296
297
|
alita_sdk/tools/slack/api_wrapper.py,sha256=5VrV7iSGno8ZcDzEHdGPNhInhtODGPPvAzoZ9W9iQWE,14009
|
297
298
|
alita_sdk/tools/sql/__init__.py,sha256=9Lh8YHKO8zD5eeolpR4O9swTUsjpXj9LVDn8fM-T5IM,3506
|
298
299
|
alita_sdk/tools/sql/api_wrapper.py,sha256=Rky0_CX9HWDQ2mClHGAgP3LHjYVX4iymPuilZMtaDlQ,3687
|
299
300
|
alita_sdk/tools/sql/models.py,sha256=AKJgSl_kEEz4fZfw3kbvdGHXaRZ-yiaqfJOB6YOj3i0,641
|
300
301
|
alita_sdk/tools/testio/__init__.py,sha256=qi12wyJXN02hrUXg08CbijcCL5pi30JMbJfiXjn1Zr0,2646
|
301
302
|
alita_sdk/tools/testio/api_wrapper.py,sha256=BvmL5h634BzG6p7ajnQLmj-uoAw1gjWnd4FHHu1h--Q,21638
|
302
|
-
alita_sdk/tools/testrail/__init__.py,sha256=
|
303
|
+
alita_sdk/tools/testrail/__init__.py,sha256=577XVaOAoXG3mDkojCsy5XCUlxCsdJf_2-_5U-afkOo,4961
|
303
304
|
alita_sdk/tools/testrail/api_wrapper.py,sha256=Aax0jspgidXYNxLIw6qTWu3dO2JOIS0ALIqsCzQuFbQ,32087
|
304
305
|
alita_sdk/tools/utils/__init__.py,sha256=155xepXPr4OEzs2Mz5YnjXcBpxSv1X2eznRUVoPtyK0,3268
|
305
|
-
alita_sdk/tools/utils/content_parser.py,sha256=
|
306
|
+
alita_sdk/tools/utils/content_parser.py,sha256=yi1IDLreqfM41w-PnoFEvVLtSV50qpNvKshJwbDTgqs,7172
|
306
307
|
alita_sdk/tools/vector_adapters/VectorStoreAdapter.py,sha256=wZ_MhVWPEgoPhKRvbPB6Qs34EPyWx0IW7ydY_GVBZFQ,3344
|
307
308
|
alita_sdk/tools/vector_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
308
309
|
alita_sdk/tools/xray/__init__.py,sha256=OYa1wveTm-lAhsJaGXMnwOrDQWl6ch--NjNLBeR63eM,4331
|
@@ -324,8 +325,8 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=JAeWf-RXohsxheUpT0iMDClc_izj-
|
|
324
325
|
alita_sdk/tools/zephyr_squad/__init__.py,sha256=0AI_j27xVO5Gk5HQMFrqPTd4uvuVTpiZUicBrdfEpKg,2796
|
325
326
|
alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
|
326
327
|
alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
|
327
|
-
alita_sdk-0.3.
|
328
|
-
alita_sdk-0.3.
|
329
|
-
alita_sdk-0.3.
|
330
|
-
alita_sdk-0.3.
|
331
|
-
alita_sdk-0.3.
|
328
|
+
alita_sdk-0.3.230.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
329
|
+
alita_sdk-0.3.230.dist-info/METADATA,sha256=jFOYe8oP7YbfYBFrKSoV_BtsZYIcsH2RPMmiQ-X2-tw,18896
|
330
|
+
alita_sdk-0.3.230.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
331
|
+
alita_sdk-0.3.230.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
|
332
|
+
alita_sdk-0.3.230.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|