alita-sdk 0.3.127__tar.gz → 0.3.128__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.
Files changed (109) hide show
  1. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/PKG-INFO +1 -1
  2. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/pyproject.toml +1 -1
  3. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/langraph_agent.py +28 -3
  4. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/tools.py +2 -2
  5. alita_sdk-0.3.128/src/alita_sdk/tools/agent.py +74 -0
  6. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk.egg-info/PKG-INFO +1 -1
  7. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk.egg-info/SOURCES.txt +1 -0
  8. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/LICENSE +0 -0
  9. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/README.md +0 -0
  10. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/requirements.txt +0 -0
  11. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/setup.cfg +0 -0
  12. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/__init__.py +0 -0
  13. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/__init__.py +0 -0
  14. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/agents/__init__.py +0 -0
  15. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/agents/llamaAgentParser.py +0 -0
  16. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/clients/__init__.py +0 -0
  17. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/clients/artifact.py +0 -0
  18. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/clients/client.py +0 -0
  19. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/clients/datasource.py +0 -0
  20. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/clients/prompt.py +0 -0
  21. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/community/__init__.py +0 -0
  22. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/community/analysis/__init__.py +0 -0
  23. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
  24. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
  25. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/community/browseruse/__init__.py +0 -0
  26. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/community/browseruse/api_wrapper.py +0 -0
  27. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/community/utils.py +0 -0
  28. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/__init__.py +0 -0
  29. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/agents/__init__.py +0 -0
  30. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/agents/xml_chat.py +0 -0
  31. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/assistant.py +0 -0
  32. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/chat_message_template.py +0 -0
  33. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/constants.py +0 -0
  34. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
  35. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaCSVLoader.py +0 -0
  36. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
  37. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
  38. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
  39. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaExcelLoader.py +0 -0
  40. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
  41. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaImageLoader.py +0 -0
  42. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaJiraLoader.py +0 -0
  43. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaQtestLoader.py +0 -0
  44. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/AlitaTableLoader.py +0 -0
  45. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/__init__.py +0 -0
  46. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/constants.py +0 -0
  47. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/document_loaders/utils.py +0 -0
  48. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/indexer.py +0 -0
  49. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/interfaces/__init__.py +0 -0
  50. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/interfaces/kwextractor.py +0 -0
  51. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/interfaces/llm_processor.py +0 -0
  52. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/interfaces/loaders.py +0 -0
  53. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/interfaces/splitters.py +0 -0
  54. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/mixedAgentParser.py +0 -0
  55. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/mixedAgentRenderes.py +0 -0
  56. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/retrievers/AlitaRetriever.py +0 -0
  57. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/retrievers/VectorstoreRetriever.py +0 -0
  58. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/retrievers/__init__.py +0 -0
  59. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/__init__.py +0 -0
  60. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/bdd_parser/__init__.py +0 -0
  61. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
  62. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/bdd_parser/bdd_parser.py +0 -0
  63. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/bdd_parser/feature_types.py +0 -0
  64. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/bdd_parser/parser.py +0 -0
  65. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/git.py +0 -0
  66. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/log.py +0 -0
  67. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/quota.py +0 -0
  68. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/state.py +0 -0
  69. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/utils.py +0 -0
  70. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/tools/vector.py +0 -0
  71. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/langchain/utils.py +0 -0
  72. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/llamaindex/assistant.py +0 -0
  73. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/llms/__init__.py +0 -0
  74. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/llms/alita.py +0 -0
  75. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/llms/preloaded.py +0 -0
  76. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/__init__.py +0 -0
  77. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/application.py +0 -0
  78. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/artifact.py +0 -0
  79. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/datasource.py +0 -0
  80. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/prompt.py +0 -0
  81. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/subgraph.py +0 -0
  82. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/toolkits/vectorstore.py +0 -0
  83. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/__init__.py +0 -0
  84. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/application.py +0 -0
  85. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/artifact.py +0 -0
  86. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/datasource.py +0 -0
  87. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/echo.py +0 -0
  88. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/function.py +0 -0
  89. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/indexer_tool.py +0 -0
  90. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/llm.py +0 -0
  91. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/loop.py +0 -0
  92. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/loop_output.py +0 -0
  93. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/mcp_server_tool.py +0 -0
  94. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/pgvector_search.py +0 -0
  95. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/prompt.py +0 -0
  96. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/router.py +0 -0
  97. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/tool.py +0 -0
  98. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/tools/vectorstore.py +0 -0
  99. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/utils/AlitaCallback.py +0 -0
  100. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/utils/__init__.py +0 -0
  101. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/utils/evaluate.py +0 -0
  102. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/utils/logging.py +0 -0
  103. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/utils/streamlit.py +0 -0
  104. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk/utils/utils.py +0 -0
  105. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk.egg-info/dependency_links.txt +0 -0
  106. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk.egg-info/requires.txt +0 -0
  107. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/alita_sdk.egg-info/top_level.txt +0 -0
  108. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/src/tests/__init__.py +0 -0
  109. {alita_sdk-0.3.127 → alita_sdk-0.3.128}/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.127
