alita-sdk 0.3.457__py3-none-any.whl → 0.3.486__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/cli/__init__.py +10 -0
- alita_sdk/cli/__main__.py +17 -0
- alita_sdk/cli/agent/__init__.py +5 -0
- alita_sdk/cli/agent/default.py +258 -0
- alita_sdk/cli/agent_executor.py +155 -0
- alita_sdk/cli/agent_loader.py +194 -0
- alita_sdk/cli/agent_ui.py +228 -0
- alita_sdk/cli/agents.py +3592 -0
- alita_sdk/cli/callbacks.py +647 -0
- alita_sdk/cli/cli.py +168 -0
- alita_sdk/cli/config.py +306 -0
- alita_sdk/cli/context/__init__.py +30 -0
- alita_sdk/cli/context/cleanup.py +198 -0
- alita_sdk/cli/context/manager.py +731 -0
- alita_sdk/cli/context/message.py +285 -0
- alita_sdk/cli/context/strategies.py +289 -0
- alita_sdk/cli/context/token_estimation.py +127 -0
- alita_sdk/cli/formatting.py +182 -0
- alita_sdk/cli/input_handler.py +419 -0
- alita_sdk/cli/inventory.py +1256 -0
- alita_sdk/cli/mcp_loader.py +315 -0
- alita_sdk/cli/toolkit.py +327 -0
- alita_sdk/cli/toolkit_loader.py +85 -0
- alita_sdk/cli/tools/__init__.py +43 -0
- alita_sdk/cli/tools/approval.py +224 -0
- alita_sdk/cli/tools/filesystem.py +1665 -0
- alita_sdk/cli/tools/planning.py +389 -0
- alita_sdk/cli/tools/terminal.py +414 -0
- alita_sdk/community/__init__.py +64 -8
- alita_sdk/community/inventory/__init__.py +224 -0
- alita_sdk/community/inventory/config.py +257 -0
- alita_sdk/community/inventory/enrichment.py +2137 -0
- alita_sdk/community/inventory/extractors.py +1469 -0
- alita_sdk/community/inventory/ingestion.py +3172 -0
- alita_sdk/community/inventory/knowledge_graph.py +1457 -0
- alita_sdk/community/inventory/parsers/__init__.py +218 -0
- alita_sdk/community/inventory/parsers/base.py +295 -0
- alita_sdk/community/inventory/parsers/csharp_parser.py +907 -0
- alita_sdk/community/inventory/parsers/go_parser.py +851 -0
- alita_sdk/community/inventory/parsers/html_parser.py +389 -0
- alita_sdk/community/inventory/parsers/java_parser.py +593 -0
- alita_sdk/community/inventory/parsers/javascript_parser.py +629 -0
- alita_sdk/community/inventory/parsers/kotlin_parser.py +768 -0
- alita_sdk/community/inventory/parsers/markdown_parser.py +362 -0
- alita_sdk/community/inventory/parsers/python_parser.py +604 -0
- alita_sdk/community/inventory/parsers/rust_parser.py +858 -0
- alita_sdk/community/inventory/parsers/swift_parser.py +832 -0
- alita_sdk/community/inventory/parsers/text_parser.py +322 -0
- alita_sdk/community/inventory/parsers/yaml_parser.py +370 -0
- alita_sdk/community/inventory/patterns/__init__.py +61 -0
- alita_sdk/community/inventory/patterns/ast_adapter.py +380 -0
- alita_sdk/community/inventory/patterns/loader.py +348 -0
- alita_sdk/community/inventory/patterns/registry.py +198 -0
- alita_sdk/community/inventory/presets.py +535 -0
- alita_sdk/community/inventory/retrieval.py +1403 -0
- alita_sdk/community/inventory/toolkit.py +169 -0
- alita_sdk/community/inventory/visualize.py +1370 -0
- alita_sdk/configurations/bitbucket.py +0 -3
- alita_sdk/runtime/clients/client.py +99 -26
- alita_sdk/runtime/langchain/assistant.py +4 -2
- alita_sdk/runtime/langchain/constants.py +2 -1
- alita_sdk/runtime/langchain/langraph_agent.py +134 -31
- alita_sdk/runtime/langchain/utils.py +1 -1
- alita_sdk/runtime/llms/preloaded.py +2 -6
- alita_sdk/runtime/toolkits/__init__.py +2 -0
- alita_sdk/runtime/toolkits/application.py +1 -1
- alita_sdk/runtime/toolkits/mcp.py +46 -36
- alita_sdk/runtime/toolkits/planning.py +171 -0
- alita_sdk/runtime/toolkits/tools.py +39 -6
- alita_sdk/runtime/tools/function.py +17 -5
- alita_sdk/runtime/tools/llm.py +249 -14
- alita_sdk/runtime/tools/planning/__init__.py +36 -0
- alita_sdk/runtime/tools/planning/models.py +246 -0
- alita_sdk/runtime/tools/planning/wrapper.py +607 -0
- alita_sdk/runtime/tools/vectorstore_base.py +41 -6
- alita_sdk/runtime/utils/mcp_oauth.py +80 -0
- alita_sdk/runtime/utils/streamlit.py +6 -10
- alita_sdk/runtime/utils/toolkit_utils.py +19 -4
- alita_sdk/tools/__init__.py +54 -27
- alita_sdk/tools/ado/repos/repos_wrapper.py +1 -2
- alita_sdk/tools/base_indexer_toolkit.py +150 -19
- alita_sdk/tools/bitbucket/__init__.py +2 -2
- alita_sdk/tools/chunkers/__init__.py +3 -1
- alita_sdk/tools/chunkers/sematic/markdown_chunker.py +95 -6
- alita_sdk/tools/chunkers/universal_chunker.py +269 -0
- alita_sdk/tools/code_indexer_toolkit.py +55 -22
- alita_sdk/tools/elitea_base.py +86 -21
- alita_sdk/tools/jira/__init__.py +1 -1
- alita_sdk/tools/jira/api_wrapper.py +91 -40
- alita_sdk/tools/non_code_indexer_toolkit.py +1 -0
- alita_sdk/tools/qtest/__init__.py +1 -1
- alita_sdk/tools/qtest/api_wrapper.py +871 -32
- alita_sdk/tools/sharepoint/api_wrapper.py +22 -2
- alita_sdk/tools/sharepoint/authorization_helper.py +17 -1
- alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +8 -2
- alita_sdk/tools/zephyr_essential/api_wrapper.py +12 -13
- {alita_sdk-0.3.457.dist-info → alita_sdk-0.3.486.dist-info}/METADATA +146 -2
- {alita_sdk-0.3.457.dist-info → alita_sdk-0.3.486.dist-info}/RECORD +102 -40
- alita_sdk-0.3.486.dist-info/entry_points.txt +2 -0
- {alita_sdk-0.3.457.dist-info → alita_sdk-0.3.486.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.457.dist-info → alita_sdk-0.3.486.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.457.dist-info → alita_sdk-0.3.486.dist-info}/top_level.txt +0 -0
|
@@ -130,9 +130,24 @@ class SharepointApiWrapper(NonCodeIndexerToolkit):
|
|
|
130
130
|
if not limit_files:
|
|
131
131
|
limit_files = 100
|
|
132
132
|
#
|
|
133
|
+
site_segments = [seg for seg in self.site_url.strip('/').split('/') if seg][-2:]
|
|
134
|
+
full_path_prefix = '/'.join(site_segments)
|
|
135
|
+
#
|
|
133
136
|
for lib in all_libraries:
|
|
134
137
|
library_type = decode_sharepoint_string(lib.properties["EntityTypeName"])
|
|
135
|
-
target_folder_url =
|
|
138
|
+
target_folder_url = library_type
|
|
139
|
+
if folder_name:
|
|
140
|
+
folder_path = folder_name.strip('/')
|
|
141
|
+
expected_prefix = f'{full_path_prefix}/{library_type}'
|
|
142
|
+
if folder_path.startswith(full_path_prefix):
|
|
143
|
+
if folder_path.startswith(expected_prefix):
|
|
144
|
+
target_folder_url = folder_path.removeprefix(f'{full_path_prefix}/')
|
|
145
|
+
else:
|
|
146
|
+
# ignore full path folder which is not targeted to current library
|
|
147
|
+
continue
|
|
148
|
+
else:
|
|
149
|
+
target_folder_url = f"{library_type}/{folder_name}"
|
|
150
|
+
#
|
|
136
151
|
files = (self._client.web.get_folder_by_server_relative_path(target_folder_url)
|
|
137
152
|
.get_files(True)
|
|
138
153
|
.execute_query())
|
|
@@ -226,13 +241,18 @@ class SharepointApiWrapper(NonCodeIndexerToolkit):
|
|
|
226
241
|
'skip_extensions': (Optional[List[str]], Field(
|
|
227
242
|
description="List of file extensions to skip when processing: i.e. ['*.png', '*.jpg']",
|
|
228
243
|
default=[])),
|
|
244
|
+
'path': (Optional[str], Field(
|
|
245
|
+
description="Folder path. "
|
|
246
|
+
"Accepts either a full server-relative path (e.g., '/sites/SiteName/...') or a relative path. "
|
|
247
|
+
"If a relative path is provided, the search will be performed recursively under 'Shared Documents' and other private libraries.",
|
|
248
|
+
default=None)),
|
|
229
249
|
}
|
|
230
250
|
|
|
231
251
|
def _base_loader(self, **kwargs) -> Generator[Document, None, None]:
|
|
232
252
|
|
|
233
253
|
self._log_tool_event(message="Starting SharePoint files extraction", tool_name="loader")
|
|
234
254
|
try:
|
|
235
|
-
all_files = self.get_files_list(
|
|
255
|
+
all_files = self.get_files_list(kwargs.get('path'), kwargs.get('limit_files', 10000))
|
|
236
256
|
self._log_tool_event(message="List of the files has been extracted", tool_name="loader")
|
|
237
257
|
except Exception as e:
|
|
238
258
|
raise ToolException(f"Unable to extract files: {e}")
|
|
@@ -147,12 +147,28 @@ class SharepointAuthorizationHelper:
|
|
|
147
147
|
if limit_files is not None and len(result) + len(files) >= limit_files:
|
|
148
148
|
return files[:limit_files - len(result)]
|
|
149
149
|
return files
|
|
150
|
+
#
|
|
151
|
+
site_segments = [seg for seg in site_url.strip('/').split('/') if seg][-2:]
|
|
152
|
+
full_path_prefix = '/'.join(site_segments)
|
|
153
|
+
#
|
|
150
154
|
for drive in drives:
|
|
151
155
|
drive_id = drive.get("id")
|
|
152
156
|
drive_path = unquote(urlparse(drive.get("webUrl")).path) if drive.get("webUrl") else ""
|
|
153
157
|
if not drive_id:
|
|
154
158
|
continue # skip drives without id
|
|
155
|
-
|
|
159
|
+
#
|
|
160
|
+
sub_folder = folder_name
|
|
161
|
+
if folder_name:
|
|
162
|
+
folder_path = folder_name.strip('/')
|
|
163
|
+
expected_prefix = drive_path.strip('/')#f'{full_path_prefix}/{library_type}'
|
|
164
|
+
if folder_path.startswith(full_path_prefix):
|
|
165
|
+
if folder_path.startswith(expected_prefix):
|
|
166
|
+
sub_folder = folder_path.removeprefix(f'{expected_prefix}').strip('/')#target_folder_url = folder_path.removeprefix(f'{full_path_prefix}/')
|
|
167
|
+
else:
|
|
168
|
+
# ignore full path folder which is not targeted to current drive
|
|
169
|
+
continue
|
|
170
|
+
#
|
|
171
|
+
files = _recurse_drive(drive_id, drive_path, sub_folder, limit_files)
|
|
156
172
|
result.extend(files)
|
|
157
173
|
if limit_files is not None and len(result) >= limit_files:
|
|
158
174
|
return result[:limit_files]
|
|
@@ -137,12 +137,18 @@ class PGVectorAdapter(VectorStoreAdapter):
|
|
|
137
137
|
# This logic deletes all data from the vectorstore collection without removal of collection.
|
|
138
138
|
# Collection itself remains available for future indexing.
|
|
139
139
|
from sqlalchemy.orm import Session
|
|
140
|
-
from sqlalchemy import func
|
|
140
|
+
from sqlalchemy import func, or_
|
|
141
141
|
|
|
142
142
|
store = vectorstore_wrapper.vectorstore
|
|
143
143
|
with Session(store.session_maker.bind) as session:
|
|
144
|
+
# Delete entries matching the index_name and not of type index_meta
|
|
144
145
|
session.query(store.EmbeddingStore).filter(
|
|
145
|
-
func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata, 'collection') == index_name
|
|
146
|
+
func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata, 'collection') == index_name,
|
|
147
|
+
or_(
|
|
148
|
+
func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata, 'type').is_(None),
|
|
149
|
+
func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata,
|
|
150
|
+
'type') != IndexerKeywords.INDEX_META_TYPE.value
|
|
151
|
+
)
|
|
146
152
|
).delete(synchronize_session=False)
|
|
147
153
|
session.commit()
|
|
148
154
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import hashlib
|
|
1
2
|
import json
|
|
2
3
|
import logging
|
|
3
4
|
from typing import Optional, Generator, Literal
|
|
@@ -284,22 +285,20 @@ class ZephyrEssentialApiWrapper(NonCodeIndexerToolkit):
|
|
|
284
285
|
if isinstance(v, (str, int, float, bool, list, dict))
|
|
285
286
|
}
|
|
286
287
|
metadata['type'] = "TEST_CASE"
|
|
287
|
-
|
|
288
|
-
yield Document(page_content="", metadata=metadata)
|
|
289
|
-
|
|
290
|
-
def _extend_data(self, documents: Generator[Document, None, None]) -> Generator[Document, None, None]:
|
|
291
|
-
for document in documents:
|
|
288
|
+
#
|
|
292
289
|
try:
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
290
|
+
additional_content = self._process_test_case(metadata['key'])
|
|
291
|
+
for steps_type, content in additional_content.items():
|
|
292
|
+
if content:
|
|
293
|
+
page_content = json.dumps(content)
|
|
294
|
+
content_hash = hashlib.sha256(page_content.encode('utf-8')).hexdigest()
|
|
295
|
+
metadata[IndexerKeywords.UPDATED_ON.value] = content_hash
|
|
296
|
+
metadata[IndexerKeywords.CONTENT_IN_BYTES.value] = page_content.encode('utf-8')
|
|
297
|
+
metadata["steps_type"] = steps_type
|
|
300
298
|
except Exception as e:
|
|
301
299
|
logging.error(f"Failed to process document: {e}")
|
|
302
|
-
|
|
300
|
+
#
|
|
301
|
+
yield Document(page_content="", metadata=metadata)
|
|
303
302
|
|
|
304
303
|
def _process_test_case(self, key) -> dict:
|
|
305
304
|
steps = self.get_test_case_test_steps(key)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.486
|
|
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
|
|
@@ -18,7 +18,7 @@ Requires-Dist: python-dotenv~=1.0.1
|
|
|
18
18
|
Requires-Dist: jinja2~=3.1.3
|
|
19
19
|
Requires-Dist: pillow~=11.1.0
|
|
20
20
|
Requires-Dist: requests~=2.3
|
|
21
|
-
Requires-Dist: pydantic~=2.
|
|
21
|
+
Requires-Dist: pydantic~=2.12.0
|
|
22
22
|
Requires-Dist: chardet==5.2.0
|
|
23
23
|
Requires-Dist: fastapi==0.115.9
|
|
24
24
|
Requires-Dist: httpcore==1.0.7
|
|
@@ -134,6 +134,7 @@ Provides-Extra: community
|
|
|
134
134
|
Requires-Dist: retry-extended==0.2.3; extra == "community"
|
|
135
135
|
Requires-Dist: pyobjtojson==0.3; extra == "community"
|
|
136
136
|
Requires-Dist: elitea-analyse==0.1.2; extra == "community"
|
|
137
|
+
Requires-Dist: networkx>=3.0; extra == "community"
|
|
137
138
|
Provides-Extra: all
|
|
138
139
|
Requires-Dist: alita-sdk[runtime]; extra == "all"
|
|
139
140
|
Requires-Dist: alita-sdk[tools]; extra == "all"
|
|
@@ -144,6 +145,11 @@ Requires-Dist: pytest-cov; extra == "dev"
|
|
|
144
145
|
Requires-Dist: black; extra == "dev"
|
|
145
146
|
Requires-Dist: flake8; extra == "dev"
|
|
146
147
|
Requires-Dist: mypy; extra == "dev"
|
|
148
|
+
Provides-Extra: cli
|
|
149
|
+
Requires-Dist: click>=8.1.0; extra == "cli"
|
|
150
|
+
Requires-Dist: rich>=13.0.0; extra == "cli"
|
|
151
|
+
Requires-Dist: pyyaml>=6.0; extra == "cli"
|
|
152
|
+
Requires-Dist: langchain-mcp-adapters; extra == "cli"
|
|
147
153
|
Dynamic: license-file
|
|
148
154
|
|
|
149
155
|
Alita SDK
|
|
@@ -201,6 +207,144 @@ PROJECT_ID=<your_project_id>
|
|
|
201
207
|
NOTE: these variables can be grabbed from your Elitea platform configuration page.
|
|
202
208
|

