uipath 2.1.97__py3-none-any.whl → 2.1.99__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/__init__.py CHANGED
@@ -3,6 +3,7 @@ import sys
3
3
 
4
4
  import click
5
5
 
6
+ from .._utils._logs import setup_logging
6
7
  from ._utils._common import add_cwd_to_path, load_environment_variables
7
8
  from .cli_auth import auth as auth
8
9
  from .cli_debug import debug as debug # type: ignore
@@ -47,6 +48,7 @@ def _get_safe_version() -> str:
47
48
  def cli(lv: bool, v: bool) -> None:
48
49
  load_environment_variables()
49
50
  add_cwd_to_path()
51
+ setup_logging()
50
52
  if lv:
51
53
  try:
52
54
  version = importlib.metadata.version("uipath-langchain")
@@ -5,9 +5,11 @@ import os
5
5
  from abc import ABC, abstractmethod
6
6
  from typing import Any, Dict, Optional
7
7
 
8
+ from pydantic import BaseModel
8
9
  from pysignalr.client import SignalRClient
9
10
  from rich.console import Console
10
11
  from rich.syntax import Syntax
12
+ from rich.tree import Tree
11
13
 
12
14
  from uipath._cli._runtime._contracts import (
13
15
  UiPathBreakpointResult,
@@ -115,7 +117,7 @@ class ConsoleDebugBridge(UiPathDebugBridge):
115
117
 
116
118
  self.console.print(f"[yellow]●[/yellow] [bold]{state_event.node_name}[/bold]")
117
119
  if state_event.payload:
118
- self._print_json(state_event.payload, label="State")
120
+ self._print_json(state_event.payload, label="state")
119
121
 
120
122
  async def emit_breakpoint_hit(
121
123
  self, breakpoint_result: UiPathBreakpointResult
@@ -135,7 +137,7 @@ class ConsoleDebugBridge(UiPathDebugBridge):
135
137
 
136
138
  # Display current state
137
139
  if breakpoint_result.current_state:
138
- self._print_json(breakpoint_result.current_state, label="State")
140
+ self._print_json(breakpoint_result.current_state, label="state")
139
141
 
140
142
  async def emit_execution_completed(
141
143
  self,
@@ -157,7 +159,7 @@ class ConsoleDebugBridge(UiPathDebugBridge):
157
159
 
158
160
  self.console.print(f"[{color}]{symbol} END[/{color}]")
159
161
  if runtime_result.output:
160
- self._print_json(runtime_result.output, label="Output")
162
+ self._print_json(runtime_result.output, label="output")
161
163
 
162
164
  async def emit_execution_error(
163
165
  self,
@@ -193,36 +195,83 @@ class ConsoleDebugBridge(UiPathDebugBridge):
193
195
  self.console.print()
194
196
  return user_input
195
197
 
196
- def _print_json(self, data: Dict[str, Any], label: str = "Data") -> None:
197
- """Print JSON data in a readable format."""
198
+ def _print_json(self, data: Dict[str, Any], label: str = "data") -> None:
199
+ """Print JSON data with enhanced hierarchy."""
198
200
  try:
199
- json_str = json.dumps(data, indent=2, default=str)
200
-
201
- # Limit output if too large
202
- is_truncated = False
203
- if len(json_str) > 2000:
204
- json_str = json_str[:2000] + "\n..."
205
- is_truncated = True
206
-
207
- syntax = Syntax(
208
- json_str,
209
- "json",
210
- theme="monokai",
211
- line_numbers=False,
212
- background_color="default",
213
- )
201
+ # Create a tree for nested structure
202
+ tree = Tree(f"[bold cyan]{label}[/bold cyan]")
203
+
204
+ def process_value(
205
+ node: Tree, value: Any, key_label: str, depth: int
206
+ ) -> None:
207
+ """Process a single value and add it to the tree."""
208
+ if isinstance(value, BaseModel):
209
+ branch = node.add(
210
+ f"{key_label} [dim]({type(value).__name__})[/dim]"
211
+ )
212
+ add_to_tree(branch, value, depth + 1)
213
+ elif isinstance(value, dict):
214
+ branch = node.add(f"{key_label} [dim](dict)[/dim]")
215
+ add_to_tree(branch, value, depth + 1)
216
+ elif isinstance(value, list):
217
+ branch = node.add(
218
+ f"{key_label} [dim](list, {len(value)} items)[/dim]"
219
+ )
220
+ add_to_tree(branch, value, depth + 1)
221
+ else:
222
+ val_str = str(value)
223
+ if len(val_str) > 250:
224
+ val_str = val_str[:250] + "..."
225
+ node.add(f"{key_label}: [green]{val_str}[/green]")
226
+
227
+ def add_to_tree(node: Tree, payload: Any, depth: int = 0):
228
+ if depth > 10:
229
+ node.add("[dim]...[/dim]")
230
+ return
231
+
232
+ if isinstance(payload, BaseModel):
233
+ try:
234
+ payload = payload.model_dump() # Pydantic v2
235
+ except AttributeError:
236
+ payload = payload.dict() # Pydantic v1
237
+ add_to_tree(node, payload, depth)
238
+
239
+ elif isinstance(payload, dict):
240
+ for key, value in payload.items():
241
+ process_value(node, value, f"[yellow]{key}[/yellow]", depth)
242
+
243
+ elif isinstance(payload, list):
244
+ for i, item in enumerate(payload):
245
+ process_value(node, item, f"[cyan]#{i}[/cyan]", depth)
246
+
247
+ else:
248
+ val_str = str(payload)
249
+ if len(val_str) > 250:
250
+ val_str = val_str[:250] + "..."
251
+ node.add(f"[green]{val_str}[/green]")
252
+
253
+ add_to_tree(tree, data)
214
254
 
215
255
  self.console.print()
216
- truncated_text = " (truncated)" if is_truncated else ""
217
- self.console.print(f"[dim]{label}{truncated_text}:")
218
- self.console.print(syntax)
256
+ self.console.print(tree)
219
257
  self.console.print()
258
+
220
259
  except Exception:
221
- # Fallback to simple print
222
- self.console.print()
223
- self.console.print(f"[dim]{label}:")
224
- self.console.print(str(data))
225
- self.console.print()
260
+ try:
261
+ json_str = json.dumps(data, indent=2, default=str)
262
+ if len(json_str) > 10000:
263
+ json_str = json_str[:10000] + "\n..."
264
+
265
+ syntax = Syntax(json_str, "json", theme="monokai", line_numbers=False)
266
+ self.console.print(f"\n[dim]{label}:")
267
+ self.console.print(syntax)
268
+ self.console.print()
269
+ except Exception:
270
+ # Fallback to simple print
271
+ self.console.print()
272
+ self.console.print(f"[dim]{label}:")
273
+ self.console.print(str(data))
274
+ self.console.print()
226
275
 
227
276
 
228
277
  class SignalRDebugBridge(UiPathDebugBridge):
@@ -56,7 +56,7 @@ class UiPathDebugRuntime(UiPathBaseRuntime, Generic[T, C]):
56
56
  raise RuntimeError("Failed to create inner runtime")
57
57
 
58
58
  await self.debug_bridge.emit_execution_started(
59
- execution_id=self.context.execution_id or "default"
59
+ execution_id=self.context.job_id or "default"
60
60
  )
61
61
 
62
62
  # Try to stream events from inner runtime
@@ -78,7 +78,7 @@ class UiPathDebugRuntime(UiPathBaseRuntime, Generic[T, C]):
78
78
  except Exception as e:
79
79
  # Emit execution error
80
80
  await self.debug_bridge.emit_execution_error(
81
- execution_id=self.context.execution_id or "default",
81
+ execution_id=self.context.job_id or "default",
82
82
  error=str(e),
83
83
  )
84
84
  raise
@@ -451,12 +451,12 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
451
451
  async def execute_runtime(
452
452
  self, eval_item: EvaluationItem, execution_id: str
453
453
  ) -> UiPathEvalRunExecutionOutput:
454
- runtime_context: C = self.factory.new_context(
455
- execution_id=execution_id,
456
- input_json=eval_item.inputs,
457
- is_eval_run=True,
458
- log_handler=self._setup_execution_logging(execution_id),
459
- )
454
+ context_args = self.context.model_dump()
455
+ context_args["execution_id"] = execution_id
456
+ context_args["input_json"] = eval_item.inputs
457
+ context_args["is_eval_run"] = True
458
+ context_args["log_handler"] = self._setup_execution_logging(execution_id)
459
+ runtime_context: C = self.factory.new_context(**context_args)
460
460
  if runtime_context.execution_id is None:
461
461
  raise ValueError("execution_id must be set for eval runs")
462
462
 
@@ -39,6 +39,7 @@ from uipath._events._events import UiPathRuntimeEvent
39
39
  from uipath.agent.conversation import UiPathConversationEvent, UiPathConversationMessage
40
40
  from uipath.tracing import TracingManager
41
41
 
42
+ from ..models.runtime_schema import BindingResource, Entrypoint
42
43
  from ._logging import LogsInterceptor
43
44
 
44
45
  logger = logging.getLogger(__name__)
@@ -516,6 +517,22 @@ class UiPathBaseRuntime(ABC):
516
517
  runtime = cls(context)
517
518
  return runtime
518
519
 
520
+ @property
521
+ def get_binding_resources(self) -> List[BindingResource]:
522
+ """Get binding resources for this runtime.
523
+
524
+ Returns: A list of binding resources.
525
+ """
526
+ raise NotImplementedError()
527
+
528
+ @property
529
+ def get_entrypoint(self) -> Entrypoint:
530
+ """Get entrypoint for this runtime.
531
+
532
+ Returns: A entrypoint for this runtime.
533
+ """
534
+ raise NotImplementedError()
535
+
519
536
  async def __aenter__(self):
520
537
  """Async enter method called when entering the 'async with' block.
521
538
 
@@ -806,9 +823,9 @@ class UiPathRuntimeFactory(Generic[T, C]):
806
823
  return self.context_generator(**kwargs)
807
824
  return self.context_class(**kwargs)
808
825
 
809
- def new_runtime(self) -> T:
826
+ def new_runtime(self, **kwargs) -> T:
810
827
  """Create a new runtime instance."""
811
- context = self.new_context()
828
+ context = self.new_context(**kwargs)
812
829
  if self.runtime_generator:
813
830
  return self.runtime_generator(context)
814
831
  return self.runtime_class.from_context(context)
@@ -1,8 +1,18 @@
1
1
  """Python script runtime implementation for executing and managing python scripts."""
2
2
 
3
3
  import logging
4
- from typing import Any, Awaitable, Callable, Optional, TypeVar
5
-
4
+ import os
5
+ import uuid
6
+ from functools import cached_property
7
+ from pathlib import Path
8
+ from typing import Any, Awaitable, Callable, List, Optional, TypeVar
9
+
10
+ from typing_extensions import override
11
+
12
+ from .._utils._console import ConsoleLogger
13
+ from .._utils._input_args import generate_args
14
+ from .._utils._parse_ast import generate_bindings # type: ignore[attr-defined]
15
+ from ..models.runtime_schema import BindingResource, Entrypoint
6
16
  from ._contracts import (
7
17
  UiPathBaseRuntime,
8
18
  UiPathErrorCategory,
@@ -63,6 +73,36 @@ class UiPathRuntime(UiPathBaseRuntime):
63
73
  ) from e
64
74
 
65
75
 
76
+ console = ConsoleLogger()
77
+
78
+
79
+ def get_user_script(directory: str, entrypoint: Optional[str] = None) -> Optional[str]:
80
+ """Find the Python script to process."""
81
+ if entrypoint:
82
+ script_path = os.path.join(directory, entrypoint)
83
+ if not os.path.isfile(script_path):
84
+ console.error(
85
+ f"The {entrypoint} file does not exist in the current directory."
86
+ )
87
+ return None
88
+ return script_path
89
+
90
+ python_files = [f for f in os.listdir(directory) if f.endswith(".py")]
91
+
92
+ if not python_files:
93
+ console.error(
94
+ "No python files found in the current directory.\nPlease specify the entrypoint: `uipath init <entrypoint_path>`"
95
+ )
96
+ return None
97
+ elif len(python_files) == 1:
98
+ return os.path.join(directory, python_files[0])
99
+ else:
100
+ console.error(
101
+ "Multiple python files found in the current directory.\nPlease specify the entrypoint: `uipath init <entrypoint_path>`"
102
+ )
103
+ return None
104
+
105
+
66
106
  class UiPathScriptRuntime(UiPathRuntime):
67
107
  """Runtime for executing Python scripts."""
68
108
 
@@ -74,3 +114,32 @@ class UiPathScriptRuntime(UiPathRuntime):
74
114
  def from_context(cls, context: UiPathRuntimeContext):
75
115
  """Create runtime instance from context."""
76
116
  return UiPathScriptRuntime(context, context.entrypoint or "")
117
+
118
+ @cached_property
119
+ @override
120
+ def get_binding_resources(self) -> List[BindingResource]:
121
+ """Get binding resources for script runtime.
122
+
123
+ Returns: A list of binding resources.
124
+ """
125
+ working_dir = self.context.runtime_dir or os.getcwd()
126
+ script_path = get_user_script(working_dir, entrypoint=self.context.entrypoint)
127
+ bindings = generate_bindings(script_path)
128
+ return bindings.resources
129
+
130
+ @cached_property
131
+ @override
132
+ def get_entrypoint(self) -> Entrypoint:
133
+ working_dir = self.context.runtime_dir or os.getcwd()
134
+ script_path = get_user_script(working_dir, entrypoint=self.context.entrypoint)
135
+ if not script_path:
136
+ raise ValueError("Entrypoint not found.")
137
+ relative_path = Path(script_path).relative_to(working_dir).as_posix()
138
+ args = generate_args(script_path)
139
+ return Entrypoint(
140
+ file_path=relative_path, # type: ignore[call-arg] # This exists
141
+ unique_id=str(uuid.uuid4()),
142
+ type="agent",
143
+ input=args["input"],
144
+ output=args["output"],
145
+ )
@@ -0,0 +1,21 @@
1
+ from uipath._cli._runtime._contracts import (
2
+ UiPathBaseRuntime,
3
+ UiPathRuntimeContext,
4
+ UiPathRuntimeFactory,
5
+ )
6
+ from uipath._cli._runtime._runtime import UiPathScriptRuntime
7
+
8
+
9
+ def generate_runtime_factory() -> UiPathRuntimeFactory[
10
+ UiPathBaseRuntime, UiPathRuntimeContext
11
+ ]:
12
+ runtime_factory: UiPathRuntimeFactory[UiPathBaseRuntime, UiPathRuntimeContext] = (
13
+ UiPathRuntimeFactory(
14
+ UiPathScriptRuntime,
15
+ UiPathRuntimeContext,
16
+ context_generator=lambda **kwargs: UiPathRuntimeContext.with_defaults(
17
+ **kwargs
18
+ ),
19
+ )
20
+ )
21
+ return runtime_factory
uipath/_cli/cli_debug.py CHANGED
@@ -1,7 +1,6 @@
1
1
  # type: ignore
2
2
  import asyncio
3
3
  import os
4
- import uuid
5
4
  from os import environ as env
6
5
  from typing import Optional
7
6
 
@@ -110,7 +109,6 @@ def debug(
110
109
  execution_output_file=output_file,
111
110
  debug=debug,
112
111
  )
113
- debug_context.execution_id = debug_context.job_id or str(uuid.uuid4())
114
112
 
115
113
  runtime_factory = UiPathRuntimeFactory(
116
114
  UiPathScriptRuntime,
uipath/_cli/cli_eval.py CHANGED
@@ -12,11 +12,7 @@ from uipath._cli._evals._runtime import (
12
12
  UiPathEvalContext,
13
13
  UiPathEvalRuntime,
14
14
  )
15
- from uipath._cli._runtime._contracts import (
16
- UiPathRuntimeContext,
17
- UiPathRuntimeFactory,
18
- )
19
- from uipath._cli._runtime._runtime import UiPathScriptRuntime
15
+ from uipath._cli._runtime._runtime_factory import generate_runtime_factory
20
16
  from uipath._cli._utils._constants import UIPATH_PROJECT_ID
21
17
  from uipath._cli._utils._folders import get_personal_workspace_key_async
22
18
  from uipath._cli.middlewares import Middlewares
@@ -96,6 +92,15 @@ def eval(
96
92
  workers: Number of parallel workers for running evaluations
97
93
  no_report: Do not report the evaluation results
98
94
  """
95
+ context_args = {
96
+ "entrypoint": entrypoint or auto_discover_entrypoint(),
97
+ "eval_set": eval_set,
98
+ "eval_ids": eval_ids,
99
+ "workers": workers,
100
+ "no_report": no_report,
101
+ "output_file": output_file,
102
+ }
103
+
99
104
  should_register_progress_reporter = setup_reporting_prereq(no_report)
100
105
 
101
106
  result = Middlewares.next(
@@ -119,16 +124,9 @@ def eval(
119
124
  progress_reporter = StudioWebProgressReporter(LlmOpsHttpExporter())
120
125
  asyncio.run(progress_reporter.subscribe_to_eval_runtime_events(event_bus))
121
126
 
122
- def generate_runtime_context(**context_kwargs) -> UiPathRuntimeContext:
123
- runtime_context = UiPathRuntimeContext.with_defaults(**context_kwargs)
124
- runtime_context.entrypoint = runtime_entrypoint
125
- return runtime_context
126
-
127
- runtime_entrypoint = entrypoint or auto_discover_entrypoint()
128
-
129
127
  eval_context = UiPathEvalContext.with_defaults(
130
128
  execution_output_file=output_file,
131
- entrypoint=runtime_entrypoint,
129
+ entrypoint=context_args["entrypoint"],
132
130
  )
133
131
 
134
132
  eval_context.no_report = no_report
@@ -140,11 +138,7 @@ def eval(
140
138
  asyncio.run(console_reporter.subscribe_to_eval_runtime_events(event_bus))
141
139
 
142
140
  try:
143
- runtime_factory = UiPathRuntimeFactory(
144
- UiPathScriptRuntime,
145
- UiPathRuntimeContext,
146
- context_generator=generate_runtime_context,
147
- )
141
+ runtime_factory = generate_runtime_factory()
148
142
  if eval_context.job_id:
149
143
  runtime_factory.add_span_exporter(LlmOpsHttpExporter())
150
144
 
uipath/_cli/cli_init.py CHANGED
@@ -5,7 +5,6 @@ import logging
5
5
  import os
6
6
  import shutil
7
7
  import uuid
8
- from pathlib import Path
9
8
  from typing import Any, Dict, Optional
10
9
 
11
10
  import click
@@ -13,11 +12,11 @@ import click
13
12
  from .._utils.constants import ENV_TELEMETRY_ENABLED
14
13
  from ..telemetry import track
15
14
  from ..telemetry._constants import _PROJECT_KEY, _TELEMETRY_CONFIG_FILE
15
+ from ._runtime._runtime import get_user_script
16
+ from ._runtime._runtime_factory import generate_runtime_factory
16
17
  from ._utils._console import ConsoleLogger
17
- from ._utils._input_args import generate_args
18
- from ._utils._parse_ast import generate_bindings
19
18
  from .middlewares import Middlewares
20
- from .models.runtime_schema import Bindings, Entrypoint, RuntimeSchema
19
+ from .models.runtime_schema import Bindings, RuntimeSchema
21
20
 
22
21
  console = ConsoleLogger()
23
22
  logger = logging.getLogger(__name__)
@@ -61,18 +60,25 @@ def generate_env_file(target_directory):
61
60
  console.success(f"Created '{relative_path}' file.")
62
61
 
63
62
 
64
- def generate_agent_md_file(target_directory: str, file_name: str) -> None:
63
+ def generate_agent_md_file(
64
+ target_directory: str, file_name: str, no_agents_md_override: bool
65
+ ) -> bool:
65
66
  """Generate an agent-specific file from the packaged resource.
66
67
 
67
68
  Args:
68
69
  target_directory: The directory where the file should be created.
69
70
  file_name: The name of the file should be created.
71
+ no_agents_md_override: Whether to override existing files.
70
72
  """
71
73
  target_path = os.path.join(target_directory, file_name)
72
74
 
73
- if os.path.exists(target_path):
74
- logger.debug(f"File '{target_path}' already exists.")
75
- return
75
+ will_override = os.path.exists(target_path)
76
+
77
+ if will_override and no_agents_md_override:
78
+ console.success(
79
+ f"File {click.style(target_path, fg='cyan')} already exists. Skipping."
80
+ )
81
+ return False
76
82
 
77
83
  try:
78
84
  source_path = importlib.resources.files("uipath._resources").joinpath(file_name)
@@ -80,15 +86,23 @@ def generate_agent_md_file(target_directory: str, file_name: str) -> None:
80
86
  with importlib.resources.as_file(source_path) as s_path:
81
87
  shutil.copy(s_path, target_path)
82
88
 
89
+ if will_override:
90
+ logger.debug(f"File '{target_path}' has been overridden.")
91
+
92
+ return will_override
93
+
83
94
  except Exception as e:
84
95
  console.warning(f"Could not create {file_name}: {e}")
85
96
 
97
+ return False
98
+
86
99
 
87
- def generate_agent_md_files(target_directory: str) -> None:
100
+ def generate_agent_md_files(target_directory: str, no_agents_md_override: bool) -> None:
88
101
  """Generate an agent-specific file from the packaged resource.
89
102
 
90
103
  Args:
91
104
  target_directory: The directory where the files should be created.
105
+ no_agents_md_override: Whether to override existing files.
92
106
  """
93
107
  agent_dir = os.path.join(target_directory, ".agent")
94
108
  os.makedirs(agent_dir, exist_ok=True)
@@ -97,13 +111,21 @@ def generate_agent_md_files(target_directory: str) -> None:
97
111
 
98
112
  agent_files = ["CLI_REFERENCE.md", "REQUIRED_STRUCTURE.md", "SDK_REFERENCE.md"]
99
113
 
114
+ any_overridden = False
115
+
100
116
  for file_name in root_files:
101
- generate_agent_md_file(target_directory, file_name)
117
+ if generate_agent_md_file(target_directory, file_name, no_agents_md_override):
118
+ any_overridden = True
102
119
 
103
120
  for file_name in agent_files:
104
- generate_agent_md_file(agent_dir, file_name)
121
+ if generate_agent_md_file(agent_dir, file_name, no_agents_md_override):
122
+ any_overridden = True
105
123
 
106
- console.success(f"Created {click.style('AGENTS.md', fg='cyan')} file.")
124
+ if any_overridden:
125
+ console.success(f"Updated {click.style('AGENTS.md', fg='cyan')} related files.")
126
+ return
127
+
128
+ console.success(f"Created {click.style('AGENTS.md', fg='cyan')} related files.")
107
129
 
108
130
 
109
131
  def get_existing_settings(config_path: str) -> Optional[Dict[str, Any]]:
@@ -126,33 +148,6 @@ def get_existing_settings(config_path: str) -> Optional[Dict[str, Any]]:
126
148
  return None
127
149
 
128
150
 
129
- def get_user_script(directory: str, entrypoint: Optional[str] = None) -> Optional[str]:
130
- """Find the Python script to process."""
131
- if entrypoint:
132
- script_path = os.path.join(directory, entrypoint)
133
- if not os.path.isfile(script_path):
134
- console.error(
135
- f"The {entrypoint} file does not exist in the current directory."
136
- )
137
- return None
138
- return script_path
139
-
140
- python_files = [f for f in os.listdir(directory) if f.endswith(".py")]
141
-
142
- if not python_files:
143
- console.error(
144
- "No python files found in the current directory.\nPlease specify the entrypoint: `uipath init <entrypoint_path>`"
145
- )
146
- return None
147
- elif len(python_files) == 1:
148
- return os.path.join(directory, python_files[0])
149
- else:
150
- console.error(
151
- "Multiple python files found in the current directory.\nPlease specify the entrypoint: `uipath init <entrypoint_path>`"
152
- )
153
- return None
154
-
155
-
156
151
  def write_config_file(config_data: Dict[str, Any] | RuntimeSchema) -> None:
157
152
  existing_settings = get_existing_settings(CONFIG_PATH)
158
153
  if existing_settings is not None:
@@ -177,8 +172,15 @@ def write_config_file(config_data: Dict[str, Any] | RuntimeSchema) -> None:
177
172
  default=True,
178
173
  help="Infer bindings from the script.",
179
174
  )
175
+ @click.option(
176
+ "--no-agents-md-override",
177
+ is_flag=True,
178
+ required=False,
179
+ default=False,
180
+ help="Won't override existing .agent files and AGENTS.md file.",
181
+ )
180
182
  @track
181
- def init(entrypoint: str, infer_bindings: bool) -> None:
183
+ def init(entrypoint: str, infer_bindings: bool, no_agents_md_override: bool) -> None:
182
184
  """Create uipath.json with input/output schemas and bindings."""
183
185
  with console.spinner("Initializing UiPath project ..."):
184
186
  current_directory = os.getcwd()
@@ -203,41 +205,30 @@ def init(entrypoint: str, infer_bindings: bool) -> None:
203
205
  if not result.should_continue:
204
206
  return
205
207
 
206
- generate_agent_md_files(current_directory)
208
+ generate_agent_md_files(current_directory, no_agents_md_override)
207
209
  script_path = get_user_script(current_directory, entrypoint=entrypoint)
208
-
209
210
  if not script_path:
210
211
  return
211
212
 
212
- try:
213
- args = generate_args(script_path)
214
-
215
- relative_path = Path(script_path).relative_to(current_directory).as_posix()
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:
213
+ context_args = {
214
+ "runtime_dir": os.getcwd(),
215
+ "entrypoint": script_path,
216
+ }
217
+
218
+ def initialize() -> None:
219
+ try:
220
+ runtime = generate_runtime_factory().new_runtime(**context_args)
223
221
  bindings = Bindings(
224
222
  version="2.0",
225
- resources=[],
223
+ resources=runtime.get_binding_resources,
226
224
  )
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
- )
225
+ config_data = RuntimeSchema(
226
+ entryPoints=[runtime.get_entrypoint],
227
+ bindings=bindings,
228
+ )
229
+ config_path = write_config_file(config_data)
230
+ console.success(f"Created '{config_path}' file.")
231
+ except Exception as e:
232
+ console.error(f"Error creating configuration file:\n {str(e)}")
239
233
 
240
- config_path = write_config_file(config_data)
241
- console.success(f"Created '{config_path}' file.")
242
- except Exception as e:
243
- console.error(f"Error creating configuration file:\n {str(e)}")
234
+ initialize()
uipath/_cli/cli_run.py CHANGED
@@ -6,6 +6,7 @@ from typing import Optional
6
6
 
7
7
  import click
8
8
 
9
+ from uipath._cli._runtime._runtime_factory import generate_runtime_factory
9
10
  from uipath._cli._utils._debug import setup_debugging
10
11
  from uipath.tracing import LlmOpsHttpExporter
11
12
 
@@ -13,12 +14,7 @@ from .._utils.constants import (
13
14
  ENV_JOB_ID,
14
15
  )
15
16
  from ..telemetry import track
16
- from ._runtime._contracts import (
17
- UiPathRuntimeContext,
18
- UiPathRuntimeError,
19
- UiPathRuntimeFactory,
20
- )
21
- from ._runtime._runtime import UiPathScriptRuntime
17
+ from ._runtime._contracts import UiPathRuntimeError
22
18
  from ._utils._console import ConsoleLogger
23
19
  from .middlewares import Middlewares
24
20
 
@@ -71,6 +67,14 @@ def run(
71
67
  debug_port: int,
72
68
  ) -> None:
73
69
  """Execute the project."""
70
+ context_args = {
71
+ "entrypoint": entrypoint,
72
+ "input": input,
73
+ "resume": resume,
74
+ "input_file": file or input_file,
75
+ "execution_output_file": output_file,
76
+ "debug": debug,
77
+ }
74
78
  input_file = file or input_file
75
79
  # Setup debugging if requested
76
80
  if not setup_debugging(debug, debug_port):
@@ -100,27 +104,17 @@ def run(
100
104
  Usage: `uipath run <entrypoint_path> <input_arguments> [-f <input_json_file_path>]`""")
101
105
 
102
106
  try:
103
- runtime_factory = UiPathRuntimeFactory(
104
- UiPathScriptRuntime, UiPathRuntimeContext
105
- )
106
-
107
- context = UiPathRuntimeContext.with_defaults(
108
- entrypoint=entrypoint,
109
- input=input,
110
- input_file=input_file,
111
- resume=resume,
112
- execution_output_file=output_file,
113
- debug=debug,
114
- )
115
- if context.job_id:
116
- runtime_factory.add_span_exporter(LlmOpsHttpExporter())
117
107
 
118
- async def execute_runtime():
108
+ async def execute() -> None:
109
+ runtime_factory = generate_runtime_factory()
110
+ context = runtime_factory.new_context(**context_args)
111
+ if context.job_id:
112
+ runtime_factory.add_span_exporter(LlmOpsHttpExporter())
119
113
  result = await runtime_factory.execute(context)
120
114
  if not context.job_id:
121
115
  console.info(result.output)
122
116
 
123
- asyncio.run(execute_runtime())
117
+ asyncio.run(execute())
124
118
 
125
119
  except UiPathRuntimeError as e:
126
120
  console.error(f"{e.error_info.title} - {e.error_info.detail}")
@@ -27,6 +27,7 @@ The UiPath Python SDK provides a comprehensive CLI for managing coded agents and
27
27
  | Option | Type | Default | Description |
28
28
  |--------|------|---------|-------------|
29
29
  | `--infer-bindings` | flag | false | Infer bindings from the script. |
30
+ | `--no-agents-md-override` | flag | false | Won't override existing .agent files and AGENTS.md file. |
30
31
 
31
32
  **Usage Examples:**
32
33
 
@@ -27,6 +27,10 @@ class DocumentsService(FolderContext, BaseService):
27
27
  """Service for managing UiPath DocumentUnderstanding Document Operations.
28
28
 
29
29
  This service provides methods to extract data from documents using UiPath's Document Understanding capabilities.
30
+
31
+ !!! warning "Preview Feature"
32
+ This function is currently experimental.
33
+ Behavior and parameters are subject to change in future versions.
30
34
  """
31
35
 
32
36
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
uipath/_uipath.py CHANGED
@@ -21,7 +21,6 @@ from ._services import (
21
21
  UiPathLlmChatService,
22
22
  UiPathOpenAIService,
23
23
  )
24
- from ._utils import setup_logging
25
24
  from ._utils._auth import resolve_config
26
25
  from .models.errors import BaseUrlMissingError, SecretMissingError
27
26
 
@@ -56,7 +55,6 @@ class UiPath:
56
55
  self._attachments_service: Optional[AttachmentsService] = None
57
56
  self._connections_service: Optional[ConnectionsService] = None
58
57
 
59
- setup_logging(debug)
60
58
  self._execution_context = ExecutionContext()
61
59
 
62
60
  @property
uipath/_utils/_logs.py CHANGED
@@ -11,5 +11,4 @@ def setup_logging(should_debug: Optional[bool] = None) -> None:
11
11
  datefmt="%Y-%m-%d %H:%M:%S",
12
12
  )
13
13
  logger.setLevel(logging.DEBUG if should_debug else logging.INFO)
14
- logger.removeHandler(logging.StreamHandler(sys.stdout))
15
14
  logger.addHandler(logging.StreamHandler(sys.stderr))
uipath/models/job.py CHANGED
@@ -15,7 +15,7 @@ class JobErrorInfo(BaseModel):
15
15
  title: Optional[str] = Field(default=None, alias="Title")
16
16
  detail: Optional[str] = Field(default=None, alias="Detail")
17
17
  category: Optional[str] = Field(default=None, alias="Category")
18
- status: Optional[str] = Field(default=None, alias="Status")
18
+ status: Optional[int] = Field(default=None, alias="Status")
19
19
 
20
20
 
21
21
  class Job(BaseModel):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.1.97
3
+ Version: 2.1.99
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
@@ -2,23 +2,23 @@ uipath/__init__.py,sha256=IaeKItOOQXMa95avueJ3dAq-XcRHyZVNjcCGwlSB000,634
2
2
  uipath/_config.py,sha256=pi3qxPzDTxMEstj_XkGOgKJqD6RTHHv7vYv8sS_-d5Q,92
3
3
  uipath/_execution_context.py,sha256=Qo8VMUFgtiL-40KsZrvul5bGv1CRERle_fCw1ORCggY,2374
4
4
  uipath/_folder_context.py,sha256=D-bgxdwpwJP4b_QdVKcPODYh15kMDrOar2xNonmMSm4,1861
5
- uipath/_uipath.py,sha256=mhtdu36-A-2WhPGNFFrTmQWbE07Bn4IV_Vrqgf6kuVM,4900
5
+ uipath/_uipath.py,sha256=4WSnEEoE24DPX-gJJ6FQB1fS9frEDrRV0CiGd8iaZQ0,4837
6
6
  uipath/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  uipath/_cli/README.md,sha256=GLtCfbeIKZKNnGTCsfSVqRQ27V1btT1i2bSAyW_xZl4,474
8
- uipath/_cli/__init__.py,sha256=RZtYzThMGEKEwmiUwwm6TUU5KxDpfTuez2qSFD78J8w,2345
8
+ uipath/_cli/__init__.py,sha256=aGym-NX6_5psRTm_fcCCh98E83OtufnKuGdQjw-sG9Y,2406
9
9
  uipath/_cli/cli_auth.py,sha256=CzetSRqSUvMs02PtI4w5Vi_0fv_ETA307bB2vXalWzY,2628
10
- uipath/_cli/cli_debug.py,sha256=-0ZWMe3aKfVZSiZCe7U2K_Xpai1fKxZpaETu_7ewj2s,4163
10
+ uipath/_cli/cli_debug.py,sha256=-s6Nmy0DnDyITjZAf6f71hZ1YDDt0Yl57XklEkuL0FU,4068
11
11
  uipath/_cli/cli_deploy.py,sha256=KPCmQ0c_NYD5JofSDao5r6QYxHshVCRxlWDVnQvlp5w,645
12
12
  uipath/_cli/cli_dev.py,sha256=nEfpjw1PZ72O6jmufYWVrueVwihFxDPOeJakdvNHdOA,2146
13
- uipath/_cli/cli_eval.py,sha256=oOMywGSUrHDQ1W_54ccbekzCeduPf-KHRyu_r0Dezd0,5444
14
- uipath/_cli/cli_init.py,sha256=2OE9uF4uCEwOVE_MiPJGjEK0bCnlIjsBqOBHwB98X4c,7831
13
+ uipath/_cli/cli_eval.py,sha256=6evrUtaHnQ1NTEQKZKltgH7mpYOy6YP88L2LZcnnnfs,5139
14
+ uipath/_cli/cli_init.py,sha256=kCwAHzrTrerptInGx8-eWbh3SdwYdFqlmIsKNPhhnjA,7392
15
15
  uipath/_cli/cli_invoke.py,sha256=m-te-EjhDpk_fhFDkt-yQFzmjEHGo5lQDGEQWxSXisQ,4395
16
16
  uipath/_cli/cli_new.py,sha256=9378NYUBc9j-qKVXV7oja-jahfJhXBg8zKVyaon7ctY,2102
17
17
  uipath/_cli/cli_pack.py,sha256=U5rXVbUnHFgdEsXyhkjmWza8dfob1wU9lyl4yrYnUss,11076
18
18
  uipath/_cli/cli_publish.py,sha256=DgyfcZjvfV05Ldy0Pk5y_Le_nT9JduEE_x-VpIc_Kq0,6471
19
19
  uipath/_cli/cli_pull.py,sha256=muX2gR-W-bSrNI3pIO0zbhZAP0VBOSsOY2-yrq8HgAw,2433
20
20
  uipath/_cli/cli_push.py,sha256=_JbjI45uJaobBDaz--NlzAXYJNwHX_XGLa8eC9wN-Cg,3166
21
- uipath/_cli/cli_run.py,sha256=dLEFu_sFOKeKN9juscFt-PKnTl4-mTF1PNP_44skG-0,3887
21
+ uipath/_cli/cli_run.py,sha256=4XEvJQEcFafDLJHbgd94cuYxeioprNFe1qwL7JeAplg,3789
22
22
  uipath/_cli/middlewares.py,sha256=tb0c4sU1SCYi0PNs956Qmk24NDk0C0mBfVQmTcyORE0,5000
23
23
  uipath/_cli/spinner.py,sha256=bS-U_HA5yne11ejUERu7CQoXmWdabUD2bm62EfEdV8M,1107
24
24
  uipath/_cli/_auth/_auth_server.py,sha256=v_b8KNwn0tAv8jxpeKdllOVzl31q9AcdwpE_koAK_w4,7235
@@ -32,8 +32,8 @@ uipath/_cli/_auth/auth_config.json,sha256=o8J5BBFwiEtjZLHpJ_64lvnTeYeRIHaJ-Bhg0Q
32
32
  uipath/_cli/_auth/index.html,sha256=uGK0CDTP8Rys_p4O_Pbd2x4tz0frKNVcumjrXnal5Nc,22814
33
33
  uipath/_cli/_auth/localhost.crt,sha256=oGl9oLLOiouHubAt39B4zEfylFvKEtbtr_43SIliXJc,1226
34
34
  uipath/_cli/_auth/localhost.key,sha256=X31VYXD8scZtmGA837dGX5l6G-LXHLo5ItWJhZXaz3c,1679
35
- uipath/_cli/_debug/_bridge.py,sha256=ylswtTAXPR_ThQxmYIa9PeRC80F-UVbeWMhRDUlMhYI,13908
36
- uipath/_cli/_debug/_runtime.py,sha256=fwpxmBFAhhMjanBQaCQdI-YuvMC6vhS8SSS8pvw_PJw,4946
35
+ uipath/_cli/_debug/_bridge.py,sha256=7_2IM4dhaYZ56dkNqPRQzdRojBDmDsJLa7zKs8KFZHg,16132
36
+ uipath/_cli/_debug/_runtime.py,sha256=h4WRBJn46dorTVXNZ32KIqg_-Z0mcLq5BvXGXqHAT_o,4934
37
37
  uipath/_cli/_dev/_terminal/__init__.py,sha256=di_RiN9Mcp9wqyKRRqXag28vbSw8_78mCnQZNn9H-Ss,14027
38
38
  uipath/_cli/_dev/_terminal/_components/_chat.py,sha256=NLRoy49QScHiI-q0FGykkaU8ajv1d23fx7issSALcFA,4119
39
39
  uipath/_cli/_dev/_terminal/_components/_details.py,sha256=FbLYtJ56gqHV6CIrpzO_n9Sk_YNg4nzRKTSsbj-DBPQ,17257
@@ -49,7 +49,7 @@ uipath/_cli/_dev/_terminal/_utils/_logger.py,sha256=_ipTl_oAiMF9I7keGt2AAFAMz40D
49
49
  uipath/_cli/_evals/_console_progress_reporter.py,sha256=HgB6pdMyoS6YVwuI3EpM2LBcH3U69nrdaTyNgPG8ssg,9304
50
50
  uipath/_cli/_evals/_evaluator_factory.py,sha256=Gycv94VtGOpMir_Gba-UoiAyrSRfbSfe8_pTfjzcA9Q,3875
51
51
  uipath/_cli/_evals/_progress_reporter.py,sha256=kX7rNSa-QCLXIzK-vb9Jjf-XLEtucdeiQPgPlSkpp2U,16778
52
- uipath/_cli/_evals/_runtime.py,sha256=JABvs_EhgG6qqpAsJcC2uTDRZw9JgYOhFrpejFGy2vA,20655
52
+ uipath/_cli/_evals/_runtime.py,sha256=9XwdDIN33LTbCTjSQvq1tWOrWn1Q42nTbuh-f7LFXEg,20761
53
53
  uipath/_cli/_evals/_span_collection.py,sha256=RoKoeDFG2XODdlgI27ionCjU7LLD_C0LJJ3gu0wab10,779
54
54
  uipath/_cli/_evals/_models/_evaluation_set.py,sha256=0I83I3HNu_BrgFz9miar2QTyXKb0dAaEpYMQrKUHP0U,4958
55
55
  uipath/_cli/_evals/_models/_evaluator.py,sha256=fuC3UOYwPD4d_wdynHeLSCzbu82golNAnnPnxC8Y4rk,3315
@@ -66,11 +66,12 @@ uipath/_cli/_evals/mocks/mocker_factory.py,sha256=V5QKSTtQxztTo4-fK1TyAaXw2Z3mHf
66
66
  uipath/_cli/_evals/mocks/mockito_mocker.py,sha256=AO2BmFwA6hz3Lte-STVr7aJDPvMCqKNKa4j2jeNZ_U4,2677
67
67
  uipath/_cli/_evals/mocks/mocks.py,sha256=HY0IaSqqO8hioBB3rp5XwAjSpQE4K5hoH6oJQ-sH72I,2207
68
68
  uipath/_cli/_push/sw_file_handler.py,sha256=voZVfJeJTqkvf5aFZvxAHQ_qa7dX_Cz7wRsfhLKL9Ag,17884
69
- uipath/_cli/_runtime/_contracts.py,sha256=-RrABpM3NVCa3GwSnJQh_SPdgtarrExDyT8X_f5SLcY,33813
69
+ uipath/_cli/_runtime/_contracts.py,sha256=WqHEMBo5jM5a-yV-KD0FeOkei4M3qq-hQwza2hCe9Rk,34318
70
70
  uipath/_cli/_runtime/_escalation.py,sha256=x3vI98qsfRA-fL_tNkRVTFXioM5Gv2w0GFcXJJ5eQtg,7981
71
71
  uipath/_cli/_runtime/_hitl.py,sha256=VKbM021nVg1HEDnTfucSLJ0LsDn83CKyUtVzofS2qTU,11369
72
72
  uipath/_cli/_runtime/_logging.py,sha256=srjAi3Cy6g7b8WNHiYNjaZT4t40F3XRqquuoGd2kh4Y,14019
73
- uipath/_cli/_runtime/_runtime.py,sha256=Gs75gZMwohO4x_TDkw_XPH_zVmKM3qCHhUj0mI2Bna4,2209
73
+ uipath/_cli/_runtime/_runtime.py,sha256=in0mS-G_MDT2KnPHzjZta57GFGMJwSwJkUh06uaIMTU,4721
74
+ uipath/_cli/_runtime/_runtime_factory.py,sha256=8wbJeTTFQwCZ-Zm7tRec2YjBCJGhWdEwxl9yMkPwz6U,640
74
75
  uipath/_cli/_runtime/_script_executor.py,sha256=PjbmEbyCMofGH2F85b8RFsxdV3Tqw0kVqdWOOk2ZLlI,9687
75
76
  uipath/_cli/_templates/.psmdcp.template,sha256=C7pBJPt98ovEljcBvGtEUGoWjjQhu9jls1bpYjeLOKA,611
76
77
  uipath/_cli/_templates/.rels.template,sha256=-fTcw7OA1AcymHr0LzBqbMAAtzZTRXLTNa_ljq087Jk,406
@@ -97,7 +98,7 @@ uipath/_events/_event_bus.py,sha256=4-VzstyX69cr7wT1EY7ywp-Ndyz2CyemD3Wk_-QmRpo,
97
98
  uipath/_events/_events.py,sha256=eCgqEP4rzDgZShXMC9wgBVx-AcpwaJZlo2yiL7OyxdA,4441
98
99
  uipath/_resources/AGENTS.md,sha256=nRQNAVeEBaBvuMzXw8uXtMnGebLClUgwIMlgb8_qU9o,1039
99
100
  uipath/_resources/CLAUDE.md,sha256=kYsckFWTVe948z_fNWLysCHvi9_YpchBXl3s1Ek03lU,10
100
- uipath/_resources/CLI_REFERENCE.md,sha256=stB6W2aUr0o9UzZ49h7ZXvltaLhnwPUe4_erko4Nr9k,6262
101
+ uipath/_resources/CLI_REFERENCE.md,sha256=-eCe1hZSRvv9QGLltE3xl8muGWGNzmaHX8htRt3cgy8,6366
101
102
  uipath/_resources/REQUIRED_STRUCTURE.md,sha256=3laqGiNa3kauJ7jRI1d7w_fWKUDkqYBjcTT_6_8FAGk,1417
102
103
  uipath/_resources/SDK_REFERENCE.md,sha256=4wX8a1W5EJCta-iEHy_cDRahn0ENpJykwn-w4k_Lh6s,23245
103
104
  uipath/_services/__init__.py,sha256=_LNy4u--VlhVtTO66bULbCoBjyJBTuyh9jnzjWrv-h4,1140
@@ -109,7 +110,7 @@ uipath/_services/attachments_service.py,sha256=NPQYK7CGjfBaNT_1S5vEAfODmOChTbQZf
109
110
  uipath/_services/buckets_service.py,sha256=5s8tuivd7GUZYj774DDUYTa0axxlUuesc4EBY1V5sdk,18496
110
111
  uipath/_services/connections_service.py,sha256=tKJHHOKQYKR6LkgB-V_2d0vFpLEdFeMzwj_xmBVHUDw,18416
111
112
  uipath/_services/context_grounding_service.py,sha256=Pjx-QQQEiSKD-hY6ityj3QUSALN3fIcKLLHr_NZ0d_g,37117
112
- uipath/_services/documents_service.py,sha256=UnFS8EpOZ_Ng2TZk3OiJJ3iNANvFs7QxuoG_v-lQj6c,24815
113
+ uipath/_services/documents_service.py,sha256=dVv7kYT2wm4gbtqulSAQhtn418xgzV2yt7gB7JvDsWU,24973
113
114
  uipath/_services/entities_service.py,sha256=QKCLE6wRgq3HZraF-M2mljy-8il4vsNHrQhUgkewVVk,14028
114
115
  uipath/_services/external_application_service.py,sha256=gZhnGgLn7ZYUZzZF7AumB14QEPanVY-D_02FqEcAFtw,5478
115
116
  uipath/_services/folder_service.py,sha256=9JqgjKhWD-G_KUnfUTP2BADxL6OK9QNZsBsWZHAULdE,2749
@@ -121,7 +122,7 @@ uipath/_utils/__init__.py,sha256=VdcpnENJIa0R6Y26NoxY64-wUVyvb4pKfTh1wXDQeMk,526
121
122
  uipath/_utils/_auth.py,sha256=5R30ALuRrIatf_0Lk-AETJvt6ora7h0R7yeDdliW1Lg,2524
122
123
  uipath/_utils/_endpoint.py,sha256=yYHwqbQuJIevpaTkdfYJS9CrtlFeEyfb5JQK5osTCog,2489
123
124
  uipath/_utils/_infer_bindings.py,sha256=eCxfUjd37fOFZ6vOfKl2BhWVUt7iSSJ-VQ0-nDTBcaA,1836
124
- uipath/_utils/_logs.py,sha256=adfX_0UAn3YBeKJ8DQDeZs94rJyHGQO00uDfkaTpNWQ,510
125
+ uipath/_utils/_logs.py,sha256=ZLH0jyPImy7xAqr81XW-As7bdeIcfJpReombBPh9HAg,450
125
126
  uipath/_utils/_read_overwrites.py,sha256=OQgG9ycPpFnLub5ELQdX9V2Fyh6F9_zDR3xoYagJaMI,5287
126
127
  uipath/_utils/_request_override.py,sha256=fIVHzgHVXITUlWcp8osNBwIafM1qm4_ejx0ng5UzfJ4,573
127
128
  uipath/_utils/_request_spec.py,sha256=iCtBLqtbWUpFG5g1wtIZBzSupKsfaRLiQFoFc_4B70Q,747
@@ -173,7 +174,7 @@ uipath/models/entities.py,sha256=x6jbq4o_QhgL_pCgvHFsp9O8l333kQhn8e9ZCBs72UM,982
173
174
  uipath/models/errors.py,sha256=WCxxHBlLzLF17YxjqsFkkyBLwEQM_dc6fFU5qmBjD4A,597
174
175
  uipath/models/exceptions.py,sha256=F0ITAhJsl6Agvmnv4nxvgY5oC_lrYIlxWTLs0yx859M,1636
175
176
  uipath/models/interrupt_models.py,sha256=UzuVTMVesI204YQ4qFQFaN-gN3kksddkrujofcaC7zQ,881
176
- uipath/models/job.py,sha256=HOvWS3I2BkiuM9jvg_PF0MezKa_C_8g7tndZpjJ1w50,3063
177
+ uipath/models/job.py,sha256=h1S-ErUk4-oIdrxo4nEBEJdSv1NTTF4AF8LfXx5Exak,3063
177
178
  uipath/models/llm_gateway.py,sha256=rUIus7BrUuuRriXqSJUE9FnjOyQ7pYpaX6hWEYvA6AA,1923
178
179
  uipath/models/processes.py,sha256=bV31xTyF0hRWZmwy3bWj5L8dBD9wttWxfJjwzhjETmk,1924
179
180
  uipath/models/queues.py,sha256=gnbeEyYlHtdqdxBalio0lw8mq-78YBG9MPMSkv1BWOg,6934
@@ -187,8 +188,8 @@ uipath/tracing/_utils.py,sha256=X-LFsyIxDeNOGuHPvkb6T5o9Y8ElYhr_rP3CEBJSu4s,1383
187
188
  uipath/utils/__init__.py,sha256=VD-KXFpF_oWexFg6zyiWMkxl2HM4hYJMIUDZ1UEtGx0,105
188
189
  uipath/utils/_endpoints_manager.py,sha256=tnF_FiCx8qI2XaJDQgYkMN_gl9V0VqNR1uX7iawuLp8,8230
189
190
  uipath/utils/dynamic_schema.py,sha256=w0u_54MoeIAB-mf3GmwX1A_X8_HDrRy6p998PvX9evY,3839
190
- uipath-2.1.97.dist-info/METADATA,sha256=VSSHUv-YMKThR9fS26EnbcZhKRMP-o0omZVgfeEepTM,6625
191
- uipath-2.1.97.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
192
- uipath-2.1.97.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
193
- uipath-2.1.97.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
194
- uipath-2.1.97.dist-info/RECORD,,
191
+ uipath-2.1.99.dist-info/METADATA,sha256=uzQOaz08OQ0caJ37TK1DW-SC2oGIk-BHNnOMVVe1hVE,6625
192
+ uipath-2.1.99.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
193
+ uipath-2.1.99.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
194
+ uipath-2.1.99.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
195
+ uipath-2.1.99.dist-info/RECORD,,