alita-sdk 0.3.221__py3-none-any.whl → 0.3.222__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/tools/artifact.py +0 -1
- alita_sdk/tools/bitbucket/__init__.py +5 -1
- alita_sdk/tools/confluence/__init__.py +6 -1
- alita_sdk/tools/elitea_base.py +21 -47
- alita_sdk/tools/figma/__init__.py +5 -1
- alita_sdk/tools/github/__init__.py +5 -2
- alita_sdk/tools/gitlab/__init__.py +5 -2
- alita_sdk/tools/jira/__init__.py +11 -1
- alita_sdk/tools/sharepoint/__init__.py +5 -1
- alita_sdk/tools/sharepoint/api_wrapper.py +0 -1
- alita_sdk/tools/testrail/__init__.py +4 -0
- alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +91 -0
- alita_sdk/tools/vector_adapters/__init__.py +0 -0
- alita_sdk/tools/xray/__init__.py +11 -1
- alita_sdk/tools/zephyr_enterprise/__init__.py +5 -2
- alita_sdk/tools/zephyr_enterprise/api_wrapper.py +63 -20
- alita_sdk/tools/zephyr_essential/__init__.py +5 -2
- alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -1
- alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -1
- {alita_sdk-0.3.221.dist-info → alita_sdk-0.3.222.dist-info}/METADATA +1 -1
- {alita_sdk-0.3.221.dist-info → alita_sdk-0.3.222.dist-info}/RECORD +24 -22
- {alita_sdk-0.3.221.dist-info → alita_sdk-0.3.222.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.221.dist-info → alita_sdk-0.3.222.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.221.dist-info → alita_sdk-0.3.222.dist-info}/top_level.txt +0 -0
@@ -90,7 +90,6 @@ class ArtifactWrapper(BaseVectorStoreToolApiWrapper):
|
|
90
90
|
yield Document(page_content=str(value), metadata=metadata)
|
91
91
|
else:
|
92
92
|
document.page_content = json.dumps(str(page_content))
|
93
|
-
yield document
|
94
93
|
|
95
94
|
@extend_with_vector_tools
|
96
95
|
def get_available_tools(self):
|
@@ -27,7 +27,7 @@ def get_tools(tool):
|
|
27
27
|
llm=tool['settings'].get('llm', None),
|
28
28
|
alita=tool['settings'].get('alita', None),
|
29
29
|
connection_string=tool['settings'].get('connection_string', None),
|
30
|
-
collection_name=str(tool['
|
30
|
+
collection_name=str(tool['toolkit_name']),
|
31
31
|
doctype='code',
|
32
32
|
embedding_model="HuggingFaceEmbeddings",
|
33
33
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -60,6 +60,10 @@ class AlitaBitbucketToolkit(BaseToolkit):
|
|
60
60
|
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
61
61
|
default=None,
|
62
62
|
json_schema_extra={'secret': True})),
|
63
|
+
|
64
|
+
# embedder settings
|
65
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
66
|
+
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"})),
|
63
67
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
64
68
|
__config__=ConfigDict(json_schema_extra=
|
65
69
|
{
|
@@ -27,7 +27,7 @@ def get_tools(tool):
|
|
27
27
|
toolkit_name=tool.get('toolkit_name'),
|
28
28
|
# indexer settings
|
29
29
|
connection_string = tool['settings'].get('connection_string', None),
|
30
|
-
collection_name=str(tool['
|
30
|
+
collection_name=str(tool['toolkit_name']),
|
31
31
|
doctype='doc',
|
32
32
|
embedding_model="HuggingFaceEmbeddings",
|
33
33
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -84,6 +84,11 @@ class ConfluenceToolkit(BaseToolkit):
|
|
84
84
|
connection_string = (Optional[SecretStr], Field(description="Connection string for vectorstore",
|
85
85
|
default=None,
|
86
86
|
json_schema_extra={'secret': True})),
|
87
|
+
|
88
|
+
# embedder settings
|
89
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
90
|
+
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"})),
|
91
|
+
|
87
92
|
__config__=ConfigDict(json_schema_extra={
|
88
93
|
'metadata': {
|
89
94
|
"label": "Confluence",
|
alita_sdk/tools/elitea_base.py
CHANGED
@@ -12,6 +12,7 @@ from pydantic import BaseModel, create_model, Field, SecretStr
|
|
12
12
|
from alita_sdk.runtime.langchain.interfaces.llm_processor import get_embeddings
|
13
13
|
from .chunkers import markdown_chunker
|
14
14
|
from .utils import TOOLKIT_SPLITTER
|
15
|
+
from .vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
15
16
|
from ..runtime.utils.utils import IndexerKeywords
|
16
17
|
|
17
18
|
logger = logging.getLogger(__name__)
|
@@ -219,6 +220,10 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
219
220
|
embedding_model_params: Optional[Dict[str, Any]] = {"model_name": "sentence-transformers/all-MiniLM-L6-v2"}
|
220
221
|
vectorstore_type: Optional[str] = "PGVector"
|
221
222
|
|
223
|
+
def __init__(self, **kwargs):
|
224
|
+
super().__init__(**kwargs)
|
225
|
+
self._adapter = VectorStoreAdapterFactory.create_adapter(self.vectorstore_type)
|
226
|
+
|
222
227
|
def _index_tool_params(self, **kwargs) -> dict[str, tuple[type, Field]]:
|
223
228
|
"""
|
224
229
|
Returns a list of fields for index_data args schema.
|
@@ -329,36 +334,24 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
329
334
|
|
330
335
|
# TODO: init store once and re-use the instance
|
331
336
|
def _init_vector_store(self, collection_suffix: str = "", embeddings: Optional[Any] = None):
|
332
|
-
"""
|
337
|
+
"""Initializes the vector store wrapper with the provided parameters."""
|
333
338
|
try:
|
334
339
|
from alita_sdk.runtime.tools.vectorstore import VectorStoreWrapper
|
335
340
|
except ImportError:
|
336
341
|
from alita_sdk.runtime.tools.vectorstore import VectorStoreWrapper
|
337
|
-
|
342
|
+
|
338
343
|
# Validate collection_suffix length
|
339
344
|
if collection_suffix and len(collection_suffix.strip()) > 7:
|
340
345
|
raise ToolException("collection_suffix must be 7 characters or less")
|
341
|
-
|
346
|
+
|
342
347
|
# Create collection name with suffix if provided
|
343
348
|
collection_name = str(self.collection_name)
|
344
349
|
if collection_suffix and collection_suffix.strip():
|
345
350
|
collection_name = f"{self.collection_name}_{collection_suffix.strip()}"
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
"collection_name": collection_name,
|
351
|
-
"create_extension": True,
|
352
|
-
"alita_sdk_options": {
|
353
|
-
"target_schema": collection_name,
|
354
|
-
},
|
355
|
-
"connection_string": self.connection_string.get_secret_value()
|
356
|
-
}
|
357
|
-
elif self.vectorstore_type == 'Chroma':
|
358
|
-
vectorstore_params = {
|
359
|
-
"collection_name": collection_name,
|
360
|
-
"persist_directory": "./indexer_db"
|
361
|
-
}
|
351
|
+
|
352
|
+
# Get database-specific parameters using adapter
|
353
|
+
connection_string = self.connection_string.get_secret_value() if self.connection_string else None
|
354
|
+
vectorstore_params = self._adapter.get_vectorstore_params(collection_name, connection_string)
|
362
355
|
|
363
356
|
return VectorStoreWrapper(
|
364
357
|
llm=self.llm,
|
@@ -371,36 +364,17 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
371
364
|
)
|
372
365
|
|
373
366
|
def remove_index(self, collection_suffix: str = ""):
|
374
|
-
"""
|
375
|
-
|
376
|
-
""
|
377
|
-
|
378
|
-
|
367
|
+
"""Cleans the indexed data in the collection."""
|
368
|
+
vectorstore_wrapper = self._init_vector_store(collection_suffix)
|
369
|
+
collection_name = f"{self.collection_name}_{collection_suffix}" if collection_suffix else str(self.collection_name)
|
370
|
+
self._adapter.remove_collection(vectorstore_wrapper, collection_name)
|
371
|
+
return (f"Collection '{collection_name}' has been removed from the vector store.\n"
|
372
|
+
f"Available collections: {self.list_collections()}")
|
379
373
|
|
380
374
|
def list_collections(self):
|
381
|
-
"""
|
382
|
-
|
383
|
-
|
384
|
-
if self.vectorstore_type.lower() == 'PGVector'.lower():
|
385
|
-
from sqlalchemy import text
|
386
|
-
from sqlalchemy.orm import Session
|
387
|
-
|
388
|
-
# schema_name = self.vectorstore.collection_name
|
389
|
-
with Session(self._init_vector_store().vectorstore.session_maker.bind) as session:
|
390
|
-
get_collections = text("""
|
391
|
-
SELECT table_schema
|
392
|
-
FROM information_schema.columns
|
393
|
-
WHERE udt_name = 'vector';
|
394
|
-
""")
|
395
|
-
|
396
|
-
# Execute the raw SQL query
|
397
|
-
result = session.execute(get_collections)
|
398
|
-
|
399
|
-
# Fetch all rows from the result
|
400
|
-
docs = result.fetchall()
|
401
|
-
return str(docs)
|
402
|
-
vector_client = self._init_vector_store().vectoradapter.vectorstore._client
|
403
|
-
return ','.join([collection.name for collection in vector_client.list_collections()])
|
375
|
+
"""Lists all collections in the vector store."""
|
376
|
+
vectorstore_wrapper = self._init_vector_store()
|
377
|
+
return self._adapter.list_collections(vectorstore_wrapper)
|
404
378
|
|
405
379
|
def search_index(self,
|
406
380
|
query: str,
|
@@ -22,7 +22,7 @@ def get_tools(tool):
|
|
22
22
|
# indexer settings
|
23
23
|
llm=tool['settings'].get('llm', None),
|
24
24
|
connection_string = tool['settings'].get('connection_string', None),
|
25
|
-
collection_name=str(tool['
|
25
|
+
collection_name=str(tool['toolkit_name']),
|
26
26
|
doctype='doc',
|
27
27
|
embedding_model="HuggingFaceEmbeddings",
|
28
28
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -57,6 +57,10 @@ class FigmaToolkit(BaseToolkit):
|
|
57
57
|
connection_string = (Optional[SecretStr], Field(description="Connection string for vectorstore",
|
58
58
|
default=None,
|
59
59
|
json_schema_extra={'secret': True})),
|
60
|
+
|
61
|
+
# embedder settings
|
62
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
63
|
+
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"})),
|
60
64
|
__config__=ConfigDict(
|
61
65
|
json_schema_extra={
|
62
66
|
"metadata": {
|
@@ -25,7 +25,7 @@ def _get_toolkit(tool) -> BaseToolkit:
|
|
25
25
|
llm=tool['settings'].get('llm', None),
|
26
26
|
alita=tool['settings'].get('alita', None),
|
27
27
|
connection_string=tool['settings'].get('connection_string', None),
|
28
|
-
collection_name=str(tool['
|
28
|
+
collection_name=str(tool['toolkit_name']),
|
29
29
|
doctype='code',
|
30
30
|
embedding_model="HuggingFaceEmbeddings",
|
31
31
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -96,6 +96,10 @@ class AlitaGitHubToolkit(BaseToolkit):
|
|
96
96
|
default=None,
|
97
97
|
json_schema_extra={'secret': True})),
|
98
98
|
|
99
|
+
# embedder settings
|
100
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
101
|
+
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"})),
|
102
|
+
|
99
103
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools}))
|
100
104
|
)
|
101
105
|
|
@@ -123,4 +127,3 @@ class AlitaGitHubToolkit(BaseToolkit):
|
|
123
127
|
|
124
128
|
def get_tools(self):
|
125
129
|
return self.tools
|
126
|
-
|
@@ -7,7 +7,6 @@ from pydantic import create_model, BaseModel, ConfigDict, SecretStr
|
|
7
7
|
from pydantic.fields import Field
|
8
8
|
|
9
9
|
from .api_wrapper import GitLabAPIWrapper
|
10
|
-
# from .tools import __all__
|
11
10
|
from ..utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length
|
12
11
|
|
13
12
|
name = "gitlab"
|
@@ -24,7 +23,7 @@ def get_tools(tool):
|
|
24
23
|
llm=tool['settings'].get('llm', None),
|
25
24
|
alita=tool['settings'].get('alita', None),
|
26
25
|
connection_string=tool['settings'].get('connection_string', None),
|
27
|
-
collection_name=
|
26
|
+
collection_name=str(tool['toolkit_name']),
|
28
27
|
doctype='code',
|
29
28
|
embedding_model="HuggingFaceEmbeddings",
|
30
29
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
@@ -51,6 +50,10 @@ class AlitaGitlabToolkit(BaseToolkit):
|
|
51
50
|
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
52
51
|
default=None,
|
53
52
|
json_schema_extra={'secret': True})),
|
53
|
+
|
54
|
+
# embedder settings
|
55
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
56
|
+
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"})),
|
54
57
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
55
58
|
__config__=ConfigDict(json_schema_extra={
|
56
59
|
'metadata': {
|
alita_sdk/tools/jira/__init__.py
CHANGED
@@ -25,7 +25,7 @@ def get_tools(tool):
|
|
25
25
|
llm=tool['settings'].get('llm', None),
|
26
26
|
alita=tool['settings'].get('alita', None),
|
27
27
|
connection_string=tool['settings'].get('connection_string', None),
|
28
|
-
collection_name=
|
28
|
+
collection_name=str(tool['toolkit_name']),
|
29
29
|
embedding_model="HuggingFaceEmbeddings",
|
30
30
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
31
31
|
vectorstore_type="PGVector",
|
@@ -81,6 +81,16 @@ class JiraToolkit(BaseToolkit):
|
|
81
81
|
)),
|
82
82
|
verify_ssl=(bool, Field(description="Verify SSL", default=True)),
|
83
83
|
additional_fields=(Optional[str], Field(description="Additional fields", default="")),
|
84
|
+
|
85
|
+
# indexer settings
|
86
|
+
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
87
|
+
default=None,
|
88
|
+
json_schema_extra={'secret': True})),
|
89
|
+
|
90
|
+
# embedder settings
|
91
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
92
|
+
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"})),
|
93
|
+
|
84
94
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
85
95
|
__config__=ConfigDict(json_schema_extra={
|
86
96
|
'metadata': {
|
@@ -18,7 +18,7 @@ def get_tools(tool):
|
|
18
18
|
llm=tool['settings'].get('llm'),
|
19
19
|
# indexer settings
|
20
20
|
connection_string=tool['settings'].get('connection_string', None),
|
21
|
-
collection_name=
|
21
|
+
collection_name=str(tool['toolkit_name']),
|
22
22
|
embedding_model="HuggingFaceEmbeddings",
|
23
23
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
24
24
|
vectorstore_type="PGVector")
|
@@ -43,6 +43,10 @@ class SharepointToolkit(BaseToolkit):
|
|
43
43
|
connection_string = (Optional[SecretStr], Field(description="Connection string for vectorstore",
|
44
44
|
default=None,
|
45
45
|
json_schema_extra={'secret': True})),
|
46
|
+
|
47
|
+
# embedder settings
|
48
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
49
|
+
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"})),
|
46
50
|
__config__=ConfigDict(json_schema_extra={
|
47
51
|
'metadata': {
|
48
52
|
"label": "Sharepoint", "icon_url": "sharepoint.svg",
|
@@ -172,7 +172,6 @@ class SharepointApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
172
172
|
yield Document(page_content=str(content), metadata=new_metadata)
|
173
173
|
else:
|
174
174
|
document.page_content = str(doc_content)
|
175
|
-
yield document
|
176
175
|
|
177
176
|
@extend_with_vector_tools
|
178
177
|
def get_available_tools(self):
|
@@ -55,6 +55,10 @@ class TestrailToolkit(BaseToolkit):
|
|
55
55
|
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
56
56
|
default=None,
|
57
57
|
json_schema_extra={'secret': True})),
|
58
|
+
|
59
|
+
# embedder settings
|
60
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
61
|
+
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"})),
|
58
62
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
59
63
|
__config__=ConfigDict(json_schema_extra={'metadata':
|
60
64
|
{"label": "Testrail", "icon_url": "testrail-icon.svg",
|
@@ -0,0 +1,91 @@
|
|
1
|
+
from abc import ABC, abstractmethod
|
2
|
+
from typing import Any, Dict, Optional
|
3
|
+
|
4
|
+
|
5
|
+
class VectorStoreAdapter(ABC):
|
6
|
+
"""Abstract base class for vector store adapters."""
|
7
|
+
|
8
|
+
@abstractmethod
|
9
|
+
def get_vectorstore_params(self, collection_name: str, connection_string: Optional[str] = None) -> Dict[str, Any]:
|
10
|
+
"""Get vector store specific parameters."""
|
11
|
+
pass
|
12
|
+
|
13
|
+
@abstractmethod
|
14
|
+
def list_collections(self, vectorstore_wrapper) -> str:
|
15
|
+
"""List all collections in the vector store."""
|
16
|
+
pass
|
17
|
+
|
18
|
+
@abstractmethod
|
19
|
+
def remove_collection(self, vectorstore_wrapper, collection_name: str):
|
20
|
+
"""Remove a collection from the vector store."""
|
21
|
+
pass
|
22
|
+
|
23
|
+
|
24
|
+
class PGVectorAdapter(VectorStoreAdapter):
|
25
|
+
"""Adapter for PGVector database operations."""
|
26
|
+
|
27
|
+
def get_vectorstore_params(self, collection_name: str, connection_string: Optional[str] = None) -> Dict[str, Any]:
|
28
|
+
return {
|
29
|
+
"use_jsonb": True,
|
30
|
+
"collection_name": collection_name,
|
31
|
+
"create_extension": True,
|
32
|
+
"alita_sdk_options": {
|
33
|
+
"target_schema": collection_name,
|
34
|
+
},
|
35
|
+
"connection_string": connection_string
|
36
|
+
}
|
37
|
+
|
38
|
+
def list_collections(self, vectorstore_wrapper) -> str:
|
39
|
+
from sqlalchemy import text
|
40
|
+
from sqlalchemy.orm import Session
|
41
|
+
|
42
|
+
with Session(vectorstore_wrapper.vectorstore.session_maker.bind) as session:
|
43
|
+
get_collections = text("""
|
44
|
+
SELECT table_schema
|
45
|
+
FROM information_schema.columns
|
46
|
+
WHERE udt_name = 'vector';
|
47
|
+
""")
|
48
|
+
result = session.execute(get_collections)
|
49
|
+
docs = result.fetchall()
|
50
|
+
return str(docs)
|
51
|
+
|
52
|
+
def remove_collection(self, vectorstore_wrapper, collection_name: str):
|
53
|
+
vectorstore_wrapper._remove_collection()
|
54
|
+
|
55
|
+
|
56
|
+
class ChromaAdapter(VectorStoreAdapter):
|
57
|
+
"""Adapter for Chroma database operations."""
|
58
|
+
|
59
|
+
def get_vectorstore_params(self, collection_name: str, connection_string: Optional[str] = None) -> Dict[str, Any]:
|
60
|
+
return {
|
61
|
+
"collection_name": collection_name,
|
62
|
+
"persist_directory": "./indexer_db"
|
63
|
+
}
|
64
|
+
|
65
|
+
def list_collections(self, vectorstore_wrapper) -> str:
|
66
|
+
vector_client = vectorstore_wrapper.vectoradapter.vectorstore._client
|
67
|
+
return ','.join([collection.name for collection in vector_client.list_collections()])
|
68
|
+
|
69
|
+
def remove_collection(self, vectorstore_wrapper, collection_name: str):
|
70
|
+
vectorstore_wrapper.vectoradapter.vectorstore.delete_collection()
|
71
|
+
|
72
|
+
|
73
|
+
class VectorStoreAdapterFactory:
|
74
|
+
"""Factory for creating vector store adapters."""
|
75
|
+
|
76
|
+
_adapters = {
|
77
|
+
'PGVector': PGVectorAdapter,
|
78
|
+
'Chroma': ChromaAdapter,
|
79
|
+
}
|
80
|
+
|
81
|
+
@classmethod
|
82
|
+
def create_adapter(cls, vectorstore_type: str) -> VectorStoreAdapter:
|
83
|
+
adapter_class = cls._adapters.get(vectorstore_type)
|
84
|
+
if not adapter_class:
|
85
|
+
raise ValueError(f"Unsupported vectorstore type: {vectorstore_type}")
|
86
|
+
return adapter_class()
|
87
|
+
|
88
|
+
@classmethod
|
89
|
+
def register_adapter(cls, vectorstore_type: str, adapter_class: type):
|
90
|
+
"""Register a new adapter for a vector store type."""
|
91
|
+
cls._adapters[vectorstore_type] = adapter_class
|
File without changes
|
alita_sdk/tools/xray/__init__.py
CHANGED
@@ -24,7 +24,7 @@ def get_tools(tool):
|
|
24
24
|
|
25
25
|
# indexer settings
|
26
26
|
connection_string=tool['settings'].get('connection_string', None),
|
27
|
-
collection_name=
|
27
|
+
collection_name=str(tool['toolkit_name']),
|
28
28
|
embedding_model="HuggingFaceEmbeddings",
|
29
29
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
30
30
|
vectorstore_type="PGVector"
|
@@ -45,6 +45,16 @@ class XrayToolkit(BaseToolkit):
|
|
45
45
|
client_id=(str, Field(description="Client ID")),
|
46
46
|
client_secret=(SecretStr, Field(description="Client secret", json_schema_extra={'secret': True})),
|
47
47
|
limit=(Optional[int], Field(description="Limit", default=100)),
|
48
|
+
|
49
|
+
# indexer settings
|
50
|
+
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
51
|
+
default=None,
|
52
|
+
json_schema_extra={'secret': True})),
|
53
|
+
|
54
|
+
# embedder settings
|
55
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
56
|
+
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"})),
|
57
|
+
|
48
58
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
49
59
|
__config__={'json_schema_extra':
|
50
60
|
{
|
@@ -18,7 +18,7 @@ def get_tools(tool):
|
|
18
18
|
|
19
19
|
# indexer settings
|
20
20
|
connection_string=tool['settings'].get('connection_string', None),
|
21
|
-
collection_name=
|
21
|
+
collection_name=str(tool['toolkit_name']),
|
22
22
|
embedding_model="HuggingFaceEmbeddings",
|
23
23
|
embedding_model_params={"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
24
24
|
vectorstore_type="PGVector"
|
@@ -41,6 +41,10 @@ class ZephyrEnterpriseToolkit(BaseToolkit):
|
|
41
41
|
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
42
42
|
default=None,
|
43
43
|
json_schema_extra={'secret': True})),
|
44
|
+
|
45
|
+
# embedder settings
|
46
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
47
|
+
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"})),
|
44
48
|
selected_tools=(List[Literal[tuple(selected_tools)]], []),
|
45
49
|
__config__=ConfigDict(json_schema_extra={
|
46
50
|
'metadata': {
|
@@ -71,4 +75,3 @@ class ZephyrEnterpriseToolkit(BaseToolkit):
|
|
71
75
|
|
72
76
|
def get_tools(self) -> List[BaseTool]:
|
73
77
|
return self.tools
|
74
|
-
|
@@ -1,15 +1,29 @@
|
|
1
1
|
import logging
|
2
|
-
from
|
2
|
+
from importlib.metadata import metadata
|
3
|
+
from operator import ifloordiv
|
4
|
+
from typing import Optional, List, Generator
|
3
5
|
|
4
6
|
from langchain_core.tools import ToolException
|
5
7
|
from pydantic import create_model, model_validator, PrivateAttr, Field, SecretStr
|
6
8
|
|
9
|
+
from langchain_core.documents import Document
|
7
10
|
from .zephyr_enterprise import ZephyrClient
|
8
|
-
from ..elitea_base import BaseToolApiWrapper
|
11
|
+
from ..elitea_base import BaseToolApiWrapper, BaseVectorStoreToolApiWrapper, extend_with_vector_tools
|
9
12
|
|
10
13
|
logger = logging.getLogger(__name__)
|
11
14
|
|
12
|
-
|
15
|
+
zql_description = """
|
16
|
+
ZQL query to search for test cases.
|
17
|
+
Supported: estimatedTime, testcaseId, creator, release,
|
18
|
+
project, priority, altId, version,
|
19
|
+
versionId, automated, folder, contents,
|
20
|
+
name, comment, tag
|
21
|
+
|
22
|
+
It has to follow the syntax in examples:
|
23
|
+
"folder=\"TestToolkit\"", "name~\"TestToolkit5\"
|
24
|
+
"""
|
25
|
+
|
26
|
+
class ZephyrApiWrapper(BaseVectorStoreToolApiWrapper):
|
13
27
|
base_url: str
|
14
28
|
token: SecretStr
|
15
29
|
_client: Optional[ZephyrClient] = PrivateAttr()
|
@@ -39,7 +53,7 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
|
|
39
53
|
return ToolException(f"Unable to retrieve Zephyr entities: {e}")
|
40
54
|
|
41
55
|
|
42
|
-
def get_testcases_by_zql(self, zql: str):
|
56
|
+
def get_testcases_by_zql(self, zql: str, return_as_list: bool = False):
|
43
57
|
|
44
58
|
"""
|
45
59
|
Retrieve testcases by zql.
|
@@ -50,8 +64,12 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
|
|
50
64
|
testcases = self._client.get_testcases_by_zql(zql)
|
51
65
|
parsed_test_cases = []
|
52
66
|
if testcases['resultSize'] == 0:
|
67
|
+
if return_as_list:
|
68
|
+
return []
|
53
69
|
return "No test cases found for the provided ZQL query."
|
54
70
|
logger.info(f"Retrieved test cases: {testcases}")
|
71
|
+
if return_as_list:
|
72
|
+
return [test_case['testcase'] for test_case in testcases['results']]
|
55
73
|
for test_case in testcases['results']:
|
56
74
|
parsed_test_cases.append(f"Test case ID: {test_case.get('id')}, Test case: {test_case['testcase']}")
|
57
75
|
return "\n".join(parsed_test_cases)
|
@@ -69,6 +87,20 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
|
|
69
87
|
except Exception as e:
|
70
88
|
return ToolException(f"Unable to retrieve Zephyr entities: {e}")
|
71
89
|
|
90
|
+
def get_test_case_steps(self, testcase_tree_id: str):
|
91
|
+
last_version = self.get_last_version(testcase_tree_id)
|
92
|
+
return self._client.get_testcase_steps(last_version)
|
93
|
+
|
94
|
+
def get_last_version(self, testcase_tree_id: str):
|
95
|
+
# get test case id
|
96
|
+
test_case_id = self._client.get_test_case(testcase_tree_id)['testcase']['testcaseId']
|
97
|
+
logger.info(f"Test case id: {test_case_id}")
|
98
|
+
# get test case version id
|
99
|
+
return self._client.get_testcase_versions(test_case_id)[-1]['id']
|
100
|
+
|
101
|
+
def get_test_case_steps_by_version(self, test_case_version_id: str):
|
102
|
+
return self._client.get_testcase_steps(test_case_version_id)
|
103
|
+
|
72
104
|
def add_steps(self, testcase_tree_id: str, steps: Optional[List[dict]] = []):
|
73
105
|
|
74
106
|
"""
|
@@ -81,14 +113,10 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
|
|
81
113
|
if not steps:
|
82
114
|
return ToolException("Steps cannot be empty.")
|
83
115
|
|
84
|
-
|
85
|
-
test_case_id = self._client.get_test_case(testcase_tree_id)['testcase']['testcaseId']
|
86
|
-
logger.info(f"Test case id: {test_case_id}")
|
87
|
-
# get test case version id
|
88
|
-
test_case_version_id = self._client.get_testcase_versions(test_case_id)[-1]['id']
|
116
|
+
test_case_version_id = self.get_last_version(testcase_tree_id)
|
89
117
|
logger.info(f"Test case version id: {test_case_version_id}")
|
90
118
|
# get test case steps
|
91
|
-
test_case_steps = self.
|
119
|
+
test_case_steps = self.get_test_case_steps_by_version(test_case_version_id)
|
92
120
|
logger.info(f"Test case steps: {test_case_steps}")
|
93
121
|
# add steps
|
94
122
|
actual_steps = test_case_steps['steps'] if test_case_steps else None
|
@@ -120,6 +148,30 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
|
|
120
148
|
except Exception as e:
|
121
149
|
return ToolException(f"Unable to retrieve Zephyr entities: {e}")
|
122
150
|
|
151
|
+
def _index_tool_params(self, **kwargs) -> dict[str, tuple[type, Field]]:
|
152
|
+
"""
|
153
|
+
Returns a list of fields for index_data args schema.
|
154
|
+
"""
|
155
|
+
return {
|
156
|
+
"zql": (str, Field(description=zql_description, examples=["folder=\"TestToolkit\"", "name~\"TestToolkit5\""))
|
157
|
+
}
|
158
|
+
|
159
|
+
def _base_loader(self, zql: str) -> Generator[Document, None, None]:
|
160
|
+
test_cases = self.get_testcases_by_zql(zql)
|
161
|
+
for test_case in test_cases:
|
162
|
+
metadata = {
|
163
|
+
("updated_on" if k == "lastModifiedOn" else "id" if k == "testcaseId" else k): str(v)
|
164
|
+
for k, v in test_case
|
165
|
+
if k != "id"
|
166
|
+
}
|
167
|
+
yield Document(page_content='', metadata=metadata)
|
168
|
+
|
169
|
+
def _process_document(self, document: Document) -> Generator[Document, None, None]:
|
170
|
+
id = document.metadata['id']
|
171
|
+
test_case_content = self.get_test_case_steps(id)
|
172
|
+
document.page_content = test_case_content
|
173
|
+
|
174
|
+
@extend_with_vector_tools
|
123
175
|
def get_available_tools(self):
|
124
176
|
return [
|
125
177
|
{
|
@@ -188,16 +240,7 @@ class ZephyrApiWrapper(BaseToolApiWrapper):
|
|
188
240
|
"description": self.get_testcases_by_zql.__doc__,
|
189
241
|
"args_schema": create_model(
|
190
242
|
"TestCaseByZqlModel",
|
191
|
-
zql=(str, Field(description="""
|
192
|
-
ZQL query to search for test cases.
|
193
|
-
Supported: estimatedTime, testcaseId, creator, release,
|
194
|
-
project, priority, altId, version,
|
195
|
-
versionId, automated, folder, contents,
|
196
|
-
name, comment, tag
|
197
|
-
|
198
|
-
It has to follow the syntax in examples:
|
199
|
-
"folder=\"TestToolkit\"", "name~\"TestToolkit5\"
|
200
|
-
""", examples=["folder=\"TestToolkit\"", "name~\"TestToolkit5\""]))
|
243
|
+
zql=(str, Field(description=zql_description, examples=["folder=\"TestToolkit\"", "name~\"TestToolkit5\""]))
|
201
244
|
),
|
202
245
|
"ref": self.get_testcases_by_zql,
|
203
246
|
}
|
@@ -18,7 +18,7 @@ def get_tools(tool):
|
|
18
18
|
|
19
19
|
# indexer settings
|
20
20
|
connection_string = tool['settings'].get('connection_string', None),
|
21
|
-
collection_name
|
21
|
+
collection_name=str(tool['toolkit_name']),
|
22
22
|
embedding_model = "HuggingFaceEmbeddings",
|
23
23
|
embedding_model_params = {"model_name": "sentence-transformers/all-MiniLM-L6-v2"},
|
24
24
|
vectorstore_type = "PGVector"
|
@@ -41,6 +41,10 @@ class ZephyrEssentialToolkit(BaseToolkit):
|
|
41
41
|
connection_string=(Optional[SecretStr], Field(description="Connection string for vectorstore",
|
42
42
|
default=None,
|
43
43
|
json_schema_extra={'secret': True})),
|
44
|
+
|
45
|
+
# embedder settings
|
46
|
+
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.", default="HuggingFaceEmbeddings")),
|
47
|
+
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"})),
|
44
48
|
__config__={'json_schema_extra': {'metadata': {"label": "Zephyr Essential", "icon_url": "zephyr.svg",
|
45
49
|
"categories": ["test management"],
|
46
50
|
"extra_categories": ["test automation", "test case management", "test planning"]
|
@@ -67,4 +71,3 @@ class ZephyrEssentialToolkit(BaseToolkit):
|
|
67
71
|
|
68
72
|
def get_tools(self):
|
69
73
|
return self.tools
|
70
|
-
|
@@ -253,7 +253,6 @@ class ZephyrEssentialApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
253
253
|
base_data['test_case_content'] = additional_content
|
254
254
|
|
255
255
|
document.page_content = json.dumps(base_data)
|
256
|
-
yield document
|
257
256
|
except json.JSONDecodeError as e:
|
258
257
|
raise ToolException(f"Failed to decode JSON from document: {e}")
|
259
258
|
|
@@ -1283,7 +1283,6 @@ class ZephyrScaleApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
1283
1283
|
base_data['test_case_content'] = additional_content
|
1284
1284
|
|
1285
1285
|
document.page_content = json.dumps(base_data)
|
1286
|
-
yield document
|
1287
1286
|
except json.JSONDecodeError as e:
|
1288
1287
|
raise ToolException(f"Failed to decode JSON from document: {e}")
|
1289
1288
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.222
|
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
|
@@ -69,7 +69,7 @@ alita_sdk/runtime/toolkits/vectorstore.py,sha256=BGppQADa1ZiLO17fC0uCACTTEvPHlod
|
|
69
69
|
alita_sdk/runtime/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
70
70
|
alita_sdk/runtime/tools/agent.py,sha256=m98QxOHwnCRTT9j18Olbb5UPS8-ZGeQaGiUyZJSyFck,3162
|
71
71
|
alita_sdk/runtime/tools/application.py,sha256=mC2_ZFx4WLHc98Gzll88Vw6cqyx2cmbig2IeJBtHRdg,2836
|
72
|
-
alita_sdk/runtime/tools/artifact.py,sha256=
|
72
|
+
alita_sdk/runtime/tools/artifact.py,sha256=K8TE4z5gYOLgY1ee51DkeN4rXt4neXdLFLpsxHX6MKE,8665
|
73
73
|
alita_sdk/runtime/tools/datasource.py,sha256=pvbaSfI-ThQQnjHG-QhYNSTYRnZB0rYtZFpjCfpzxYI,2443
|
74
74
|
alita_sdk/runtime/tools/echo.py,sha256=spw9eCweXzixJqHnZofHE1yWiSUa04L4VKycf3KCEaM,486
|
75
75
|
alita_sdk/runtime/tools/function.py,sha256=ZFpd7TGwIawze2e7BHlKwP0NHwNw42wwrmmnXyJQJhk,2600
|
@@ -94,7 +94,7 @@ alita_sdk/runtime/utils/toolkit_runtime.py,sha256=MU63Fpxj0b5_r1IUUc0Q3-PN9VwL7r
|
|
94
94
|
alita_sdk/runtime/utils/toolkit_utils.py,sha256=I9QFqnaqfVgN26LUr6s3XlBlG6y0CoHURnCzG7XcwVs,5311
|
95
95
|
alita_sdk/runtime/utils/utils.py,sha256=CpEl3LCeLbhzQySz08lkKPm7Auac6IiLF7WB8wmArMI,589
|
96
96
|
alita_sdk/tools/__init__.py,sha256=1AHqP2xyLjn92xVm70l9XIke6FkfHkLo5OoQVe4BuP8,10421
|
97
|
-
alita_sdk/tools/elitea_base.py,sha256=
|
97
|
+
alita_sdk/tools/elitea_base.py,sha256=cDJ4PDvhrqIpgkheKBOPPN-hUZT4-AJLxp2ankbiAmo,30477
|
98
98
|
alita_sdk/tools/ado/__init__.py,sha256=2NMQwt2pjIukSC9nSZ7CLocdGpK7002x7ixKr_wunxk,1313
|
99
99
|
alita_sdk/tools/ado/utils.py,sha256=PTCludvaQmPLakF2EbCGy66Mro4-rjDtavVP-xcB2Wc,1252
|
100
100
|
alita_sdk/tools/ado/repos/__init__.py,sha256=guYY95Gtyb0S4Jj0V1qO0x2jlRoH0H1cKjHXNwmShow,6388
|
@@ -117,7 +117,7 @@ alita_sdk/tools/azure_ai/search/__init__.py,sha256=RaaWHX9o2NMxRruQGQwsDfacvtEJ5
|
|
117
117
|
alita_sdk/tools/azure_ai/search/api_wrapper.py,sha256=E4p6HPDlwgxfT_i6cvg9rN4Vn_47CVAyNBAKLIGq3mU,7265
|
118
118
|
alita_sdk/tools/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
119
119
|
alita_sdk/tools/base/tool.py,sha256=-N27AodZS49vdPCgFkU-bFS9bxoPopZBnNrmwInx3d0,864
|
120
|
-
alita_sdk/tools/bitbucket/__init__.py,sha256=
|
120
|
+
alita_sdk/tools/bitbucket/__init__.py,sha256=EEJUp965OT0JijI6x7U7DP-_5sgRC3Q3TbNnxky6hPo,5458
|
121
121
|
alita_sdk/tools/bitbucket/api_wrapper.py,sha256=wZp00LAxRs-nsMAduXUHTGGV41ayThpAKqGKmm4g27U,10880
|
122
122
|
alita_sdk/tools/bitbucket/bitbucket_constants.py,sha256=UsbhQ1iEvrKoxceTFPWTYhaXS1zSxbmjs1TwY0-P4gw,462
|
123
123
|
alita_sdk/tools/bitbucket/cloud_api_wrapper.py,sha256=VELi65tLXvszwCGQSqVfyVal0ylx9DgAmAGpRQL_Zkg,15522
|
@@ -185,7 +185,7 @@ alita_sdk/tools/code/linter/api_wrapper.py,sha256=wylpwhAw02Jt8L18CqBq2He5PbwIkx
|
|
185
185
|
alita_sdk/tools/code/loaders/codesearcher.py,sha256=XoXXZtIQZhvjIwZlnl_4wVGHC-3saYzFo5oDR_Zh3EY,529
|
186
186
|
alita_sdk/tools/code/sonar/__init__.py,sha256=u8wpgXJ_shToLl3G9-XEtGDor5dhmsnurIImh1-e-U0,3165
|
187
187
|
alita_sdk/tools/code/sonar/api_wrapper.py,sha256=nNqxcWN_6W8c0ckj-Er9HkNuAdgQLoWBXh5UyzNutis,2653
|
188
|
-
alita_sdk/tools/confluence/__init__.py,sha256=
|
188
|
+
alita_sdk/tools/confluence/__init__.py,sha256=Osn9Sd8dURk8zms6J6MDYtH-MAQaXcI21MW_MOZS9pE,7293
|
189
189
|
alita_sdk/tools/confluence/api_wrapper.py,sha256=VR0TEMJPqe3ylzl_DuFSZ3LS0oTIJ7SufjifRXIYEhg,84507
|
190
190
|
alita_sdk/tools/confluence/loader.py,sha256=4bf5qrJMEiJzuZp2NlxO2XObLD1w7fxss_WyMUpe8sg,9290
|
191
191
|
alita_sdk/tools/confluence/utils.py,sha256=Lxo6dBD0OlvM4o0JuK6qeB_4LV9BptiwJA9e1vqNcDw,435
|
@@ -193,16 +193,16 @@ alita_sdk/tools/custom_open_api/__init__.py,sha256=9aT5SPNPWcJC6jMZEM-3rUCXVULj_
|
|
193
193
|
alita_sdk/tools/custom_open_api/api_wrapper.py,sha256=sDSFpvEqpSvXHGiBISdQQcUecfO3md-_F8hAi6p2dvg,4340
|
194
194
|
alita_sdk/tools/elastic/__init__.py,sha256=iwnSRppRpzvJ1da2K3Glu8Uu41MhBDCYbguboLkEbW0,2818
|
195
195
|
alita_sdk/tools/elastic/api_wrapper.py,sha256=pl8CqQxteJAGwyOhMcld-ZgtOTFwwbv42OITQVe8rM0,1948
|
196
|
-
alita_sdk/tools/figma/__init__.py,sha256=
|
196
|
+
alita_sdk/tools/figma/__init__.py,sha256=VBimOTXVoq0KK4dXcHaWT0yDcPZxhHYpZ_J3AqL_4xU,5229
|
197
197
|
alita_sdk/tools/figma/api_wrapper.py,sha256=Q5BbEVfzIPGGSAV-T9gv0a31ku4jqCCvQDF85etHJEo,19276
|
198
|
-
alita_sdk/tools/github/__init__.py,sha256=
|
198
|
+
alita_sdk/tools/github/__init__.py,sha256=QIu4RQcuM21kVQk9yhCVdUsE4RERKb1FIWFRO9YaSAc,6794
|
199
199
|
alita_sdk/tools/github/api_wrapper.py,sha256=JRhn7Cgg2j6uEwlvuQCMeISNYvRV2Yahx-v-p8HspUQ,8767
|
200
200
|
alita_sdk/tools/github/github_client.py,sha256=nxnSXsDul2PPbWvYZS8TmAFFmR-5ALyakNoV5LN2D4U,86617
|
201
201
|
alita_sdk/tools/github/graphql_client_wrapper.py,sha256=d3AGjzLGH_hdQV2V8HeAX92dJ4dlnE5OXqUlCO_PBr0,71539
|
202
202
|
alita_sdk/tools/github/schemas.py,sha256=yFsqivfjCPRk9GxFJrL8sTz6nnjFCZ0j5DIfPtGSsvA,13852
|
203
203
|
alita_sdk/tools/github/tool.py,sha256=Jnnv5lenV5ds8AAdyo2m8hSzyJ117HZBjzHC6T1ck-M,1037
|
204
204
|
alita_sdk/tools/github/tool_prompts.py,sha256=y6ZW_FpUCE87Uop3WuQAZVRnzxO5t7xjBOI5bCqiluw,30194
|
205
|
-
alita_sdk/tools/gitlab/__init__.py,sha256=
|
205
|
+
alita_sdk/tools/gitlab/__init__.py,sha256=DftTt4uVaRG4g2RFvLKyghG_A28ukGPHK9G2jojEGnM,4853
|
206
206
|
alita_sdk/tools/gitlab/api_wrapper.py,sha256=kAGHmne6Wh8WrQQUdZ1d8bhgzgmN_fAz49WZsX7K1Ps,22396
|
207
207
|
alita_sdk/tools/gitlab/tools.py,sha256=vOGTlSaGaFmWn6LS6YFP-FuTqUPun9vnv1VrUcUHAZQ,16500
|
208
208
|
alita_sdk/tools/gitlab/utils.py,sha256=Z2XiqIg54ouqqt1to-geFybmkCb1I6bpE91wfnINH1I,2320
|
@@ -218,7 +218,7 @@ alita_sdk/tools/google/bigquery/schemas.py,sha256=Gb8KQZSoRkmjXiz21dTC95c1MHEHFc
|
|
218
218
|
alita_sdk/tools/google/bigquery/tool.py,sha256=Esf9Hsp8I0e7-5EdkFqQ-bid0cfrg-bfSoHoW_IIARo,1027
|
219
219
|
alita_sdk/tools/google_places/__init__.py,sha256=mHKc7u9P2gqGDzqqJNQC9qiZYEm5gncnM_1XjtrM17o,3152
|
220
220
|
alita_sdk/tools/google_places/api_wrapper.py,sha256=7nZly6nk4f4Tm7s2MVdnnwlb-1_WHRrDhyjDiqoyPjA,4674
|
221
|
-
alita_sdk/tools/jira/__init__.py,sha256=
|
221
|
+
alita_sdk/tools/jira/__init__.py,sha256=ieBe08us8poRzjLnuIxHGoP33sJRSHbdr8Z-GbI4P6k,6922
|
222
222
|
alita_sdk/tools/jira/api_wrapper.py,sha256=gZXEtOZtWvINHipHPj8Dg6uNyYKZariLo4Bs3_wLJrA,75932
|
223
223
|
alita_sdk/tools/keycloak/__init__.py,sha256=0WB9yXMUUAHQRni1ghDEmd7GYa7aJPsTVlZgMCM9cQ0,3050
|
224
224
|
alita_sdk/tools/keycloak/api_wrapper.py,sha256=cOGr0f3S3-c6tRDBWI8wMnetjoNSxiV5rvC_0VHb8uw,3100
|
@@ -271,8 +271,8 @@ alita_sdk/tools/salesforce/model.py,sha256=wzpbTdUx5mANApAZFQIKzq7xXtYBiiSlKvrTX
|
|
271
271
|
alita_sdk/tools/servicenow/__init__.py,sha256=VHH3qpUbEJ0tdtrIiWakohCmbifUOPgCVXERN3jRwsU,4234
|
272
272
|
alita_sdk/tools/servicenow/api_wrapper.py,sha256=WpH-bBLGFdhehs4g-K-WAkNuaD1CSrwsDpdgB3RG53s,6120
|
273
273
|
alita_sdk/tools/servicenow/servicenow_client.py,sha256=Rdqfu-ll-qbnclMzChLZBsfXRDzgoX_FdeI2WLApWxc,3269
|
274
|
-
alita_sdk/tools/sharepoint/__init__.py,sha256=
|
275
|
-
alita_sdk/tools/sharepoint/api_wrapper.py,sha256=
|
274
|
+
alita_sdk/tools/sharepoint/__init__.py,sha256=8ix4a4lWN6vpGS6bdcr4U7zdttk6ShgQ0ji4r7w3iKw,4073
|
275
|
+
alita_sdk/tools/sharepoint/api_wrapper.py,sha256=YCD0DkdgTyrDs4cSOO_LQjTVfmoA8U_keGGJlefxSTo,9083
|
276
276
|
alita_sdk/tools/sharepoint/authorization_helper.py,sha256=n-nL5dlBoLMK70nHu7P2RYCb8C6c9HMA_gEaw8LxuhE,2007
|
277
277
|
alita_sdk/tools/sharepoint/utils.py,sha256=fZ1YzAu5CTjKSZeslowpOPH974902S8vCp1Wu7L44LM,446
|
278
278
|
alita_sdk/tools/slack/__init__.py,sha256=mbP2JiHybGSAH0ay8pxvPCqeU2eb9CK_NaCKG1uhPE4,3894
|
@@ -282,11 +282,13 @@ alita_sdk/tools/sql/api_wrapper.py,sha256=Rky0_CX9HWDQ2mClHGAgP3LHjYVX4iymPuilZM
|
|
282
282
|
alita_sdk/tools/sql/models.py,sha256=AKJgSl_kEEz4fZfw3kbvdGHXaRZ-yiaqfJOB6YOj3i0,641
|
283
283
|
alita_sdk/tools/testio/__init__.py,sha256=qi12wyJXN02hrUXg08CbijcCL5pi30JMbJfiXjn1Zr0,2646
|
284
284
|
alita_sdk/tools/testio/api_wrapper.py,sha256=BvmL5h634BzG6p7ajnQLmj-uoAw1gjWnd4FHHu1h--Q,21638
|
285
|
-
alita_sdk/tools/testrail/__init__.py,sha256=
|
285
|
+
alita_sdk/tools/testrail/__init__.py,sha256=VEoFDsMgzMapOaifdlEL_S_YxzD0CjXokGYvqvfPMNw,4842
|
286
286
|
alita_sdk/tools/testrail/api_wrapper.py,sha256=Aax0jspgidXYNxLIw6qTWu3dO2JOIS0ALIqsCzQuFbQ,32087
|
287
287
|
alita_sdk/tools/utils/__init__.py,sha256=155xepXPr4OEzs2Mz5YnjXcBpxSv1X2eznRUVoPtyK0,3268
|
288
288
|
alita_sdk/tools/utils/content_parser.py,sha256=j2eDFhLCPNw61lnt8uaJLO7-Md3qWlKjOejou5JGKdg,7327
|
289
|
-
alita_sdk/tools/
|
289
|
+
alita_sdk/tools/vector_adapters/VectorStoreAdapter.py,sha256=bsUFx-P3I5Rfzpk-mCrabhLtt3motAm02GaRK9C-WXA,3260
|
290
|
+
alita_sdk/tools/vector_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
291
|
+
alita_sdk/tools/xray/__init__.py,sha256=OYa1wveTm-lAhsJaGXMnwOrDQWl6ch--NjNLBeR63eM,4331
|
290
292
|
alita_sdk/tools/xray/api_wrapper.py,sha256=A8PJmY2k7TowaD_vk6ZxkMnSUoZUt9A6g4TJrZfNTAw,32225
|
291
293
|
alita_sdk/tools/yagmail/__init__.py,sha256=c4Qn3em0tLxzRmFKpzbBgY9W2EnOoKf0azoDJHng5CY,2208
|
292
294
|
alita_sdk/tools/yagmail/yagmail_wrapper.py,sha256=SKoGVd1X4Ew3ad5tOdtPoY00M6jStNdT3q7GXEjQc5g,1952
|
@@ -294,19 +296,19 @@ alita_sdk/tools/zephyr/Zephyr.py,sha256=ODZbg9Aw0H0Rbv-HcDXLI4KHbPiLDHoteDofshw9
|
|
294
296
|
alita_sdk/tools/zephyr/__init__.py,sha256=8B2Ibz5QTmB5WkV0q8Sq4kuj92FFaFWZLrT877zRRLg,2897
|
295
297
|
alita_sdk/tools/zephyr/api_wrapper.py,sha256=lJCYPG03ej0qgdpLflnS7LFB4HSAfGzIvTjAJt07CQs,6244
|
296
298
|
alita_sdk/tools/zephyr/rest_client.py,sha256=7vSD3oYIX-3KbAFed-mphSQif_VRuXrq5O07ryNQ7Pk,6208
|
297
|
-
alita_sdk/tools/zephyr_enterprise/__init__.py,sha256=
|
298
|
-
alita_sdk/tools/zephyr_enterprise/api_wrapper.py,sha256=
|
299
|
+
alita_sdk/tools/zephyr_enterprise/__init__.py,sha256=XAWLj4WgMpEz3xnP8VW1lzHVW48K3CxIXdgeubjMvaw,3885
|
300
|
+
alita_sdk/tools/zephyr_enterprise/api_wrapper.py,sha256=arPAvOGrurEsZaICvdVrcbspXBdDQl4XuNdfZSmm1lg,11204
|
299
301
|
alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py,sha256=hV9LIrYfJT6oYp-ZfQR0YHflqBFPsUw2Oc55HwK0H48,6809
|
300
|
-
alita_sdk/tools/zephyr_essential/__init__.py,sha256
|
301
|
-
alita_sdk/tools/zephyr_essential/api_wrapper.py,sha256=
|
302
|
+
alita_sdk/tools/zephyr_essential/__init__.py,sha256=-VS-smytUSjqNLLi6HmqbsU3NfmNFTrzPjzNiEtOi5c,3628
|
303
|
+
alita_sdk/tools/zephyr_essential/api_wrapper.py,sha256=zjZnAx1Fl1fYx5Vc1Q8JOc_pxUEkCngbRzzmea4sj7Y,36785
|
302
304
|
alita_sdk/tools/zephyr_essential/client.py,sha256=bfNcUKNqj9MFWTludGbbqD4qZlxrBaC2JtWsCfZMqSY,9722
|
303
305
|
alita_sdk/tools/zephyr_scale/__init__.py,sha256=2NTcdrfkx4GSegqyXhsPLsEpc4FlACuDy85b0fk6cAo,4572
|
304
|
-
alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=
|
306
|
+
alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=ZpHVRpeWDE-kxOf491vHgNesozuwEVS4oB0cnPs4XMw,78005
|
305
307
|
alita_sdk/tools/zephyr_squad/__init__.py,sha256=0AI_j27xVO5Gk5HQMFrqPTd4uvuVTpiZUicBrdfEpKg,2796
|
306
308
|
alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
|
307
309
|
alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
|
308
|
-
alita_sdk-0.3.
|
309
|
-
alita_sdk-0.3.
|
310
|
-
alita_sdk-0.3.
|
311
|
-
alita_sdk-0.3.
|
312
|
-
alita_sdk-0.3.
|
310
|
+
alita_sdk-0.3.222.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
311
|
+
alita_sdk-0.3.222.dist-info/METADATA,sha256=DOZdr2MgwJLF1TIA4wp3BlWWTIo9rq1im3G_1U8Sv_U,18917
|
312
|
+
alita_sdk-0.3.222.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
313
|
+
alita_sdk-0.3.222.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
|
314
|
+
alita_sdk-0.3.222.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|