alita-sdk 0.3.315__py3-none-any.whl → 0.3.317__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.
@@ -65,7 +65,7 @@ class AlitaExcelLoader(AlitaTableLoader):
65
65
  else:
66
66
  return df.to_string(index=False)
67
67
 
68
- def read(self):
68
+ def read(self, lazy: bool = False):
69
69
  df = pd.read_excel(self.file_path, sheet_name=None)
70
70
  docs = []
71
71
  for key in df.keys():
@@ -113,7 +113,7 @@ loaders_map = {
113
113
  'is_multimodal_processing': False,
114
114
  'kwargs': {
115
115
  'encoding': 'utf-8',
116
- 'raw_content': False,
116
+ 'raw_content': True,
117
117
  'cleanse': False
118
118
  },
119
119
  'allowed_to_override': ['max_tokens']
@@ -122,7 +122,7 @@ loaders_map = {
122
122
  'class': AlitaExcelLoader,
123
123
  'is_multimodal_processing': False,
124
124
  'kwargs': {
125
- 'raw_content': False,
125
+ 'raw_content': True,
126
126
  'cleanse': False
127
127
  },
128
128
  'allowed_to_override': ['max_tokens', LoaderProperties.LLM.value, LoaderProperties.PROMPT.value, LoaderProperties.PROMPT_DEFAULT.value]
@@ -131,7 +131,7 @@ loaders_map = {
131
131
  'class': AlitaExcelLoader,
132
132
  'is_multimodal_processing': False,
133
133
  'kwargs': {
134
- 'raw_content': False,
134
+ 'raw_content': True,
135
135
  'cleanse': False
136
136
  },
137
137
  'allowed_to_override': ['max_tokens', LoaderProperties.LLM.value, LoaderProperties.PROMPT.value, LoaderProperties.PROMPT_DEFAULT.value]
@@ -12,7 +12,6 @@ from alita_sdk.tools.vector_adapters.VectorStoreAdapter import VectorStoreAdapte
12
12
  from logging import getLogger
13
13
 
14
14
  from ..utils.logging import dispatch_custom_event
15
- from ..utils.utils import IndexerKeywords
16
15
 
17
16
  logger = getLogger(__name__)
18
17
 
@@ -248,10 +247,6 @@ class VectorStoreWrapper(BaseToolApiWrapper):
248
247
  tool_name="_clean_collection"
249
248
  )
250
249
 
251
- def _get_indexed_data(self, collection_name: str):
252
- """ Get all indexed data from vectorstore for non-code content """
253
- return self.vector_adapter.get_indexed_data(self, collection_name)
254
-
255
250
  def _get_code_indexed_data(self, collection_suffix: str) -> Dict[str, Dict[str, Any]]:
256
251
  """ Get all indexed data from vectorstore for code content """
257
252
  return self.vector_adapter.get_code_indexed_data(self, collection_suffix)
@@ -308,26 +303,6 @@ class VectorStoreWrapper(BaseToolApiWrapper):
308
303
 
309
304
  return final_docs
310
305
 
311
- def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
312
- return self._reduce_duplicates(
313
- documents,
314
- collection_suffix,
315
- self._get_indexed_data,
316
- lambda doc: doc.metadata.get('id'),
317
- lambda doc, idx: (
318
- doc.metadata.get('updated_on') and
319
- idx['metadata'].get('updated_on') and
320
- doc.metadata.get('updated_on') == idx['metadata'].get('updated_on')
321
- ),
322
- lambda idx_data, key: (
323
- idx_data[key]['all_chunks'] +
324
- [idx_data[dep_id]['id'] for dep_id in idx_data[key][IndexerKeywords.DEPENDENT_DOCS.value]] +
325
- [chunk_db_id for dep_id in idx_data[key][IndexerKeywords.DEPENDENT_DOCS.value]
326
- for chunk_db_id in idx_data[dep_id]['all_chunks']]
327
- ),
328
- log_msg="Verification of documents to index started"
329
- )
330
-
331
306
  def _reduce_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
332
307
  return self._reduce_duplicates(
333
308
  documents,
@@ -343,7 +318,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
343
318
  log_msg="Verification of code documents to index started"
344
319
  )
345
320
 
346
- def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True, is_code: bool = False):
321
+ def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True, is_code: bool = True):
347
322
  """ Index documents in the vectorstore.
348
323
 
349
324
  Args:
@@ -374,8 +349,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
374
349
  message="Filter for duplicates",
375
350
  tool_name="index_documents")
376
351
  # remove duplicates based on metadata 'id' and 'updated_on' or 'commit_hash' fields
377
- documents = self._reduce_code_duplicates(documents, collection_suffix) if is_code \
378
- else self._reduce_non_code_duplicates(documents, collection_suffix)
352
+ documents = self._reduce_code_duplicates(documents, collection_suffix)
379
353
  self._log_tool_event(
380
354
  message="All the duplicates were filtered out. Proceeding with indexing.",
381
355
  tool_name="index_documents")
@@ -256,6 +256,10 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
256
256
  progress_step = 20 if progress_step not in range(0, 100) else progress_step
257
257
  next_progress_point = progress_step
258
258
  for document in documents:
259
+ if not document.page_content:
260
+ # To avoid case when all documents have empty content
261
+ # See llm_processor.add_documents which exclude metadata of docs with empty content
262
+ continue
259
263
  documents_count += 1
260
264
  # logger.debug(f"Indexing document: {document}")
261
265
  try:
@@ -66,10 +66,6 @@ class BrowserToolkit(BaseToolkit):
66
66
  pgvector_configuration=(Optional[PgVectorConfiguration],
67
67
  Field(description="PgVector configuration (required for tools `multi_url_crawler`)",
68
68
  default=None, json_schema_extra={'configuration_types': ['pgvector']})),
69
- embedding_model=(Optional[str],
70
- Field(default=None,
71
- description="Embedding configuration (required for tools `multi_url_crawler`)",
72
- json_schema_extra={'configuration_model': 'embedding'})),
73
69
  selected_tools=(List[Literal[tuple(selected_tools)]],
74
70
  Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
75
71
  __validators__={
@@ -116,7 +112,8 @@ class BrowserToolkit(BaseToolkit):
116
112
  elif tool == 'google':
117
113
  try:
118
114
  google_api_wrapper = GoogleSearchAPIWrapper(
119
- **wrapper_payload_google
115
+ google_api_key=wrapper_payload_google.get('google_api_key'),
116
+ google_cse_id=wrapper_payload_google.get('google_cse_id')
120
117
  )
121
118
  tool_entry = GoogleSearchResults(api_wrapper=google_api_wrapper)
122
119
  # rename the tool to avoid conflicts
@@ -27,7 +27,6 @@ class MultiURLCrawler(BaseTool):
27
27
  max_response_size: int = 3000
28
28
  name: str = "multi_url_crawler"
29
29
  description: str = "Crawls multiple URLs and returns the content related to query"
30
- embedding_model: str = None
31
30
  connection_string: str = None
32
31
  args_schema: Type[BaseModel] = create_model("MultiURLCrawlerModel",
33
32
  query=(str, Field(description="Query text to search pages")),
@@ -36,7 +35,7 @@ class MultiURLCrawler(BaseTool):
36
35
  def _run(self, query: str, urls: list[str], run_manager=None):
37
36
  urls = [url.strip() for url in urls]
38
37
  return webRag(urls=urls, max_response_size=self.max_response_size, query=query,
39
- connection_string=self.connection_string, embedding_model=self.embedding_model)
38
+ connection_string=self.connection_string)
40
39
 
41
40
 
42
41
  class GetHTMLContent(BaseTool):
@@ -32,15 +32,15 @@ def get_page(urls, html_only=False):
32
32
  return docs_transformed
33
33
 
34
34
 
35
- def webRag(urls, max_response_size, query, connection_string=None, embedding_model=None):
35
+ def webRag(urls, max_response_size, query, connection_string=None):
36
36
  if PGVector is None:
37
37
  return "PGVector is not initialized. Web rag is not available."
38
38
 
39
- if not connection_string or not embedding_model:
39
+ if not connection_string:
40
40
  return "Connection string or embedding model is missing. Web rag is not available."
41
41
  text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
42
42
  docs = text_splitter.split_documents(get_page(urls))
43
- embedding_function = SentenceTransformerEmbeddings(model_name=embedding_model)
43
+ embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
44
44
  db = PGVector.from_documents(
45
45
  documents=docs,
46
46
  embedding=embedding_function,
@@ -1,24 +1,25 @@
1
- import re
2
- import logging
3
- import requests
4
- import json
5
1
  import base64
2
+ import json
3
+ import logging
4
+ import re
6
5
  import traceback
7
- from typing import Optional, List, Any, Dict, Callable, Generator, Literal
8
6
  from json import JSONDecodeError
7
+ from typing import Optional, List, Any, Dict, Callable, Generator, Literal
9
8
 
10
- from pydantic import Field, PrivateAttr, model_validator, create_model, SecretStr
11
- from tenacity import retry, stop_after_attempt, wait_exponential, before_sleep_log
12
-
9
+ import requests
10
+ from langchain_community.document_loaders.confluence import ContentFormat
13
11
  from langchain_core.documents import Document
14
- from langchain_core.tools import ToolException
15
12
  from langchain_core.messages import HumanMessage
13
+ from langchain_core.tools import ToolException
16
14
  from markdownify import markdownify
17
- from langchain_community.document_loaders.confluence import ContentFormat
15
+ from pydantic import Field, PrivateAttr, model_validator, create_model, SecretStr
16
+ from tenacity import retry, stop_after_attempt, wait_exponential, before_sleep_log
18
17
 
19
- from ..elitea_base import BaseVectorStoreToolApiWrapper, extend_with_vector_tools
18
+ from alita_sdk.tools.non_code_indexer_toolkit import NonCodeIndexerToolkit
19
+ from alita_sdk.tools.utils.available_tools_decorator import extend_with_parent_available_tools
20
20
  from ..llm.img_utils import ImageDescriptionCache
21
21
  from ..utils import is_cookie_token, parse_cookie_string
22
+ from ...runtime.utils.utils import IndexerKeywords
22
23
 
23
24
  logger = logging.getLogger(__name__)
24
25
 
@@ -171,7 +172,7 @@ def parse_payload_params(params: Optional[str]) -> Dict[str, Any]:
171
172
  return {}
172
173
 
173
174
 
174
- class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
175
+ class ConfluenceAPIWrapper(NonCodeIndexerToolkit):
175
176
  # Changed from PrivateAttr to Optional field with exclude=True
176
177
  client: Optional[Any] = Field(default=None, exclude=True)
177
178
  base_url: str
@@ -229,7 +230,7 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
229
230
  client_instance._update_header(header, value)
230
231
 
231
232
  values['client'] = client_instance
232
- return values
233
+ return super().validate_toolkit(values)
233
234
 
234
235
  def __unquote_confluence_space(self) -> str | None:
235
236
  if self.space:
@@ -843,13 +844,68 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
843
844
  yield document
844
845
 
845
846
  def _process_document(self, document: Document) -> Generator[Document, None, None]:
846
- attachments = self.get_page_attachments(document.metadata.get('id'))
847
- if isinstance(attachments, str):
848
- logger.info(f" {document.metadata.get('id')}: {attachments}")
849
- return
850
- for attachment in attachments:
851
- # TODO need to retrive content from other fields/sources if both attachment.get('content', '') and attachment.get('llm_analysis', '') are None
852
- yield Document(page_content=attachment.get('content', '') or attachment.get('llm_analysis', '') or '', metadata=attachment.get('metadata', {}))
847
+ try:
848
+ page_id = document.metadata.get('id')
849
+ attachments = self.client.get_attachments_from_content(page_id)
850
+ if not attachments or not attachments.get('results'):
851
+ return f"No attachments found for page ID {page_id}."
852
+
853
+ # Get attachment history for created/updated info
854
+ history_map = {}
855
+ for attachment in attachments['results']:
856
+ try:
857
+ hist = self.client.history(attachment['id'])
858
+ history_map[attachment['id']] = hist
859
+ except Exception as e:
860
+ logger.warning(f"Failed to fetch history for attachment {attachment.get('title', '')}: {str(e)}")
861
+ history_map[attachment['id']] = None
862
+
863
+ import re
864
+ for attachment in attachments['results']:
865
+ title = attachment.get('title', '')
866
+ file_ext = title.lower().split('.')[-1] if '.' in title else ''
867
+
868
+ media_type = attachment.get('metadata', {}).get('mediaType', '')
869
+ # Core metadata extraction with history
870
+ hist = history_map.get(attachment['id']) or {}
871
+ created_by = hist.get('createdBy', {}).get('displayName', '') if hist else attachment.get('creator', {}).get('displayName', '')
872
+ created_date = hist.get('createdDate', '') if hist else attachment.get('created', '')
873
+ last_updated = hist.get('lastUpdated', {}).get('when', '') if hist else ''
874
+
875
+ metadata = {
876
+ 'name': title,
877
+ 'size': attachment.get('extensions', {}).get('fileSize', None),
878
+ 'creator': created_by,
879
+ 'created': created_date,
880
+ 'updated': last_updated,
881
+ 'media_type': media_type,
882
+ 'labels': [label['name'] for label in
883
+ attachment.get('metadata', {}).get('labels', {}).get('results', [])],
884
+ 'download_url': self.base_url.rstrip('/') + attachment['_links']['download'] if attachment.get(
885
+ '_links', {}).get('download') else None
886
+ }
887
+
888
+ download_url = self.base_url.rstrip('/') + attachment['_links']['download']
889
+
890
+ try:
891
+ resp = self.client.request(method="GET", path=download_url[len(self.base_url):], advanced_mode=True)
892
+ if resp.status_code == 200:
893
+ content = resp.content
894
+ else:
895
+ content = f"[Failed to download {download_url}: HTTP status code {resp.status_code}]"
896
+ except Exception as e:
897
+ content = f"[Error downloading content: {str(e)}]"
898
+
899
+ if isinstance(content, str):
900
+ yield Document(page_content=content, metadata=metadata)
901
+ else:
902
+ yield Document(page_content="", metadata={
903
+ **metadata,
904
+ IndexerKeywords.CONTENT_FILE_NAME.value: f".{file_ext}",
905
+ IndexerKeywords.CONTENT_IN_BYTES.value: content
906
+ })
907
+ except Exception as e:
908
+ yield from ()
853
909
 
854
910
  def _download_image(self, image_url):
855
911
  """