3
+ Version: 0.3.128
4
4
  Summary: SDK for building langchain agents using resouces 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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "alita_sdk"
7
- version = "0.3.127"
7
+ version = "0.3.128"
8
8
  description = "SDK for building langchain agents using resouces from Alita"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -387,7 +387,7 @@ def create_graph(
387
387
  if toolkit_name:
388
388
  tool_name = f"{clean_string(toolkit_name)}{TOOLKIT_SPLITTER}{tool_name}"
389
389
  logger.info(f"Node: {node_id} : {node_type} - {tool_name}")
390
- if node_type in ['function', 'tool', 'loop', 'loop_from_tool', 'indexer', 'subgraph']:
390
+ if node_type in ['function', 'tool', 'loop', 'loop_from_tool', 'indexer', 'subgraph', 'pipeline', 'agent']:
391
391
  for tool in tools:
392
392
  if tool.name == tool_name:
393
393
  if node_type == 'function':
@@ -397,14 +397,30 @@ def create_graph(
397
397
  input_mapping=node.get('input_mapping',
398
398
  {'messages': {'type': 'variable', 'value': 'messages'}}),
399
399
  input_variables=node.get('input', ['messages'])))
400
- elif node_type == 'subgraph':
400
+ elif node_type == 'agent':
401
+ input_params = node.get('input', ['messages'])
402
+ input_mapping = {'task': {'type': 'fstring', 'value': f"{node.get('task', '')}"}}
403
+ # Add 'chat_history' to input_mapping only if 'messages' is in input_params
404
+ if 'messages' in input_params:
405
+ input_mapping['chat_history'] = {'type': 'variable', 'value': 'messages'}
406
+ lg_builder.add_node(node_id, FunctionTool(
407
+ client=client, tool=tool,
408
+ name=node['id'], return_type='dict',
409
+ output_variables=node.get('output', []),
410
+ input_variables=input_params,
411
+ input_mapping= input_mapping
412
+ ))
413
+ elif node_type == 'subgraph' or node_type == 'pipeline':
401
414
  # assign parent memory/store
402
415
  # tool.checkpointer = memory
403
416
  # tool.store = store
404
417
  # wrap with mappings
418
+ pipeline_name = node.get('tool', None)
419
+ if not pipeline_name:
420
+ raise ValueError("Subgraph must have a 'tool' node: add required tool to the subgraph node")
405
421
  node_fn = SubgraphRunnable(
406
422
  inner=tool,
407
- name=node['id'],
423
+ name=pipeline_name,
408
424
  input_mapping=node.get('input_mapping', {}),
409
425
  output_mapping=node.get('output_mapping', {}),
410
426
  )
@@ -419,6 +435,15 @@ def create_graph(
419
435
  structured_output=node.get('structured_output', False),
420
436
  task=node.get('task')
421
437
  ))
438
+ # TODO: decide on struct output for agent nodes
439
+ # elif node_type == 'agent':
440
+ # lg_builder.add_node(node_id, AgentNode(
441
+ # client=client, tool=tool,
442
+ # name=node['id'], return_type='dict',
443
+ # output_variables=node.get('output', []),
444
+ # input_variables=node.get('input', ['messages']),
445
+ # task=node.get('task')
446
+ # ))
422
447
  elif node_type == 'loop':
423
448
  lg_builder.add_node(node_id, LoopNode(
424
449
  client=client, tool=tool,
@@ -52,7 +52,7 @@ def get_tools(tools_list: list, alita_client, llm) -> list:
52
52
  selected_tools=tool['settings']['selected_tools'],
53
53
  toolkit_name=tool.get('toolkit_name', '') or tool.get('name', '')
54
54
  ).get_tools())
55
- elif tool['type'] == 'application':
55
+ elif tool['type'] == 'application' and tool.get('agent_type', '') != 'pipeline' :
56
56
  tools.extend(ApplicationToolkit.get_toolkit(
57
57
  alita_client,
58
58
  application_id=int(tool['settings']['application_id']),
@@ -60,7 +60,7 @@ def get_tools(tools_list: list, alita_client, llm) -> list:
60
60
  app_api_key=alita_client.auth_token,
61
61
  selected_tools=[]
62
62
  ).get_tools())
