uipath 2.1.90__py3-none-any.whl → 2.1.91__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 uipath might be problematic. Click here for more details.
- uipath/_cli/_evals/_runtime.py +4 -4
- uipath/_cli/_evals/mocks/llm_mocker.py +8 -3
- uipath/_cli/_evals/mocks/mocks.py +8 -1
- uipath/_cli/_push/sw_file_handler.py +3 -3
- uipath/_cli/_utils/_parse_ast.py +58 -32
- uipath/_cli/_utils/_project_files.py +8 -10
- uipath/_cli/cli_init.py +32 -28
- uipath/_cli/cli_pack.py +13 -11
- uipath/_cli/cli_push.py +4 -4
- uipath/_cli/models/__init__.py +0 -0
- uipath/_cli/models/runtime_schema.py +71 -0
- uipath/agent/models/agent.py +227 -55
- uipath/agent/models/evals.py +56 -0
- uipath/telemetry/_track.py +1 -0
- {uipath-2.1.90.dist-info → uipath-2.1.91.dist-info}/METADATA +1 -1
- {uipath-2.1.90.dist-info → uipath-2.1.91.dist-info}/RECORD +19 -16
- {uipath-2.1.90.dist-info → uipath-2.1.91.dist-info}/WHEEL +0 -0
- {uipath-2.1.90.dist-info → uipath-2.1.91.dist-info}/entry_points.txt +0 -0
- {uipath-2.1.90.dist-info → uipath-2.1.91.dist-info}/licenses/LICENSE +0 -0
uipath/_cli/_evals/_runtime.py
CHANGED
|
@@ -326,7 +326,8 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
326
326
|
if eval_item.input_mocking_strategy:
|
|
327
327
|
eval_item = await self._generate_input_for_eval(eval_item)
|
|
328
328
|
|
|
329
|
-
|
|
329
|
+
execution_id = str(uuid.uuid4())
|
|
330
|
+
set_execution_context(eval_item, self.span_collector, execution_id)
|
|
330
331
|
|
|
331
332
|
await event_bus.publish(
|
|
332
333
|
EvaluationEvents.CREATE_EVAL_RUN,
|
|
@@ -341,7 +342,7 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
341
342
|
)
|
|
342
343
|
|
|
343
344
|
try:
|
|
344
|
-
agent_execution_output = await self.execute_runtime(eval_item)
|
|
345
|
+
agent_execution_output = await self.execute_runtime(eval_item, execution_id)
|
|
345
346
|
evaluation_item_results: list[EvalItemResult] = []
|
|
346
347
|
|
|
347
348
|
for evaluator in evaluators:
|
|
@@ -448,9 +449,8 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
448
449
|
return spans, logs
|
|
449
450
|
|
|
450
451
|
async def execute_runtime(
|
|
451
|
-
self, eval_item: EvaluationItem
|
|
452
|
+
self, eval_item: EvaluationItem, execution_id: str
|
|
452
453
|
) -> UiPathEvalRunExecutionOutput:
|
|
453
|
-
execution_id = str(uuid.uuid4())
|
|
454
454
|
runtime_context: C = self.factory.new_context(
|
|
455
455
|
execution_id=execution_id,
|
|
456
456
|
input_json=eval_item.inputs,
|
|
@@ -96,7 +96,11 @@ class LLMMocker(Mocker):
|
|
|
96
96
|
from uipath import UiPath
|
|
97
97
|
from uipath._services.llm_gateway_service import _cleanup_schema
|
|
98
98
|
|
|
99
|
-
from .mocks import
|
|
99
|
+
from .mocks import (
|
|
100
|
+
evaluation_context,
|
|
101
|
+
execution_id_context,
|
|
102
|
+
span_collector_context,
|
|
103
|
+
)
|
|
100
104
|
|
|
101
105
|
llm = UiPath().llm
|
|
102
106
|
return_type: Any = func.__annotations__.get("return", None)
|
|
@@ -126,8 +130,9 @@ class LLMMocker(Mocker):
|
|
|
126
130
|
test_run_history = "(empty)"
|
|
127
131
|
eval_item = evaluation_context.get()
|
|
128
132
|
span_collector = span_collector_context.get()
|
|
129
|
-
|
|
130
|
-
|
|
133
|
+
execution_id = execution_id_context.get()
|
|
134
|
+
if eval_item and span_collector and execution_id:
|
|
135
|
+
spans = span_collector.get_spans(execution_id)
|
|
131
136
|
test_run_history = _SpanUtils.spans_to_llm_context(spans)
|
|
132
137
|
|
|
133
138
|
prompt_input: dict[str, Any] = {
|
|
@@ -21,11 +21,16 @@ span_collector_context: ContextVar[Optional[ExecutionSpanCollector]] = ContextVa
|
|
|
21
21
|
"span_collector", default=None
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
+
# Execution ID for the current evaluation item
|
|
25
|
+
execution_id_context: ContextVar[Optional[str]] = ContextVar(
|
|
26
|
+
"execution_id", default=None
|
|
27
|
+
)
|
|
28
|
+
|
|
24
29
|
logger = logging.getLogger(__name__)
|
|
25
30
|
|
|
26
31
|
|
|
27
32
|
def set_execution_context(
|
|
28
|
-
eval_item: EvaluationItem, span_collector: ExecutionSpanCollector
|
|
33
|
+
eval_item: EvaluationItem, span_collector: ExecutionSpanCollector, execution_id: str
|
|
29
34
|
) -> None:
|
|
30
35
|
"""Set the execution context for an evaluation run for mocking and trace access."""
|
|
31
36
|
evaluation_context.set(eval_item)
|
|
@@ -40,6 +45,7 @@ def set_execution_context(
|
|
|
40
45
|
mocker_context.set(None)
|
|
41
46
|
|
|
42
47
|
span_collector_context.set(span_collector)
|
|
48
|
+
execution_id_context.set(execution_id)
|
|
43
49
|
|
|
44
50
|
|
|
45
51
|
def clear_execution_context() -> None:
|
|
@@ -47,6 +53,7 @@ def clear_execution_context() -> None:
|
|
|
47
53
|
evaluation_context.set(None)
|
|
48
54
|
mocker_context.set(None)
|
|
49
55
|
span_collector_context.set(None)
|
|
56
|
+
execution_id_context.set(None)
|
|
50
57
|
|
|
51
58
|
|
|
52
59
|
async def get_mocked_response(
|
|
@@ -453,7 +453,7 @@ class SwFileHandler:
|
|
|
453
453
|
)
|
|
454
454
|
logger.info("Uploading 'agent.json'")
|
|
455
455
|
|
|
456
|
-
async def upload_source_files(self,
|
|
456
|
+
async def upload_source_files(self, settings: Optional[dict[str, Any]]) -> None:
|
|
457
457
|
"""Main method to upload source files to the UiPath project.
|
|
458
458
|
|
|
459
459
|
- Gets project structure
|
|
@@ -462,7 +462,7 @@ class SwFileHandler:
|
|
|
462
462
|
- Deletes removed files
|
|
463
463
|
|
|
464
464
|
Args:
|
|
465
|
-
|
|
465
|
+
settings: File handling settings
|
|
466
466
|
|
|
467
467
|
Returns:
|
|
468
468
|
Dict[str, ProjectFileExtended]: Root level files for agent.json handling
|
|
@@ -493,7 +493,7 @@ class SwFileHandler:
|
|
|
493
493
|
|
|
494
494
|
# Get files to upload and process them
|
|
495
495
|
files = files_to_include(
|
|
496
|
-
|
|
496
|
+
settings,
|
|
497
497
|
self.directory,
|
|
498
498
|
self.include_uv_lock,
|
|
499
499
|
directories_to_ignore=["evals"],
|
uipath/_cli/_utils/_parse_ast.py
CHANGED
|
@@ -13,6 +13,7 @@ from ..._services import (
|
|
|
13
13
|
ProcessesService,
|
|
14
14
|
)
|
|
15
15
|
from ..._utils import get_inferred_bindings_names
|
|
16
|
+
from ..models.runtime_schema import BindingResource, BindingResourceValue, Bindings
|
|
16
17
|
from ._constants import BINDINGS_VERSION
|
|
17
18
|
|
|
18
19
|
|
|
@@ -428,7 +429,7 @@ def parse_sdk_usage(
|
|
|
428
429
|
return results
|
|
429
430
|
|
|
430
431
|
|
|
431
|
-
def convert_to_bindings_format(sdk_usage_data):
|
|
432
|
+
def convert_to_bindings_format(sdk_usage_data) -> Bindings:
|
|
432
433
|
"""Convert the output of parse_sdk_usage to a structure similar to bindings_v2.json.
|
|
433
434
|
|
|
434
435
|
Args:
|
|
@@ -437,7 +438,7 @@ def convert_to_bindings_format(sdk_usage_data):
|
|
|
437
438
|
Returns:
|
|
438
439
|
Dictionary in bindings_v2.json format
|
|
439
440
|
"""
|
|
440
|
-
bindings =
|
|
441
|
+
bindings = Bindings(version="2.0", resources=[])
|
|
441
442
|
|
|
442
443
|
for resource_type, components in sdk_usage_data.items():
|
|
443
444
|
for component in components:
|
|
@@ -448,24 +449,24 @@ def convert_to_bindings_format(sdk_usage_data):
|
|
|
448
449
|
)
|
|
449
450
|
is_connection_id_expression = connection_id.startswith("EXPR$")
|
|
450
451
|
connection_id = connection_id.replace("EXPR$", "")
|
|
451
|
-
resource_entry =
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
"ConnectionId":
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
"
|
|
459
|
-
|
|
452
|
+
resource_entry = BindingResource(
|
|
453
|
+
resource="connection",
|
|
454
|
+
key=connection_id,
|
|
455
|
+
value={
|
|
456
|
+
"ConnectionId": BindingResourceValue(
|
|
457
|
+
default_value=connection_id,
|
|
458
|
+
is_expression=is_connection_id_expression,
|
|
459
|
+
display_name="Connection",
|
|
460
|
+
),
|
|
460
461
|
},
|
|
461
|
-
|
|
462
|
+
metadata={
|
|
462
463
|
"BindingsVersion": BINDINGS_VERSION,
|
|
463
464
|
"Connector": connector_name,
|
|
464
465
|
"UseConnectionService": "True",
|
|
465
466
|
},
|
|
466
|
-
|
|
467
|
+
)
|
|
467
468
|
|
|
468
|
-
bindings
|
|
469
|
+
bindings.resources.append(resource_entry)
|
|
469
470
|
continue
|
|
470
471
|
|
|
471
472
|
resource_name = component.get("name", "")
|
|
@@ -481,36 +482,61 @@ def convert_to_bindings_format(sdk_usage_data):
|
|
|
481
482
|
key = name
|
|
482
483
|
if folder_path:
|
|
483
484
|
key = f"{folder_path}.{name}"
|
|
484
|
-
resource_entry =
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
"name":
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
"
|
|
492
|
-
|
|
485
|
+
resource_entry = BindingResource(
|
|
486
|
+
resource=service_name_resource_mapping[resource_type],
|
|
487
|
+
key=key,
|
|
488
|
+
value={
|
|
489
|
+
"name": BindingResourceValue(
|
|
490
|
+
default_value=name,
|
|
491
|
+
is_expression=is_expression,
|
|
492
|
+
display_name="Name",
|
|
493
|
+
),
|
|
493
494
|
},
|
|
494
|
-
|
|
495
|
+
metadata={
|
|
495
496
|
"ActivityName": method_name,
|
|
496
497
|
"BindingsVersion": BINDINGS_VERSION,
|
|
497
498
|
"DisplayLabel": "FullName",
|
|
498
499
|
},
|
|
499
|
-
|
|
500
|
+
)
|
|
500
501
|
|
|
501
502
|
if folder_path:
|
|
502
|
-
resource_entry
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
"
|
|
506
|
-
|
|
503
|
+
resource_entry.value["folderPath"] = BindingResourceValue(
|
|
504
|
+
default_value=folder_path,
|
|
505
|
+
is_expression=is_folder_path_expression,
|
|
506
|
+
display_name="Folder Path",
|
|
507
|
+
)
|
|
507
508
|
|
|
508
|
-
bindings
|
|
509
|
+
bindings.resources.append(resource_entry)
|
|
509
510
|
|
|
510
511
|
return bindings
|
|
511
512
|
|
|
512
513
|
|
|
513
|
-
def generate_bindings_json(file_path: str) -> str:
|
|
514
|
+
def generate_bindings_json(file_path: str) -> dict[str, Any]:
|
|
515
|
+
"""Generate bindings JSON from a Python file.
|
|
516
|
+
|
|
517
|
+
Args:
|
|
518
|
+
file_path: Path to the Python file to analyze
|
|
519
|
+
|
|
520
|
+
Returns:
|
|
521
|
+
JSON string representation of the bindings
|
|
522
|
+
"""
|
|
523
|
+
try:
|
|
524
|
+
with open(file_path, "r") as f:
|
|
525
|
+
source_code = f.read()
|
|
526
|
+
|
|
527
|
+
# Get the base directory for resolving imports
|
|
528
|
+
base_dir = os.path.dirname(os.path.abspath(file_path))
|
|
529
|
+
|
|
530
|
+
sdk_usage = parse_sdk_usage(source_code, base_dir)
|
|
531
|
+
bindings = convert_to_bindings_format(sdk_usage)
|
|
532
|
+
|
|
533
|
+
return bindings.model_dump(by_alias=True)
|
|
534
|
+
|
|
535
|
+
except Exception as e:
|
|
536
|
+
raise Exception(f"Error generating bindings JSON: {e}") from e
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def generate_bindings(file_path: str) -> Bindings:
|
|
514
540
|
"""Generate bindings JSON from a Python file.
|
|
515
541
|
|
|
516
542
|
Args:
|
|
@@ -7,9 +7,10 @@ import re
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from typing import Any, Dict, Optional, Protocol, Tuple
|
|
9
9
|
|
|
10
|
-
from pydantic import BaseModel
|
|
10
|
+
from pydantic import BaseModel, TypeAdapter
|
|
11
11
|
|
|
12
12
|
from .._utils._console import ConsoleLogger
|
|
13
|
+
from ..models.runtime_schema import RuntimeSchema
|
|
13
14
|
from ._constants import is_binary_file
|
|
14
15
|
from ._studio_project import (
|
|
15
16
|
ProjectFile,
|
|
@@ -93,21 +94,19 @@ def get_project_config(directory: str) -> dict[str, str]:
|
|
|
93
94
|
console.error("pyproject.toml not found.")
|
|
94
95
|
|
|
95
96
|
with open(config_path, "r") as config_file:
|
|
96
|
-
config_data = json.load(config_file)
|
|
97
|
-
|
|
98
|
-
validate_config_structure(config_data)
|
|
97
|
+
config_data = TypeAdapter(RuntimeSchema).validate_python(json.load(config_file))
|
|
99
98
|
|
|
100
99
|
toml_data = read_toml_project(toml_path)
|
|
101
100
|
|
|
102
101
|
return {
|
|
103
102
|
"project_name": toml_data["name"],
|
|
104
103
|
"description": toml_data["description"],
|
|
105
|
-
"entryPoints": config_data
|
|
104
|
+
"entryPoints": [ep.model_dump(by_alias=True) for ep in config_data.entrypoints],
|
|
106
105
|
"version": toml_data["version"],
|
|
107
106
|
"authors": toml_data["authors"],
|
|
108
107
|
"dependencies": toml_data.get("dependencies", {}),
|
|
109
108
|
"requires-python": toml_data.get("requires-python", None),
|
|
110
|
-
"settings": config_data.
|
|
109
|
+
"settings": config_data.settings or {},
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
|
|
@@ -347,7 +346,7 @@ def read_toml_project(file_path: str) -> dict:
|
|
|
347
346
|
|
|
348
347
|
|
|
349
348
|
def files_to_include(
|
|
350
|
-
|
|
349
|
+
settings: Optional[dict[str, Any]],
|
|
351
350
|
directory: str,
|
|
352
351
|
include_uv_lock: bool = True,
|
|
353
352
|
directories_to_ignore: list[str] | None = None,
|
|
@@ -358,7 +357,7 @@ def files_to_include(
|
|
|
358
357
|
and explicit inclusion rules. Skips virtual environments and hidden directories.
|
|
359
358
|
|
|
360
359
|
Args:
|
|
361
|
-
|
|
360
|
+
settings: File handling settings
|
|
362
361
|
directory: Root directory to search for files
|
|
363
362
|
include_uv_lock: Whether to include uv.lock file
|
|
364
363
|
directories_to_ignore: List of directories to ignore
|
|
@@ -374,8 +373,7 @@ def files_to_include(
|
|
|
374
373
|
directories_to_ignore = []
|
|
375
374
|
if include_uv_lock:
|
|
376
375
|
files_included += ["uv.lock"]
|
|
377
|
-
if
|
|
378
|
-
settings = config_data["settings"]
|
|
376
|
+
if settings is not None:
|
|
379
377
|
if "fileExtensionsIncluded" in settings:
|
|
380
378
|
file_extensions_included.extend(settings["fileExtensionsIncluded"])
|
|
381
379
|
if "filesIncluded" in settings:
|
uipath/_cli/cli_init.py
CHANGED
|
@@ -15,8 +15,9 @@ from ..telemetry import track
|
|
|
15
15
|
from ..telemetry._constants import _PROJECT_KEY, _TELEMETRY_CONFIG_FILE
|
|
16
16
|
from ._utils._console import ConsoleLogger
|
|
17
17
|
from ._utils._input_args import generate_args
|
|
18
|
-
from ._utils._parse_ast import
|
|
18
|
+
from ._utils._parse_ast import generate_bindings
|
|
19
19
|
from .middlewares import Middlewares
|
|
20
|
+
from .models.runtime_schema import Bindings, Entrypoint, RuntimeSchema
|
|
20
21
|
|
|
21
22
|
console = ConsoleLogger()
|
|
22
23
|
logger = logging.getLogger(__name__)
|
|
@@ -152,13 +153,17 @@ def get_user_script(directory: str, entrypoint: Optional[str] = None) -> Optiona
|
|
|
152
153
|
return None
|
|
153
154
|
|
|
154
155
|
|
|
155
|
-
def write_config_file(config_data: Dict[str, Any]) -> None:
|
|
156
|
+
def write_config_file(config_data: Dict[str, Any] | RuntimeSchema) -> None:
|
|
156
157
|
existing_settings = get_existing_settings(CONFIG_PATH)
|
|
157
158
|
if existing_settings is not None:
|
|
158
|
-
config_data
|
|
159
|
+
config_data.settings = existing_settings
|
|
159
160
|
|
|
160
161
|
with open(CONFIG_PATH, "w") as config_file:
|
|
161
|
-
|
|
162
|
+
if isinstance(config_data, RuntimeSchema):
|
|
163
|
+
json_object = config_data.model_dump(by_alias=True, exclude_unset=True)
|
|
164
|
+
else:
|
|
165
|
+
json_object = config_data
|
|
166
|
+
json.dump(json_object, config_file, indent=4)
|
|
162
167
|
|
|
163
168
|
return CONFIG_PATH
|
|
164
169
|
|
|
@@ -208,30 +213,29 @@ def init(entrypoint: str, infer_bindings: bool) -> None:
|
|
|
208
213
|
args = generate_args(script_path)
|
|
209
214
|
|
|
210
215
|
relative_path = Path(script_path).relative_to(current_directory).as_posix()
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
console.warning(f"Warning: Could not generate bindings: {str(e)}")
|
|
216
|
+
bindings = None
|
|
217
|
+
if infer_bindings:
|
|
218
|
+
try:
|
|
219
|
+
bindings = generate_bindings(script_path)
|
|
220
|
+
except Exception as e:
|
|
221
|
+
console.warning(f"Warning: Could not generate bindings: {str(e)}")
|
|
222
|
+
if bindings is None:
|
|
223
|
+
bindings = Bindings(
|
|
224
|
+
version="2.0",
|
|
225
|
+
resources=[],
|
|
226
|
+
)
|
|
227
|
+
config_data = RuntimeSchema(
|
|
228
|
+
entrypoints=[
|
|
229
|
+
Entrypoint(
|
|
230
|
+
file_path=relative_path,
|
|
231
|
+
unique_id=str(uuid.uuid4()),
|
|
232
|
+
type="agent",
|
|
233
|
+
input=args["input"],
|
|
234
|
+
output=args["output"],
|
|
235
|
+
)
|
|
236
|
+
],
|
|
237
|
+
bindings=bindings,
|
|
238
|
+
)
|
|
235
239
|
|
|
236
240
|
config_path = write_config_file(config_data)
|
|
237
241
|
console.success(f"Created '{config_path}' file.")
|
uipath/_cli/cli_pack.py
CHANGED
|
@@ -6,8 +6,10 @@ import zipfile
|
|
|
6
6
|
from string import Template
|
|
7
7
|
|
|
8
8
|
import click
|
|
9
|
+
from pydantic import TypeAdapter
|
|
9
10
|
|
|
10
11
|
from uipath._cli._utils._constants import UIPATH_PROJECT_ID
|
|
12
|
+
from uipath._cli.models.runtime_schema import Bindings, RuntimeSchema
|
|
11
13
|
|
|
12
14
|
from ..telemetry import track
|
|
13
15
|
from ..telemetry._constants import _PROJECT_KEY, _TELEMETRY_CONFIG_FILE
|
|
@@ -101,10 +103,11 @@ def generate_entrypoints_file(entryPoints):
|
|
|
101
103
|
return entrypoint_json_data
|
|
102
104
|
|
|
103
105
|
|
|
104
|
-
def generate_bindings_content():
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
def generate_bindings_content() -> Bindings:
|
|
107
|
+
return Bindings(
|
|
108
|
+
version="2.0",
|
|
109
|
+
resources=[],
|
|
110
|
+
)
|
|
108
111
|
|
|
109
112
|
|
|
110
113
|
def generate_content_types_content():
|
|
@@ -214,11 +217,7 @@ def pack_fn(
|
|
|
214
217
|
console.error("uipath.json not found, please run `uipath init`.")
|
|
215
218
|
|
|
216
219
|
with open(config_path, "r") as f:
|
|
217
|
-
config_data = json.load(f)
|
|
218
|
-
if "bindings" in config_data:
|
|
219
|
-
bindings_content = config_data["bindings"]
|
|
220
|
-
else:
|
|
221
|
-
bindings_content = generate_bindings_content()
|
|
220
|
+
config_data = TypeAdapter(RuntimeSchema).validate_python(json.load(f))
|
|
222
221
|
|
|
223
222
|
content_types_content = generate_content_types_content()
|
|
224
223
|
[psmdcp_file_name, psmdcp_content] = generate_psmdcp_content(
|
|
@@ -249,11 +248,14 @@ def pack_fn(
|
|
|
249
248
|
)
|
|
250
249
|
z.writestr("content/operate.json", json.dumps(operate_file, indent=4))
|
|
251
250
|
z.writestr("content/entry-points.json", json.dumps(entrypoints_file, indent=4))
|
|
252
|
-
z.writestr(
|
|
251
|
+
z.writestr(
|
|
252
|
+
"content/bindings_v2.json",
|
|
253
|
+
json.dumps(config_data.bindings.model_dump(by_alias=True), indent=4),
|
|
254
|
+
)
|
|
253
255
|
z.writestr(f"{projectName}.nuspec", nuspec_content)
|
|
254
256
|
z.writestr("_rels/.rels", rels_content)
|
|
255
257
|
|
|
256
|
-
files = files_to_include(config_data, directory, include_uv_lock)
|
|
258
|
+
files = files_to_include(config_data.settings, directory, include_uv_lock)
|
|
257
259
|
|
|
258
260
|
for file in files:
|
|
259
261
|
if file.is_binary:
|
uipath/_cli/cli_push.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# type: ignore
|
|
2
2
|
import asyncio
|
|
3
3
|
import os
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any, Optional
|
|
5
5
|
from urllib.parse import urlparse
|
|
6
6
|
|
|
7
7
|
import click
|
|
@@ -32,7 +32,7 @@ def get_org_scoped_url(base_url: str) -> str:
|
|
|
32
32
|
|
|
33
33
|
async def upload_source_files_to_project(
|
|
34
34
|
project_id: str,
|
|
35
|
-
|
|
35
|
+
settings: Optional[dict[str, Any]],
|
|
36
36
|
directory: str,
|
|
37
37
|
include_uv_lock: bool = True,
|
|
38
38
|
) -> None:
|
|
@@ -50,7 +50,7 @@ async def upload_source_files_to_project(
|
|
|
50
50
|
include_uv_lock=include_uv_lock,
|
|
51
51
|
)
|
|
52
52
|
|
|
53
|
-
await sw_file_handler.upload_source_files(
|
|
53
|
+
await sw_file_handler.upload_source_files(settings)
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
@click.command()
|
|
@@ -99,7 +99,7 @@ def push(root: str, nolock: bool) -> None:
|
|
|
99
99
|
asyncio.run(
|
|
100
100
|
upload_source_files_to_project(
|
|
101
101
|
os.getenv(UIPATH_PROJECT_ID),
|
|
102
|
-
config,
|
|
102
|
+
config.get("settings", {}),
|
|
103
103
|
root,
|
|
104
104
|
include_uv_lock=not nolock,
|
|
105
105
|
)
|
|
File without changes
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
4
|
+
|
|
5
|
+
COMMON_MODEL_SCHEMA = ConfigDict(
|
|
6
|
+
validate_by_name=True,
|
|
7
|
+
validate_by_alias=True,
|
|
8
|
+
use_enum_values=True,
|
|
9
|
+
arbitrary_types_allowed=True,
|
|
10
|
+
extra="allow",
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Entrypoint(BaseModel):
|
|
15
|
+
file_path: str = Field(..., alias="filePath")
|
|
16
|
+
unique_id: str = Field(..., alias="uniqueId")
|
|
17
|
+
type: str = Field(..., alias="type")
|
|
18
|
+
input: Dict[str, Any] = Field(..., alias="input")
|
|
19
|
+
output: Dict[str, Any] = Field(..., alias="output")
|
|
20
|
+
|
|
21
|
+
model_config = COMMON_MODEL_SCHEMA
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class BindingResourceValue(BaseModel):
|
|
25
|
+
default_value: str = Field(..., alias="defaultValue")
|
|
26
|
+
is_expression: bool = Field(..., alias="isExpression")
|
|
27
|
+
display_name: str = Field(..., alias="displayName")
|
|
28
|
+
|
|
29
|
+
model_config = COMMON_MODEL_SCHEMA
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# TODO: create stronger binding resource definition with discriminator based on resource enum.
|
|
33
|
+
class BindingResource(BaseModel):
|
|
34
|
+
resource: str = Field(..., alias="resource")
|
|
35
|
+
key: str = Field(..., alias="key")
|
|
36
|
+
value: dict[str, BindingResourceValue] = Field(..., alias="value")
|
|
37
|
+
metadata: Any = Field(..., alias="metadata")
|
|
38
|
+
|
|
39
|
+
model_config = COMMON_MODEL_SCHEMA
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class Bindings(BaseModel):
|
|
43
|
+
version: str = Field(..., alias="version")
|
|
44
|
+
resources: List[BindingResource] = Field(..., alias="resources")
|
|
45
|
+
|
|
46
|
+
model_config = COMMON_MODEL_SCHEMA
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class RuntimeInternalArguments(BaseModel):
|
|
50
|
+
resource_overwrites: dict[str, Any] = Field(..., alias="resourceOverwrites")
|
|
51
|
+
|
|
52
|
+
model_config = COMMON_MODEL_SCHEMA
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class RuntimeArguments(BaseModel):
|
|
56
|
+
internal_arguments: Optional[RuntimeInternalArguments] = Field(
|
|
57
|
+
default=None, alias="internalArguments"
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
model_config = COMMON_MODEL_SCHEMA
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class RuntimeSchema(BaseModel):
|
|
64
|
+
runtime: Optional[RuntimeArguments] = Field(default=None, alias="runtime")
|
|
65
|
+
entrypoints: List[Entrypoint] = Field(..., alias="entryPoints")
|
|
66
|
+
bindings: Bindings = Field(
|
|
67
|
+
default=Bindings(version="2.0", resources=[]), alias="bindings"
|
|
68
|
+
)
|
|
69
|
+
settings: Optional[Dict[str, Any]] = Field(default=None, alias="setting")
|
|
70
|
+
|
|
71
|
+
model_config = COMMON_MODEL_SCHEMA
|
uipath/agent/models/agent.py
CHANGED
|
@@ -3,11 +3,8 @@
|
|
|
3
3
|
from enum import Enum
|
|
4
4
|
from typing import Annotated, Any, Dict, List, Literal, Optional, Union
|
|
5
5
|
|
|
6
|
-
from pydantic import BaseModel, ConfigDict, Discriminator, Field, Tag
|
|
6
|
+
from pydantic import BaseModel, ConfigDict, Discriminator, Field, Tag, field_validator
|
|
7
7
|
|
|
8
|
-
from uipath._cli._evals._models._evaluation_set import EvaluationSet
|
|
9
|
-
from uipath._cli._evals._models._evaluator import Evaluator
|
|
10
|
-
from uipath._cli._evals._models._mocks import ExampleCall
|
|
11
8
|
from uipath.models import Connection
|
|
12
9
|
|
|
13
10
|
|
|
@@ -17,6 +14,7 @@ class AgentResourceType(str, Enum):
|
|
|
17
14
|
TOOL = "tool"
|
|
18
15
|
CONTEXT = "context"
|
|
19
16
|
ESCALATION = "escalation"
|
|
17
|
+
MCP = "mcp"
|
|
20
18
|
|
|
21
19
|
|
|
22
20
|
class BaseAgentResourceConfig(BaseModel):
|
|
@@ -55,12 +53,14 @@ class AgentToolType(str, Enum):
|
|
|
55
53
|
"""Agent tool type."""
|
|
56
54
|
|
|
57
55
|
AGENT = "agent"
|
|
58
|
-
INTEGRATION = "integration"
|
|
59
56
|
PROCESS = "process"
|
|
57
|
+
API = "api"
|
|
58
|
+
PROCESS_ORCHESTRATION = "processorchestration"
|
|
59
|
+
INTEGRATION = "integration"
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
class AgentToolSettings(BaseModel):
|
|
63
|
-
"""Settings for tool
|
|
63
|
+
"""Settings for tool."""
|
|
64
64
|
|
|
65
65
|
max_attempts: Optional[int] = Field(None, alias="maxAttempts")
|
|
66
66
|
retry_delay: Optional[int] = Field(None, alias="retryDelay")
|
|
@@ -74,7 +74,9 @@ class AgentToolSettings(BaseModel):
|
|
|
74
74
|
class BaseResourceProperties(BaseModel):
|
|
75
75
|
"""Base resource properties."""
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
model_config = ConfigDict(
|
|
78
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
79
|
+
)
|
|
78
80
|
|
|
79
81
|
|
|
80
82
|
class AgentProcessToolProperties(BaseResourceProperties):
|
|
@@ -91,7 +93,12 @@ class AgentProcessToolProperties(BaseResourceProperties):
|
|
|
91
93
|
class AgentProcessToolResourceConfig(BaseAgentToolResourceConfig):
|
|
92
94
|
"""Tool resource with tool-specific properties."""
|
|
93
95
|
|
|
94
|
-
type: Literal[
|
|
96
|
+
type: Literal[
|
|
97
|
+
AgentToolType.AGENT,
|
|
98
|
+
AgentToolType.PROCESS,
|
|
99
|
+
AgentToolType.API,
|
|
100
|
+
AgentToolType.PROCESS_ORCHESTRATION,
|
|
101
|
+
]
|
|
95
102
|
output_schema: Dict[str, Any] = Field(
|
|
96
103
|
..., alias="outputSchema", description="Output schema for the tool"
|
|
97
104
|
)
|
|
@@ -101,6 +108,17 @@ class AgentProcessToolResourceConfig(BaseAgentToolResourceConfig):
|
|
|
101
108
|
settings: AgentToolSettings = Field(
|
|
102
109
|
default_factory=AgentToolSettings, description="Tool settings"
|
|
103
110
|
)
|
|
111
|
+
arguments: Dict[str, Any] = Field(
|
|
112
|
+
default_factory=dict, description="Tool arguments"
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
@field_validator("type", mode="before")
|
|
116
|
+
@classmethod
|
|
117
|
+
def normalize_type(cls, v: Any) -> str:
|
|
118
|
+
"""Normalize tool type to lowercase format."""
|
|
119
|
+
if isinstance(v, str):
|
|
120
|
+
return v.lower()
|
|
121
|
+
return v
|
|
104
122
|
|
|
105
123
|
model_config = ConfigDict(
|
|
106
124
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
@@ -133,7 +151,7 @@ class AgentIntegrationToolParameter(BaseModel):
|
|
|
133
151
|
|
|
134
152
|
|
|
135
153
|
class AgentIntegrationToolProperties(BaseResourceProperties):
|
|
136
|
-
"""Properties specific to tool
|
|
154
|
+
"""Properties specific to tool."""
|
|
137
155
|
|
|
138
156
|
tool_path: str = Field(..., alias="toolPath")
|
|
139
157
|
object_name: str = Field(..., alias="objectName")
|
|
@@ -141,7 +159,7 @@ class AgentIntegrationToolProperties(BaseResourceProperties):
|
|
|
141
159
|
tool_description: str = Field(..., alias="toolDescription")
|
|
142
160
|
method: str = Field(..., alias="method")
|
|
143
161
|
connection: Connection = Field(..., alias="connection")
|
|
144
|
-
body_structure: dict[str, Any] = Field(
|
|
162
|
+
body_structure: Optional[dict[str, Any]] = Field(None, alias="bodyStructure")
|
|
145
163
|
parameters: List[AgentIntegrationToolParameter] = Field([], alias="parameters")
|
|
146
164
|
|
|
147
165
|
model_config = ConfigDict(
|
|
@@ -154,26 +172,93 @@ class AgentIntegrationToolResourceConfig(BaseAgentToolResourceConfig):
|
|
|
154
172
|
|
|
155
173
|
type: Literal[AgentToolType.INTEGRATION] = AgentToolType.INTEGRATION
|
|
156
174
|
properties: AgentIntegrationToolProperties
|
|
175
|
+
arguments: Optional[Dict[str, Any]] = Field(
|
|
176
|
+
default_factory=dict, description="Tool arguments"
|
|
177
|
+
)
|
|
178
|
+
is_enabled: Optional[bool] = Field(None, alias="isEnabled")
|
|
179
|
+
|
|
180
|
+
@field_validator("type", mode="before")
|
|
181
|
+
@classmethod
|
|
182
|
+
def normalize_type(cls, v: Any) -> str:
|
|
183
|
+
"""Normalize tool type to lowercase format."""
|
|
184
|
+
if isinstance(v, str):
|
|
185
|
+
return v.lower()
|
|
186
|
+
return v
|
|
187
|
+
|
|
157
188
|
model_config = ConfigDict(
|
|
158
189
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
159
190
|
)
|
|
160
191
|
|
|
161
192
|
|
|
162
|
-
class AgentUnknownToolResourceConfig(
|
|
193
|
+
class AgentUnknownToolResourceConfig(BaseAgentResourceConfig):
|
|
163
194
|
"""Fallback for unknown or future tool types."""
|
|
164
195
|
|
|
165
196
|
resource_type: Literal[AgentResourceType.TOOL] = AgentResourceType.TOOL
|
|
166
197
|
type: str = Field(alias="$resourceType")
|
|
198
|
+
arguments: Optional[Dict[str, Any]] = Field(
|
|
199
|
+
default_factory=dict, description="Tool arguments"
|
|
200
|
+
)
|
|
201
|
+
is_enabled: Optional[bool] = Field(None, alias="isEnabled")
|
|
167
202
|
|
|
168
203
|
model_config = ConfigDict(extra="allow")
|
|
169
204
|
|
|
170
205
|
|
|
206
|
+
class AgentContextQuerySetting(BaseModel):
|
|
207
|
+
"""Query setting for context configuration."""
|
|
208
|
+
|
|
209
|
+
description: Optional[str] = Field(None)
|
|
210
|
+
variant: Optional[str] = Field(None)
|
|
211
|
+
|
|
212
|
+
model_config = ConfigDict(
|
|
213
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
class AgentContextValueSetting(BaseModel):
|
|
218
|
+
"""Generic value setting for context configuration."""
|
|
219
|
+
|
|
220
|
+
value: Any = Field(...)
|
|
221
|
+
|
|
222
|
+
model_config = ConfigDict(
|
|
223
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
class AgentContextOutputColumn(BaseModel):
|
|
228
|
+
"""Output column configuration for Batch Transform."""
|
|
229
|
+
|
|
230
|
+
name: str = Field(...)
|
|
231
|
+
description: Optional[str] = Field(None)
|
|
232
|
+
|
|
233
|
+
model_config = ConfigDict(
|
|
234
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
|
|
171
238
|
class AgentContextSettings(BaseModel):
|
|
172
|
-
"""Settings for context
|
|
239
|
+
"""Settings for context."""
|
|
173
240
|
|
|
174
241
|
result_count: int = Field(alias="resultCount")
|
|
175
|
-
retrieval_mode: Literal["Semantic", "Structured"] =
|
|
242
|
+
retrieval_mode: Literal["Semantic", "Structured", "DeepRAG", "BatchTransform"] = (
|
|
243
|
+
Field(alias="retrievalMode")
|
|
244
|
+
)
|
|
176
245
|
threshold: float = Field(default=0)
|
|
246
|
+
query: Optional[AgentContextQuerySetting] = Field(None)
|
|
247
|
+
folder_path_prefix: Optional[Union[Dict[str, Any], AgentContextValueSetting]] = (
|
|
248
|
+
Field(None, alias="folderPathPrefix")
|
|
249
|
+
)
|
|
250
|
+
file_extension: Optional[Union[Dict[str, Any], AgentContextValueSetting]] = Field(
|
|
251
|
+
None, alias="fileExtension"
|
|
252
|
+
)
|
|
253
|
+
citation_mode: Optional[AgentContextValueSetting] = Field(
|
|
254
|
+
None, alias="citationMode"
|
|
255
|
+
)
|
|
256
|
+
web_search_grounding: Optional[AgentContextValueSetting] = Field(
|
|
257
|
+
None, alias="webSearchGrounding"
|
|
258
|
+
)
|
|
259
|
+
output_columns: Optional[List[AgentContextOutputColumn]] = Field(
|
|
260
|
+
None, alias="outputColumns"
|
|
261
|
+
)
|
|
177
262
|
|
|
178
263
|
model_config = ConfigDict(
|
|
179
264
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
@@ -187,19 +272,67 @@ class AgentContextResourceConfig(BaseAgentResourceConfig):
|
|
|
187
272
|
folder_path: str = Field(alias="folderPath")
|
|
188
273
|
index_name: str = Field(alias="indexName")
|
|
189
274
|
settings: AgentContextSettings = Field(..., description="Context settings")
|
|
275
|
+
is_enabled: Optional[bool] = Field(None, alias="isEnabled")
|
|
276
|
+
|
|
277
|
+
model_config = ConfigDict(
|
|
278
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
class AgentMcpTool(BaseModel):
|
|
283
|
+
"""MCP available tool."""
|
|
284
|
+
|
|
285
|
+
name: str = Field(..., alias="name")
|
|
286
|
+
description: str = Field(..., alias="description")
|
|
287
|
+
input_schema: Dict[str, Any] = Field(..., alias="inputSchema")
|
|
190
288
|
|
|
191
289
|
model_config = ConfigDict(
|
|
192
290
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
193
291
|
)
|
|
194
292
|
|
|
195
293
|
|
|
294
|
+
class AgentMcpResourceConfig(BaseAgentResourceConfig):
|
|
295
|
+
"""MCP resource configuration."""
|
|
296
|
+
|
|
297
|
+
resource_type: Literal[AgentResourceType.MCP] = Field(alias="$resourceType")
|
|
298
|
+
folder_path: str = Field(alias="folderPath")
|
|
299
|
+
slug: str = Field(..., alias="slug")
|
|
300
|
+
available_tools: List[AgentMcpTool] = Field(..., alias="availableTools")
|
|
301
|
+
is_enabled: Optional[bool] = Field(None, alias="isEnabled")
|
|
302
|
+
|
|
303
|
+
model_config = ConfigDict(
|
|
304
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
class AgentEscalationRecipientType(str, Enum):
|
|
309
|
+
"""Enum for escalation recipient types."""
|
|
310
|
+
|
|
311
|
+
USER_ID = "UserId"
|
|
312
|
+
GROUP_ID = "GroupId"
|
|
313
|
+
USER_EMAIL = "UserEmail"
|
|
314
|
+
|
|
315
|
+
|
|
196
316
|
class AgentEscalationRecipient(BaseModel):
|
|
197
317
|
"""Recipient for escalation."""
|
|
198
318
|
|
|
199
|
-
type:
|
|
319
|
+
type: Union[AgentEscalationRecipientType, str] = Field(..., alias="type")
|
|
200
320
|
value: str = Field(..., alias="value")
|
|
201
321
|
display_name: Optional[str] = Field(default=None, alias="displayName")
|
|
202
322
|
|
|
323
|
+
@field_validator("type", mode="before")
|
|
324
|
+
@classmethod
|
|
325
|
+
def normalize_type(cls, v: Any) -> str:
|
|
326
|
+
"""Normalize recipient type from int (1=UserId, 2=GroupId, 3=UserEmail) or string. Unknown integers are converted to string."""
|
|
327
|
+
if isinstance(v, int):
|
|
328
|
+
mapping = {
|
|
329
|
+
1: AgentEscalationRecipientType.USER_ID,
|
|
330
|
+
2: AgentEscalationRecipientType.GROUP_ID,
|
|
331
|
+
3: AgentEscalationRecipientType.USER_EMAIL,
|
|
332
|
+
}
|
|
333
|
+
return mapping.get(v, str(v))
|
|
334
|
+
return v
|
|
335
|
+
|
|
203
336
|
model_config = ConfigDict(
|
|
204
337
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
205
338
|
)
|
|
@@ -227,7 +360,7 @@ class AgentEscalationChannelProperties(BaseResourceProperties):
|
|
|
227
360
|
class AgentEscalationChannel(BaseModel):
|
|
228
361
|
"""Agent escalation channel."""
|
|
229
362
|
|
|
230
|
-
id: str = Field(
|
|
363
|
+
id: Optional[str] = Field(None, alias="id")
|
|
231
364
|
name: str = Field(..., alias="name")
|
|
232
365
|
type: str = Field(alias="type")
|
|
233
366
|
description: str = Field(..., alias="description")
|
|
@@ -239,8 +372,12 @@ class AgentEscalationChannel(BaseModel):
|
|
|
239
372
|
alias="outputSchema",
|
|
240
373
|
description="Output schema for the escalation channel",
|
|
241
374
|
)
|
|
375
|
+
outcome_mapping: Optional[Dict[str, str]] = Field(None, alias="outcomeMapping")
|
|
242
376
|
properties: AgentEscalationChannelProperties = Field(..., alias="properties")
|
|
243
377
|
recipients: List[AgentEscalationRecipient] = Field(..., alias="recipients")
|
|
378
|
+
task_title: Optional[str] = Field(default=None, alias="taskTitle")
|
|
379
|
+
priority: Optional[str] = None
|
|
380
|
+
labels: List[str] = Field(default_factory=list)
|
|
244
381
|
|
|
245
382
|
model_config = ConfigDict(
|
|
246
383
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
@@ -250,11 +387,11 @@ class AgentEscalationChannel(BaseModel):
|
|
|
250
387
|
class AgentEscalationResourceConfig(BaseAgentResourceConfig):
|
|
251
388
|
"""Escalation resource with escalation-specific properties."""
|
|
252
389
|
|
|
390
|
+
id: Optional[str] = Field(None, alias="id")
|
|
253
391
|
resource_type: Literal[AgentResourceType.ESCALATION] = Field(alias="$resourceType")
|
|
254
392
|
channels: List[AgentEscalationChannel] = Field(alias="channels")
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
is_agent_memory_enabled: bool = Field(alias="isAgentMemoryEnabled")
|
|
393
|
+
is_agent_memory_enabled: bool = Field(default=False, alias="isAgentMemoryEnabled")
|
|
394
|
+
escalation_type: int = Field(default=0, alias="escalationType")
|
|
258
395
|
|
|
259
396
|
model_config = ConfigDict(
|
|
260
397
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
@@ -269,9 +406,16 @@ def custom_discriminator(data: Any) -> str:
|
|
|
269
406
|
return "AgentContextResourceConfig"
|
|
270
407
|
elif resource_type == AgentResourceType.ESCALATION:
|
|
271
408
|
return "AgentEscalationResourceConfig"
|
|
409
|
+
elif resource_type == AgentResourceType.MCP:
|
|
410
|
+
return "AgentMcpResourceConfig"
|
|
272
411
|
elif resource_type == AgentResourceType.TOOL:
|
|
273
412
|
tool_type = data.get("type")
|
|
274
|
-
if tool_type
|
|
413
|
+
if tool_type in [
|
|
414
|
+
AgentToolType.AGENT,
|
|
415
|
+
AgentToolType.PROCESS,
|
|
416
|
+
AgentToolType.API,
|
|
417
|
+
AgentToolType.PROCESS_ORCHESTRATION,
|
|
418
|
+
]:
|
|
275
419
|
return "AgentProcessToolResourceConfig"
|
|
276
420
|
elif tool_type == AgentToolType.INTEGRATION:
|
|
277
421
|
return "AgentIntegrationToolResourceConfig"
|
|
@@ -296,47 +440,24 @@ AgentResourceConfig = Annotated[
|
|
|
296
440
|
],
|
|
297
441
|
Annotated[AgentContextResourceConfig, Tag("AgentContextResourceConfig")],
|
|
298
442
|
Annotated[AgentEscalationResourceConfig, Tag("AgentEscalationResourceConfig")],
|
|
443
|
+
Annotated[AgentMcpResourceConfig, Tag("AgentMcpResourceConfig")],
|
|
299
444
|
Annotated[AgentUnknownResourceConfig, Tag("AgentUnknownResourceConfig")],
|
|
300
445
|
],
|
|
301
446
|
Field(discriminator=Discriminator(custom_discriminator)),
|
|
302
447
|
]
|
|
303
448
|
|
|
304
449
|
|
|
305
|
-
class
|
|
306
|
-
"""
|
|
450
|
+
class AgentMetadata(BaseModel):
|
|
451
|
+
"""Metadata for agent."""
|
|
307
452
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
input_schema: Dict[str, Any] = Field(
|
|
311
|
-
..., alias="inputSchema", description="JSON schema for input arguments"
|
|
312
|
-
)
|
|
313
|
-
output_schema: Dict[str, Any] = Field(
|
|
314
|
-
..., alias="outputSchema", description="JSON schema for output arguments"
|
|
315
|
-
)
|
|
316
|
-
version: str = Field("1.0.0", description="Agent version")
|
|
317
|
-
resources: List[AgentResourceConfig] = Field(
|
|
318
|
-
..., description="List of tools, context, and escalation resources"
|
|
319
|
-
)
|
|
320
|
-
evaluation_sets: Optional[List[EvaluationSet]] = Field(
|
|
321
|
-
None,
|
|
322
|
-
alias="evaluationSets",
|
|
323
|
-
description="List of agent evaluation sets",
|
|
324
|
-
)
|
|
325
|
-
evaluators: Optional[List[Evaluator]] = Field(
|
|
326
|
-
None, description="List of agent evaluators"
|
|
327
|
-
)
|
|
453
|
+
is_conversational: bool = Field(alias="isConversational")
|
|
454
|
+
storage_version: str = Field(alias="storageVersion")
|
|
328
455
|
|
|
329
456
|
model_config = ConfigDict(
|
|
330
457
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
331
458
|
)
|
|
332
459
|
|
|
333
460
|
|
|
334
|
-
class AgentType(str, Enum):
|
|
335
|
-
"""Agent type."""
|
|
336
|
-
|
|
337
|
-
LOW_CODE = "lowCode"
|
|
338
|
-
|
|
339
|
-
|
|
340
461
|
class AgentMessageRole(str, Enum):
|
|
341
462
|
"""Enum for message roles."""
|
|
342
463
|
|
|
@@ -345,23 +466,31 @@ class AgentMessageRole(str, Enum):
|
|
|
345
466
|
|
|
346
467
|
|
|
347
468
|
class AgentMessage(BaseModel):
|
|
348
|
-
"""Message model for agent
|
|
469
|
+
"""Message model for agent definition."""
|
|
349
470
|
|
|
350
|
-
role: AgentMessageRole
|
|
471
|
+
role: Literal[AgentMessageRole.SYSTEM, AgentMessageRole.USER]
|
|
351
472
|
content: str
|
|
352
473
|
|
|
474
|
+
@field_validator("role", mode="before")
|
|
475
|
+
@classmethod
|
|
476
|
+
def normalize_role(cls, v: Any) -> str:
|
|
477
|
+
"""Normalize role to lowercase format."""
|
|
478
|
+
if isinstance(v, str):
|
|
479
|
+
return v.lower()
|
|
480
|
+
return v
|
|
481
|
+
|
|
353
482
|
model_config = ConfigDict(
|
|
354
483
|
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
355
484
|
)
|
|
356
485
|
|
|
357
486
|
|
|
358
487
|
class AgentSettings(BaseModel):
|
|
359
|
-
"""Settings for agent
|
|
488
|
+
"""Settings for agent."""
|
|
360
489
|
|
|
361
490
|
engine: str = Field(..., description="Engine type, e.g., 'basic-v1'")
|
|
362
|
-
model: str = Field(..., description="LLM model
|
|
491
|
+
model: str = Field(..., description="LLM model")
|
|
363
492
|
max_tokens: int = Field(
|
|
364
|
-
..., alias="maxTokens", description="Maximum number of tokens"
|
|
493
|
+
..., alias="maxTokens", description="Maximum number of tokens per completion"
|
|
365
494
|
)
|
|
366
495
|
temperature: float = Field(..., description="Temperature for response generation")
|
|
367
496
|
|
|
@@ -370,17 +499,60 @@ class AgentSettings(BaseModel):
|
|
|
370
499
|
)
|
|
371
500
|
|
|
372
501
|
|
|
502
|
+
class BaseAgentDefinition(BaseModel):
|
|
503
|
+
"""Agent definition model."""
|
|
504
|
+
|
|
505
|
+
input_schema: Dict[str, Any] = Field(
|
|
506
|
+
..., alias="inputSchema", description="JSON schema for input arguments"
|
|
507
|
+
)
|
|
508
|
+
output_schema: Dict[str, Any] = Field(
|
|
509
|
+
..., alias="outputSchema", description="JSON schema for output arguments"
|
|
510
|
+
)
|
|
511
|
+
|
|
512
|
+
model_config = ConfigDict(
|
|
513
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
514
|
+
)
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
class AgentType(str, Enum):
|
|
518
|
+
"""Agent type."""
|
|
519
|
+
|
|
520
|
+
LOW_CODE = "lowCode"
|
|
521
|
+
CODED = "coded"
|
|
522
|
+
|
|
523
|
+
|
|
373
524
|
class LowCodeAgentDefinition(BaseAgentDefinition):
|
|
374
525
|
"""Low code agent definition."""
|
|
375
526
|
|
|
376
527
|
type: Literal[AgentType.LOW_CODE] = AgentType.LOW_CODE
|
|
528
|
+
|
|
529
|
+
id: str = Field(..., description="Agent id or project name")
|
|
530
|
+
name: str = Field(..., description="Agent name or project name")
|
|
531
|
+
metadata: Optional[AgentMetadata] = Field(None, description="Agent metadata")
|
|
377
532
|
messages: List[AgentMessage] = Field(
|
|
378
533
|
..., description="List of system and user messages"
|
|
379
534
|
)
|
|
380
|
-
|
|
381
|
-
|
|
535
|
+
|
|
536
|
+
version: str = Field("1.0.0", description="Agent version")
|
|
537
|
+
resources: List[AgentResourceConfig] = Field(
|
|
538
|
+
..., description="List of tools, context, mcp and escalation resources"
|
|
539
|
+
)
|
|
540
|
+
features: List[Any] = Field(default_factory=list, description="Agent feature list")
|
|
541
|
+
settings: AgentSettings = Field(..., description="Agent settings")
|
|
542
|
+
|
|
543
|
+
model_config = ConfigDict(
|
|
544
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
545
|
+
)
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
class CodedAgentDefinition(BaseAgentDefinition):
|
|
549
|
+
"""Coded agent definition."""
|
|
550
|
+
|
|
551
|
+
type: Literal[AgentType.CODED] = AgentType.CODED
|
|
552
|
+
|
|
553
|
+
model_config = ConfigDict(
|
|
554
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
|
382
555
|
)
|
|
383
|
-
settings: AgentSettings = Field(..., description="Agent settings configuration")
|
|
384
556
|
|
|
385
557
|
|
|
386
558
|
KnownAgentDefinition = Annotated[
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Agent Evaluation Models.
|
|
2
|
+
|
|
3
|
+
These models extend the base agent models with evaluation and simulation-specific fields.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from typing import List, Optional
|
|
7
|
+
|
|
8
|
+
from pydantic import Field
|
|
9
|
+
|
|
10
|
+
from uipath._cli._evals._models._evaluation_set import EvaluationSet
|
|
11
|
+
from uipath._cli._evals._models._evaluator import Evaluator
|
|
12
|
+
from uipath._cli._evals._models._mocks import ExampleCall
|
|
13
|
+
from uipath.agent.models.agent import (
|
|
14
|
+
AgentEscalationChannelProperties,
|
|
15
|
+
AgentIntegrationToolProperties,
|
|
16
|
+
AgentProcessToolProperties,
|
|
17
|
+
BaseResourceProperties,
|
|
18
|
+
LowCodeAgentDefinition,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class AgentEvalResourceProperties(BaseResourceProperties):
|
|
23
|
+
"""Resource properties with simulation support."""
|
|
24
|
+
|
|
25
|
+
example_calls: Optional[List[ExampleCall]] = Field(None, alias="exampleCalls")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class AgentEvalProcessToolProperties(AgentProcessToolProperties):
|
|
29
|
+
"""Process tool properties with simulation support."""
|
|
30
|
+
|
|
31
|
+
example_calls: Optional[List[ExampleCall]] = Field(None, alias="exampleCalls")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class AgentEvalIntegrationToolProperties(AgentIntegrationToolProperties):
|
|
35
|
+
"""Integration tool properties with simulation support."""
|
|
36
|
+
|
|
37
|
+
example_calls: Optional[List[ExampleCall]] = Field(None, alias="exampleCalls")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class AgentEvalEscalationChannelProperties(AgentEscalationChannelProperties):
|
|
41
|
+
"""Escalation channel properties with simulation support."""
|
|
42
|
+
|
|
43
|
+
example_calls: Optional[List[ExampleCall]] = Field(None, alias="exampleCalls")
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class AgentEvalsDefinition(LowCodeAgentDefinition):
|
|
47
|
+
"""Agent definition with evaluation sets and evaluators support."""
|
|
48
|
+
|
|
49
|
+
evaluation_sets: Optional[List[EvaluationSet]] = Field(
|
|
50
|
+
None,
|
|
51
|
+
alias="evaluationSets",
|
|
52
|
+
description="List of agent evaluation sets",
|
|
53
|
+
)
|
|
54
|
+
evaluators: Optional[List[Evaluator]] = Field(
|
|
55
|
+
None, description="List of agent evaluators"
|
|
56
|
+
)
|
uipath/telemetry/_track.py
CHANGED
|
@@ -95,6 +95,7 @@ class _TelemetryClient:
|
|
|
95
95
|
"service.name=uipath-sdk,service.instance.id=" + version("uipath")
|
|
96
96
|
)
|
|
97
97
|
os.environ["OTEL_TRACES_EXPORTER"] = "none"
|
|
98
|
+
os.environ["APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL"] = "true"
|
|
98
99
|
|
|
99
100
|
configure_azure_monitor(
|
|
100
101
|
connection_string=_CONNECTION_STRING,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: uipath
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.91
|
|
4
4
|
Summary: Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools.
|
|
5
5
|
Project-URL: Homepage, https://uipath.com
|
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/uipath-python
|
|
@@ -10,13 +10,13 @@ uipath/_cli/cli_auth.py,sha256=CzetSRqSUvMs02PtI4w5Vi_0fv_ETA307bB2vXalWzY,2628
|
|
|
10
10
|
uipath/_cli/cli_deploy.py,sha256=KPCmQ0c_NYD5JofSDao5r6QYxHshVCRxlWDVnQvlp5w,645
|
|
11
11
|
uipath/_cli/cli_dev.py,sha256=nEfpjw1PZ72O6jmufYWVrueVwihFxDPOeJakdvNHdOA,2146
|
|
12
12
|
uipath/_cli/cli_eval.py,sha256=oOMywGSUrHDQ1W_54ccbekzCeduPf-KHRyu_r0Dezd0,5444
|
|
13
|
-
uipath/_cli/cli_init.py,sha256=
|
|
13
|
+
uipath/_cli/cli_init.py,sha256=2OE9uF4uCEwOVE_MiPJGjEK0bCnlIjsBqOBHwB98X4c,7831
|
|
14
14
|
uipath/_cli/cli_invoke.py,sha256=m-te-EjhDpk_fhFDkt-yQFzmjEHGo5lQDGEQWxSXisQ,4395
|
|
15
15
|
uipath/_cli/cli_new.py,sha256=9378NYUBc9j-qKVXV7oja-jahfJhXBg8zKVyaon7ctY,2102
|
|
16
|
-
uipath/_cli/cli_pack.py,sha256=
|
|
16
|
+
uipath/_cli/cli_pack.py,sha256=U5rXVbUnHFgdEsXyhkjmWza8dfob1wU9lyl4yrYnUss,11076
|
|
17
17
|
uipath/_cli/cli_publish.py,sha256=DgyfcZjvfV05Ldy0Pk5y_Le_nT9JduEE_x-VpIc_Kq0,6471
|
|
18
18
|
uipath/_cli/cli_pull.py,sha256=muX2gR-W-bSrNI3pIO0zbhZAP0VBOSsOY2-yrq8HgAw,2433
|
|
19
|
-
uipath/_cli/cli_push.py,sha256
|
|
19
|
+
uipath/_cli/cli_push.py,sha256=_JbjI45uJaobBDaz--NlzAXYJNwHX_XGLa8eC9wN-Cg,3166
|
|
20
20
|
uipath/_cli/cli_run.py,sha256=1FKv20EjxrrP1I5rNSnL_HzbWtOAIMjB3M--4RPA_Yo,3709
|
|
21
21
|
uipath/_cli/middlewares.py,sha256=0D9a-wphyetnH9T97F08o7-1OKWF1lMweFHHAR0xiOw,4979
|
|
22
22
|
uipath/_cli/spinner.py,sha256=bS-U_HA5yne11ejUERu7CQoXmWdabUD2bm62EfEdV8M,1107
|
|
@@ -46,7 +46,7 @@ uipath/_cli/_dev/_terminal/_utils/_logger.py,sha256=_ipTl_oAiMF9I7keGt2AAFAMz40D
|
|
|
46
46
|
uipath/_cli/_evals/_console_progress_reporter.py,sha256=HgB6pdMyoS6YVwuI3EpM2LBcH3U69nrdaTyNgPG8ssg,9304
|
|
47
47
|
uipath/_cli/_evals/_evaluator_factory.py,sha256=Gycv94VtGOpMir_Gba-UoiAyrSRfbSfe8_pTfjzcA9Q,3875
|
|
48
48
|
uipath/_cli/_evals/_progress_reporter.py,sha256=kX7rNSa-QCLXIzK-vb9Jjf-XLEtucdeiQPgPlSkpp2U,16778
|
|
49
|
-
uipath/_cli/_evals/_runtime.py,sha256=
|
|
49
|
+
uipath/_cli/_evals/_runtime.py,sha256=JABvs_EhgG6qqpAsJcC2uTDRZw9JgYOhFrpejFGy2vA,20655
|
|
50
50
|
uipath/_cli/_evals/_span_collection.py,sha256=RoKoeDFG2XODdlgI27ionCjU7LLD_C0LJJ3gu0wab10,779
|
|
51
51
|
uipath/_cli/_evals/_models/_evaluation_set.py,sha256=0I83I3HNu_BrgFz9miar2QTyXKb0dAaEpYMQrKUHP0U,4958
|
|
52
52
|
uipath/_cli/_evals/_models/_evaluator.py,sha256=fuC3UOYwPD4d_wdynHeLSCzbu82golNAnnPnxC8Y4rk,3315
|
|
@@ -57,12 +57,12 @@ uipath/_cli/_evals/_models/_output.py,sha256=4KPgXypO2qvWsDf37KbdMGmlYgaIfBSeGgK
|
|
|
57
57
|
uipath/_cli/_evals/_models/_sw_reporting.py,sha256=tSBLQFAdOIun8eP0vsqt56K6bmCZz_uMaWI3hskg_24,536
|
|
58
58
|
uipath/_cli/_evals/mocks/__init__.py,sha256=2WXwAy_oZw5bKp6L0HB13QygCJeftOB_Bget0AI6Gik,32
|
|
59
59
|
uipath/_cli/_evals/mocks/input_mocker.py,sha256=imJLriJv1rFthoA-SnJewnNbN27yen8VP11vbv1I9-0,4150
|
|
60
|
-
uipath/_cli/_evals/mocks/llm_mocker.py,sha256=
|
|
60
|
+
uipath/_cli/_evals/mocks/llm_mocker.py,sha256=36WO2lWHTtaAfunSAZ_CGgNPYZthszxDRBvqbPBzwdE,7517
|
|
61
61
|
uipath/_cli/_evals/mocks/mocker.py,sha256=VXCxuRAPqUK40kRUXpPmXZRckd7GrOY5ZzIYDe-NNfo,910
|
|
62
62
|
uipath/_cli/_evals/mocks/mocker_factory.py,sha256=V5QKSTtQxztTo4-fK1TyAaXw2Z3mHf2UC5mXqwuUGTs,811
|
|
63
63
|
uipath/_cli/_evals/mocks/mockito_mocker.py,sha256=AO2BmFwA6hz3Lte-STVr7aJDPvMCqKNKa4j2jeNZ_U4,2677
|
|
64
|
-
uipath/_cli/_evals/mocks/mocks.py,sha256=
|
|
65
|
-
uipath/_cli/_push/sw_file_handler.py,sha256=
|
|
64
|
+
uipath/_cli/_evals/mocks/mocks.py,sha256=HY0IaSqqO8hioBB3rp5XwAjSpQE4K5hoH6oJQ-sH72I,2207
|
|
65
|
+
uipath/_cli/_push/sw_file_handler.py,sha256=sPEopayYzjPNJA6fV9SZZtzE_cdHs1uSszh2IJTB35g,17874
|
|
66
66
|
uipath/_cli/_runtime/_contracts.py,sha256=E8Is7EQfAu7_hCbeZI68gmTxSxo4X7_U4vcSl7D3Syg,28988
|
|
67
67
|
uipath/_cli/_runtime/_escalation.py,sha256=x3vI98qsfRA-fL_tNkRVTFXioM5Gv2w0GFcXJJ5eQtg,7981
|
|
68
68
|
uipath/_cli/_runtime/_hitl.py,sha256=VKbM021nVg1HEDnTfucSLJ0LsDn83CKyUtVzofS2qTU,11369
|
|
@@ -81,12 +81,14 @@ uipath/_cli/_utils/_debug.py,sha256=zamzIR4VgbdKADAE4gbmjxDsbgF7wvdr7C5Dqp744Oc,
|
|
|
81
81
|
uipath/_cli/_utils/_eval_set.py,sha256=4aP8yAC-jMrNYaC62Yj8fHD2hNlotGwy63bciQrpdc4,2766
|
|
82
82
|
uipath/_cli/_utils/_folders.py,sha256=RsYrXzF0NA1sPxgBoLkLlUY3jDNLg1V-Y8j71Q8a8HY,1357
|
|
83
83
|
uipath/_cli/_utils/_input_args.py,sha256=AnbQ12D2ACIQFt0QHMaWleRn1ZgRTXuTSTN0ozJiSQg,5766
|
|
84
|
-
uipath/_cli/_utils/_parse_ast.py,sha256=
|
|
84
|
+
uipath/_cli/_utils/_parse_ast.py,sha256=24YL28qK5Ss2O26IlzZ2FgEC_ZazXld_u3vkj8zVxGA,20933
|
|
85
85
|
uipath/_cli/_utils/_processes.py,sha256=q7DfEKHISDWf3pngci5za_z0Pbnf_shWiYEcTOTCiyk,1855
|
|
86
|
-
uipath/_cli/_utils/_project_files.py,sha256=
|
|
86
|
+
uipath/_cli/_utils/_project_files.py,sha256=_P42C8wJbN66gJYwt3yAnWsOMqbqFHv80kAoT8UGYuo,20112
|
|
87
87
|
uipath/_cli/_utils/_studio_project.py,sha256=8WYwi_CiTPRqo8KV2bsvj0H_KBFxTEN0Q2cXoZb-NnM,17030
|
|
88
88
|
uipath/_cli/_utils/_tracing.py,sha256=2igb03j3EHjF_A406UhtCKkPfudVfFPjUq5tXUEG4oo,1541
|
|
89
89
|
uipath/_cli/_utils/_uv_helpers.py,sha256=6SvoLnZPoKIxW0sjMvD1-ENV_HOXDYzH34GjBqwT138,3450
|
|
90
|
+
uipath/_cli/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
|
+
uipath/_cli/models/runtime_schema.py,sha256=Po1SYFwTBlWZdmwIG2GvFy0WYbZnT5U1aGjfWcd8ZAA,2181
|
|
90
92
|
uipath/_events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
93
|
uipath/_events/_event_bus.py,sha256=4-VzstyX69cr7wT1EY7ywp-Ndyz2CyemD3Wk_-QmRpo,5496
|
|
92
94
|
uipath/_events/_events.py,sha256=EzDfzpVm-EIH27Onad5mo8Go6-WB3S6_-6zZQ7qV58w,1811
|
|
@@ -138,7 +140,8 @@ uipath/agent/conversation/tool.py,sha256=ol8XI8AVd-QNn5auXNBPcCzOkh9PPFtL7hTK3kq
|
|
|
138
140
|
uipath/agent/loop/__init__.py,sha256=EZlNqrh8xod0VtTJqc-1pyUofaeS6PKjbsDfWoveVtI,424
|
|
139
141
|
uipath/agent/loop/prompts.py,sha256=qPwyd6Ple2m-Kt0m2foa6ZEmxD3kyCXOmGfXvzHi8Rc,3372
|
|
140
142
|
uipath/agent/loop/tools.py,sha256=OsT3x431KqOEzLi2jLxy2B9xXbcFq16xMfmyAqFaqZQ,1351
|
|
141
|
-
uipath/agent/models/agent.py,sha256=
|
|
143
|
+
uipath/agent/models/agent.py,sha256=dEUWZIzvTnxhdCQlMad6Pf6EphLP_W5ukHtczbXKYL0,18712
|
|
144
|
+
uipath/agent/models/evals.py,sha256=QMIqwCuwabD_vYF0KgJpip5BV0pFLf9ZKUd9AL5eU2w,1843
|
|
142
145
|
uipath/eval/_helpers/__init__.py,sha256=GSmZMryjuO3Wo_zdxZdrHCRRsgOxsVFYkYgJ15YNC3E,86
|
|
143
146
|
uipath/eval/_helpers/helpers.py,sha256=iE2HHdMiAdAMLqxHkPKHpfecEtAuN5BTBqvKFTI8ciE,1315
|
|
144
147
|
uipath/eval/evaluators/__init__.py,sha256=DJAAhgv0I5UfBod4sGnSiKerfrz1iMmk7GNFb71V8eI,494
|
|
@@ -173,7 +176,7 @@ uipath/models/processes.py,sha256=bV31xTyF0hRWZmwy3bWj5L8dBD9wttWxfJjwzhjETmk,19
|
|
|
173
176
|
uipath/models/queues.py,sha256=gnbeEyYlHtdqdxBalio0lw8mq-78YBG9MPMSkv1BWOg,6934
|
|
174
177
|
uipath/telemetry/__init__.py,sha256=Wna32UFzZR66D-RzTKlPWlvji9i2HJb82NhHjCCXRjY,61
|
|
175
178
|
uipath/telemetry/_constants.py,sha256=uRDuEZayBYtBA0tMx-2AS_D-oiVA7oKgp9zid9jNats,763
|
|
176
|
-
uipath/telemetry/_track.py,sha256=
|
|
179
|
+
uipath/telemetry/_track.py,sha256=3RZgJtY8y28Y5rfVmC432OyRu7N3pSxPouwa82KWFso,4787
|
|
177
180
|
uipath/tracing/__init__.py,sha256=GKRINyWdHVrDsI-8mrZDLdf0oey6GHGlNZTOADK-kgc,224
|
|
178
181
|
uipath/tracing/_otel_exporters.py,sha256=c0GKU_oUrAwrOrqbyu64c55z1TR6xk01d3y5fLUN1lU,3215
|
|
179
182
|
uipath/tracing/_traced.py,sha256=yBIY05PCCrYyx50EIHZnwJaKNdHPNx-YTR1sHQl0a98,19901
|
|
@@ -181,8 +184,8 @@ uipath/tracing/_utils.py,sha256=X-LFsyIxDeNOGuHPvkb6T5o9Y8ElYhr_rP3CEBJSu4s,1383
|
|
|
181
184
|
uipath/utils/__init__.py,sha256=VD-KXFpF_oWexFg6zyiWMkxl2HM4hYJMIUDZ1UEtGx0,105
|
|
182
185
|
uipath/utils/_endpoints_manager.py,sha256=iRTl5Q0XAm_YgcnMcJOXtj-8052sr6jpWuPNz6CgT0Q,8408
|
|
183
186
|
uipath/utils/dynamic_schema.py,sha256=w0u_54MoeIAB-mf3GmwX1A_X8_HDrRy6p998PvX9evY,3839
|
|
184
|
-
uipath-2.1.
|
|
185
|
-
uipath-2.1.
|
|
186
|
-
uipath-2.1.
|
|
187
|
-
uipath-2.1.
|
|
188
|
-
uipath-2.1.
|
|
187
|
+
uipath-2.1.91.dist-info/METADATA,sha256=4qk08PijcX8XCNXQJLdjg27DadfbidSqDiY5YWUc734,6593
|
|
188
|
+
uipath-2.1.91.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
189
|
+
uipath-2.1.91.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
|
|
190
|
+
uipath-2.1.91.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
|
|
191
|
+
uipath-2.1.91.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|