@@ -1598,7 +1654,7 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
1598
1654
  "bins_with_llm": (Optional[bool], Field(description="Use LLM for processing binary files.", default=False)),
1599
1655
  }
1600
1656
 
1601
- @extend_with_vector_tools
1657
+ @extend_with_parent_available_tools
1602
1658
  def get_available_tools(self):
1603
1659
  # Confluence-specific tools
1604
1660
  confluence_tools = [
@@ -13,7 +13,6 @@ from langchain_core.tools import ToolException
13
13
  from pydantic import Field, PrivateAttr, model_validator, create_model, SecretStr
14
14
  import requests
15
15
 
16
- from ..elitea_base import BaseVectorStoreToolApiWrapper, extend_with_vector_tools
17
16
  from ..llm.img_utils import ImageDescriptionCache
18
17
  from ..non_code_indexer_toolkit import NonCodeIndexerToolkit
19
18
  from ..utils import is_cookie_token, parse_cookie_string
@@ -9,14 +9,9 @@ from langchain_core.tools import ToolException
9
9
  from pydantic import PrivateAttr, SecretStr, create_model, model_validator, Field
10
10
  from python_graphql_client import GraphqlClient
11
11
 
12
- from ..elitea_base import (
13
- BaseVectorStoreToolApiWrapper,
14
- extend_with_vector_tools,
15
- )
16
12
  from ..non_code_indexer_toolkit import NonCodeIndexerToolkit
17
13
  from ..utils.available_tools_decorator import extend_with_parent_available_tools
18
14
  from ...runtime.utils.utils import IndexerKeywords
19
- from ..utils.content_parser import file_extension_by_chunker
20
15
 
21
16
  try:
22
17
  from alita_sdk.runtime.langchain.interfaces.llm_processor import get_embeddings
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.315
3
+ Version: 0.3.317
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 <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -56,7 +56,7 @@ alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py,sha256=3ne-a5qIkB
56
56
  alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py,sha256=NzpoL4C7UzyzLouTSL_xTQw70MitNt-WZz3Eyl7QkTA,8294
57
57
  alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py,sha256=fKezkgvIcLG7S2PVJp1a8sZd6C4XQKNZKAFC87DbQts,7003
58
58
  alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py,sha256=9hi5eHgDIfa9wBWqTuwMM6D6W64czrDTfZl_htooe8Y,5943
59
- alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py,sha256=YBFYikrOEITfIavU0Xu7BQSNvPCFKzcmbJ_VDeQ6KdI,3078
59
+ alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py,sha256=-c6pTWM_UvogBqrx8ndtB2uFQAk2O4-NU1frmsKLdro,3098
60
60
  alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py,sha256=5WXGcyHraSVj3ANHj_U6X4EDikoekrIYtS0Q_QqNIng,2608
61
61
  alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py,sha256=QwgBJE-BvOasjgT1hYHZc0MP0F_elirUjSzKixoM6fY,6610
62
62
  alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py,sha256=Nav2cgCQKOHQi_ZgYYn_iFdP_Os56KVlVR5nHGXecBc,3445
@@ -70,7 +70,7 @@ alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py,sha256=o0SRFPZ-
70
70
  alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py,sha256=uNcV0En49_0u0RYB1sP1XfNspT2Xc5CacuJr9Jqv79Q,2972
71
71
  alita_sdk/runtime/langchain/document_loaders/ImageParser.py,sha256=gao5yCCKdDai_Gx7YdEx5U6oMyJYzn69eYmEvWLh-fc,656
72
72
  alita_sdk/runtime/langchain/document_loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- alita_sdk/runtime/langchain/document_loaders/constants.py,sha256=MXMm1rHHYufTVNN_NZ_GimqfT25Z3i4-_Pe3MNRmqtc,7164
73
+ alita_sdk/runtime/langchain/document_loaders/constants.py,sha256=d7Yu39NFW1tnPzgQ-YoXrXO7R5o0ZBqSQe3ScwegAsw,7161
74
74
  alita_sdk/runtime/langchain/document_loaders/utils.py,sha256=9xghESf3axBbwxATyVuS0Yu-TWe8zWZnXgCD1ZVyNW0,2414
75
75
  alita_sdk/runtime/langchain/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
76
  alita_sdk/runtime/langchain/interfaces/kwextractor.py,sha256=kSJA9L8g8UArmHu7Bd9dIO0Rrq86JPUb8RYNlnN68FQ,3072
@@ -120,8 +120,8 @@ alita_sdk/runtime/tools/pgvector_search.py,sha256=NN2BGAnq4SsDHIhUcFZ8d_dbEOM8Qw
120
120
  alita_sdk/runtime/tools/prompt.py,sha256=nJafb_e5aOM1Rr3qGFCR-SKziU9uCsiP2okIMs9PppM,741
121
121
  alita_sdk/runtime/tools/router.py,sha256=wCvZjVkdXK9dMMeEerrgKf5M790RudH68pDortnHSz0,1517
122
122
  alita_sdk/runtime/tools/tool.py,sha256=lE1hGi6qOAXG7qxtqxarD_XMQqTghdywf261DZawwno,5631
123
- alita_sdk/runtime/tools/vectorstore.py,sha256=hlfuwbQDWCkHQnEM-mOBBbrig_WPw9ItY94Gdn2pBb4,35819
124
- alita_sdk/runtime/tools/vectorstore_base.py,sha256=yfC1lV3sB-c3Oqtrn8WXFZw8A3NDFQcPf2y2zIqyfiI,27550
123
+ alita_sdk/runtime/tools/vectorstore.py,sha256=UFBAJ_N2F6uB0xxIy1VMx581tHco-xDl7v2Hl6u0Xzw,34468
124
+ alita_sdk/runtime/tools/vectorstore_base.py,sha256=FXgPONBfUTKo1bV6P4uZ1JqYHkC3Ch8toR38eavEYPQ,27787
125
125
  alita_sdk/runtime/utils/AlitaCallback.py,sha256=E4LlSBuCHWiUq6W7IZExERHZY0qcmdjzc_rJlF2iQIw,7356
126
126
  alita_sdk/runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
127
  alita_sdk/runtime/utils/constants.py,sha256=Xntx1b_uxUzT4clwqHA_U6K8y5bBqf_4lSQwXdcWrp4,13586
@@ -162,11 +162,11 @@ alita_sdk/tools/bitbucket/__init__.py,sha256=2VAY45Jij5dHkz6UGTmsEmOcLeJMWmcX-Wr
162
162
  alita_sdk/tools/bitbucket/api_wrapper.py,sha256=xHrluV2aCckOK_lGd42fFz1c-pyuZAnC-A_v1SKiM5g,20006
163
163
  alita_sdk/tools/bitbucket/bitbucket_constants.py,sha256=UsbhQ1iEvrKoxceTFPWTYhaXS1zSxbmjs1TwY0-P4gw,462
164
164
  alita_sdk/tools/bitbucket/cloud_api_wrapper.py,sha256=QHdud-d3xcz3mOP3xb1Htk1sv9QFg7bTm1szdN_zohQ,15517
165
- alita_sdk/tools/browser/__init__.py,sha256=faLmuMt2CzCPMmxquGcdV-TGAbKxHi7sTQyuK0VKYNs,6760
166
- alita_sdk/tools/browser/crawler.py,sha256=Ah0tyF7lKGJIlxMY4MXEQmuDehaB_I-FmECxG27DnPw,2476
165
+ alita_sdk/tools/browser/__init__.py,sha256=NvD1gfkuBt9AwtTP_Ag7LneCs0gDIVIMUZw2_SDWkG4,6577
166
+ alita_sdk/tools/browser/crawler.py,sha256=tkB5UX9FmpJrhKPfaS-a2pL9loRf8zN-V5SfpQvX2NI,2406
167
167
  alita_sdk/tools/browser/duck_duck_go_search.py,sha256=iKws923v34o-ySXohJw-8xTDBWlj3fMsnzC_ZRuPugE,2002
168
168
  alita_sdk/tools/browser/google_search_rag.py,sha256=QVHFbVwymiJGuno_HLSJOK1c_MpgMdBSTYQKf6fLRk8,1838
169
- alita_sdk/tools/browser/utils.py,sha256=J4-ZSb5TeCJnYJTsPKUOyiOC_vfTye3QtZA-T_AYEoA,2853
169
+ alita_sdk/tools/browser/utils.py,sha256=zFbpsTw593TRqxZ8bu5RQ7PHzZTfZjxvH5IGgRRjR2Q,2811
170
170
  alita_sdk/tools/browser/wiki.py,sha256=Qh3HBFd4dkS2VavXbFJOm4b8SjVSIe5xSD7CY1vEkKE,1126
171
171
  alita_sdk/tools/carrier/__init__.py,sha256=Ove5wAXBxyLS5F5ZxgydV2xKZJIR3OoMB5fMkn8jNUc,4296
172
172
  alita_sdk/tools/carrier/api_wrapper.py,sha256=tP7oR_U0HX1rxqat0Jkz6oh3RB9BEr1ESKQ9J8OWDcE,9093
@@ -227,7 +227,7 @@ alita_sdk/tools/code/loaders/codesearcher.py,sha256=XoXXZtIQZhvjIwZlnl_4wVGHC-3s
227
227
  alita_sdk/tools/code/sonar/__init__.py,sha256=iPqj2PnUY4-btJjaDeWIPdn-c9L_uCr_qOoP_uwRoXw,3360
228
228
  alita_sdk/tools/code/sonar/api_wrapper.py,sha256=nNqxcWN_6W8c0ckj-Er9HkNuAdgQLoWBXh5UyzNutis,2653
229
229
  alita_sdk/tools/confluence/__init__.py,sha256=zRnPBM1c7VTRTS955HNc7AEGV5t8ACc2f9wBXmmeXao,6845
230
- alita_sdk/tools/confluence/api_wrapper.py,sha256=3TOFmISMpheydXPbhURgXbEStpzTRadQ_5iPxmT90M8,84995
230
+ alita_sdk/tools/confluence/api_wrapper.py,sha256=HIP9zZMne9BDSnwpHKwpl-rW0MWv9jeA6APll0DNS6w,87863
231
231
  alita_sdk/tools/confluence/loader.py,sha256=4bf5qrJMEiJzuZp2NlxO2XObLD1w7fxss_WyMUpe8sg,9290
232
232
  alita_sdk/tools/confluence/utils.py,sha256=Lxo6dBD0OlvM4o0JuK6qeB_4LV9BptiwJA9e1vqNcDw,435
233
233
  alita_sdk/tools/custom_open_api/__init__.py,sha256=9aT5SPNPWcJC6jMZEM-3rUCXVULj_3-qJLQKmnreKNo,2537
@@ -260,7 +260,7 @@ alita_sdk/tools/google/bigquery/tool.py,sha256=Esf9Hsp8I0e7-5EdkFqQ-bid0cfrg-bfS
260
260
  alita_sdk/tools/google_places/__init__.py,sha256=QtmBCI0bHDK79u4hsCSWFcUihu-h4EmPSh9Yll7zz3w,3590
261
261
  alita_sdk/tools/google_places/api_wrapper.py,sha256=7nZly6nk4f4Tm7s2MVdnnwlb-1_WHRrDhyjDiqoyPjA,4674
262
262
  alita_sdk/tools/jira/__init__.py,sha256=G-9qnOYKFWM_adG0QFexh5-2pj_WaxIxxZanB3ARFqI,6339
263
- alita_sdk/tools/jira/api_wrapper.py,sha256=IMBmsi0kJ7GXCydSWVSAfhwRaau6nAaJspimwl8aXlo,79266
263
+ alita_sdk/tools/jira/api_wrapper.py,sha256=T_YW328n59IS1S4-_5seTizlQkCGi9fTGhW34AqM-sA,79184
264
264
  alita_sdk/tools/keycloak/__init__.py,sha256=0WB9yXMUUAHQRni1ghDEmd7GYa7aJPsTVlZgMCM9cQ0,3050
265
265
  alita_sdk/tools/keycloak/api_wrapper.py,sha256=cOGr0f3S3-c6tRDBWI8wMnetjoNSxiV5rvC_0VHb8uw,3100
266
266
  alita_sdk/tools/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -331,7 +331,7 @@ alita_sdk/tools/utils/content_parser.py,sha256=8cq-6dHYp-jEYU1Yt3P6rVedVgVaOfgnN
331
331
  alita_sdk/tools/vector_adapters/VectorStoreAdapter.py,sha256=ypBEAkFRGHv5edW0N9rdo1yKurNGQ4pRVEWtrN_7SeA,17656
332
332
  alita_sdk/tools/vector_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
333
  alita_sdk/tools/xray/__init__.py,sha256=eOMWP8VamFbbJgt1xrGpGPqB9ByOTA0Cd3LCaETzGk4,4376
334
- alita_sdk/tools/xray/api_wrapper.py,sha256=X7OLDiIpA5aXUZ8rpSBas8E27mE_XWTn211o9MYiqzU,30313
334
+ alita_sdk/tools/xray/api_wrapper.py,sha256=6eHYsIgbuplO7hFOrcsHE6rdE8Mpk4smIF_irglvcKw,30157
335
335
  alita_sdk/tools/yagmail/__init__.py,sha256=c4Qn3em0tLxzRmFKpzbBgY9W2EnOoKf0azoDJHng5CY,2208
336
336
  alita_sdk/tools/yagmail/yagmail_wrapper.py,sha256=SKoGVd1X4Ew3ad5tOdtPoY00M6jStNdT3q7GXEjQc5g,1952
337
337
  alita_sdk/tools/zephyr/Zephyr.py,sha256=ODZbg9Aw0H0Rbv-HcDXLI4KHbPiLDHoteDofshw9A_k,1508
@@ -349,8 +349,8 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=A6CUEKjENt3mZlPU9lai88WV9esCD
349
349
  alita_sdk/tools/zephyr_squad/__init__.py,sha256=0ne8XLJEQSLOWfzd2HdnqOYmQlUliKHbBED5kW_Vias,2895
350
350
  alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
351
351
  alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
352
- alita_sdk-0.3.315.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
353
- alita_sdk-0.3.315.dist-info/METADATA,sha256=iwfMJ3l6wJ6OAHVEJWZ1xIUsQgfKlcgUzxdqUvS4POA,18897
354
- alita_sdk-0.3.315.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
355
- alita_sdk-0.3.315.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
356
- alita_sdk-0.3.315.dist-info/RECORD,,
352
+ alita_sdk-0.3.317.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
353
+ alita_sdk-0.3.317.dist-info/METADATA,sha256=LoQ5c7CeCcoUxpYNpw90MobeOL_ppKCaxYzMaZeh44s,18897
354
+ alita_sdk-0.3.317.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
355
+ alita_sdk-0.3.317.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
356
+ alita_sdk-0.3.317.dist-info/RECORD,,