63
- elif tool['type'] == 'subgraph':
63
+ elif tool['type'] == 'application' and tool.get('agent_type', '') == 'pipeline':
64
64
  # static get_toolkit returns a list of CompiledStateGraph stubs
65
65
  tools.extend(SubgraphToolkit.get_toolkit(
66
66
  alita_client,
@@ -0,0 +1,74 @@
1
+ import logging
2
+ from json import dumps
3
+ from traceback import format_exc
4
+ from typing import Any, Optional, Union
5
+
6
+ from langchain_core.callbacks import dispatch_custom_event
7
+ from langchain_core.messages import ToolCall
8
+ from langchain_core.runnables import RunnableConfig
9
+ from langchain_core.tools import BaseTool
10
+ from langchain_core.utils.function_calling import convert_to_openai_tool
11
+ from pydantic import ValidationError
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ class AgentNode(BaseTool):
17
+ name: str = 'AgentNode'
18
+ description: str = 'This is agent node for tools'
19
+ client: Any = None
20
+ tool: BaseTool = None
21
+ return_type: str = "str"
22
+ input_variables: Optional[list[str]] = None
23
+ output_variables: Optional[list[str]] = None
24
+ structured_output: Optional[bool] = False
25
+ task: Optional[str] = None
26
+
27
+ def invoke(
28
+ self,
29
+ state: Union[str, dict, ToolCall],
30
+ config: Optional[RunnableConfig] = None,
31
+ **kwargs: Any,
32
+ ) -> Any:
33
+ params = convert_to_openai_tool(self.tool).get(
34
+ 'function', {'parameters': {}}).get(
35
+ 'parameters', {'properties': {}}).get('properties', {})
36
+ input_ = []
37
+ last_message = {}
38
+ logger.debug(f"AgentNode input: {self.input_variables}")
39
+ logger.debug(f"Output variables: {self.output_variables}")
40
+ for var in self.input_variables:
41
+ if var != 'messages':
42
+ last_message[var] = state[var]
43
+ if self.task:
44
+ task = self.task.format(**last_message, last_message=dumps(last_message))
45
+ else:
46
+ task = 'Input from user: {last_message}'.format(last_message=dumps(last_message))
47
+ try:
48
+ agent_input = {'task': task, 'chat_history': state.get('messages', [])[:] if 'messages' in self.input_variables else None}
49
+ tool_result = self.tool.invoke(agent_input, config=config, kwargs=kwargs)
50
+ dispatch_custom_event(
51
+ "on_tool_node", {
52
+ "input_variables": self.input_variables,
53
+ "tool_result": tool_result,
54
+ "state": state,
55
+ }, config=config
56
+ )
57
+ message_result = tool_result
58
+ if isinstance(tool_result, dict) or isinstance(tool_result, list):
59
+ message_result = dumps(tool_result)
60
+ logger.info(f"AgentNode response: {tool_result}")
61
+ if not self.output_variables:
62
+ return {"messages": [{"role": "assistant", "content": message_result}]}
63
+ else:
64
+ return {self.output_variables[0]: tool_result,
65
+ "messages": [{"role": "assistant", "content": message_result}]}
66
+ except ValidationError:
67
+ logger.error(f"ValidationError: {format_exc()}")
68
+ return {
69
+ "messages": [{"role": "assistant", "content": f"""Tool input to the {self.tool.name} with value {agent_input} raised ValidationError.
70
+ \n\nTool schema is {dumps(params)} \n\nand the input to LLM was
71
+ {input_[-1].content}"""}]}
72
+
73
+ def _run(self, *args, **kwargs):
74
+ return self.invoke(**kwargs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.127
3
+ Version: 0.3.128
4
4
  Summary: SDK for building langchain agents using resouces 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
@@ -81,6 +81,7 @@ src/alita_sdk/toolkits/subgraph.py
81
81
  src/alita_sdk/toolkits/tools.py
82
82
  src/alita_sdk/toolkits/vectorstore.py
83
83
  src/alita_sdk/tools/__init__.py
84
+ src/alita_sdk/tools/agent.py
84
85
  src/alita_sdk/tools/application.py
85
86
  src/alita_sdk/tools/artifact.py
86
87
  src/alita_sdk/tools/datasource.py
File without changes
File without changes
File without changes
File without changes