|
|
203
209
|
|
|
210
|
+
### Custom .env File Location
|
|
211
|
+
|
|
212
|
+
By default, the CLI looks for `.env` files in the following order:
|
|
213
|
+
1. `.alita/.env` (recommended)
|
|
214
|
+
2. `.env` in the current directory
|
|
215
|
+
|
|
216
|
+
You can override this by setting the `ALITA_ENV_FILE` environment variable:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
export ALITA_ENV_FILE=/path/to/your/.env
|
|
220
|
+
alita-cli agent chat
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Using the CLI for Interactive Chat
|
|
224
|
+
----------------------------------
|
|
225
|
+
|
|
226
|
+
The Alita SDK includes a powerful CLI for interactive agent chat sessions.
|
|
227
|
+
|
|
228
|
+
### Starting a Chat Session
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
# Interactive selection (shows all available agents + direct chat option)
|
|
232
|
+
alita-cli agent chat
|
|
233
|
+
|
|
234
|
+
# Chat with a specific local agent
|
|
235
|
+
alita-cli agent chat .alita/agents/my-agent.agent.md
|
|
236
|
+
|
|
237
|
+
# Chat with a platform agent
|
|
238
|
+
alita-cli agent chat my-agent-name
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Direct Chat Mode (No Agent)
|
|
242
|
+
|
|
243
|
+
You can start a chat session directly with the LLM without any agent configuration:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
alita-cli agent chat
|
|
247
|
+
# Select option 1: "Direct chat with model (no agent)"
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
This is useful for quick interactions or testing without setting up an agent.
|
|
251
|
+
|
|
252
|
+
### Chat Commands
|
|
253
|
+
|
|
254
|
+
During a chat session, you can use the following commands:
|
|
255
|
+
|
|
256
|
+
| Command | Description |
|
|
257
|
+
|---------|-------------|
|
|
258
|
+
| `/help` | Show all available commands |
|
|
259
|
+
| `/model` | Switch to a different model (preserves chat history) |
|
|
260
|
+
| `/add_mcp` | Add an MCP server from your local mcp.json (preserves chat history) |
|
|
261
|
+
| `/add_toolkit` | Add a toolkit from $ALITA_DIR/tools (preserves chat history) |
|
|
262
|
+
| `/clear` | Clear conversation history |
|
|
263
|
+
| `/history` | Show conversation history |
|
|
264
|
+
| `/save` | Save conversation to file |
|
|
265
|
+
| `exit` | End conversation |
|
|
266
|
+
|
|
267
|
+
### Enhanced Input Features
|
|
268
|
+
|
|
269
|
+
The chat interface includes readline-based input enhancements:
|
|
270
|
+
|
|
271
|
+
| Feature | Key/Action |
|
|
272
|
+
|---------|------------|
|
|
273
|
+
| **Tab completion** | Press `Tab` to autocomplete commands (e.g., `/mo` → `/model`) |
|
|
274
|
+
| **Command history** | `↑` / `↓` arrows to navigate through previous messages |
|
|
275
|
+
| **Cursor movement** | `←` / `→` arrows to move within the current line |
|
|
276
|
+
| **Start of line** | `Ctrl+A` jumps to the beginning of the line |
|
|
277
|
+
| **End of line** | `Ctrl+E` jumps to the end of the line |
|
|
278
|
+
| **Delete word** | `Ctrl+W` deletes the word before cursor |
|
|
279
|
+
| **Clear line** | `Ctrl+U` clears from cursor to beginning of line |
|
|
280
|
+
|
|
281
|
+
### Dynamic Model Switching
|
|
282
|
+
|
|
283
|
+
Use `/model` to switch models on the fly:
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
> /model
|
|
287
|
+
|
|
288
|
+
🔧 Select a model:
|
|
289
|
+
|
|
290
|
+
# Model Type
|
|
291
|
+
1 gpt-4o openai
|
|
292
|
+
2 gpt-4o-mini openai
|
|
293
|
+
3 claude-3-sonnet anthropic
|
|
294
|
+
|
|
295
|
+
Select model number: 1
|
|
296
|
+
|
|
297
|
+
✓ Selected: gpt-4o
|
|
298
|
+
╭──────────────────────────────────────────────────────────────╮
|
|
299
|
+
│ ℹ Model switched to gpt-4o. Agent state reset, chat history │
|
|
300
|
+
│ preserved. │
|
|
301
|
+
╰──────────────────────────────────────────────────────────────╯
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Adding MCP Servers Dynamically
|
|
305
|
+
|
|
306
|
+
Use `/add_mcp` to add MCP servers during a chat session. Servers are loaded from your local `mcp.json` file (typically at `.alita/mcp.json`):
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
> /add_mcp
|
|
310
|
+
|
|
311
|
+
🔌 Select an MCP server to add:
|
|
312
|
+
|
|
313
|
+
# Server Type Command/URL
|
|
314
|
+
1 playwright stdio npx @playwright/mcp@latest
|
|
315
|
+
2 filesystem stdio npx @anthropic/mcp-fs
|
|
316
|
+
|
|
317
|
+
Select MCP server number: 1
|
|
318
|
+
|
|
319
|
+
✓ Selected: playwright
|
|
320
|
+
╭──────────────────────────────────────────────────────────────╮
|
|
321
|
+
│ ℹ Added MCP: playwright. Agent state reset, chat history │
|
|
322
|
+
│ preserved. │
|
|
323
|
+
╰──────────────────────────────────────────────────────────────╯
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### Adding Toolkits Dynamically
|
|
327
|
+
|
|
328
|
+
Use `/add_toolkit` to add toolkits from your `$ALITA_DIR/tools` directory (default: `.alita/tools`):
|
|
329
|
+
|
|
330
|
+
```
|
|
331
|
+
> /add_toolkit
|
|
332
|
+
|
|
333
|
+
🧰 Select a toolkit to add:
|
|
334
|
+
|
|
335
|
+
# Toolkit Type File
|
|
336
|
+
1 jira jira jira-config.json
|
|
337
|
+
2 github github github-config.json
|
|
338
|
+
|
|
339
|
+
Select toolkit number: 1
|
|
340
|
+
|
|
341
|
+
✓ Selected: jira
|
|
342
|
+
╭──────────────────────────────────────────────────────────────╮
|
|
343
|
+
│ ℹ Added toolkit: jira. Agent state reset, chat history │
|
|
344
|
+
│ preserved. │
|
|
345
|
+
╰──────────────────────────────────────────────────────────────╯
|
|
346
|
+
```
|
|
347
|
+
|
|
204
348
|
|
|
205
349
|
|
|
206
350
|
Using SDK with Streamlit for Local Development
|
|
@@ -1,11 +1,67 @@
|
|
|
1
1
|
alita_sdk/__init__.py,sha256=fxeNiqiVpIFAJls31Oomifyrtd5gT9iPUTdkWjDOB2Y,656
|
|
2
|
-
alita_sdk/
|
|
2
|
+
alita_sdk/cli/__init__.py,sha256=HiHHouMh0EHmK1qMVzvz6vfIOu8Pm6XXw0dd_hXZ288,278
|
|
3
|
+
alita_sdk/cli/__main__.py,sha256=dAhgWWWEOG1ZiwCs6wQoJwnD62cFRnxiyiAoiFqU8K4,420
|
|
4
|
+
alita_sdk/cli/agent_executor.py,sha256=HBTOhNyZsvYdwcRSBgMo1nG7saVT147FJnmQtMhP4oQ,5580
|
|
5
|
+
alita_sdk/cli/agent_loader.py,sha256=yZ02eja3Ui1mq0L-JippakyDCd1pEo6OoXRLpu1fiRA,7843
|
|
6
|
+
alita_sdk/cli/agent_ui.py,sha256=qNqCtzRKlkziB-45lRPcMaKYZDmxYJAXHx9SEUbfInE,8778
|
|
7
|
+
alita_sdk/cli/agents.py,sha256=f8iGoLKztcZWHeWdX9PwjepnyId4piofsXGYcDInudM,179606
|
|
8
|
+
alita_sdk/cli/callbacks.py,sha256=zHxciqlT7mMJ1sYlzJrztXnPZBvK6BOgmPVY0Df7b8k,22610
|
|
9
|
+
alita_sdk/cli/cli.py,sha256=Ud5N8hjIiFcupGfZBx8SC9_70RyXnylBinNd-yfiw6w,5343
|
|
10
|
+
alita_sdk/cli/config.py,sha256=TUpJyLVLvZfXZ_jLF-NhqUNHpl04_JYMGZZpqADhf30,11270
|
|
11
|
+
alita_sdk/cli/formatting.py,sha256=ip95brhcFcx3Ub7PRLv1aDGniGW13RCGDgc1_8i9ZwM,6566
|
|
12
|
+
alita_sdk/cli/input_handler.py,sha256=np00zDil1_l8KMv0Q75wSEM1xEL0kyPCRJsqFAoQS3Y,13295
|
|
13
|
+
alita_sdk/cli/inventory.py,sha256=aX3yTVnD6cXMa9vE7koUWOntfHgMz18gNQT7vC9MmDA,50903
|
|
14
|
+
alita_sdk/cli/mcp_loader.py,sha256=SfdQl5RWu9Ml-guqOd9busPm1_3NksJZq1UFz9zfn7A,12364
|
|
15
|
+
alita_sdk/cli/toolkit.py,sha256=klXJrDokGVWhn00q0VLXzjgrK0cJzLQ8KcoqWOLLmb8,11743
|
|
16
|
+
alita_sdk/cli/toolkit_loader.py,sha256=AuddCwo7X-4R7cZ3oV8GjsPjjLrzBlL8RRhzPemddjQ,2728
|
|
17
|
+
alita_sdk/cli/agent/__init__.py,sha256=Ly9vdDoIVJ8lf6t3CuHhX-PQTs1o8rPzxW0vDqmYnaQ,110
|
|
18
|
+
alita_sdk/cli/agent/default.py,sha256=QX5OulCRZ15H_5PHw8_Rm2NeY_fdlWgFTklLn_8c7Qw,10347
|
|
19
|
+
alita_sdk/cli/context/__init__.py,sha256=XcFoC_r7zIshwe28vHEveBx3bROimu6BvJ1YpeCVMg4,801
|
|
20
|
+
alita_sdk/cli/context/cleanup.py,sha256=SR_2b59Et4pCmF__jVfb9KURo6QWe5rWEjLTBYSzRKc,5688
|
|
21
|
+
alita_sdk/cli/context/manager.py,sha256=rINhO85psQALP0-ISmsvqge4OjXUO7TRXh561us0u6Q,26082
|
|
22
|
+
alita_sdk/cli/context/message.py,sha256=dGm3hH8jbbe48iD2-1WSxighQ7Xxj_sLy8woqhU2C4I,8646
|
|
23
|
+
alita_sdk/cli/context/strategies.py,sha256=mJvOgtZmszmVoOo1rKkYKgj7WIVEmxAMyh5PwCIt_Rw,10062
|
|
24
|
+
alita_sdk/cli/context/token_estimation.py,sha256=n7Vg8ZqtY-bilWSOryFZWdafRZUuy95-ZdRGvbTAQ6I,3696
|
|
25
|
+
alita_sdk/cli/tools/__init__.py,sha256=xy5SzLWQXUl-tBkDlJeJr1h4Su9Z8RKZwYPXqaMH-iU,1095
|
|
26
|
+
alita_sdk/cli/tools/approval.py,sha256=b_TtmyOaMJHjHAiig-1ds9qgNYbniWqPqv-dkNQ_r4Q,7536
|
|
27
|
+
alita_sdk/cli/tools/filesystem.py,sha256=KmsisToTJpDKXGnnRU0SSv56PXNGNbgDFidYsG3QhU8,69155
|
|
28
|
+
alita_sdk/cli/tools/planning.py,sha256=DLI0nFvM3yjrn-qUQWFgqYMvPsxsqZDH-4eZS7Q5_ws,13762
|
|
29
|
+
alita_sdk/cli/tools/terminal.py,sha256=l2N3u295nyczbuDmPWR1f9rSCj2XMZzlVDYoCqdk80Y,15170
|
|
30
|
+
alita_sdk/community/__init__.py,sha256=n1F8geo5B5P44ul11FetDQRQ7AtsNdzXuvDxqetwI6o,5068
|
|
3
31
|
alita_sdk/community/utils.py,sha256=lvuCJaNqVPHOORJV6kIPcXJcdprVW_TJvERtYAEgpjM,249
|
|
32
|
+
alita_sdk/community/inventory/__init__.py,sha256=pGHLeI4nlOiceDvkbx5aJhZu9Zsro4hrAn-AD-SE5Is,6480
|
|
33
|
+
alita_sdk/community/inventory/config.py,sha256=mvogvO9-3adwDGqVMUZx-SD4kav6_ptvg2fpxfw8Pv0,8562
|
|
34
|
+
alita_sdk/community/inventory/enrichment.py,sha256=0oFImHb7IVJZNKBmdFYFwVd1kaV1WvDbulKBTzBSosg,82193
|
|
35
|
+
alita_sdk/community/inventory/extractors.py,sha256=Hw1Gu83CLR-HejzbXW7R4kdAiz6jbIpb25w1xLYkuXg,64816
|
|
36
|
+
alita_sdk/community/inventory/ingestion.py,sha256=7CtGCSpPBDMdYc-X_i08PODVNYKbgJ39THWBYaUjJg0,139116
|
|
37
|
+
alita_sdk/community/inventory/knowledge_graph.py,sha256=rMqibqRnlVWYis2Io8OIjAOC6HFBQImcWu3gJ4kCnqM,54847
|
|
38
|
+
alita_sdk/community/inventory/presets.py,sha256=nuQdqXlz6FtOCpxOM7hSTeZOG_7Q5prrQsThBwpEcEA,12140
|
|
39
|
+
alita_sdk/community/inventory/retrieval.py,sha256=oDo559GRGSERlhaQYfP9-9lBvCTXIW1L1sueDq8Y5jQ,58581
|
|
40
|
+
alita_sdk/community/inventory/toolkit.py,sha256=WYWZAUlsylaxd8XR6WCcj8P6tFBzaMrX_zsl9El2HR0,6488
|
|
41
|
+
alita_sdk/community/inventory/visualize.py,sha256=FA_SHGNYK-U0bTHuQ6hMmx8g5JM_DtWS7X52NTWKCUo,49783
|
|
42
|
+
alita_sdk/community/inventory/parsers/__init__.py,sha256=FKKXJMuM2lchIwO9psX2iZs0EHY0zsKTNH0WEDOx5QM,6060
|
|
43
|
+
alita_sdk/community/inventory/parsers/base.py,sha256=31zJ26URLoEpvxP9wRCgqMNThBaEqLkt9vK_gSDzdms,9408
|
|
44
|
+
alita_sdk/community/inventory/parsers/csharp_parser.py,sha256=F7ejYjD5pRAy5rBaVMDzPDO3aD7yyiEpGzO2SEfauhM,33102
|
|
45
|
+
alita_sdk/community/inventory/parsers/go_parser.py,sha256=U8b-hBEdbK7tBKRYv1l-nbZnxrcqwZuwg_KL6hiwtxY,29702
|
|
46
|
+
alita_sdk/community/inventory/parsers/html_parser.py,sha256=__PRMlDZTk9RxGlECNwUbcqofkgtYx8OtaRqz5mpv70,14968
|
|
47
|
+
alita_sdk/community/inventory/parsers/java_parser.py,sha256=wAApK7dcLbtW5LMXcDUnuyMvd1oqHed_msdStoSicqY,22728
|
|
48
|
+
alita_sdk/community/inventory/parsers/javascript_parser.py,sha256=-167z9DtTZbpadEgcrinlXnyZhX-5YVKzylS1TbNozM,24076
|
|
49
|
+
alita_sdk/community/inventory/parsers/kotlin_parser.py,sha256=gaSTp3kyHKgFTW0Qf2bo8tIOllgzV-gp73VnqOiFY4o,27779
|
|
50
|
+
alita_sdk/community/inventory/parsers/markdown_parser.py,sha256=M_pNQNu71nidSUtnmN_ex37bVktFOgQAQLb79VT8pjQ,13713
|
|
51
|
+
alita_sdk/community/inventory/parsers/python_parser.py,sha256=IO7mZN_fFAc_WF7_7WTlB2BQmS5c5z6WIwMPT3lqduA,25280
|
|
52
|
+
alita_sdk/community/inventory/parsers/rust_parser.py,sha256=tuWy-VmuUwBcMdENrH8--TGwpyF-ImCoCUFihVA_KLI,31027
|
|
53
|
+
alita_sdk/community/inventory/parsers/swift_parser.py,sha256=3ZCC7qbruYpBUK6CHtQGCDkXFTGWy-Dpfy17rorcGSs,30412
|
|
54
|
+
alita_sdk/community/inventory/parsers/text_parser.py,sha256=6ccNyP46zLGePS6xBf7bPswstp-tLCf8QyL7YPQfC9I,10629
|
|
55
|
+
alita_sdk/community/inventory/parsers/yaml_parser.py,sha256=SDnZg6T_LTkFlob0uwE29_s1J4rDq60i5aCpxM1ouUQ,14248
|
|
56
|
+
alita_sdk/community/inventory/patterns/__init__.py,sha256=-UVnau9iDU74jr9OfofTmX5MODJKa2Yo5dKK2O6yl_Q,1699
|
|
57
|
+
alita_sdk/community/inventory/patterns/ast_adapter.py,sha256=qYx0Zt8Z7NqtXzpIkLafjY8EYEtgf7nSkaHAV2daW_Y,10977
|
|
58
|
+
alita_sdk/community/inventory/patterns/loader.py,sha256=GnZuoe7mSMta3D4Cd5pcgUu5G3uYgQcvalpAA_eNRS8,12215
|
|
59
|
+
alita_sdk/community/inventory/patterns/registry.py,sha256=Kz3Jf2Q33NBkwwtgrnVAu9_ff-CDbD7bW7vqNXyrUdo,6901
|
|
4
60
|
alita_sdk/configurations/__init__.py,sha256=3_MlzyzAi1dog6MFQD_ICOZvaPfXf2UfhSZwlF1knnw,3983
|
|
5
61
|
alita_sdk/configurations/ado.py,sha256=Djw1_8QmssETVpjpk2LeFN--Wg5-D1_L1NdwH8dtbGM,1274
|
|
6
62
|
alita_sdk/configurations/azure_search.py,sha256=WDBc38uSmRBA_ypezb04wob2qUMqcw275FI39SWvrPo,808
|
|
7
63
|
alita_sdk/configurations/bigquery.py,sha256=kuJ9AUAHynnyM4wkaQbiW3x5VmrJkjR0RGmsyAec194,917
|
|
8
|
-
alita_sdk/configurations/bitbucket.py,sha256=
|
|
64
|
+
alita_sdk/configurations/bitbucket.py,sha256=5VDMxwmidNtGMdB4qA5ZAcNEKXmfQXRqND90nMBAym0,5188
|
|
9
65
|
alita_sdk/configurations/browser.py,sha256=2ZMUrqk8M9oZi3HX4ouGp9b-qdYgpGN-hVin--zgzpc,670
|
|
10
66
|
alita_sdk/configurations/carrier.py,sha256=QPgXyNXki8ECQAwBB1I64vsltV5patZUnZrd5m8obyY,693
|
|
11
67
|
alita_sdk/configurations/confluence.py,sha256=bGGw8R_JtcH1m3NCIuE-W52GDQXELgB9JoxrNmjj974,5469
|
|
@@ -36,22 +92,22 @@ alita_sdk/configurations/zephyr_essential.py,sha256=TiZedsBlfIDroflipvoqxjJeEWPo
|
|
|
36
92
|
alita_sdk/runtime/__init__.py,sha256=4W0UF-nl3QF2bvET5lnah4o24CoTwSoKXhuN0YnwvEE,828
|
|
37
93
|
alita_sdk/runtime/clients/__init__.py,sha256=BdehU5GBztN1Qi1Wul0cqlU46FxUfMnI6Vq2Zd_oq1M,296
|
|
38
94
|
alita_sdk/runtime/clients/artifact.py,sha256=b7hVuGRROt6qUcT11uAZqzJqslzmlgW-Y6oGsiwNmjI,4029
|
|
39
|
-
alita_sdk/runtime/clients/client.py,sha256=
|
|
95
|
+
alita_sdk/runtime/clients/client.py,sha256=u0jbRl8EVrWVnTJ8XWRkHzA6D5B6sJtA8AwPUCjdIhM,51430
|
|
40
96
|
alita_sdk/runtime/clients/datasource.py,sha256=HAZovoQN9jBg0_-lIlGBQzb4FJdczPhkHehAiVG3Wx0,1020
|
|
41
97
|
alita_sdk/runtime/clients/mcp_discovery.py,sha256=aFJ0wYQ8EAmXa9qLUusHZfQXkNec1wbgkqHdVeSFX-g,11697
|
|
42
98
|
alita_sdk/runtime/clients/mcp_manager.py,sha256=DRbqiO761l7UgOdv_keHbD2g0oZodtPHejpArXYZIoE,9050
|
|
43
99
|
alita_sdk/runtime/clients/prompt.py,sha256=li1RG9eBwgNK_Qf0qUaZ8QNTmsncFrAL2pv3kbxZRZg,1447
|
|
44
100
|
alita_sdk/runtime/clients/sandbox_client.py,sha256=kGOGfm3OAFmYeTM4bIuKbhRsOiOhF0M1q8takBe-sWY,16637
|
|
45
101
|
alita_sdk/runtime/langchain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
-
alita_sdk/runtime/langchain/assistant.py,sha256=
|
|
102
|
+
alita_sdk/runtime/langchain/assistant.py,sha256=Y-IsOnztgeeIsd0Cs-D9UgMcXyAXObeYCLmJFDfSjRA,16302
|
|
47
103
|
alita_sdk/runtime/langchain/chat_message_template.py,sha256=kPz8W2BG6IMyITFDA5oeb5BxVRkHEVZhuiGl4MBZKdc,2176
|
|
48
|
-
alita_sdk/runtime/langchain/constants.py,sha256=
|
|
104
|
+
alita_sdk/runtime/langchain/constants.py,sha256=ZcNdsihfmK2m1klSY4gwfDtKniiYhi7ONvkQDb7Jb5s,3451
|
|
49
105
|
alita_sdk/runtime/langchain/indexer.py,sha256=0ENHy5EOhThnAiYFc7QAsaTNp9rr8hDV_hTK8ahbatk,37592
|
|
50
|
-
alita_sdk/runtime/langchain/langraph_agent.py,sha256=
|
|
106
|
+
alita_sdk/runtime/langchain/langraph_agent.py,sha256=oonFCMZs8eA47nlP1gRwJwMQkFPgZrXcv_YgrYoXeMo,59478
|
|
51
107
|
alita_sdk/runtime/langchain/mixedAgentParser.py,sha256=M256lvtsL3YtYflBCEp-rWKrKtcY1dJIyRGVv7KW9ME,2611
|
|
52
108
|
alita_sdk/runtime/langchain/mixedAgentRenderes.py,sha256=asBtKqm88QhZRILditjYICwFVKF5KfO38hu2O-WrSWE,5964
|
|
53
109
|
alita_sdk/runtime/langchain/store_manager.py,sha256=i8Fl11IXJhrBXq1F1ukEVln57B1IBe-tqSUvfUmBV4A,2218
|
|
54
|
-
alita_sdk/runtime/langchain/utils.py,sha256=
|
|
110
|
+
alita_sdk/runtime/langchain/utils.py,sha256=jH2Dt_DTgn6Engp1xFLodN73QWYFLHgqeeqkN13es68,8531
|
|
55
111
|
alita_sdk/runtime/langchain/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
112
|
alita_sdk/runtime/langchain/agents/xml_chat.py,sha256=Mx7PK5T97_GrFCwHHZ3JZP42S7MwtUzV0W-_8j6Amt8,6212
|
|
57
113
|
alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py,sha256=4kFU1ijrM1Jw7cywQv8mUiBHlE6w-uqfzSZP4hUV5P4,3771
|
|
@@ -96,17 +152,18 @@ alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py,sha256=DiEEOqDef2Xo3x
|
|
|
96
152
|
alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py,sha256=l3AdjSQnNv1CE1NuHi7wts6h6AsCiK-iPu0PnPf3jf0,399
|
|
97
153
|
alita_sdk/runtime/langchain/tools/bdd_parser/parser.py,sha256=1H1Nd_OH5Wx8A5YV1zUghBxo613yPptZ7fqNo8Eg48M,17289
|
|
98
154
|
alita_sdk/runtime/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
|
-
alita_sdk/runtime/llms/preloaded.py,sha256=
|
|
155
|
+
alita_sdk/runtime/llms/preloaded.py,sha256=tZ_-nIV91cjgdNV5xw5cIlvia9CYUG94PTsoNRmTF-I,11223
|
|
100
156
|
alita_sdk/runtime/models/mcp_models.py,sha256=rbWCAtF8Jjb7uNgQHhVWyDttXaqPNbRLL087Lf0AjNU,2301
|
|
101
|
-
alita_sdk/runtime/toolkits/__init__.py,sha256=
|
|
102
|
-
alita_sdk/runtime/toolkits/application.py,sha256=
|
|
157
|
+
alita_sdk/runtime/toolkits/__init__.py,sha256=7bic6YGLiyAwFD3KZvrntWqS57sND72VoGBhuAx75yI,692
|
|
158
|
+
alita_sdk/runtime/toolkits/application.py,sha256=EyYdGTJzsqz6pV3XAywy8BR2kYU6QNRar7QcC9-WGSI,2714
|
|
103
159
|
alita_sdk/runtime/toolkits/artifact.py,sha256=HvunflqpLwrvpn8Jz8AKF_CIowIGEsfG96gqredMgO0,3251
|
|
104
160
|
alita_sdk/runtime/toolkits/configurations.py,sha256=kIDAlnryPQfbZyFxV-9SzN2-Vefzx06TX1BBdIIpN90,141
|
|
105
161
|
alita_sdk/runtime/toolkits/datasource.py,sha256=qk78OdPoReYPCWwahfkKLbKc4pfsu-061oXRryFLP6I,2498
|
|
106
|
-
alita_sdk/runtime/toolkits/mcp.py,sha256=
|
|
162
|
+
alita_sdk/runtime/toolkits/mcp.py,sha256=l2-RYEi-IANyALL53H2xa_S1p9r-gDDb6NFxtUGgN5M,37492
|
|
163
|
+
alita_sdk/runtime/toolkits/planning.py,sha256=mBGbaNchw6LDfWTIiEDQmwBJKGu_iHY4NMs19pvbKHM,7008
|
|
107
164
|
alita_sdk/runtime/toolkits/prompt.py,sha256=WIpTkkVYWqIqOWR_LlSWz3ug8uO9tm5jJ7aZYdiGRn0,1192
|
|
108
165
|
alita_sdk/runtime/toolkits/subgraph.py,sha256=wwUK8JjPXkGzyVZ3tAukmvST6eGbqx_U11rpnmbrvtg,2105
|
|
109
|
-
alita_sdk/runtime/toolkits/tools.py,sha256=
|
|
166
|
+
alita_sdk/runtime/toolkits/tools.py,sha256=gm6gC58JgPqT2i9HQNvVQyVVDs18kYAHbPiT4IRpQP0,15368
|
|
110
167
|
alita_sdk/runtime/toolkits/vectorstore.py,sha256=BGppQADa1ZiLO17fC0uCACTTEvPHlodEDYEzUcBRbAA,2901
|
|
111
168
|
alita_sdk/runtime/tools/__init__.py,sha256=Fx7iHqkzA90-KfjdcUUzMUI_7kDarjuTsSpSzOW2pN0,568
|
|
112
169
|
alita_sdk/runtime/tools/agent.py,sha256=m98QxOHwnCRTT9j18Olbb5UPS8-ZGeQaGiUyZJSyFck,3162
|
|
@@ -114,11 +171,11 @@ alita_sdk/runtime/tools/application.py,sha256=RCGe-mRfj8372gTFkEX2xBvcYhw7IKdU1t
|
|
|
114
171
|
alita_sdk/runtime/tools/artifact.py,sha256=u3szFwZqguHrPZ3tZJ7S_TiZl7cxlT3oHYd6zbdpRDE,13842
|
|
115
172
|
alita_sdk/runtime/tools/datasource.py,sha256=pvbaSfI-ThQQnjHG-QhYNSTYRnZB0rYtZFpjCfpzxYI,2443
|
|
116
173
|
alita_sdk/runtime/tools/echo.py,sha256=spw9eCweXzixJqHnZofHE1yWiSUa04L4VKycf3KCEaM,486
|
|
117
|
-
alita_sdk/runtime/tools/function.py,sha256=
|
|
174
|
+
alita_sdk/runtime/tools/function.py,sha256=1kBVMgLNjoE2yQb5rX8O6MR82rDaylJSrj2Hd-JdkN8,7002
|
|
118
175
|
alita_sdk/runtime/tools/graph.py,sha256=7jImBBSEdP5Mjnn2keOiyUwdGDFhEXLUrgUiugO3mgA,3503
|
|
119
176
|
alita_sdk/runtime/tools/image_generation.py,sha256=Kls9D_ke_SK7xmVr7I9SlQcAEBJc86gf66haN0qIj9k,7469
|
|
120
177
|
alita_sdk/runtime/tools/indexer_tool.py,sha256=whSLPevB4WD6dhh2JDXEivDmTvbjiMV1MrPl9cz5eLA,4375
|
|
121
|
-
alita_sdk/runtime/tools/llm.py,sha256=
|
|
178
|
+
alita_sdk/runtime/tools/llm.py,sha256=mt7x64G9ZGPphaBlXHMNupu-TZnRs6RJc4r7iYsbSFA,29287
|
|
122
179
|
alita_sdk/runtime/tools/loop.py,sha256=uds0WhZvwMxDVFI6MZHrcmMle637cQfBNg682iLxoJA,8335
|
|
123
180
|
alita_sdk/runtime/tools/loop_output.py,sha256=U4hO9PCQgWlXwOq6jdmCGbegtAxGAPXObSxZQ3z38uk,8069
|
|
124
181
|
alita_sdk/runtime/tools/mcp_inspect_tool.py,sha256=38X8euaxDbEGjcfp6ElvExZalpZun6QEr6ZEW4nU5pQ,11496
|
|
@@ -130,28 +187,31 @@ alita_sdk/runtime/tools/router.py,sha256=p7e0tX6YAWw2M2Nq0A_xqw1E2P-Xz1DaJvhUstf
|
|
|
130
187
|
alita_sdk/runtime/tools/sandbox.py,sha256=LTCHC9xnuYThWX30PCTVEtjeg50FX7w2c29KU5E68W0,15251
|
|
131
188
|
alita_sdk/runtime/tools/tool.py,sha256=lE1hGi6qOAXG7qxtqxarD_XMQqTghdywf261DZawwno,5631
|
|
132
189
|
alita_sdk/runtime/tools/vectorstore.py,sha256=0SzfY1dYrGr7YUapJzXY01JFyzLv36dPjwHzs1XZIM4,34392
|
|
133
|
-
alita_sdk/runtime/tools/vectorstore_base.py,sha256=
|
|
190
|
+
alita_sdk/runtime/tools/vectorstore_base.py,sha256=7LDwMQKnWPw_aJNxrVpXgH2GJS_-tzdBkFe89wA9U1I,30566
|
|
191
|
+
alita_sdk/runtime/tools/planning/__init__.py,sha256=15eWTtz4oMB5vnKsLEFPW7lVY7y1Fxk3edo2bNf0ooE,821
|
|
192
|
+
alita_sdk/runtime/tools/planning/models.py,sha256=bcwfjEnDTqirTT9bjHEDF8o3UYIAD8IqiqrZsca8gfw,8816
|
|
193
|
+
alita_sdk/runtime/tools/planning/wrapper.py,sha256=om-4f3qMzkqBcBmINQ469IykBubm_UwJ-WZsEchehto,22412
|
|
134
194
|
alita_sdk/runtime/utils/AlitaCallback.py,sha256=E4LlSBuCHWiUq6W7IZExERHZY0qcmdjzc_rJlF2iQIw,7356
|
|
135
195
|
alita_sdk/runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
196
|
alita_sdk/runtime/utils/constants.py,sha256=Xntx1b_uxUzT4clwqHA_U6K8y5bBqf_4lSQwXdcWrp4,13586
|
|
137
197
|
alita_sdk/runtime/utils/evaluate.py,sha256=iM1P8gzBLHTuSCe85_Ng_h30m52hFuGuhNXJ7kB1tgI,1872
|
|
138
198
|
alita_sdk/runtime/utils/logging.py,sha256=svPyiW8ztDfhqHFITv5FBCj8UhLxz6hWcqGIY6wpJJE,3331
|
|
139
|
-
alita_sdk/runtime/utils/mcp_oauth.py,sha256=
|
|
199
|
+
alita_sdk/runtime/utils/mcp_oauth.py,sha256=ZgQSRmq4I2ILv6rZOj9hbKpKd9iM26tvcSjB8AvrBAk,8741
|
|
140
200
|
alita_sdk/runtime/utils/mcp_sse_client.py,sha256=cSOyfnOoxVorfIePQ4k-BmOutBOeL3YDhTNxWtFREA0,16251
|
|
141
201
|
alita_sdk/runtime/utils/save_dataframe.py,sha256=i-E1wp-t4wb17Zq3nA3xYwgSILjoXNizaQAA9opWvxY,1576
|
|
142
|
-
alita_sdk/runtime/utils/streamlit.py,sha256=
|
|
202
|
+
alita_sdk/runtime/utils/streamlit.py,sha256=0TotNKnvMPHuwBdhMEpM5DhIedQQa1AUz9BlmXFBhAU,107179
|
|
143
203
|
alita_sdk/runtime/utils/toolkit_runtime.py,sha256=MU63Fpxj0b5_r1IUUc0Q3-PN9VwL7rUxp2MRR4tmYR8,5136
|
|
144
|
-
alita_sdk/runtime/utils/toolkit_utils.py,sha256=
|
|
204
|
+
alita_sdk/runtime/utils/toolkit_utils.py,sha256=T7aFDRAhTQpQnuH6ffSwd7UFTo_gWH2nZ92KG8-U0ug,6669
|
|
145
205
|
alita_sdk/runtime/utils/utils.py,sha256=PJK8A-JVIzY1IowOjGG8DIqsIiEFe65qDKvFcjJCKWA,1041
|
|
146
|
-
alita_sdk/tools/__init__.py,sha256=
|
|
147
|
-
alita_sdk/tools/base_indexer_toolkit.py,sha256=
|
|
148
|
-
alita_sdk/tools/code_indexer_toolkit.py,sha256=
|
|
149
|
-
alita_sdk/tools/elitea_base.py,sha256=
|
|
150
|
-
alita_sdk/tools/non_code_indexer_toolkit.py,sha256=
|
|
206
|
+
alita_sdk/tools/__init__.py,sha256=XGxNpRHpBvuOxWCtupNGNszovY7Dv2Jbtwjxi4nB8LI,12429
|
|
207
|
+
alita_sdk/tools/base_indexer_toolkit.py,sha256=DloHESJ4OsaCHZ1XBGJ4cPZ6yl4f_dANlcwzo1hZW4Y,33418
|
|
208
|
+
alita_sdk/tools/code_indexer_toolkit.py,sha256=4uQHnv7sHzECmOWbeqoVPT4prt_hv91gYxWxvvRdOjg,9219
|
|
209
|
+
alita_sdk/tools/elitea_base.py,sha256=JzpvIs6guIRMp6sG5Yj-MJcQFZRne-_x8GHJVTttldo,37122
|
|
210
|
+
alita_sdk/tools/non_code_indexer_toolkit.py,sha256=DVxcEml-pftoplBs1wSvzcAHsxjRyxq5YY36LSp3Jy4,1362
|
|
151
211
|
alita_sdk/tools/ado/__init__.py,sha256=NnNYpNFW0_N_v1td_iekYOoQRRB7PIunbpT2f9ZFJM4,1201
|
|
152
212
|
alita_sdk/tools/ado/utils.py,sha256=PTCludvaQmPLakF2EbCGy66Mro4-rjDtavVP-xcB2Wc,1252
|
|
153
213
|
alita_sdk/tools/ado/repos/__init__.py,sha256=RFOd7tcBMhFYpqv11oSsdVnZhqC0swAKTsN1BpZBg1g,5416
|
|
154
|
-
alita_sdk/tools/ado/repos/repos_wrapper.py,sha256=
|
|
214
|
+
alita_sdk/tools/ado/repos/repos_wrapper.py,sha256=0-M5bf89sWoUPbJwnPLXKCYPs7Atp5U1wxw2EchQlZ0,49834
|
|
155
215
|
alita_sdk/tools/ado/test_plan/__init__.py,sha256=Z6WFjcCYiYVbDniuqSBgitby1jNPQHA3AfGYx6ADu2s,5255
|
|
156
216
|
alita_sdk/tools/ado/test_plan/test_plan_wrapper.py,sha256=MHM1WJUUWIgOUxGPjQUhNUxOj_Et2MAowIbhbU99h4I,22222
|
|
157
217
|
alita_sdk/tools/ado/wiki/__init__.py,sha256=fvHADFad2jWFDseXJe5iV1CRO4wA4iiMNEibfQauo2Y,5072
|
|
@@ -170,7 +230,7 @@ alita_sdk/tools/azure_ai/search/__init__.py,sha256=78ClnTkEn73b3Y9xYP_t65DaVQyEC
|
|
|
170
230
|
alita_sdk/tools/azure_ai/search/api_wrapper.py,sha256=E4p6HPDlwgxfT_i6cvg9rN4Vn_47CVAyNBAKLIGq3mU,7265
|
|
171
231
|
alita_sdk/tools/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
172
232
|
alita_sdk/tools/base/tool.py,sha256=-N27AodZS49vdPCgFkU-bFS9bxoPopZBnNrmwInx3d0,864
|
|
173
|
-
alita_sdk/tools/bitbucket/__init__.py,sha256=
|
|
233
|
+
alita_sdk/tools/bitbucket/__init__.py,sha256=ejdyPPldAD-j5NUlYRoaHbykR3oxg_TlpEaF-snv0Ek,5479
|
|
174
234
|
alita_sdk/tools/bitbucket/api_wrapper.py,sha256=q22g27zoJnhNx_HvP4Q1Tt3-glTow7mSqbAjwpdg5CE,20120
|
|
175
235
|
alita_sdk/tools/bitbucket/bitbucket_constants.py,sha256=UsbhQ1iEvrKoxceTFPWTYhaXS1zSxbmjs1TwY0-P4gw,462
|
|
176
236
|
alita_sdk/tools/bitbucket/cloud_api_wrapper.py,sha256=QHdud-d3xcz3mOP3xb1Htk1sv9QFg7bTm1szdN_zohQ,15517
|
|
@@ -196,8 +256,9 @@ alita_sdk/tools/carrier/tools.py,sha256=xBKXKNEdPQ_kWysoV7w6y4cDjtAMno8Qj2ubI4zr
|
|
|
196
256
|
alita_sdk/tools/carrier/ui_reports_tool.py,sha256=Y6EstTRCa9d11ipFUFGOYlpiEhFx7aOQcgZ_M5Gd1lQ,13708
|
|
197
257
|
alita_sdk/tools/carrier/update_ui_test_schedule_tool.py,sha256=jh9Q86cMCEqpsFopJPNIP0wlr7sYVa_3lhlq6lRmkGg,11850
|
|
198
258
|
alita_sdk/tools/carrier/utils.py,sha256=rl7aq-F6ed_PapDM15w8EtS0BkgsjpDrNdKYuDCMOaI,4376
|
|
199
|
-
alita_sdk/tools/chunkers/__init__.py,sha256=
|
|
259
|
+
alita_sdk/tools/chunkers/__init__.py,sha256=RhZalh6xrx0vI1De69euFBnhZYFu_Ddryiu_gTF3qAY,971
|
|
200
260
|
alita_sdk/tools/chunkers/models.py,sha256=NNkLSljZboYDj6vbqeHmcjj9JrTHbkVWmoHGsL98q3k,3032
|
|
261
|
+
alita_sdk/tools/chunkers/universal_chunker.py,sha256=whpzE2zKbJL7_cCCI9k5mjAewaUF9w2FpA_mrQN8J1I,8426
|
|
201
262
|
alita_sdk/tools/chunkers/utils.py,sha256=gOyDHhXSH6Wlmxj_OsMOa2vydZuHD6HZql4PH-SYcTw,192
|
|
202
263
|
alita_sdk/tools/chunkers/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
203
264
|
alita_sdk/tools/chunkers/code/codeparser.py,sha256=-cDixCIRsYCpIody1Ltwh-UGzYUzOmoFMgczwnBZ0M0,4285
|
|
@@ -220,7 +281,7 @@ alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py,sha256=Qs1a_BBN296iZc5
|
|
|
220
281
|
alita_sdk/tools/chunkers/sematic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
221
282
|
alita_sdk/tools/chunkers/sematic/base.py,sha256=bRHpCFbOy-KPe4HBGpegrvIhvOsd7sDRfmb06T8tSuU,349
|
|
222
283
|
alita_sdk/tools/chunkers/sematic/json_chunker.py,sha256=wzlGeoS4qZOQA6Alcc0sn6zAxZSGVdwCLm0wHqmMODA,1038
|
|
223
|
-
alita_sdk/tools/chunkers/sematic/markdown_chunker.py,sha256=
|
|
284
|
+
alita_sdk/tools/chunkers/sematic/markdown_chunker.py,sha256=VsJwCgum_QudarWoeZPrQuGlOuvMHA3PPOQdtvs-vTg,7086
|
|
224
285
|
alita_sdk/tools/chunkers/sematic/proposal_chunker.py,sha256=33RQfonQK_qyOQWx1EmWIihpKAghfMswgsHlKNdwMgA,5098
|
|
225
286
|
alita_sdk/tools/chunkers/sematic/statistical_chunker.py,sha256=VDQcMC-ky72GqdWJiHMmcRmfJTTU5XglBF1IWg2Qews,13403
|
|
226
287
|
alita_sdk/tools/cloud/__init__.py,sha256=ekqANTJAyuURqpjNTn6MmSn2q6qEKwENxEXBUFGkkck,512
|
|
@@ -271,8 +332,8 @@ alita_sdk/tools/google/bigquery/schemas.py,sha256=Gb8KQZSoRkmjXiz21dTC95c1MHEHFc
|
|
|
271
332
|
alita_sdk/tools/google/bigquery/tool.py,sha256=Esf9Hsp8I0e7-5EdkFqQ-bid0cfrg-bfSoHoW_IIARo,1027
|
|
272
333
|
alita_sdk/tools/google_places/__init__.py,sha256=bRGxP0RBg33Zi8B-602sg1KkkfmPMRAn-mtJKGPg8-Q,3586
|
|
273
334
|
alita_sdk/tools/google_places/api_wrapper.py,sha256=7nZly6nk4f4Tm7s2MVdnnwlb-1_WHRrDhyjDiqoyPjA,4674
|
|
274
|
-
alita_sdk/tools/jira/__init__.py,sha256=
|
|
275
|
-
alita_sdk/tools/jira/api_wrapper.py,sha256=
|
|
335
|
+
alita_sdk/tools/jira/__init__.py,sha256=fByWIFJ_U3pdfNItNL7VGW-QeWwkq5EXZdc2dZX3ctk,6409
|
|
336
|
+
alita_sdk/tools/jira/api_wrapper.py,sha256=XrZ1dKYOtH5rjKH1dSce-DMGbT-MaKz4Hb2X-YRlrAc,84534
|
|
276
337
|
alita_sdk/tools/keycloak/__init__.py,sha256=0WB9yXMUUAHQRni1ghDEmd7GYa7aJPsTVlZgMCM9cQ0,3050
|
|
277
338
|
alita_sdk/tools/keycloak/api_wrapper.py,sha256=cOGr0f3S3-c6tRDBWI8wMnetjoNSxiV5rvC_0VHb8uw,3100
|
|
278
339
|
alita_sdk/tools/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -310,8 +371,8 @@ alita_sdk/tools/postman/api_wrapper.py,sha256=bTVDEeezRp9-fhot4MFX3-DOr_soJB5eOM
|
|
|
310
371
|
alita_sdk/tools/postman/postman_analysis.py,sha256=ckc2BfKEop0xnmLPksVRE_Y94ixuqOGowaClBzHCSn4,45560
|
|
311
372
|
alita_sdk/tools/pptx/__init__.py,sha256=JP4523kvgcRbKevy9s7KllDbzHV9-ArKMNBuzeT97VI,3378
|
|
312
373
|
alita_sdk/tools/pptx/pptx_wrapper.py,sha256=yyCYcTlIY976kJ4VfPo4dyxj4yeii9j9TWP6W8ZIpN8,29195
|
|
313
|
-
alita_sdk/tools/qtest/__init__.py,sha256=
|
|
314
|
-
alita_sdk/tools/qtest/api_wrapper.py,sha256=
|
|
374
|
+
alita_sdk/tools/qtest/__init__.py,sha256=eLxeteA1xt0SsdhfULUZ7I_QfgGSfhacQjhu5VEEwFI,4370
|
|
375
|
+
alita_sdk/tools/qtest/api_wrapper.py,sha256=PRT_ys6xTfK4WOcd_qnZ05Qv1QZ_VnTIxP1lHL8JC9k,98361
|
|
315
376
|
alita_sdk/tools/qtest/tool.py,sha256=kKzNPS4fUC76WQQttQ6kdVANViHEvKE8Kf174MQiNYU,562
|
|
316
377
|
alita_sdk/tools/rally/__init__.py,sha256=VESgUY_m0lQVyoSuuCRyLgURn7vHs-JIMS_0oH4e0LQ,3347
|
|
317
378
|
alita_sdk/tools/rally/api_wrapper.py,sha256=mouzU6g0KML4UNapdk0k6Q0pU3MpJuWnNo71n9PSEHM,11752
|
|
@@ -325,8 +386,8 @@ alita_sdk/tools/servicenow/__init__.py,sha256=rI8WrlA5mKxdSe7NYX6Ehd0NTfGx2CEbE6
|
|
|
325
386
|
alita_sdk/tools/servicenow/api_wrapper.py,sha256=WpH-bBLGFdhehs4g-K-WAkNuaD1CSrwsDpdgB3RG53s,6120
|
|
326
387
|
alita_sdk/tools/servicenow/servicenow_client.py,sha256=Rdqfu-ll-qbnclMzChLZBsfXRDzgoX_FdeI2WLApWxc,3269
|
|
327
388
|
alita_sdk/tools/sharepoint/__init__.py,sha256=mtBw8oBq2LWQpMAgidF7BDn3oOgD3QCWEQjBW80RN3M,4117
|
|
328
|
-
alita_sdk/tools/sharepoint/api_wrapper.py,sha256=
|
|
329
|
-
alita_sdk/tools/sharepoint/authorization_helper.py,sha256=
|
|
389
|
+
alita_sdk/tools/sharepoint/api_wrapper.py,sha256=wzwqEmsNRopGzOjOleSsrsfZON4zRyExYZpZqUdWp60,17809
|
|
390
|
+
alita_sdk/tools/sharepoint/authorization_helper.py,sha256=tlmsw3l2UGvVRZS3cHCKCy_arx_IkUuhBOCf9GZ9T6U,12818
|
|
330
391
|
alita_sdk/tools/sharepoint/utils.py,sha256=CO1PNRC5CpQaVo2Gdenj_jqm2bReSqUT92Bk5s37d8M,573
|
|
331
392
|
alita_sdk/tools/slack/__init__.py,sha256=AurOivHcpqvrrbg7rwTz8lrMfM6KPskWmHs6ml0jZVM,4057
|
|
332
393
|
alita_sdk/tools/slack/api_wrapper.py,sha256=5VrV7iSGno8ZcDzEHdGPNhInhtODGPPvAzoZ9W9iQWE,14009
|
|
@@ -340,7 +401,7 @@ alita_sdk/tools/testrail/api_wrapper.py,sha256=tQcGlFJmftvs5ZiO4tsP19fCo4CrJeq_U
|
|
|
340
401
|
alita_sdk/tools/utils/__init__.py,sha256=xB9OQgW65DftadrSpoAAitnEIbIXZKBOCji0NDe7FRM,3923
|
|
341
402
|
alita_sdk/tools/utils/available_tools_decorator.py,sha256=IbrdfeQkswxUFgvvN7-dyLMZMyXLiwvX7kgi3phciCk,273
|
|
342
403
|
alita_sdk/tools/utils/content_parser.py,sha256=KqiZzsurLspxCLemf9eqYhgW266FgWP4r-xElcK8a38,15881
|
|
343
|
-
alita_sdk/tools/vector_adapters/VectorStoreAdapter.py,sha256
|
|
404
|
+
alita_sdk/tools/vector_adapters/VectorStoreAdapter.py,sha256=nSMcJYF5DgPNJO7caBUbWHzpoMbcM6-VblzuGbgcMxc,20166
|
|
344
405
|
alita_sdk/tools/vector_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
345
406
|
alita_sdk/tools/xray/__init__.py,sha256=g3WERlLujmVTxdg3AUWE9N8YgndNWJ9r0M1-FgA3MdM,4462
|
|
346
407
|
alita_sdk/tools/xray/api_wrapper.py,sha256=uj5kzUgPdo_Oct9WCNMOpkb6o_3L7J4LZrEGtrwYMmc,30157
|
|
@@ -354,15 +415,16 @@ alita_sdk/tools/zephyr_enterprise/__init__.py,sha256=WhNyw-lcg9Lv_1WfhHZlAYaiU8e
|
|
|
354
415
|
alita_sdk/tools/zephyr_enterprise/api_wrapper.py,sha256=FSqW3FKqoOkp3wsCz9_4wLem0KAqbbmqIyIA8vh0Cp4,12117
|
|
355
416
|
alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py,sha256=hV9LIrYfJT6oYp-ZfQR0YHflqBFPsUw2Oc55HwK0H48,6809
|
|
356
417
|
alita_sdk/tools/zephyr_essential/__init__.py,sha256=_pve9n6VOn_AzLYoS5cwtvCyxE87MxOL3Yc4mFwCFTs,4195
|
|
357
|
-
alita_sdk/tools/zephyr_essential/api_wrapper.py,sha256=
|
|
418
|
+
alita_sdk/tools/zephyr_essential/api_wrapper.py,sha256=7xumoI-iCkii3XlKOI9ZU70QrkaxC-Z2TK_Alaen_sM,46782
|
|
358
419
|
alita_sdk/tools/zephyr_essential/client.py,sha256=fX_n2pACNzDiHxry3F4Xc6baUdw7d9U2m4srbfBv5Eg,9882
|
|
359
420
|
alita_sdk/tools/zephyr_scale/__init__.py,sha256=OL7O3jIh7M2SfD1GBCkNTTkcIaWs-FzF7aV9OpkbKew,4465
|
|
360
421
|
alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=kT0TbmMvuKhDUZc0i7KO18O38JM9SDU7-rUzYEPDuso,78619
|
|
361
422
|
alita_sdk/tools/zephyr_squad/__init__.py,sha256=Gl1YAFaMMufTNjIpnuo_c_lbDsQkmproYdZz2ZppgJ4,3007
|
|
362
423
|
alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
|
|
363
424
|
alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
|
|
364
|
-
alita_sdk-0.3.
|
|
365
|
-
alita_sdk-0.3.
|
|
366
|
-
alita_sdk-0.3.
|
|
367
|
-
alita_sdk-0.3.
|
|
368
|
-
alita_sdk-0.3.
|
|
425
|
+
alita_sdk-0.3.486.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
426
|
+
alita_sdk-0.3.486.dist-info/METADATA,sha256=EON9TQdrSOwuyfaZ3Bgbfi9eLCP7nKNnhCuyvVy9Leo,24266
|
|
427
|
+
alita_sdk-0.3.486.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
428
|
+
alita_sdk-0.3.486.dist-info/entry_points.txt,sha256=VijN0h4alp1WXm8tfS3P7vuGxN4a5RZqHjXAoEIBZnI,49
|
|
429
|
+
alita_sdk-0.3.486.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
|
|
430
|
+
alita_sdk-0.3.486.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|