alita-sdk 0.3.322__py3-none-any.whl → 0.3.324__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.
Potentially problematic release.
This version of alita-sdk might be problematic. Click here for more details.
- alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +49 -15
- alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +54 -2
- alita_sdk/runtime/langchain/langraph_agent.py +14 -6
- alita_sdk/runtime/tools/application.py +2 -1
- alita_sdk/runtime/tools/llm.py +19 -19
- alita_sdk/tools/figma/api_wrapper.py +24 -1
- {alita_sdk-0.3.322.dist-info → alita_sdk-0.3.324.dist-info}/METADATA +1 -1
- {alita_sdk-0.3.322.dist-info → alita_sdk-0.3.324.dist-info}/RECORD +11 -11
- {alita_sdk-0.3.322.dist-info → alita_sdk-0.3.324.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.322.dist-info → alita_sdk-0.3.324.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.322.dist-info → alita_sdk-0.3.324.dist-info}/top_level.txt +0 -0
|
@@ -16,10 +16,11 @@ from typing import Iterator
|
|
|
16
16
|
import pandas as pd
|
|
17
17
|
from json import loads
|
|
18
18
|
|
|
19
|
-
from
|
|
19
|
+
from openpyxl import load_workbook
|
|
20
20
|
from langchain_core.documents import Document
|
|
21
21
|
from .AlitaTableLoader import AlitaTableLoader
|
|
22
22
|
|
|
23
|
+
cell_delimeter = " | "
|
|
23
24
|
|
|
24
25
|
class AlitaExcelLoader(AlitaTableLoader):
|
|
25
26
|
|
|
@@ -39,32 +40,65 @@ class AlitaExcelLoader(AlitaTableLoader):
|
|
|
39
40
|
|
|
40
41
|
def get_content(self):
|
|
41
42
|
try:
|
|
42
|
-
|
|
43
|
+
# Load the workbook
|
|
44
|
+
workbook = load_workbook(self.file_path, data_only=True) # `data_only=True` ensures we get cell values, not formulas
|
|
43
45
|
|
|
44
|
-
if self.
|
|
46
|
+
if self.sheet_name:
|
|
47
|
+
# If a specific sheet name is provided, parse only that sheet
|
|
48
|
+
if self.sheet_name in workbook.sheetnames:
|
|
49
|
+
sheet_content = self.parse_sheet(workbook[self.sheet_name])
|
|
50
|
+
return sheet_content
|
|
51
|
+
else:
|
|
52
|
+
raise ValueError(f"Sheet '{self.sheet_name}' does not exist in the workbook.")
|
|
53
|
+
elif self.excel_by_sheets:
|
|
54
|
+
# Parse each sheet individually and return as a dictionary
|
|
45
55
|
result = {}
|
|
46
|
-
for sheet_name
|
|
47
|
-
|
|
48
|
-
result[sheet_name] =
|
|
56
|
+
for sheet_name in workbook.sheetnames:
|
|
57
|
+
sheet_content = self.parse_sheet(workbook[sheet_name])
|
|
58
|
+
result[sheet_name] = sheet_content
|
|
49
59
|
return result
|
|
50
60
|
else:
|
|
61
|
+
# Combine all sheets into a single string result
|
|
51
62
|
result = []
|
|
52
|
-
for sheet_name
|
|
53
|
-
|
|
54
|
-
result.append(f"====== Sheet name: {sheet_name} ======\n{
|
|
63
|
+
for sheet_name in workbook.sheetnames:
|
|
64
|
+
sheet_content = self.parse_sheet(workbook[sheet_name])
|
|
65
|
+
result.append(f"====== Sheet name: {sheet_name} ======\n{sheet_content}")
|
|
55
66
|
return "\n\n".join(result)
|
|
56
67
|
except Exception as e:
|
|
57
|
-
return
|
|
68
|
+
return f"Error reading Excel file: {e}"
|
|
58
69
|
|
|
59
|
-
def parse_sheet(self,
|
|
60
|
-
|
|
70
|
+
def parse_sheet(self, sheet):
|
|
71
|
+
"""
|
|
72
|
+
Parses a single sheet, extracting text and hyperlinks, and formats them.
|
|
73
|
+
"""
|
|
74
|
+
sheet_content = []
|
|
61
75
|
|
|
76
|
+
for row in sheet.iter_rows():
|
|
77
|
+
row_content = []
|
|
78
|
+
for cell in row:
|
|
79
|
+
if cell.hyperlink:
|
|
80
|
+
# If the cell has a hyperlink, format it as Markdown
|
|
81
|
+
hyperlink = cell.hyperlink.target
|
|
82
|
+
cell_value = cell.value or '' # Use cell value or empty string
|
|
83
|
+
row_content.append(f"[{cell_value}]({hyperlink})")
|
|
84
|
+
else:
|
|
85
|
+
# If no hyperlink, use the cell value (computed value if formula)
|
|
86
|
+
row_content.append(str(cell.value) if cell.value is not None else "")
|
|
87
|
+
# Join the row content into a single line using `|` as the delimiter
|
|
88
|
+
sheet_content.append(cell_delimeter.join(row_content))
|
|
89
|
+
|
|
90
|
+
# Format the sheet content based on the return type
|
|
62
91
|
if self.return_type == 'dict':
|
|
63
|
-
|
|
92
|
+
# Convert to a list of dictionaries (each row is a dictionary)
|
|
93
|
+
headers = sheet_content[0].split(cell_delimeter) if sheet_content else []
|
|
94
|
+
data_rows = sheet_content[1:] if len(sheet_content) > 1 else []
|
|
95
|
+
return [dict(zip(headers, row.split(cell_delimeter))) for row in data_rows]
|
|
64
96
|
elif self.return_type == 'csv':
|
|
65
|
-
|
|
97
|
+
# Return as CSV (newline-separated rows, comma-separated values)
|
|
98
|
+
return "\n".join([",".join(row.split(cell_delimeter)) for row in sheet_content])
|
|
66
99
|
else:
|
|
67
|
-
|
|
100
|
+
# Default: Return as plain text (newline-separated rows, pipe-separated values)
|
|
101
|
+
return "\n".join(sheet_content)
|
|
68
102
|
|
|
69
103
|
def load(self) -> list:
|
|
70
104
|
docs = []
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pymupdf
|
|
2
|
+
import fitz
|
|
2
3
|
from langchain_community.document_loaders import PyPDFLoader
|
|
3
4
|
|
|
4
5
|
from .ImageParser import ImageParser
|
|
@@ -43,8 +44,59 @@ class AlitaPDFLoader:
|
|
|
43
44
|
return text_content
|
|
44
45
|
|
|
45
46
|
def read_pdf_page(self, report, page, index):
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
# Extract text in block format (to more accurately match hyperlinks to text)
|
|
48
|
+
text_blocks = page.get_text("blocks") # Returns a list of text blocks
|
|
49
|
+
words = page.get_text("words") # Returns words with their coordinates
|
|
50
|
+
|
|
51
|
+
# Extract hyperlinks
|
|
52
|
+
links = page.get_links()
|
|
53
|
+
|
|
54
|
+
# Create a list to store the modified text
|
|
55
|
+
modified_text = []
|
|
56
|
+
|
|
57
|
+
for block in text_blocks:
|
|
58
|
+
block_rect = fitz.Rect(block[:4]) # Coordinates of the text block
|
|
59
|
+
block_text = block[4] # The actual text of the block
|
|
60
|
+
|
|
61
|
+
# Check if there are hyperlinks intersecting with this text block
|
|
62
|
+
for link in links:
|
|
63
|
+
if "uri" in link: # Ensure this is a hyperlink
|
|
64
|
+
link_rect = link["from"] # Coordinates of the hyperlink area
|
|
65
|
+
link_uri = link["uri"] # The URL of the hyperlink
|
|
66
|
+
|
|
67
|
+
# Expand the hyperlink area slightly to account for inaccuracies
|
|
68
|
+
link_rect = fitz.Rect(
|
|
69
|
+
link_rect.x0 - 1, link_rect.y0 - 1, link_rect.x1 + 1, link_rect.y1 + 1
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
# Find words that are inside the hyperlink area
|
|
73
|
+
link_text = []
|
|
74
|
+
for word in words:
|
|
75
|
+
word_rect = fitz.Rect(word[:4]) # Coordinates of the word
|
|
76
|
+
word_text = word[4]
|
|
77
|
+
|
|
78
|
+
# Check if the word rectangle is fully inside the hyperlink rectangle
|
|
79
|
+
if link_rect.contains(word_rect):
|
|
80
|
+
link_text.append(word_text)
|
|
81
|
+
# If the word partially intersects, check vertical alignment
|
|
82
|
+
elif link_rect.intersects(word_rect):
|
|
83
|
+
# Condition: The word must be on the same line as the hyperlink
|
|
84
|
+
if abs(link_rect.y0 - word_rect.y0) < 2 and abs(link_rect.y1 - word_rect.y1) < 2:
|
|
85
|
+
link_text.append(word_text)
|
|
86
|
+
|
|
87
|
+
# Format the hyperlink in Markdown
|
|
88
|
+
full_text = " ".join(link_text) if link_text else "No text"
|
|
89
|
+
hyperlink = f"[{full_text}]({link_uri})"
|
|
90
|
+
|
|
91
|
+
# Replace the hyperlink text in the block with the formatted hyperlink
|
|
92
|
+
block_text = block_text.replace(full_text, hyperlink)
|
|
93
|
+
|
|
94
|
+
# Add the processed text block to the result
|
|
95
|
+
modified_text.append(block_text)
|
|
96
|
+
|
|
97
|
+
# Combine all text blocks into the final text for the page
|
|
98
|
+
text_content = f'Page: {index}\n' + "\n".join(modified_text)
|
|
99
|
+
|
|
48
100
|
if self.extract_images:
|
|
49
101
|
images = page.get_images(full=True)
|
|
50
102
|
for i, img in enumerate(images):
|
|
@@ -584,11 +584,19 @@ def create_graph(
|
|
|
584
584
|
entry_point = clean_string(schema['entry_point'])
|
|
585
585
|
except KeyError:
|
|
586
586
|
raise ToolException("Entry point is not defined in the schema. Please define 'entry_point' in the schema.")
|
|
587
|
-
if state.items():
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
587
|
+
# if state.items():
|
|
588
|
+
# state_default_node = StateDefaultNode(default_vars=set_defaults(state))
|
|
589
|
+
# lg_builder.add_node(state_default_node.name, state_default_node)
|
|
590
|
+
# lg_builder.set_entry_point(state_default_node.name)
|
|
591
|
+
# lg_builder.add_conditional_edges(state_default_node.name, TransitionalEdge(entry_point))
|
|
592
|
+
for key, value in state.items():
|
|
593
|
+
if 'type' in value and 'value' in value:
|
|
594
|
+
# set default value for state variable if it is defined in the schema
|
|
595
|
+
state_default_node = StateDefaultNode(default_vars=state)
|
|
596
|
+
lg_builder.add_node(state_default_node.name, state_default_node)
|
|
597
|
+
lg_builder.set_entry_point(state_default_node.name)
|
|
598
|
+
lg_builder.add_conditional_edges(state_default_node.name, TransitionalEdge(entry_point))
|
|
599
|
+
break
|
|
592
600
|
else:
|
|
593
601
|
# if no state variables are defined, set the entry point directly
|
|
594
602
|
lg_builder.set_entry_point(entry_point)
|
|
@@ -694,7 +702,7 @@ class LangGraphAgentRunnable(CompiledStateGraph):
|
|
|
694
702
|
|
|
695
703
|
# Append current input to existing messages instead of overwriting
|
|
696
704
|
if input.get('input'):
|
|
697
|
-
current_message =
|
|
705
|
+
current_message = input.get('input')[-1]
|
|
698
706
|
if input.get('messages'):
|
|
699
707
|
# Ensure existing messages are LangChain objects
|
|
700
708
|
input['messages'] = [convert_dict_to_message(msg) for msg in input['messages']]
|
|
@@ -31,7 +31,8 @@ def formulate_query(kwargs):
|
|
|
31
31
|
chat_history = []
|
|
32
32
|
for each in kwargs.get('chat_history')[:]:
|
|
33
33
|
chat_history.append(AIMessage(each))
|
|
34
|
-
|
|
34
|
+
input_message = AIMessage(content=kwargs.get('task'))
|
|
35
|
+
result = {"input": [input_message], "chat_history": chat_history}
|
|
35
36
|
for key, value in kwargs.items():
|
|
36
37
|
if key not in ("task", "chat_history"):
|
|
37
38
|
result[key] = value
|
alita_sdk/runtime/tools/llm.py
CHANGED
|
@@ -14,8 +14,7 @@ logger = logging.getLogger(__name__)
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def create_llm_input_with_messages(
|
|
17
|
-
prompt: Dict[str, str],
|
|
18
|
-
messages: List[BaseMessage],
|
|
17
|
+
prompt: Dict[str, str],
|
|
19
18
|
params: Dict[str, Any]
|
|
20
19
|
) -> List[BaseMessage]:
|
|
21
20
|
"""
|
|
@@ -23,13 +22,12 @@ def create_llm_input_with_messages(
|
|
|
23
22
|
|
|
24
23
|
Args:
|
|
25
24
|
prompt: The prompt configuration with template
|
|
26
|
-
messages: List of chat history messages
|
|
27
25
|
params: Additional parameters for prompt formatting
|
|
28
26
|
|
|
29
27
|
Returns:
|
|
30
28
|
List of messages to send to LLM
|
|
31
29
|
"""
|
|
32
|
-
logger.info(f"Creating LLM input with
|
|
30
|
+
logger.info(f"Creating LLM input with params: {params}")
|
|
33
31
|
|
|
34
32
|
# Build the input messages
|
|
35
33
|
input_messages = []
|
|
@@ -47,9 +45,13 @@ def create_llm_input_with_messages(
|
|
|
47
45
|
raise ToolException(error_msg)
|
|
48
46
|
|
|
49
47
|
# Add the chat history messages
|
|
48
|
+
messages = params.get('messages', [])
|
|
50
49
|
if messages:
|
|
51
50
|
input_messages.extend(messages)
|
|
52
|
-
|
|
51
|
+
else:
|
|
52
|
+
# conditionally add a default human message if no chat history
|
|
53
|
+
input_messages.extend([HumanMessage(content="Reply to this message.")])
|
|
54
|
+
|
|
53
55
|
return input_messages
|
|
54
56
|
|
|
55
57
|
|
|
@@ -124,12 +126,13 @@ class LLMNode(BaseTool):
|
|
|
124
126
|
# Create parameters for prompt formatting from state
|
|
125
127
|
params = {}
|
|
126
128
|
if isinstance(state, dict):
|
|
127
|
-
for var in self.input_variables or []
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
params = {var: state[var] for var in (self.input_variables or []) if var != "messages" and var in state}
|
|
130
|
+
# message as a part of chat history added ONLY if "messages" is in input_variables
|
|
131
|
+
if "messages" in (self.input_variables or []):
|
|
132
|
+
params["messages"] = messages
|
|
130
133
|
|
|
131
134
|
# Create LLM input with proper message handling
|
|
132
|
-
llm_input = create_llm_input_with_messages(self.prompt,
|
|
135
|
+
llm_input = create_llm_input_with_messages(self.prompt, params)
|
|
133
136
|
|
|
134
137
|
# Get the LLM client, potentially with tools bound
|
|
135
138
|
llm_client = self.client
|
|
@@ -268,17 +271,14 @@ class LLMNode(BaseTool):
|
|
|
268
271
|
if json_output_vars:
|
|
269
272
|
try:
|
|
270
273
|
response = _extract_json(content) or {}
|
|
271
|
-
response_data = {key: response.get(key) for key in json_output_vars
|
|
272
|
-
|
|
273
|
-
# Always add the messages to the response
|
|
274
|
-
new_messages = messages + [AIMessage(content=content)]
|
|
275
|
-
response_data['messages'] = new_messages
|
|
276
|
-
|
|
277
|
-
return response_data
|
|
274
|
+
response_data = {key: response.get(key, content) for key in json_output_vars}
|
|
278
275
|
except (ValueError, json.JSONDecodeError) as e:
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
276
|
+
logger.warning(
|
|
277
|
+
f"Expected JSON output but got plain text. Output variables specified: {json_output_vars}. Error: {e}")
|
|
278
|
+
response_data = {var: content for var in json_output_vars}
|
|
279
|
+
new_messages = messages + [AIMessage(content=content)]
|
|
280
|
+
response_data['messages'] = new_messages
|
|
281
|
+
return response_data
|
|
282
282
|
|
|
283
283
|
# Simple text response (either no output variables or JSON parsing failed)
|
|
284
284
|
new_messages = messages + [AIMessage(content=content)]
|
|
@@ -4,6 +4,7 @@ import logging
|
|
|
4
4
|
import re
|
|
5
5
|
from enum import Enum
|
|
6
6
|
from typing import Dict, List, Generator, Optional, Union
|
|
7
|
+
from urllib.parse import urlparse, parse_qs
|
|
7
8
|
|
|
8
9
|
import requests
|
|
9
10
|
from FigmaPy import FigmaPy
|
|
@@ -238,6 +239,7 @@ class FigmaApiWrapper(NonCodeIndexerToolkit):
|
|
|
238
239
|
|
|
239
240
|
def _base_loader(
|
|
240
241
|
self,
|
|
242
|
+
file_or_page_url: Optional[str] = None,
|
|
241
243
|
project_id: Optional[str] = None,
|
|
242
244
|
file_keys_include: Optional[List[str]] = None,
|
|
243
245
|
file_keys_exclude: Optional[List[str]] = None,
|
|
@@ -247,6 +249,24 @@ class FigmaApiWrapper(NonCodeIndexerToolkit):
|
|
|
247
249
|
node_types_exclude: Optional[List[str]] = None,
|
|
248
250
|
**kwargs
|
|
249
251
|
) -> Generator[Document, None, None]:
|
|
252
|
+
if file_or_page_url:
|
|
253
|
+
# If URL is provided and valid, extract and override file_keys_include and node_ids_include
|
|
254
|
+
try:
|
|
255
|
+
parsed = urlparse(file_or_page_url)
|
|
256
|
+
path_parts = parsed.path.strip('/').split('/')
|
|
257
|
+
|
|
258
|
+
# Check if the path matches the expected format
|
|
259
|
+
if len(path_parts) >= 2 and path_parts[0] == 'design':
|
|
260
|
+
file_keys_include = [path_parts[1]]
|
|
261
|
+
if len(path_parts) == 3:
|
|
262
|
+
# To ensure url structure matches Figma's format with 3 path segments
|
|
263
|
+
query_params = parse_qs(parsed.query)
|
|
264
|
+
if "node-id" in query_params:
|
|
265
|
+
node_ids_include = query_params.get('node-id', [])
|
|
266
|
+
except Exception as e:
|
|
267
|
+
raise ToolException(
|
|
268
|
+
f"Unexpected error while processing Figma url {file_or_page_url}: {e}")
|
|
269
|
+
|
|
250
270
|
# If both include and exclude are provided, use only include
|
|
251
271
|
if file_keys_include:
|
|
252
272
|
self._log_tool_event(f"Loading files: {file_keys_include}")
|
|
@@ -364,8 +384,11 @@ class FigmaApiWrapper(NonCodeIndexerToolkit):
|
|
|
364
384
|
def _index_tool_params(self):
|
|
365
385
|
"""Return the parameters for indexing data."""
|
|
366
386
|
return {
|
|
387
|
+
"file_or_page_url": (Optional[str], Field(
|
|
388
|
+
description="Url to file or page to index: i.e. https://www.figma.com/design/[YOUR_FILE_KEY]/Login-page-designs?node-id=[YOUR_PAGE_ID]",
|
|
389
|
+
default=None)),
|
|
367
390
|
"project_id": (Optional[str], Field(
|
|
368
|
-
description="ID of the project to list files from: i.e. 55391681
|
|
391
|
+
description="ID of the project to list files from: i.e. 55391681",
|
|
369
392
|
default=None)),
|
|
370
393
|
'file_keys_include': (Optional[List[str]], Field(
|
|
371
394
|
description="List of file keys to include in index if project_id is not provided: i.e. ['Fp24FuzPwH0L74ODSrCnQo', 'jmhAr6q78dJoMRqt48zisY']",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.324
|
|
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
|
|
@@ -44,7 +44,7 @@ alita_sdk/runtime/langchain/assistant.py,sha256=1Eq8BIefp8suhbC9CssoOXtC-plkemoU
|
|
|
44
44
|
alita_sdk/runtime/langchain/chat_message_template.py,sha256=kPz8W2BG6IMyITFDA5oeb5BxVRkHEVZhuiGl4MBZKdc,2176
|
|
45
45
|
alita_sdk/runtime/langchain/constants.py,sha256=eHVJ_beJNTf1WJo4yq7KMK64fxsRvs3lKc34QCXSbpk,3319
|
|
46
46
|
alita_sdk/runtime/langchain/indexer.py,sha256=0ENHy5EOhThnAiYFc7QAsaTNp9rr8hDV_hTK8ahbatk,37592
|
|
47
|
-
alita_sdk/runtime/langchain/langraph_agent.py,sha256=
|
|
47
|
+
alita_sdk/runtime/langchain/langraph_agent.py,sha256=jbUlqWFly055uSu0pe0qfUvi5L4CoSUCyMHUFVyNMck,44818
|
|
48
48
|
alita_sdk/runtime/langchain/mixedAgentParser.py,sha256=M256lvtsL3YtYflBCEp-rWKrKtcY1dJIyRGVv7KW9ME,2611
|
|
49
49
|
alita_sdk/runtime/langchain/mixedAgentRenderes.py,sha256=asBtKqm88QhZRILditjYICwFVKF5KfO38hu2O-WrSWE,5964
|
|
50
50
|
alita_sdk/runtime/langchain/store_manager.py,sha256=i8Fl11IXJhrBXq1F1ukEVln57B1IBe-tqSUvfUmBV4A,2218
|
|
@@ -56,13 +56,13 @@ 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=
|
|
59
|
+
alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py,sha256=P17csHx94JkXiyo1a2V-CrfP2E5XCG4uZC31ulZ_Ab4,5817
|
|
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
|
|
63
63
|
alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py,sha256=M2q3YThkps0yAZOjfoLcyE7qycVTYKcXEGtpmp0N6C8,10950
|
|
64
64
|
alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py,sha256=RGHDfleYTn7AAc3H-yFZrjm06L0Ux14ZtEJpFlVBNCA,2474
|
|
65
|
-
alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py,sha256=
|
|
65
|
+
alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py,sha256=usSrPnYQ3dDOJDdg6gBDTnBJnHiqjLxd_kvOBfRyVxY,5946
|
|
66
66
|
alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py,sha256=SKAAPo3DfMtRPxICKrPzlXXkC5RfaeiRj7lejLXTi7o,2337
|
|
67
67
|
alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py,sha256=m_7aq-aCFVb4vXZsJNinfN1hAuyy_S0ylRknv_ahxDc,340
|
|
68
68
|
alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py,sha256=CUVVnisxm7b5yZWV6rn0Q3MEEaO1GWNcfnz5yWz8T0k,13283
|
|
@@ -105,14 +105,14 @@ alita_sdk/runtime/toolkits/tools.py,sha256=Ea3LO6voPNysdzVB7jYMZIqSMtda7LCq_6fkV
|
|
|
105
105
|
alita_sdk/runtime/toolkits/vectorstore.py,sha256=BGppQADa1ZiLO17fC0uCACTTEvPHlodEDYEzUcBRbAA,2901
|
|
106
106
|
alita_sdk/runtime/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
107
107
|
alita_sdk/runtime/tools/agent.py,sha256=m98QxOHwnCRTT9j18Olbb5UPS8-ZGeQaGiUyZJSyFck,3162
|
|
108
|
-
alita_sdk/runtime/tools/application.py,sha256=
|
|
108
|
+
alita_sdk/runtime/tools/application.py,sha256=j6H2OFteb7h2Yhxk1ipA-i5g3BvfmTfPuMxbfLPEa0E,2891
|
|
109
109
|
alita_sdk/runtime/tools/artifact.py,sha256=yIn-kfI9OWoaxbBeqdqF0M1HPeMtNnvZ_pCPoUIwnCk,8708
|
|
110
110
|
alita_sdk/runtime/tools/datasource.py,sha256=pvbaSfI-ThQQnjHG-QhYNSTYRnZB0rYtZFpjCfpzxYI,2443
|
|
111
111
|
alita_sdk/runtime/tools/echo.py,sha256=spw9eCweXzixJqHnZofHE1yWiSUa04L4VKycf3KCEaM,486
|
|
112
112
|
alita_sdk/runtime/tools/function.py,sha256=ZFpd7TGwIawze2e7BHlKwP0NHwNw42wwrmmnXyJQJhk,2600
|
|
113
113
|
alita_sdk/runtime/tools/graph.py,sha256=MbnZYqdmvZY7SGDp43lOVVIjUt5ARHSgj43mdtBjSjQ,3092
|
|
114
114
|
alita_sdk/runtime/tools/indexer_tool.py,sha256=whSLPevB4WD6dhh2JDXEivDmTvbjiMV1MrPl9cz5eLA,4375
|
|
115
|
-
alita_sdk/runtime/tools/llm.py,sha256=
|
|
115
|
+
alita_sdk/runtime/tools/llm.py,sha256=lVg8t785JLrB2kwIQjpigfhZZP9-BRu-SEUQw6DQyh8,15128
|
|
116
116
|
alita_sdk/runtime/tools/loop.py,sha256=uds0WhZvwMxDVFI6MZHrcmMle637cQfBNg682iLxoJA,8335
|
|
117
117
|
alita_sdk/runtime/tools/loop_output.py,sha256=U4hO9PCQgWlXwOq6jdmCGbegtAxGAPXObSxZQ3z38uk,8069
|
|
118
118
|
alita_sdk/runtime/tools/mcp_server_tool.py,sha256=trGraI8-AwdbNmTKMjfmlBxgTDMTE4-21heCVtd_lz0,4156
|
|
@@ -235,7 +235,7 @@ alita_sdk/tools/custom_open_api/api_wrapper.py,sha256=sDSFpvEqpSvXHGiBISdQQcUecf
|
|
|
235
235
|
alita_sdk/tools/elastic/__init__.py,sha256=iwnSRppRpzvJ1da2K3Glu8Uu41MhBDCYbguboLkEbW0,2818
|
|
236
236
|
alita_sdk/tools/elastic/api_wrapper.py,sha256=pl8CqQxteJAGwyOhMcld-ZgtOTFwwbv42OITQVe8rM0,1948
|
|
237
237
|
alita_sdk/tools/figma/__init__.py,sha256=W6vIMMkZI2Lmpg6_CRRV3oadaIbVI-qTLmKUh6enqWs,4509
|
|
238
|
-
alita_sdk/tools/figma/api_wrapper.py,sha256=
|
|
238
|
+
alita_sdk/tools/figma/api_wrapper.py,sha256=SFuvjhxYgey1qGsO9sakFpY1bK1RSzgAH-uJsAp7FnE,27477
|
|
239
239
|
alita_sdk/tools/github/__init__.py,sha256=2rHu0zZyZGnLC5CkHgDIhe14N9yCyaEfrrt7ydH8478,5191
|
|
240
240
|
alita_sdk/tools/github/api_wrapper.py,sha256=uDwYckdnpYRJtb0uZnDkaz2udvdDLVxuCh1tSwspsiU,8411
|
|
241
241
|
alita_sdk/tools/github/github_client.py,sha256=nxnSXsDul2PPbWvYZS8TmAFFmR-5ALyakNoV5LN2D4U,86617
|
|
@@ -349,8 +349,8 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=kT0TbmMvuKhDUZc0i7KO18O38JM9S
|
|
|
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.
|
|
353
|
-
alita_sdk-0.3.
|
|
354
|
-
alita_sdk-0.3.
|
|
355
|
-
alita_sdk-0.3.
|
|
356
|
-
alita_sdk-0.3.
|
|
352
|
+
alita_sdk-0.3.324.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
353
|
+
alita_sdk-0.3.324.dist-info/METADATA,sha256=uxEEUIMIOSP9WwGk_YaGjp2hDLTynd35eEWo4SPjHUc,18897
|
|
354
|
+
alita_sdk-0.3.324.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
355
|
+
alita_sdk-0.3.324.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
|
|
356
|
+
alita_sdk-0.3.324.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|