alita-sdk 0.3.140b1__tar.gz → 0.3.140b3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/PKG-INFO +1 -1
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/pyproject.toml +1 -1
- alita_sdk-0.3.140b3/src/alita_sdk/tools/mcp_server_tool.py +101 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk.egg-info/PKG-INFO +1 -1
- alita_sdk-0.3.140b1/src/alita_sdk/tools/mcp_server_tool.py +0 -80
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/LICENSE +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/README.md +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/requirements.txt +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/setup.cfg +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/agents/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/agents/llamaAgentParser.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/clients/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/clients/artifact.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/clients/client.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/clients/datasource.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/clients/prompt.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/ado_analyse/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/ado_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/github_analyse/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/github_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/gitlab_analyse/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/gitlab_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/browseruse/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/browseruse/api_wrapper.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/assistant.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/constants.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/indexer.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/utils.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/llamaindex/assistant.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/llms/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/llms/alita.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/llms/preloaded.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/application.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/tools.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/agent.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/application.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/artifact.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/datasource.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/echo.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/function.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/llm.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/loop.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/loop_output.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/prompt.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/router.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/tool.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/utils/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/utils/evaluate.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/utils/logging.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/utils/streamlit.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/utils/utils.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/tests/__init__.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/tests/test_jira_analysis.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.140b3
|
4
4
|
Summary: SDK for building langchain agents using resources from Alita
|
5
5
|
Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedjik@gmail.com>
|
6
6
|
Project-URL: Homepage, https://projectalita.ai
|
@@ -0,0 +1,101 @@
|
|
1
|
+
import uuid
|
2
|
+
from logging import getLogger
|
3
|
+
from typing import Any, Type, Literal, Optional, Union, List
|
4
|
+
|
5
|
+
from langchain_core.tools import BaseTool
|
6
|
+
from pydantic import BaseModel, Field, create_model, EmailStr, constr
|
7
|
+
|
8
|
+
logger = getLogger(__name__)
|
9
|
+
|
10
|
+
|
11
|
+
class McpServerTool(BaseTool):
|
12
|
+
name: str
|
13
|
+
description: str
|
14
|
+
args_schema: Optional[Type[BaseModel]] = None
|
15
|
+
return_type: str = "str"
|
16
|
+
client: Any
|
17
|
+
server: str
|
18
|
+
tool_timeout_sec: int = 60
|
19
|
+
|
20
|
+
|
21
|
+
@staticmethod
|
22
|
+
def create_pydantic_model_from_schema(schema: dict):
|
23
|
+
def parse_type(field: dict, name: str = "Field") -> Any:
|
24
|
+
if "allOf" in field:
|
25
|
+
merged = {}
|
26
|
+
required = set()
|
27
|
+
for idx, subschema in enumerate(field["allOf"]):
|
28
|
+
sub_type = parse_type(subschema, f"{name}AllOf{idx}")
|
29
|
+
if hasattr(sub_type, "__fields__"):
|
30
|
+
merged.update({k: (v.outer_type_, v.default) for k, v in sub_type.__fields__.items()})
|
31
|
+
required.update({k for k, v in sub_type.__fields__.items() if v.required})
|
32
|
+
if merged:
|
33
|
+
return create_model(f"{name}AllOf", **merged)
|
34
|
+
return Any
|
35
|
+
if "anyOf" in field or "oneOf" in field:
|
36
|
+
key = "anyOf" if "anyOf" in field else "oneOf"
|
37
|
+
types = [parse_type(sub, f"{name}{key.capitalize()}{i}") for i, sub in enumerate(field[key])]
|
38
|
+
# Check for null type
|
39
|
+
if any(sub.get("type") == "null" for sub in field[key]):
|
40
|
+
non_null_types = [parse_type(sub, f"{name}{key.capitalize()}{i}")
|
41
|
+
for i, sub in enumerate(field[key]) if sub.get("type") != "null"]
|
42
|
+
if len(non_null_types) == 1:
|
43
|
+
return Optional[non_null_types[0]]
|
44
|
+
return Union[tuple(types)]
|
45
|
+
t = field.get("type")
|
46
|
+
if isinstance(t, list):
|
47
|
+
if "null" in t:
|
48
|
+
non_null = [x for x in t if x != "null"]
|
49
|
+
if len(non_null) == 1:
|
50
|
+
field = dict(field)
|
51
|
+
field["type"] = non_null[0]
|
52
|
+
return Optional[parse_type(field, name)]
|
53
|
+
return Any
|
54
|
+
return Any
|
55
|
+
if t == "string":
|
56
|
+
if "enum" in field:
|
57
|
+
return Literal[tuple(field["enum"])]
|
58
|
+
if field.get("format") == "email":
|
59
|
+
return EmailStr
|
60
|
+
if "pattern" in field:
|
61
|
+
return constr(regex=field["pattern"])
|
62
|
+
return str
|
63
|
+
if t == "integer":
|
64
|
+
return int
|
65
|
+
if t == "number":
|
66
|
+
return float
|
67
|
+
if t == "boolean":
|
68
|
+
return bool
|
69
|
+
if t == "object":
|
70
|
+
return McpServerTool.create_pydantic_model_from_schema(field)
|
71
|
+
if t == "array":
|
72
|
+
items = field.get("items", {})
|
73
|
+
return List[parse_type(items, name + "Item")]
|
74
|
+
return Any
|
75
|
+
|
76
|
+
properties = schema.get("properties", {})
|
77
|
+
required = set(schema.get("required", []))
|
78
|
+
fields = {}
|
79
|
+
for name, prop in properties.items():
|
80
|
+
typ = parse_type(prop, name.capitalize())
|
81
|
+
default = prop.get("default", ... if name in required else None)
|
82
|
+
field_args = {}
|
83
|
+
if "description" in prop:
|
84
|
+
field_args["description"] = prop["description"]
|
85
|
+
if "format" in prop:
|
86
|
+
field_args["format"] = prop["format"]
|
87
|
+
fields[name] = (typ, Field(default, **field_args))
|
88
|
+
return create_model("DynamicModel", **fields)
|
89
|
+
|
90
|
+
def _run(self, *args, **kwargs):
|
91
|
+
call_data = {
|
92
|
+
"server": self.server,
|
93
|
+
"tool_timeout_sec": self.tool_timeout_sec,
|
94
|
+
"tool_call_id": str(uuid.uuid4()),
|
95
|
+
"params": {
|
96
|
+
"name": self.name,
|
97
|
+
"arguments": kwargs
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
return self.client.mcp_tool_call(call_data)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.140b3
|
4
4
|
Summary: SDK for building langchain agents using resources from Alita
|
5
5
|
Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedjik@gmail.com>
|
6
6
|
Project-URL: Homepage, https://projectalita.ai
|
@@ -1,80 +0,0 @@
|
|
1
|
-
import uuid
|
2
|
-
from logging import getLogger
|
3
|
-
from typing import Any, Type, Literal, Optional
|
4
|
-
|
5
|
-
from langchain_core.tools import BaseTool
|
6
|
-
from pydantic import BaseModel, Field, create_model
|
7
|
-
|
8
|
-
logger = getLogger(__name__)
|
9
|
-
|
10
|
-
|
11
|
-
class McpServerTool(BaseTool):
|
12
|
-
name: str
|
13
|
-
description: str
|
14
|
-
args_schema: Optional[Type[BaseModel]] = None
|
15
|
-
return_type: str = "str"
|
16
|
-
client: Any
|
17
|
-
server: str
|
18
|
-
tool_timeout_sec: int = 60
|
19
|
-
|
20
|
-
|
21
|
-
@staticmethod
|
22
|
-
def create_pydantic_model_from_schema(schema: dict):
|
23
|
-
fields = {}
|
24
|
-
for field_name, field_info in schema['properties'].items():
|
25
|
-
field_type = None
|
26
|
-
|
27
|
-
if 'type' in field_info:
|
28
|
-
field_type = field_info['type']
|
29
|
-
elif 'allOf' in field_info or 'anyOf' in field_info:# ADO-MCP wit_update_work_item, testplan_add_test_cases_to_suite
|
30
|
-
field_type = 'array'
|
31
|
-
|
32
|
-
field_description = field_info.get('description', '')
|
33
|
-
if field_type == 'string':
|
34
|
-
if 'enum' in field_info:
|
35
|
-
field_type = Literal[tuple(field_info['enum'])]
|
36
|
-
else:
|
37
|
-
field_type = str
|
38
|
-
elif field_type == 'integer':
|
39
|
-
field_type = int
|
40
|
-
elif field_type == 'number':
|
41
|
-
field_type = float
|
42
|
-
elif field_type == 'boolean':
|
43
|
-
field_type = bool
|
44
|
-
elif field_type == 'object':#Dict[str, Any] - for tool start_browser in selenium mcp
|
45
|
-
nested_model = McpServerTool.create_pydantic_model_from_schema(field_info) if 'properties' in field_info else dict# for tool build_run_build in ADO-MCP
|
46
|
-
field_type = nested_model
|
47
|
-
elif field_type == 'array':
|
48
|
-
item_schema = field_info['items'] if 'items' in field_info else (field_info.get('allOf', field_info.get('anyOf', [{'type': None}]))[-1])# ADO-MCP wit_update_work_item, testplan_add_test_cases_to_suite
|
49
|
-
item_type = McpServerTool.create_pydantic_model_from_schema(item_schema) if item_schema['type'] == 'object' else (
|
50
|
-
str if item_schema['type'] == 'string' else # support enum
|
51
|
-
int if item_schema['type'] == 'integer' else
|
52
|
-
float if item_schema['type'] == 'number' else
|
53
|
-
bool if item_schema['type'] == 'boolean' else
|
54
|
-
list if item_schema['type'] == 'array' else# ADO-MCP testplan_add_test_cases_to_suite
|
55
|
-
None
|
56
|
-
)
|
57
|
-
if item_type is None:
|
58
|
-
raise ValueError(f"Unsupported array item type: {item_schema['type']}")
|
59
|
-
field_type = list[item_type]
|
60
|
-
else:
|
61
|
-
raise ValueError(f"Unsupported field type: {field_type}")
|
62
|
-
|
63
|
-
if field_name in schema.get('required', []):
|
64
|
-
fields[field_name] = (field_type, Field(..., description=field_description))
|
65
|
-
else:
|
66
|
-
fields[field_name] = (Optional[field_type], Field(None, description=field_description))
|
67
|
-
return create_model('DynamicModel', **fields)
|
68
|
-
|
69
|
-
def _run(self, *args, **kwargs):
|
70
|
-
call_data = {
|
71
|
-
"server": self.server,
|
72
|
-
"tool_timeout_sec": self.tool_timeout_sec,
|
73
|
-
"tool_call_id": str(uuid.uuid4()),
|
74
|
-
"params": {
|
75
|
-
"name": self.name,
|
76
|
-
"arguments": kwargs
|
77
|
-
}
|
78
|
-
}
|
79
|
-
|
80
|
-
return self.client.mcp_tool_call(call_data)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/analysis/ado_analyse/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/community/browseruse/api_wrapper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/chat_message_template.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/__init__.py
RENAMED
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/constants.py
RENAMED
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/document_loaders/utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/interfaces/kwextractor.py
RENAMED
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/interfaces/llm_processor.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/retrievers/AlitaRetriever.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/__init__.py
RENAMED
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/bdd_parser.py
RENAMED
File without changes
|
File without changes
|
{alita_sdk-0.3.140b1 → alita_sdk-0.3.140b3}/src/alita_sdk/langchain/tools/bdd_parser/parser.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|