alita-sdk 0.3.257__py3-none-any.whl → 0.3.562__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.
- 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 +215 -0
- alita_sdk/cli/agent_ui.py +228 -0
- alita_sdk/cli/agents.py +3601 -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 +1073 -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 +1751 -0
- alita_sdk/cli/tools/planning.py +389 -0
- alita_sdk/cli/tools/terminal.py +414 -0
- alita_sdk/community/__init__.py +72 -12
- alita_sdk/community/inventory/__init__.py +236 -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 +173 -0
- alita_sdk/community/inventory/toolkit_utils.py +176 -0
- alita_sdk/community/inventory/visualize.py +1370 -0
- alita_sdk/configurations/__init__.py +11 -0
- alita_sdk/configurations/ado.py +148 -2
- alita_sdk/configurations/azure_search.py +1 -1
- alita_sdk/configurations/bigquery.py +1 -1
- alita_sdk/configurations/bitbucket.py +94 -2
- alita_sdk/configurations/browser.py +18 -0
- alita_sdk/configurations/carrier.py +19 -0
- alita_sdk/configurations/confluence.py +130 -1
- alita_sdk/configurations/delta_lake.py +1 -1
- alita_sdk/configurations/figma.py +76 -5
- alita_sdk/configurations/github.py +65 -1
- alita_sdk/configurations/gitlab.py +81 -0
- alita_sdk/configurations/google_places.py +17 -0
- alita_sdk/configurations/jira.py +103 -0
- alita_sdk/configurations/openapi.py +111 -0
- alita_sdk/configurations/postman.py +1 -1
- alita_sdk/configurations/qtest.py +72 -3
- alita_sdk/configurations/report_portal.py +115 -0
- alita_sdk/configurations/salesforce.py +19 -0
- alita_sdk/configurations/service_now.py +1 -12
- alita_sdk/configurations/sharepoint.py +167 -0
- alita_sdk/configurations/sonar.py +18 -0
- alita_sdk/configurations/sql.py +20 -0
- alita_sdk/configurations/testio.py +101 -0
- alita_sdk/configurations/testrail.py +88 -0
- alita_sdk/configurations/xray.py +94 -1
- alita_sdk/configurations/zephyr_enterprise.py +94 -1
- alita_sdk/configurations/zephyr_essential.py +95 -0
- alita_sdk/runtime/clients/artifact.py +21 -4
- alita_sdk/runtime/clients/client.py +458 -67
- alita_sdk/runtime/clients/mcp_discovery.py +342 -0
- alita_sdk/runtime/clients/mcp_manager.py +262 -0
- alita_sdk/runtime/clients/sandbox_client.py +352 -0
- alita_sdk/runtime/langchain/_constants_bkup.py +1318 -0
- alita_sdk/runtime/langchain/assistant.py +183 -43
- alita_sdk/runtime/langchain/constants.py +647 -1
- alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +315 -3
- alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +209 -31
- alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +1 -1
- alita_sdk/runtime/langchain/document_loaders/AlitaJSONLinesLoader.py +77 -0
- alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +10 -3
- alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +66 -0
- alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +79 -10
- alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +52 -15
- alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +9 -0
- alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +1 -4
- alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +15 -2
- alita_sdk/runtime/langchain/document_loaders/ImageParser.py +30 -0
- alita_sdk/runtime/langchain/document_loaders/constants.py +189 -41
- alita_sdk/runtime/langchain/interfaces/llm_processor.py +4 -2
- alita_sdk/runtime/langchain/langraph_agent.py +407 -92
- alita_sdk/runtime/langchain/utils.py +102 -8
- alita_sdk/runtime/llms/preloaded.py +2 -6
- alita_sdk/runtime/models/mcp_models.py +61 -0
- alita_sdk/runtime/skills/__init__.py +91 -0
- alita_sdk/runtime/skills/callbacks.py +498 -0
- alita_sdk/runtime/skills/discovery.py +540 -0
- alita_sdk/runtime/skills/executor.py +610 -0
- alita_sdk/runtime/skills/input_builder.py +371 -0
- alita_sdk/runtime/skills/models.py +330 -0
- alita_sdk/runtime/skills/registry.py +355 -0
- alita_sdk/runtime/skills/skill_runner.py +330 -0
- alita_sdk/runtime/toolkits/__init__.py +28 -0
- alita_sdk/runtime/toolkits/application.py +14 -4
- alita_sdk/runtime/toolkits/artifact.py +24 -9
- alita_sdk/runtime/toolkits/datasource.py +13 -6
- alita_sdk/runtime/toolkits/mcp.py +780 -0
- alita_sdk/runtime/toolkits/planning.py +178 -0
- alita_sdk/runtime/toolkits/skill_router.py +238 -0
- alita_sdk/runtime/toolkits/subgraph.py +11 -6
- alita_sdk/runtime/toolkits/tools.py +314 -70
- alita_sdk/runtime/toolkits/vectorstore.py +11 -5
- alita_sdk/runtime/tools/__init__.py +24 -0
- alita_sdk/runtime/tools/application.py +16 -4
- alita_sdk/runtime/tools/artifact.py +367 -33
- alita_sdk/runtime/tools/data_analysis.py +183 -0
- alita_sdk/runtime/tools/function.py +100 -4
- alita_sdk/runtime/tools/graph.py +81 -0
- alita_sdk/runtime/tools/image_generation.py +218 -0
- alita_sdk/runtime/tools/llm.py +1013 -177
- alita_sdk/runtime/tools/loop.py +3 -1
- alita_sdk/runtime/tools/loop_output.py +3 -1
- alita_sdk/runtime/tools/mcp_inspect_tool.py +284 -0
- alita_sdk/runtime/tools/mcp_remote_tool.py +181 -0
- alita_sdk/runtime/tools/mcp_server_tool.py +3 -1
- 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/router.py +2 -1
- alita_sdk/runtime/tools/sandbox.py +375 -0
- alita_sdk/runtime/tools/skill_router.py +776 -0
- alita_sdk/runtime/tools/tool.py +3 -1
- alita_sdk/runtime/tools/vectorstore.py +69 -65
- alita_sdk/runtime/tools/vectorstore_base.py +163 -90
- alita_sdk/runtime/utils/AlitaCallback.py +137 -21
- alita_sdk/runtime/utils/mcp_client.py +492 -0
- alita_sdk/runtime/utils/mcp_oauth.py +361 -0
- alita_sdk/runtime/utils/mcp_sse_client.py +434 -0
- alita_sdk/runtime/utils/mcp_tools_discovery.py +124 -0
- alita_sdk/runtime/utils/streamlit.py +41 -14
- alita_sdk/runtime/utils/toolkit_utils.py +28 -9
- alita_sdk/runtime/utils/utils.py +48 -0
- alita_sdk/tools/__init__.py +135 -37
- alita_sdk/tools/ado/__init__.py +2 -2
- alita_sdk/tools/ado/repos/__init__.py +15 -19
- alita_sdk/tools/ado/repos/repos_wrapper.py +12 -20
- alita_sdk/tools/ado/test_plan/__init__.py +26 -8
- alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +56 -28
- alita_sdk/tools/ado/wiki/__init__.py +27 -12
- alita_sdk/tools/ado/wiki/ado_wrapper.py +114 -40
- alita_sdk/tools/ado/work_item/__init__.py +27 -12
- alita_sdk/tools/ado/work_item/ado_wrapper.py +95 -11
- alita_sdk/tools/advanced_jira_mining/__init__.py +12 -8
- alita_sdk/tools/aws/delta_lake/__init__.py +14 -11
- alita_sdk/tools/aws/delta_lake/tool.py +5 -1
- alita_sdk/tools/azure_ai/search/__init__.py +13 -8
- alita_sdk/tools/base/tool.py +5 -1
- alita_sdk/tools/base_indexer_toolkit.py +454 -110
- alita_sdk/tools/bitbucket/__init__.py +27 -19
- alita_sdk/tools/bitbucket/api_wrapper.py +285 -27
- alita_sdk/tools/bitbucket/cloud_api_wrapper.py +5 -5
- alita_sdk/tools/browser/__init__.py +41 -16
- alita_sdk/tools/browser/crawler.py +3 -1
- alita_sdk/tools/browser/utils.py +15 -6
- alita_sdk/tools/carrier/__init__.py +18 -17
- alita_sdk/tools/carrier/backend_reports_tool.py +8 -4
- alita_sdk/tools/carrier/excel_reporter.py +8 -4
- alita_sdk/tools/chunkers/__init__.py +3 -1
- alita_sdk/tools/chunkers/code/codeparser.py +1 -1
- alita_sdk/tools/chunkers/sematic/json_chunker.py +2 -1
- alita_sdk/tools/chunkers/sematic/markdown_chunker.py +97 -6
- alita_sdk/tools/chunkers/sematic/proposal_chunker.py +1 -1
- alita_sdk/tools/chunkers/universal_chunker.py +270 -0
- alita_sdk/tools/cloud/aws/__init__.py +11 -7
- alita_sdk/tools/cloud/azure/__init__.py +11 -7
- alita_sdk/tools/cloud/gcp/__init__.py +11 -7
- alita_sdk/tools/cloud/k8s/__init__.py +11 -7
- alita_sdk/tools/code/linter/__init__.py +9 -8
- alita_sdk/tools/code/loaders/codesearcher.py +3 -2
- alita_sdk/tools/code/sonar/__init__.py +20 -13
- alita_sdk/tools/code_indexer_toolkit.py +199 -0
- alita_sdk/tools/confluence/__init__.py +21 -14
- alita_sdk/tools/confluence/api_wrapper.py +197 -58
- alita_sdk/tools/confluence/loader.py +14 -2
- alita_sdk/tools/custom_open_api/__init__.py +11 -5
- alita_sdk/tools/elastic/__init__.py +10 -8
- alita_sdk/tools/elitea_base.py +546 -64
- alita_sdk/tools/figma/__init__.py +11 -8
- alita_sdk/tools/figma/api_wrapper.py +352 -153
- alita_sdk/tools/github/__init__.py +17 -17
- alita_sdk/tools/github/api_wrapper.py +9 -26
- alita_sdk/tools/github/github_client.py +81 -12
- alita_sdk/tools/github/schemas.py +2 -1
- alita_sdk/tools/github/tool.py +5 -1
- alita_sdk/tools/gitlab/__init__.py +18 -13
- alita_sdk/tools/gitlab/api_wrapper.py +224 -80
- alita_sdk/tools/gitlab_org/__init__.py +13 -10
- alita_sdk/tools/google/bigquery/__init__.py +13 -13
- alita_sdk/tools/google/bigquery/tool.py +5 -1
- alita_sdk/tools/google_places/__init__.py +20 -11
- alita_sdk/tools/jira/__init__.py +21 -11
- alita_sdk/tools/jira/api_wrapper.py +315 -168
- alita_sdk/tools/keycloak/__init__.py +10 -8
- alita_sdk/tools/localgit/__init__.py +8 -3
- alita_sdk/tools/localgit/local_git.py +62 -54
- alita_sdk/tools/localgit/tool.py +5 -1
- alita_sdk/tools/memory/__init__.py +38 -14
- alita_sdk/tools/non_code_indexer_toolkit.py +7 -2
- alita_sdk/tools/ocr/__init__.py +10 -8
- alita_sdk/tools/openapi/__init__.py +281 -108
- alita_sdk/tools/openapi/api_wrapper.py +883 -0
- alita_sdk/tools/openapi/tool.py +20 -0
- alita_sdk/tools/pandas/__init__.py +18 -11
- alita_sdk/tools/pandas/api_wrapper.py +40 -45
- alita_sdk/tools/pandas/dataframe/generator/base.py +3 -1
- alita_sdk/tools/postman/__init__.py +10 -11
- alita_sdk/tools/postman/api_wrapper.py +19 -8
- alita_sdk/tools/postman/postman_analysis.py +8 -1
- alita_sdk/tools/pptx/__init__.py +10 -10
- alita_sdk/tools/qtest/__init__.py +21 -14
- alita_sdk/tools/qtest/api_wrapper.py +1784 -88
- alita_sdk/tools/rally/__init__.py +12 -10
- alita_sdk/tools/report_portal/__init__.py +22 -16
- alita_sdk/tools/salesforce/__init__.py +21 -16
- alita_sdk/tools/servicenow/__init__.py +20 -16
- alita_sdk/tools/servicenow/api_wrapper.py +1 -1
- alita_sdk/tools/sharepoint/__init__.py +16 -14
- alita_sdk/tools/sharepoint/api_wrapper.py +179 -39
- alita_sdk/tools/sharepoint/authorization_helper.py +191 -1
- alita_sdk/tools/sharepoint/utils.py +8 -2
- alita_sdk/tools/slack/__init__.py +11 -7
- alita_sdk/tools/sql/__init__.py +21 -19
- alita_sdk/tools/sql/api_wrapper.py +71 -23
- alita_sdk/tools/testio/__init__.py +20 -13
- alita_sdk/tools/testrail/__init__.py +12 -11
- alita_sdk/tools/testrail/api_wrapper.py +214 -46
- alita_sdk/tools/utils/__init__.py +28 -4
- alita_sdk/tools/utils/content_parser.py +182 -62
- alita_sdk/tools/utils/text_operations.py +254 -0
- alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +83 -27
- alita_sdk/tools/xray/__init__.py +17 -14
- alita_sdk/tools/xray/api_wrapper.py +58 -113
- alita_sdk/tools/yagmail/__init__.py +8 -3
- alita_sdk/tools/zephyr/__init__.py +11 -7
- alita_sdk/tools/zephyr_enterprise/__init__.py +15 -9
- alita_sdk/tools/zephyr_enterprise/api_wrapper.py +30 -15
- alita_sdk/tools/zephyr_essential/__init__.py +15 -10
- alita_sdk/tools/zephyr_essential/api_wrapper.py +297 -54
- alita_sdk/tools/zephyr_essential/client.py +6 -4
- alita_sdk/tools/zephyr_scale/__init__.py +12 -8
- alita_sdk/tools/zephyr_scale/api_wrapper.py +39 -31
- alita_sdk/tools/zephyr_squad/__init__.py +11 -7
- {alita_sdk-0.3.257.dist-info → alita_sdk-0.3.562.dist-info}/METADATA +184 -37
- alita_sdk-0.3.562.dist-info/RECORD +450 -0
- alita_sdk-0.3.562.dist-info/entry_points.txt +2 -0
- alita_sdk/tools/bitbucket/tools.py +0 -304
- alita_sdk-0.3.257.dist-info/RECORD +0 -343
- {alita_sdk-0.3.257.dist-info → alita_sdk-0.3.562.dist-info}/WHEEL +0 -0
- {alita_sdk-0.3.257.dist-info → alita_sdk-0.3.562.dist-info}/licenses/LICENSE +0 -0
- {alita_sdk-0.3.257.dist-info → alita_sdk-0.3.562.dist-info}/top_level.txt +0 -0
|
@@ -4,7 +4,8 @@ from pydantic import BaseModel, ConfigDict, Field, create_model, SecretStr
|
|
|
4
4
|
from .api_wrapper import RallyApiWrapper
|
|
5
5
|
from langchain_core.tools import BaseTool
|
|
6
6
|
from ..base.tool import BaseAction
|
|
7
|
-
from ..
|
|
7
|
+
from ..elitea_base import filter_missconfigured_index_tools
|
|
8
|
+
from ..utils import clean_string, get_max_toolkit_length
|
|
8
9
|
from ...configurations.rally import RallyConfiguration
|
|
9
10
|
|
|
10
11
|
name = "rally"
|
|
@@ -20,17 +21,13 @@ def get_tools(tool):
|
|
|
20
21
|
|
|
21
22
|
class RallyToolkit(BaseToolkit):
|
|
22
23
|
tools: List[BaseTool] = []
|
|
23
|
-
toolkit_max_length: int = 0
|
|
24
24
|
|
|
25
25
|
@staticmethod
|
|
26
26
|
def toolkit_config_schema() -> BaseModel:
|
|
27
27
|
selected_tools = {x['name']: x['args_schema'].schema() for x in RallyApiWrapper.model_construct().get_available_tools()}
|
|
28
|
-
RallyToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
|
|
29
28
|
return create_model(
|
|
30
29
|
name,
|
|
31
|
-
|
|
32
|
-
'max_toolkit_length': RallyToolkit.toolkit_max_length})),
|
|
33
|
-
rally_configuration=(Optional[RallyConfiguration], Field(description="Rally configuration", json_schema_extra={'configuration_types': ['rally']})),
|
|
30
|
+
rally_configuration=(RallyConfiguration, Field(description="Rally configuration", json_schema_extra={'configuration_types': ['rally']})),
|
|
34
31
|
workspace=(Optional[str], Field(default=None, description="Rally workspace")),
|
|
35
32
|
project=(Optional[str], Field(default=None, description="Rally project")),
|
|
36
33
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
|
@@ -45,6 +42,7 @@ class RallyToolkit(BaseToolkit):
|
|
|
45
42
|
)
|
|
46
43
|
|
|
47
44
|
@classmethod
|
|
45
|
+
@filter_missconfigured_index_tools
|
|
48
46
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
|
49
47
|
if selected_tools is None:
|
|
50
48
|
selected_tools = []
|
|
@@ -53,18 +51,22 @@ class RallyToolkit(BaseToolkit):
|
|
|
53
51
|
**kwargs.get('rally_configuration'),
|
|
54
52
|
}
|
|
55
53
|
rally_api_wrapper = RallyApiWrapper(**wrapper_payload)
|
|
56
|
-
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
|
57
54
|
available_tools = rally_api_wrapper.get_available_tools()
|
|
58
55
|
tools = []
|
|
59
56
|
for tool in available_tools:
|
|
60
57
|
if selected_tools:
|
|
61
58
|
if tool["name"] not in selected_tools:
|
|
62
59
|
continue
|
|
60
|
+
description = f"{tool['description']}\nWorkspace: {rally_api_wrapper.workspace}. Project: {rally_api_wrapper.project}"
|
|
61
|
+
if toolkit_name:
|
|
62
|
+
description = f"{description}\nToolkit: {toolkit_name}"
|
|
63
|
+
description = description[:1000]
|
|
63
64
|
tools.append(BaseAction(
|
|
64
65
|
api_wrapper=rally_api_wrapper,
|
|
65
|
-
name=
|
|
66
|
-
description=
|
|
67
|
-
args_schema=tool["args_schema"]
|
|
66
|
+
name=tool["name"],
|
|
67
|
+
description=description,
|
|
68
|
+
args_schema=tool["args_schema"],
|
|
69
|
+
metadata={"toolkit_name": toolkit_name} if toolkit_name else {}
|
|
68
70
|
))
|
|
69
71
|
return cls(tools=tools)
|
|
70
72
|
|
|
@@ -2,37 +2,33 @@ from typing import List, Literal, Optional
|
|
|
2
2
|
|
|
3
3
|
from langchain_core.tools import BaseToolkit, BaseTool
|
|
4
4
|
|
|
5
|
-
from pydantic import create_model, BaseModel, ConfigDict, Field
|
|
5
|
+
from pydantic import create_model, BaseModel, ConfigDict, Field
|
|
6
6
|
|
|
7
7
|
from .api_wrapper import ReportPortalApiWrapper
|
|
8
8
|
from ..base.tool import BaseAction
|
|
9
|
-
from ..
|
|
9
|
+
from ..elitea_base import filter_missconfigured_index_tools
|
|
10
|
+
from ..utils import clean_string, get_max_toolkit_length
|
|
11
|
+
from ...configurations.report_portal import ReportPortalConfiguration
|
|
10
12
|
|
|
11
13
|
name = "report_portal"
|
|
12
14
|
|
|
13
15
|
def get_tools(tool):
|
|
14
16
|
return ReportPortalToolkit().get_toolkit(
|
|
15
17
|
selected_tools=tool['settings'].get('selected_tools', []),
|
|
16
|
-
|
|
17
|
-
api_key=tool['settings']['api_key'],
|
|
18
|
-
project=tool['settings']['project'],
|
|
18
|
+
report_portal_configuration=tool['settings']['report_portal_configuration'],
|
|
19
19
|
toolkit_name=tool.get('toolkit_name')
|
|
20
20
|
).get_tools()
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class ReportPortalToolkit(BaseToolkit):
|
|
24
|
-
tools:
|
|
25
|
-
toolkit_max_length: int = 0
|
|
24
|
+
tools: List[BaseTool] = []
|
|
26
25
|
|
|
27
26
|
@staticmethod
|
|
28
27
|
def toolkit_config_schema() -> BaseModel:
|
|
29
28
|
selected_tools = {x['name']: x['args_schema'].schema() for x in ReportPortalApiWrapper.model_construct().get_available_tools()}
|
|
30
|
-
ReportPortalToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
|
|
31
29
|
return create_model(
|
|
32
30
|
name,
|
|
33
|
-
|
|
34
|
-
project=(str, Field(description="Report Portal project")),
|
|
35
|
-
api_key=(SecretStr, Field(description="User API key", json_schema_extra={'secret': True})),
|
|
31
|
+
report_portal_configuration=(ReportPortalConfiguration, Field(description="Report Portal Configuration", json_schema_extra={'configuration_types': ['report_portal']})),
|
|
36
32
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
|
37
33
|
__config__=ConfigDict(json_schema_extra={'metadata': {"label": "Report Portal", "icon_url": "reportportal-icon.svg",
|
|
38
34
|
"categories": ["testing"],
|
|
@@ -40,21 +36,31 @@ class ReportPortalToolkit(BaseToolkit):
|
|
|
40
36
|
)
|
|
41
37
|
|
|
42
38
|
@classmethod
|
|
39
|
+
@filter_missconfigured_index_tools
|
|
43
40
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
|
44
41
|
if selected_tools is None:
|
|
45
42
|
selected_tools = []
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
wrapper_payload = {
|
|
44
|
+
**kwargs,
|
|
45
|
+
**kwargs.get('report_portal_configuration', {}),
|
|
46
|
+
}
|
|
47
|
+
report_portal_api_wrapper = ReportPortalApiWrapper(**wrapper_payload)
|
|
48
48
|
available_tools = report_portal_api_wrapper.get_available_tools()
|
|
49
49
|
tools = []
|
|
50
50
|
for tool in available_tools:
|
|
51
51
|
if selected_tools and tool["name"] not in selected_tools:
|
|
52
52
|
continue
|
|
53
|
+
description = tool['description']
|
|
54
|
+
if toolkit_name:
|
|
55
|
+
description = f"Toolkit: {toolkit_name}\n{description}"
|
|
56
|
+
description = f"{description}\nReport portal configuration: 'url - {report_portal_api_wrapper.endpoint}, project - {report_portal_api_wrapper.project}'"
|
|
57
|
+
description = description[:1000]
|
|
53
58
|
tools.append(BaseAction(
|
|
54
59
|
api_wrapper=report_portal_api_wrapper,
|
|
55
|
-
name=
|
|
56
|
-
description=
|
|
57
|
-
args_schema=tool["args_schema"]
|
|
60
|
+
name=tool["name"],
|
|
61
|
+
description=description,
|
|
62
|
+
args_schema=tool["args_schema"],
|
|
63
|
+
metadata={"toolkit_name": toolkit_name} if toolkit_name else {}
|
|
58
64
|
))
|
|
59
65
|
return cls(tools=tools)
|
|
60
66
|
|
|
@@ -2,33 +2,30 @@ from typing import List, Optional, Literal
|
|
|
2
2
|
from .api_wrapper import SalesforceApiWrapper
|
|
3
3
|
from langchain_core.tools import BaseTool, BaseToolkit
|
|
4
4
|
from ..base.tool import BaseAction
|
|
5
|
-
from pydantic import create_model, BaseModel, ConfigDict, Field
|
|
6
|
-
|
|
5
|
+
from pydantic import create_model, BaseModel, ConfigDict, Field
|
|
6
|
+
|
|
7
|
+
from ..elitea_base import filter_missconfigured_index_tools
|
|
8
|
+
from ..utils import clean_string, get_max_toolkit_length
|
|
9
|
+
from ...configurations.salesforce import SalesforceConfiguration
|
|
7
10
|
|
|
8
11
|
name = "salesforce"
|
|
9
12
|
|
|
10
13
|
def get_tools(tool):
|
|
11
14
|
return SalesforceToolkit().get_toolkit(
|
|
12
15
|
selected_tools=tool['settings'].get('selected_tools', []),
|
|
13
|
-
|
|
14
|
-
client_id=tool['settings'].get('client_id'),
|
|
15
|
-
client_secret=tool['settings'].get('client_secret'),
|
|
16
|
+
salesforce_configuration=tool['settings']['salesforce_configuration'],
|
|
16
17
|
api_version=tool['settings'].get('api_version', 'v59.0')
|
|
17
18
|
).get_tools()
|
|
18
19
|
|
|
19
20
|
class SalesforceToolkit(BaseToolkit):
|
|
20
21
|
tools: List[BaseTool] = []
|
|
21
|
-
toolkit_max_length: int = 0
|
|
22
22
|
@staticmethod
|
|
23
23
|
def toolkit_config_schema() -> BaseModel:
|
|
24
24
|
available_tools = {x['name']: x['args_schema'].schema() for x in SalesforceApiWrapper.model_construct().get_available_tools()}
|
|
25
|
-
SalesforceToolkit.toolkit_max_length = get_max_toolkit_length(available_tools)
|
|
26
25
|
return create_model(
|
|
27
26
|
name,
|
|
28
|
-
base_url=(str, Field(description="Salesforce instance URL", json_schema_extra={'toolkit_name': True})),
|
|
29
|
-
client_id=(str, Field(description="Salesforce Connected App Client ID")),
|
|
30
|
-
client_secret=(SecretStr, Field(description="Salesforce Connected App Client Secret", json_schema_extra={'secret': True})),
|
|
31
27
|
api_version=(str, Field(description="Salesforce API Version", default='v59.0')),
|
|
28
|
+
salesforce_configuration=(SalesforceConfiguration, Field(description="Salesforce Configuration", json_schema_extra={'configuration_types': ['salesforce']})),
|
|
32
29
|
selected_tools=(List[Literal[tuple(available_tools)]], Field(default=[], json_schema_extra={'args_schemas': available_tools})),
|
|
33
30
|
__config__=ConfigDict(json_schema_extra={'metadata': {
|
|
34
31
|
"label": "Salesforce", "icon_url": "salesforce-icon.svg",
|
|
@@ -38,23 +35,31 @@ class SalesforceToolkit(BaseToolkit):
|
|
|
38
35
|
)
|
|
39
36
|
|
|
40
37
|
@classmethod
|
|
38
|
+
@filter_missconfigured_index_tools
|
|
41
39
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
|
42
40
|
if selected_tools is None:
|
|
43
41
|
selected_tools = []
|
|
44
42
|
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
wrapper_payload = {
|
|
44
|
+
**kwargs,
|
|
45
|
+
**kwargs.get('salesforce_configuration', {}),
|
|
46
|
+
}
|
|
47
|
+
api_wrapper = SalesforceApiWrapper(**wrapper_payload)
|
|
47
48
|
tools = []
|
|
48
49
|
|
|
49
50
|
for tool in api_wrapper.get_available_tools():
|
|
50
51
|
if selected_tools and tool["name"] not in selected_tools:
|
|
51
52
|
continue
|
|
52
|
-
|
|
53
|
+
description = f"Salesforce Tool: {tool['description']}"
|
|
54
|
+
if toolkit_name:
|
|
55
|
+
description = f"{description}\nToolkit: {toolkit_name}"
|
|
56
|
+
description = description[:1000]
|
|
53
57
|
tools.append(BaseAction(
|
|
54
58
|
api_wrapper=api_wrapper,
|
|
55
|
-
name=
|
|
56
|
-
description=
|
|
57
|
-
args_schema=tool["args_schema"]
|
|
59
|
+
name=tool["name"],
|
|
60
|
+
description=description,
|
|
61
|
+
args_schema=tool["args_schema"],
|
|
62
|
+
metadata={"toolkit_name": toolkit_name} if toolkit_name else {}
|
|
58
63
|
))
|
|
59
64
|
|
|
60
65
|
return cls(tools=tools)
|
|
@@ -5,39 +5,36 @@ from .api_wrapper import ServiceNowAPIWrapper
|
|
|
5
5
|
from langchain_core.tools import BaseTool
|
|
6
6
|
from ..base.tool import BaseAction
|
|
7
7
|
from pydantic import create_model, BaseModel, ConfigDict, Field
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
from ..elitea_base import filter_missconfigured_index_tools
|
|
9
10
|
from ...configurations.service_now import ServiceNowConfiguration
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
name = "service_now"
|
|
13
14
|
|
|
14
15
|
def get_tools(tool):
|
|
16
|
+
settings = tool.get('settings') or {}
|
|
17
|
+
|
|
15
18
|
return ServiceNowToolkit().get_toolkit(
|
|
16
|
-
selected_tools=
|
|
17
|
-
instance_alias=
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
response_fields=tool['settings'].get('response_fields', None),
|
|
19
|
+
selected_tools=settings.get('selected_tools', []),
|
|
20
|
+
instance_alias=settings.get('instance_alias', None),
|
|
21
|
+
servicenow_configuration=settings.get('servicenow_configuration', None),
|
|
22
|
+
response_fields=settings.get('response_fields', None),
|
|
21
23
|
toolkit_name=tool.get('toolkit_name')
|
|
22
24
|
).get_tools()
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
class ServiceNowToolkit(BaseToolkit):
|
|
26
28
|
tools: List[BaseTool] = []
|
|
27
|
-
toolkit_max_length: int = 0
|
|
28
29
|
|
|
29
30
|
@staticmethod
|
|
30
31
|
def toolkit_config_schema() -> BaseModel:
|
|
31
32
|
selected_tools = {x['name']: x['args_schema'].schema() for x in
|
|
32
33
|
ServiceNowAPIWrapper.model_construct().get_available_tools()}
|
|
33
|
-
ServiceNowToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
|
|
34
34
|
return create_model(
|
|
35
35
|
name,
|
|
36
|
-
name=(str, Field(description="Toolkit name",
|
|
37
|
-
json_schema_extra={
|
|
38
|
-
'toolkit_name': True, 'max_toolkit_length': ServiceNowToolkit.toolkit_max_length})),
|
|
39
36
|
response_fields=(Optional[str], Field(description="Response fields", default=None)),
|
|
40
|
-
servicenow_configuration=(
|
|
37
|
+
servicenow_configuration=(ServiceNowConfiguration, Field(description="ServiceNow Configuration",
|
|
41
38
|
json_schema_extra={
|
|
42
39
|
'configuration_types': [
|
|
43
40
|
'service_now']})),
|
|
@@ -66,6 +63,7 @@ class ServiceNowToolkit(BaseToolkit):
|
|
|
66
63
|
)
|
|
67
64
|
|
|
68
65
|
@classmethod
|
|
66
|
+
@filter_missconfigured_index_tools
|
|
69
67
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
|
70
68
|
if selected_tools is None:
|
|
71
69
|
selected_tools = []
|
|
@@ -77,18 +75,24 @@ class ServiceNowToolkit(BaseToolkit):
|
|
|
77
75
|
**kwargs['servicenow_configuration'],
|
|
78
76
|
}
|
|
79
77
|
servicenow_api_wrapper = ServiceNowAPIWrapper(**wrapper_payload)
|
|
80
|
-
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
|
81
78
|
available_tools = servicenow_api_wrapper.get_available_tools()
|
|
82
79
|
tools = []
|
|
83
80
|
for tool in available_tools:
|
|
84
81
|
if selected_tools:
|
|
85
82
|
if tool["name"] not in selected_tools:
|
|
86
83
|
continue
|
|
84
|
+
base_url = getattr(servicenow_api_wrapper, "base_url", "") or ""
|
|
85
|
+
description = tool.get("description", "") if isinstance(tool, dict) else ""
|
|
86
|
+
if toolkit_name:
|
|
87
|
+
description = f"Toolkit: {toolkit_name}\n{description}"
|
|
88
|
+
description = f"ServiceNow: {base_url}\n{description}".strip()
|
|
89
|
+
description = description[:1000]
|
|
87
90
|
tools.append(BaseAction(
|
|
88
91
|
api_wrapper=servicenow_api_wrapper,
|
|
89
|
-
name=
|
|
90
|
-
description=
|
|
91
|
-
args_schema=tool["args_schema"]
|
|
92
|
+
name=tool["name"],
|
|
93
|
+
description=description,
|
|
94
|
+
args_schema=tool["args_schema"],
|
|
95
|
+
metadata={"toolkit_name": toolkit_name} if toolkit_name else {}
|
|
92
96
|
))
|
|
93
97
|
return cls(tools=tools)
|
|
94
98
|
|
|
@@ -58,7 +58,7 @@ class ServiceNowAPIWrapper(BaseToolApiWrapper):
|
|
|
58
58
|
password = SecretStr(values['password'])
|
|
59
59
|
username = values['username']
|
|
60
60
|
cls.fields = values.get('fields', ['sys_id', 'number', 'state', 'short_description', 'description', 'priority', 'category', 'urgency', 'impact', 'creation_date'])
|
|
61
|
-
cls.client = ServiceNowClient(base_url, (username, password.get_secret_value()))
|
|
61
|
+
cls.client = ServiceNowClient(instance=base_url, auth=(username, password.get_secret_value()))
|
|
62
62
|
return values
|
|
63
63
|
|
|
64
64
|
def get_incidents(self, data: Optional[Dict[str, Any]] = None) -> ToolException | str:
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
from typing import List, Literal, Optional
|
|
2
2
|
|
|
3
3
|
from langchain_core.tools import BaseToolkit, BaseTool
|
|
4
|
-
from pydantic import create_model, BaseModel, ConfigDict, Field
|
|
4
|
+
from pydantic import create_model, BaseModel, ConfigDict, Field
|
|
5
5
|
from .api_wrapper import SharepointApiWrapper
|
|
6
6
|
from ..base.tool import BaseAction
|
|
7
|
-
from ..
|
|
7
|
+
from ..elitea_base import filter_missconfigured_index_tools
|
|
8
|
+
from ..utils import clean_string, get_max_toolkit_length
|
|
8
9
|
from ...configurations.pgvector import PgVectorConfiguration
|
|
10
|
+
from ...configurations.sharepoint import SharepointConfiguration
|
|
9
11
|
|
|
10
12
|
name = "sharepoint"
|
|
11
13
|
|
|
@@ -13,9 +15,7 @@ def get_tools(tool):
|
|
|
13
15
|
return (SharepointToolkit()
|
|
14
16
|
.get_toolkit(
|
|
15
17
|
selected_tools=tool['settings'].get('selected_tools', []),
|
|
16
|
-
|
|
17
|
-
client_id=tool['settings'].get('client_id', None),
|
|
18
|
-
client_secret=tool['settings'].get('client_secret', None),
|
|
18
|
+
sharepoint_configuration=tool['settings']['sharepoint_configuration'],
|
|
19
19
|
toolkit_name=tool.get('toolkit_name'),
|
|
20
20
|
llm=tool['settings'].get('llm'),
|
|
21
21
|
alita=tool['settings'].get('alita', None),
|
|
@@ -29,17 +29,13 @@ def get_tools(tool):
|
|
|
29
29
|
|
|
30
30
|
class SharepointToolkit(BaseToolkit):
|
|
31
31
|
tools: List[BaseTool] = []
|
|
32
|
-
toolkit_max_length: int = 0
|
|
33
32
|
|
|
34
33
|
@staticmethod
|
|
35
34
|
def toolkit_config_schema() -> BaseModel:
|
|
36
35
|
selected_tools = {x['name']: x['args_schema'].schema() for x in SharepointApiWrapper.model_construct().get_available_tools()}
|
|
37
|
-
SharepointToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
|
|
38
36
|
return create_model(
|
|
39
37
|
name,
|
|
40
|
-
|
|
41
|
-
client_id=(str, Field(description="Client ID")),
|
|
42
|
-
client_secret=(SecretStr, Field(description="Client Secret", json_schema_extra={'secret': True})),
|
|
38
|
+
sharepoint_configuration=(SharepointConfiguration, Field(description="SharePoint Configuration", json_schema_extra={'configuration_types': ['sharepoint']})),
|
|
43
39
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
|
44
40
|
# indexer settings
|
|
45
41
|
pgvector_configuration=(Optional[PgVectorConfiguration], Field(default=None,
|
|
@@ -56,26 +52,32 @@ class SharepointToolkit(BaseToolkit):
|
|
|
56
52
|
)
|
|
57
53
|
|
|
58
54
|
@classmethod
|
|
55
|
+
@filter_missconfigured_index_tools
|
|
59
56
|
def get_toolkit(cls, selected_tools: list[str] | None = None, toolkit_name: Optional[str] = None, **kwargs):
|
|
60
57
|
if selected_tools is None:
|
|
61
58
|
selected_tools = []
|
|
62
59
|
wrapper_payload = {
|
|
63
60
|
**kwargs,
|
|
61
|
+
**kwargs.get('sharepoint_configuration', {}),
|
|
64
62
|
**(kwargs.get('pgvector_configuration') or {}),
|
|
65
63
|
}
|
|
66
64
|
sharepoint_api_wrapper = SharepointApiWrapper(**wrapper_payload)
|
|
67
|
-
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
|
68
65
|
available_tools = sharepoint_api_wrapper.get_available_tools()
|
|
69
66
|
tools = []
|
|
70
67
|
for tool in available_tools:
|
|
71
68
|
if selected_tools:
|
|
72
69
|
if tool["name"] not in selected_tools:
|
|
73
70
|
continue
|
|
71
|
+
description = f"Sharepoint {sharepoint_api_wrapper.site_url}\n{tool['description']}"
|
|
72
|
+
if toolkit_name:
|
|
73
|
+
description = f"{description}\nToolkit: {toolkit_name}"
|
|
74
|
+
description = description[:1000]
|
|
74
75
|
tools.append(BaseAction(
|
|
75
76
|
api_wrapper=sharepoint_api_wrapper,
|
|
76
|
-
name=
|
|
77
|
-
description=
|
|
78
|
-
args_schema=tool["args_schema"]
|
|
77
|
+
name=tool["name"],
|
|
78
|
+
description=description,
|
|
79
|
+
args_schema=tool["args_schema"],
|
|
80
|
+
metadata={"toolkit_name": toolkit_name} if toolkit_name else {}
|
|
79
81
|
))
|
|
80
82
|
return cls(tools=tools)
|
|
81
83
|
|