alita-sdk 0.3.433__py3-none-any.whl → 0.3.434__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/models/mcp_models.py +1 -1
- alita_sdk/runtime/toolkits/mcp.py +110 -23
- alita_sdk/runtime/tools/mcp_server_tool.py +27 -8
- alita_sdk/tools/__init__.py +2 -8
- {alita_sdk-0.3.433.dist-info → alita_sdk-0.3.434.dist-info}/METADATA +1 -1
- {alita_sdk-0.3.433.dist-info → alita_sdk-0.3.434.dist-info}/RECORD +9 -9
- {alita_sdk-0.3.433.dist-info → alita_sdk-0.3.434.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.433.dist-info → alita_sdk-0.3.434.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.433.dist-info → alita_sdk-0.3.434.dist-info}/top_level.txt +0 -0
|
@@ -41,7 +41,7 @@ class McpToolkitConfig(BaseModel):
|
|
|
41
41
|
|
|
42
42
|
server_name: str = Field(description="MCP server name/identifier")
|
|
43
43
|
connection: McpConnectionConfig = Field(description="MCP connection configuration")
|
|
44
|
-
timeout: int = Field(default=60, description="Request timeout in seconds", ge=1, le=
|
|
44
|
+
timeout: int = Field(default=60, description="Request timeout in seconds", ge=1, le=3600)
|
|
45
45
|
selected_tools: List[str] = Field(default_factory=list, description="Specific tools to enable (empty = all)")
|
|
46
46
|
enable_caching: bool = Field(default=True, description="Enable tool schema caching")
|
|
47
47
|
cache_ttl: int = Field(default=300, description="Cache TTL in seconds", ge=60, le=3600)
|
|
@@ -287,7 +287,8 @@ class McpToolkit(BaseToolkit):
|
|
|
287
287
|
logger.info(f"Successfully created {len(tools)} MCP tools from toolkit '{toolkit_name}' via direct discovery")
|
|
288
288
|
|
|
289
289
|
except Exception as e:
|
|
290
|
-
logger.error(f"Direct discovery failed for MCP toolkit '{toolkit_name}': {e}")
|
|
290
|
+
logger.error(f"Direct discovery failed for MCP toolkit '{toolkit_name}': {e}", exc_info=True)
|
|
291
|
+
logger.error(f"Discovery error details - URL: {connection_config.url}, Timeout: {timeout}s")
|
|
291
292
|
|
|
292
293
|
# Fallback to static mode if available and not already static
|
|
293
294
|
if client and discovery_mode != "static":
|
|
@@ -296,14 +297,19 @@ class McpToolkit(BaseToolkit):
|
|
|
296
297
|
else:
|
|
297
298
|
logger.warning(f"No fallback available for toolkit '{toolkit_name}' - returning empty tools list")
|
|
298
299
|
|
|
299
|
-
#
|
|
300
|
-
inspection_tool = cls._create_inspection_tool(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
)
|
|
304
|
-
if inspection_tool:
|
|
305
|
-
|
|
306
|
-
|
|
300
|
+
# Don't add inspection tool to agent - it's only for internal use by toolkit
|
|
301
|
+
# inspection_tool = cls._create_inspection_tool(
|
|
302
|
+
# toolkit_name=toolkit_name,
|
|
303
|
+
# connection_config=connection_config
|
|
304
|
+
# )
|
|
305
|
+
# if inspection_tool:
|
|
306
|
+
# tools.append(inspection_tool)
|
|
307
|
+
# logger.info(f"Added MCP inspection tool for toolkit '{toolkit_name}'")
|
|
308
|
+
|
|
309
|
+
# Log final tool count before returning
|
|
310
|
+
logger.info(f"MCP toolkit '{toolkit_name}' will provide {len(tools)} tools to agent")
|
|
311
|
+
if len(tools) == 0:
|
|
312
|
+
logger.warning(f"MCP toolkit '{toolkit_name}' has no tools - discovery may have failed")
|
|
307
313
|
|
|
308
314
|
return tools
|
|
309
315
|
|
|
@@ -315,16 +321,82 @@ class McpToolkit(BaseToolkit):
|
|
|
315
321
|
timeout: int
|
|
316
322
|
) -> List[Dict[str, Any]]:
|
|
317
323
|
"""
|
|
318
|
-
Synchronously discover tools from MCP server using HTTP requests.
|
|
319
|
-
Returns list of tool dictionaries with name, description, and inputSchema.
|
|
324
|
+
Synchronously discover tools and prompts from MCP server using HTTP requests.
|
|
325
|
+
Returns list of tool/prompt dictionaries with name, description, and inputSchema.
|
|
326
|
+
Prompts are converted to tools that can be invoked.
|
|
327
|
+
"""
|
|
328
|
+
all_tools = []
|
|
329
|
+
|
|
330
|
+
# Discover regular tools
|
|
331
|
+
tools_data = cls._discover_mcp_endpoint(
|
|
332
|
+
endpoint="tools/list",
|
|
333
|
+
toolkit_name=toolkit_name,
|
|
334
|
+
connection_config=connection_config,
|
|
335
|
+
timeout=timeout
|
|
336
|
+
)
|
|
337
|
+
all_tools.extend(tools_data)
|
|
338
|
+
logger.info(f"Discovered {len(tools_data)} tools from MCP toolkit '{toolkit_name}'")
|
|
339
|
+
|
|
340
|
+
# Discover prompts and convert them to tools
|
|
341
|
+
try:
|
|
342
|
+
prompts_data = cls._discover_mcp_endpoint(
|
|
343
|
+
endpoint="prompts/list",
|
|
344
|
+
toolkit_name=toolkit_name,
|
|
345
|
+
connection_config=connection_config,
|
|
346
|
+
timeout=timeout
|
|
347
|
+
)
|
|
348
|
+
# Convert prompts to tool format
|
|
349
|
+
for prompt in prompts_data:
|
|
350
|
+
prompt_tool = {
|
|
351
|
+
"name": f"prompt_{prompt.get('name', 'unnamed')}",
|
|
352
|
+
"description": prompt.get('description', f"Execute prompt: {prompt.get('name')}"),
|
|
353
|
+
"inputSchema": {
|
|
354
|
+
"type": "object",
|
|
355
|
+
"properties": {
|
|
356
|
+
"arguments": {
|
|
357
|
+
"type": "object",
|
|
358
|
+
"description": "Arguments for the prompt template",
|
|
359
|
+
"properties": {
|
|
360
|
+
arg.get("name"): {
|
|
361
|
+
"type": "string",
|
|
362
|
+
"description": arg.get("description", ""),
|
|
363
|
+
"required": arg.get("required", False)
|
|
364
|
+
}
|
|
365
|
+
for arg in prompt.get("arguments", [])
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
"_mcp_type": "prompt",
|
|
371
|
+
"_mcp_prompt_name": prompt.get('name')
|
|
372
|
+
}
|
|
373
|
+
all_tools.append(prompt_tool)
|
|
374
|
+
logger.info(f"Discovered {len(prompts_data)} prompts from MCP toolkit '{toolkit_name}'")
|
|
375
|
+
except Exception as e:
|
|
376
|
+
logger.warning(f"Failed to discover prompts from MCP toolkit '{toolkit_name}': {e}")
|
|
377
|
+
|
|
378
|
+
logger.info(f"Total discovered {len(all_tools)} tools+prompts from MCP toolkit '{toolkit_name}'")
|
|
379
|
+
return all_tools
|
|
380
|
+
|
|
381
|
+
@classmethod
|
|
382
|
+
def _discover_mcp_endpoint(
|
|
383
|
+
cls,
|
|
384
|
+
endpoint: str,
|
|
385
|
+
toolkit_name: str,
|
|
386
|
+
connection_config: McpConnectionConfig,
|
|
387
|
+
timeout: int
|
|
388
|
+
) -> List[Dict[str, Any]]:
|
|
389
|
+
"""
|
|
390
|
+
Discover items from a specific MCP endpoint (tools/list or prompts/list).
|
|
391
|
+
Returns list of dictionaries.
|
|
320
392
|
"""
|
|
321
393
|
import time
|
|
322
394
|
|
|
323
|
-
# MCP protocol
|
|
395
|
+
# MCP protocol request
|
|
324
396
|
mcp_request = {
|
|
325
397
|
"jsonrpc": "2.0",
|
|
326
|
-
"id": f"discover_{int(time.time())}",
|
|
327
|
-
"method":
|
|
398
|
+
"id": f"discover_{endpoint.replace('/', '_')}_{int(time.time())}",
|
|
399
|
+
"method": endpoint,
|
|
328
400
|
"params": {}
|
|
329
401
|
}
|
|
330
402
|
|
|
@@ -336,6 +408,7 @@ class McpToolkit(BaseToolkit):
|
|
|
336
408
|
headers.update(connection_config.headers)
|
|
337
409
|
|
|
338
410
|
try:
|
|
411
|
+
logger.debug(f"Sending MCP {endpoint} request to {connection_config.url}")
|
|
339
412
|
response = requests.post(
|
|
340
413
|
connection_config.url,
|
|
341
414
|
json=mcp_request,
|
|
@@ -344,6 +417,7 @@ class McpToolkit(BaseToolkit):
|
|
|
344
417
|
)
|
|
345
418
|
|
|
346
419
|
if response.status_code != 200:
|
|
420
|
+
logger.error(f"MCP server returned non-200 status: {response.status_code}")
|
|
347
421
|
raise Exception(f"HTTP {response.status_code}: {response.text}")
|
|
348
422
|
|
|
349
423
|
# Check content type and parse accordingly
|
|
@@ -364,14 +438,17 @@ class McpToolkit(BaseToolkit):
|
|
|
364
438
|
if "error" in data:
|
|
365
439
|
raise Exception(f"MCP Error: {data['error']}")
|
|
366
440
|
|
|
367
|
-
# Parse MCP response
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
441
|
+
# Parse MCP response - different endpoints return different keys
|
|
442
|
+
result = data.get("result", {})
|
|
443
|
+
if endpoint == "tools/list":
|
|
444
|
+
return result.get("tools", [])
|
|
445
|
+
elif endpoint == "prompts/list":
|
|
446
|
+
return result.get("prompts", [])
|
|
447
|
+
else:
|
|
448
|
+
return result.get("items", [])
|
|
372
449
|
|
|
373
450
|
except Exception as e:
|
|
374
|
-
logger.error(f"Failed to discover
|
|
451
|
+
logger.error(f"Failed to discover from {endpoint} on MCP toolkit '{toolkit_name}': {e}")
|
|
375
452
|
raise
|
|
376
453
|
|
|
377
454
|
@staticmethod
|
|
@@ -406,7 +483,7 @@ class McpToolkit(BaseToolkit):
|
|
|
406
483
|
timeout: int,
|
|
407
484
|
client
|
|
408
485
|
) -> Optional[BaseTool]:
|
|
409
|
-
"""Create a BaseTool from a tool dictionary (from direct HTTP discovery)."""
|
|
486
|
+
"""Create a BaseTool from a tool/prompt dictionary (from direct HTTP discovery)."""
|
|
410
487
|
try:
|
|
411
488
|
# Store toolkit_max_length in local variable to avoid contextual access issues
|
|
412
489
|
max_length_value = cls.toolkit_max_length
|
|
@@ -415,16 +492,22 @@ class McpToolkit(BaseToolkit):
|
|
|
415
492
|
clean_prefix = clean_string(toolkit_name, max_length_value)
|
|
416
493
|
|
|
417
494
|
full_tool_name = f'{clean_prefix}{TOOLKIT_SPLITTER}{tool_dict.get("name", "unknown")}'
|
|
495
|
+
|
|
496
|
+
# Check if this is a prompt (converted to tool)
|
|
497
|
+
is_prompt = tool_dict.get("_mcp_type") == "prompt"
|
|
498
|
+
item_type = "prompt" if is_prompt else "tool"
|
|
418
499
|
|
|
419
500
|
return McpServerTool(
|
|
420
501
|
name=full_tool_name,
|
|
421
|
-
description=f"MCP
|
|
502
|
+
description=f"MCP {item_type} '{tool_dict.get('name')}' from toolkit '{toolkit_name}': {tool_dict.get('description', '')}",
|
|
422
503
|
args_schema=McpServerTool.create_pydantic_model_from_schema(
|
|
423
504
|
tool_dict.get("inputSchema", {})
|
|
424
505
|
),
|
|
425
506
|
client=client,
|
|
426
507
|
server=toolkit_name,
|
|
427
|
-
tool_timeout_sec=timeout
|
|
508
|
+
tool_timeout_sec=timeout,
|
|
509
|
+
is_prompt=is_prompt,
|
|
510
|
+
prompt_name=tool_dict.get("_mcp_prompt_name") if is_prompt else None
|
|
428
511
|
)
|
|
429
512
|
except Exception as e:
|
|
430
513
|
logger.error(f"Failed to create MCP tool '{tool_dict.get('name')}' from toolkit '{toolkit_name}': {e}")
|
|
@@ -588,6 +671,10 @@ class McpToolkit(BaseToolkit):
|
|
|
588
671
|
|
|
589
672
|
def get_tools(self) -> List[BaseTool]:
|
|
590
673
|
"""Get the list of tools provided by this toolkit."""
|
|
674
|
+
logger.info(f"MCP toolkit '{self.toolkit_name}' returning {len(self.tools)} tools")
|
|
675
|
+
if len(self.tools) > 0:
|
|
676
|
+
tool_names = [t.name if hasattr(t, 'name') else str(t) for t in self.tools]
|
|
677
|
+
logger.info(f"MCP toolkit '{self.toolkit_name}' tools: {tool_names}")
|
|
591
678
|
return self.tools
|
|
592
679
|
|
|
593
680
|
async def refresh_tools(self):
|
|
@@ -18,6 +18,8 @@ class McpServerTool(BaseTool):
|
|
|
18
18
|
client: Any = Field(default=None, exclude=True) # Exclude from serialization
|
|
19
19
|
server: str
|
|
20
20
|
tool_timeout_sec: int = 60
|
|
21
|
+
is_prompt: bool = False # Flag to indicate if this is a prompt tool
|
|
22
|
+
prompt_name: Optional[str] = None # Original prompt name if this is a prompt
|
|
21
23
|
|
|
22
24
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
23
25
|
|
|
@@ -140,14 +142,31 @@ class McpServerTool(BaseTool):
|
|
|
140
142
|
return create_model(model_name, **fields)
|
|
141
143
|
|
|
142
144
|
def _run(self, *args, **kwargs):
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
"
|
|
145
|
+
# Extract the actual tool/prompt name (remove toolkit prefix)
|
|
146
|
+
actual_name = self.name.rsplit(TOOLKIT_SPLITTER)[1] if TOOLKIT_SPLITTER in self.name else self.name
|
|
147
|
+
|
|
148
|
+
if self.is_prompt:
|
|
149
|
+
# For prompts, use prompts/get endpoint
|
|
150
|
+
call_data = {
|
|
151
|
+
"server": self.server,
|
|
152
|
+
"tool_timeout_sec": self.tool_timeout_sec,
|
|
153
|
+
"tool_call_id": str(uuid.uuid4()),
|
|
154
|
+
"method": "prompts/get",
|
|
155
|
+
"params": {
|
|
156
|
+
"name": self.prompt_name or actual_name.replace("prompt_", ""),
|
|
157
|
+
"arguments": kwargs.get("arguments", kwargs)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else:
|
|
161
|
+
# For regular tools, use tools/call endpoint
|
|
162
|
+
call_data = {
|
|
163
|
+
"server": self.server,
|
|
164
|
+
"tool_timeout_sec": self.tool_timeout_sec,
|
|
165
|
+
"tool_call_id": str(uuid.uuid4()),
|
|
166
|
+
"params": {
|
|
167
|
+
"name": actual_name,
|
|
168
|
+
"arguments": kwargs
|
|
169
|
+
}
|
|
150
170
|
}
|
|
151
|
-
}
|
|
152
171
|
|
|
153
172
|
return self.client.mcp_tool_call(call_data)
|
alita_sdk/tools/__init__.py
CHANGED
|
@@ -131,15 +131,9 @@ def get_tools(tools_list, alita, llm, store: Optional[BaseStore] = None, *args,
|
|
|
131
131
|
logger.error(f"Error getting ADO repos tools: {e}")
|
|
132
132
|
continue
|
|
133
133
|
|
|
134
|
-
#
|
|
134
|
+
# Skip MCP toolkit - it's handled by runtime/toolkits/tools.py to avoid duplicate loading
|
|
135
135
|
if tool_type == 'mcp':
|
|
136
|
-
|
|
137
|
-
from alita_sdk.runtime.toolkits.mcp import get_tools as mcp_get_tools
|
|
138
|
-
tools.extend(mcp_get_tools(tool, alita, llm))
|
|
139
|
-
logger.debug(f"Successfully loaded MCP tools")
|
|
140
|
-
except Exception as e:
|
|
141
|
-
logger.error(f"Error getting MCP tools: {e}")
|
|
142
|
-
raise ToolException(f"Error getting MCP tools: {e}")
|
|
136
|
+
logger.debug(f"Skipping MCP toolkit '{tool.get('toolkit_name')}' - handled by runtime toolkit system")
|
|
143
137
|
continue
|
|
144
138
|
|
|
145
139
|
# Handle standard tools
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.434
|
|
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
|
|
@@ -97,13 +97,13 @@ alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py,sha256=l3AdjSQnNv1
|
|
|
97
97
|
alita_sdk/runtime/langchain/tools/bdd_parser/parser.py,sha256=1H1Nd_OH5Wx8A5YV1zUghBxo613yPptZ7fqNo8Eg48M,17289
|
|
98
98
|
alita_sdk/runtime/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
99
|
alita_sdk/runtime/llms/preloaded.py,sha256=3AaUbZK3d8fvxAQMjR3ftOoYa0SnkCOL1EvdvDCXIHE,11321
|
|
100
|
-
alita_sdk/runtime/models/mcp_models.py,sha256=
|
|
100
|
+
alita_sdk/runtime/models/mcp_models.py,sha256=OdeDsKvB43auvTS1F3O2VBLd1dwe_7zCkhZZjFbICpw,2152
|
|
101
101
|
alita_sdk/runtime/toolkits/__init__.py,sha256=IenSyI2SrXSFuiWT7c8YO_mRFLVE_zNge61U4bpoyPw,631
|
|
102
102
|
alita_sdk/runtime/toolkits/application.py,sha256=HHAKgwKOckxc7EQG-AV7rz4POOzQJKFRr7AGEjmLudE,2688
|
|
103
103
|
alita_sdk/runtime/toolkits/artifact.py,sha256=YChNCX4QhVpaQG7Jk4TS-Wl0Aruc4slQ2K21zh9nNO0,3176
|
|
104
104
|
alita_sdk/runtime/toolkits/configurations.py,sha256=kIDAlnryPQfbZyFxV-9SzN2-Vefzx06TX1BBdIIpN90,141
|
|
105
105
|
alita_sdk/runtime/toolkits/datasource.py,sha256=qk78OdPoReYPCWwahfkKLbKc4pfsu-061oXRryFLP6I,2498
|
|
106
|
-
alita_sdk/runtime/toolkits/mcp.py,sha256=
|
|
106
|
+
alita_sdk/runtime/toolkits/mcp.py,sha256=OAxWrd8CL9Y6Gggpu_EtP81FjnhFhyt0-8CyFc9Fzks,30946
|
|
107
107
|
alita_sdk/runtime/toolkits/prompt.py,sha256=WIpTkkVYWqIqOWR_LlSWz3ug8uO9tm5jJ7aZYdiGRn0,1192
|
|
108
108
|
alita_sdk/runtime/toolkits/subgraph.py,sha256=wwUK8JjPXkGzyVZ3tAukmvST6eGbqx_U11rpnmbrvtg,2105
|
|
109
109
|
alita_sdk/runtime/toolkits/tools.py,sha256=YCTjrTJuwj2V2C8ZQqXhFvUbVr7NQcUHZlCQLLvoeGA,10946
|
|
@@ -122,7 +122,7 @@ alita_sdk/runtime/tools/llm.py,sha256=iRG_wU4T01LRsjEMPZe5Uah7LiMqDc-vspwkMuQtlt
|
|
|
122
122
|
alita_sdk/runtime/tools/loop.py,sha256=uds0WhZvwMxDVFI6MZHrcmMle637cQfBNg682iLxoJA,8335
|
|
123
123
|
alita_sdk/runtime/tools/loop_output.py,sha256=U4hO9PCQgWlXwOq6jdmCGbegtAxGAPXObSxZQ3z38uk,8069
|
|
124
124
|
alita_sdk/runtime/tools/mcp_inspect_tool.py,sha256=38X8euaxDbEGjcfp6ElvExZalpZun6QEr6ZEW4nU5pQ,11496
|
|
125
|
-
alita_sdk/runtime/tools/mcp_server_tool.py,sha256=
|
|
125
|
+
alita_sdk/runtime/tools/mcp_server_tool.py,sha256=HPlEppCbNafee41wSxZL1wnVyYCiOwdMD_dy0eE9IUs,7505
|
|
126
126
|
alita_sdk/runtime/tools/pgvector_search.py,sha256=NN2BGAnq4SsDHIhUcFZ8d_dbEOM8QwB0UwpsWCYruXU,11692
|
|
127
127
|
alita_sdk/runtime/tools/prompt.py,sha256=nJafb_e5aOM1Rr3qGFCR-SKziU9uCsiP2okIMs9PppM,741
|
|
128
128
|
alita_sdk/runtime/tools/router.py,sha256=p7e0tX6YAWw2M2Nq0A_xqw1E2P-Xz1DaJvhUstfoZn4,1584
|
|
@@ -140,7 +140,7 @@ alita_sdk/runtime/utils/streamlit.py,sha256=yIb4YIGH8HRAXZtZlywjxI07Xdcb5eUt7rMA
|
|
|
140
140
|
alita_sdk/runtime/utils/toolkit_runtime.py,sha256=MU63Fpxj0b5_r1IUUc0Q3-PN9VwL7rUxp2MRR4tmYR8,5136
|
|
141
141
|
alita_sdk/runtime/utils/toolkit_utils.py,sha256=n11byeV6uLHAT7D8lPgIA0FE7tergbaRfbrwTWh5Twk,5447
|
|
142
142
|
alita_sdk/runtime/utils/utils.py,sha256=PJK8A-JVIzY1IowOjGG8DIqsIiEFe65qDKvFcjJCKWA,1041
|
|
143
|
-
alita_sdk/tools/__init__.py,sha256=
|
|
143
|
+
alita_sdk/tools/__init__.py,sha256=uQzvtnyOsgfdHl3pdo2LqK49Hb3SKFXDBXW_szN2R3k,10992
|
|
144
144
|
alita_sdk/tools/base_indexer_toolkit.py,sha256=hK1Q2dvNctZCw2K1-khlQrR1Q0JDQviZjqDUiqpnazg,27180
|
|
145
145
|
alita_sdk/tools/code_indexer_toolkit.py,sha256=2VkOC8JfBDc25_jp-NWyMYqpaYRETIzTJFLrIYrfBpE,7814
|
|
146
146
|
alita_sdk/tools/elitea_base.py,sha256=34fmVdYgd2YXifU5LFNjMQysr4OOIZ6AOZjq4GxLgSw,34417
|
|
@@ -358,8 +358,8 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=kT0TbmMvuKhDUZc0i7KO18O38JM9S
|
|
|
358
358
|
alita_sdk/tools/zephyr_squad/__init__.py,sha256=0ne8XLJEQSLOWfzd2HdnqOYmQlUliKHbBED5kW_Vias,2895
|
|
359
359
|
alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
|
|
360
360
|
alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
|
|
361
|
-
alita_sdk-0.3.
|
|
362
|
-
alita_sdk-0.3.
|
|
363
|
-
alita_sdk-0.3.
|
|
364
|
-
alita_sdk-0.3.
|
|
365
|
-
alita_sdk-0.3.
|
|
361
|
+
alita_sdk-0.3.434.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
362
|
+
alita_sdk-0.3.434.dist-info/METADATA,sha256=tZmEkQg9ESX7Hmuz9VQHVx4Pt66g1qSn5acxirMxFtE,19071
|
|
363
|
+
alita_sdk-0.3.434.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
364
|
+
alita_sdk-0.3.434.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
|
|
365
|
+
alita_sdk-0.3.434.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|