uipath 2.1.105__tar.gz → 2.1.106__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of uipath might be problematic. Click here for more details.

Files changed (381) hide show
  1. {uipath-2.1.105 → uipath-2.1.106}/PKG-INFO +1 -1
  2. {uipath-2.1.105 → uipath-2.1.106}/pyproject.toml +1 -1
  3. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_debug/_bridge.py +181 -13
  4. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_debug/_runtime.py +21 -5
  5. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_runtime/_contracts.py +1 -0
  6. {uipath-2.1.105 → uipath-2.1.106}/uv.lock +1 -1
  7. {uipath-2.1.105 → uipath-2.1.106}/.claude/agents/command-tester.md +0 -0
  8. {uipath-2.1.105 → uipath-2.1.106}/.claude/commands/prepare-pr.md +0 -0
  9. {uipath-2.1.105 → uipath-2.1.106}/.cursorrules +0 -0
  10. {uipath-2.1.105 → uipath-2.1.106}/.editorconfig +0 -0
  11. {uipath-2.1.105 → uipath-2.1.106}/.gitattributes +0 -0
  12. {uipath-2.1.105 → uipath-2.1.106}/.github/labeler.yml +0 -0
  13. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/auto-label.yml +0 -0
  14. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/cd.yml +0 -0
  15. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/ci.yml +0 -0
  16. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/commitlint.yml +0 -0
  17. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/integration_tests.yml +0 -0
  18. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/lint.yml +0 -0
  19. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/publish-dev.yml +0 -0
  20. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/publish-docs.yml +0 -0
  21. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/slack.yml +0 -0
  22. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/test-uipath-langchain.yml +0 -0
  23. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/test-uipath-llamaindex.yml +0 -0
  24. {uipath-2.1.105 → uipath-2.1.106}/.github/workflows/test.yml +0 -0
  25. {uipath-2.1.105 → uipath-2.1.106}/.gitignore +0 -0
  26. {uipath-2.1.105 → uipath-2.1.106}/.pre-commit-config.yaml +0 -0
  27. {uipath-2.1.105 → uipath-2.1.106}/.python-version +0 -0
  28. {uipath-2.1.105 → uipath-2.1.106}/.vscode/extensions.json +0 -0
  29. {uipath-2.1.105 → uipath-2.1.106}/.vscode/launch.json +0 -0
  30. {uipath-2.1.105 → uipath-2.1.106}/.vscode/settings.json +0 -0
  31. {uipath-2.1.105 → uipath-2.1.106}/CONTRIBUTING.md +0 -0
  32. {uipath-2.1.105 → uipath-2.1.106}/LICENSE +0 -0
  33. {uipath-2.1.105 → uipath-2.1.106}/README.md +0 -0
  34. {uipath-2.1.105 → uipath-2.1.106}/docs/AutomationSuite.md +0 -0
  35. {uipath-2.1.105 → uipath-2.1.106}/docs/CONTRIBUTING.md +0 -0
  36. {uipath-2.1.105 → uipath-2.1.106}/docs/FAQ.md +0 -0
  37. {uipath-2.1.105 → uipath-2.1.106}/docs/assets/env-preparation-failed-dark.png +0 -0
  38. {uipath-2.1.105 → uipath-2.1.106}/docs/assets/env-preparation-failed-light.png +0 -0
  39. {uipath-2.1.105 → uipath-2.1.106}/docs/assets/favicon.png +0 -0
  40. {uipath-2.1.105 → uipath-2.1.106}/docs/assets/llms.txt +0 -0
  41. {uipath-2.1.105 → uipath-2.1.106}/docs/assets/logo-dark.svg +0 -0
  42. {uipath-2.1.105 → uipath-2.1.106}/docs/assets/logo-light.svg +0 -0
  43. {uipath-2.1.105 → uipath-2.1.106}/docs/cli/index.md +0 -0
  44. {uipath-2.1.105 → uipath-2.1.106}/docs/core/actions.md +0 -0
  45. {uipath-2.1.105 → uipath-2.1.106}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  46. {uipath-2.1.105 → uipath-2.1.106}/docs/core/assets/cloud_env_var_light.gif +0 -0
  47. {uipath-2.1.105 → uipath-2.1.106}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  48. {uipath-2.1.105 → uipath-2.1.106}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  49. {uipath-2.1.105 → uipath-2.1.106}/docs/core/assets/copy_path_dark.png +0 -0
  50. {uipath-2.1.105 → uipath-2.1.106}/docs/core/assets/copy_path_light.png +0 -0
  51. {uipath-2.1.105 → uipath-2.1.106}/docs/core/assets.md +0 -0
  52. {uipath-2.1.105 → uipath-2.1.106}/docs/core/attachments.md +0 -0
  53. {uipath-2.1.105 → uipath-2.1.106}/docs/core/buckets.md +0 -0
  54. {uipath-2.1.105 → uipath-2.1.106}/docs/core/connections.md +0 -0
  55. {uipath-2.1.105 → uipath-2.1.106}/docs/core/context_grounding.md +0 -0
  56. {uipath-2.1.105 → uipath-2.1.106}/docs/core/documents.md +0 -0
  57. {uipath-2.1.105 → uipath-2.1.106}/docs/core/documents_models.md +0 -0
  58. {uipath-2.1.105 → uipath-2.1.106}/docs/core/environment_variables.md +0 -0
  59. {uipath-2.1.105 → uipath-2.1.106}/docs/core/getting_started.md +0 -0
  60. {uipath-2.1.105 → uipath-2.1.106}/docs/core/jobs.md +0 -0
  61. {uipath-2.1.105 → uipath-2.1.106}/docs/core/llm_gateway.md +0 -0
  62. {uipath-2.1.105 → uipath-2.1.106}/docs/core/processes.md +0 -0
  63. {uipath-2.1.105 → uipath-2.1.106}/docs/core/queues.md +0 -0
  64. {uipath-2.1.105 → uipath-2.1.106}/docs/core/traced.md +0 -0
  65. {uipath-2.1.105 → uipath-2.1.106}/docs/hooks.py +0 -0
  66. {uipath-2.1.105 → uipath-2.1.106}/docs/index.md +0 -0
  67. {uipath-2.1.105 → uipath-2.1.106}/docs/javascripts/extra.js +0 -0
  68. {uipath-2.1.105 → uipath-2.1.106}/docs/overrides/main.html +0 -0
  69. {uipath-2.1.105 → uipath-2.1.106}/docs/overrides/partials/actions.html +0 -0
  70. {uipath-2.1.105 → uipath-2.1.106}/docs/overrides/partials/logo.html +0 -0
  71. {uipath-2.1.105 → uipath-2.1.106}/docs/release_policy.md +0 -0
  72. {uipath-2.1.105 → uipath-2.1.106}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  73. {uipath-2.1.105 → uipath-2.1.106}/docs/stylesheets/extra.css +0 -0
  74. {uipath-2.1.105 → uipath-2.1.106}/justfile +0 -0
  75. {uipath-2.1.105 → uipath-2.1.106}/mkdocs.yml +0 -0
  76. {uipath-2.1.105 → uipath-2.1.106}/py.typed +0 -0
  77. {uipath-2.1.105 → uipath-2.1.106}/samples/asset-modifier-agent/.env.example +0 -0
  78. {uipath-2.1.105 → uipath-2.1.106}/samples/asset-modifier-agent/README.md +0 -0
  79. {uipath-2.1.105 → uipath-2.1.106}/samples/asset-modifier-agent/input.json +0 -0
  80. {uipath-2.1.105 → uipath-2.1.106}/samples/asset-modifier-agent/main.py +0 -0
  81. {uipath-2.1.105 → uipath-2.1.106}/samples/asset-modifier-agent/pyproject.toml +0 -0
  82. {uipath-2.1.105 → uipath-2.1.106}/samples/asset-modifier-agent/uv.lock +0 -0
  83. {uipath-2.1.105 → uipath-2.1.106}/samples/calculator/README.md +0 -0
  84. {uipath-2.1.105 → uipath-2.1.106}/samples/calculator/evals/eval-sets/default.json +0 -0
  85. {uipath-2.1.105 → uipath-2.1.106}/samples/calculator/evals/evaluators/equality.json +0 -0
  86. {uipath-2.1.105 → uipath-2.1.106}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
  87. {uipath-2.1.105 → uipath-2.1.106}/samples/calculator/main.py +0 -0
  88. {uipath-2.1.105 → uipath-2.1.106}/samples/calculator/pyproject.toml +0 -0
  89. {uipath-2.1.105 → uipath-2.1.106}/samples/calculator/uipath.json +0 -0
  90. {uipath-2.1.105 → uipath-2.1.106}/samples/event-trigger/.python-version +0 -0
  91. {uipath-2.1.105 → uipath-2.1.106}/samples/event-trigger/README.md +0 -0
  92. {uipath-2.1.105 → uipath-2.1.106}/samples/event-trigger/main.py +0 -0
  93. {uipath-2.1.105 → uipath-2.1.106}/samples/event-trigger/pyproject.toml +0 -0
  94. {uipath-2.1.105 → uipath-2.1.106}/samples/google-ADK-agent/.env.example +0 -0
  95. {uipath-2.1.105 → uipath-2.1.106}/samples/google-ADK-agent/README.md +0 -0
  96. {uipath-2.1.105 → uipath-2.1.106}/samples/google-ADK-agent/input.json +0 -0
  97. {uipath-2.1.105 → uipath-2.1.106}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  98. {uipath-2.1.105 → uipath-2.1.106}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  99. {uipath-2.1.105 → uipath-2.1.106}/samples/google-ADK-agent/pyproject.toml +0 -0
  100. {uipath-2.1.105 → uipath-2.1.106}/samples/google-ADK-agent/uv.lock +0 -0
  101. {uipath-2.1.105 → uipath-2.1.106}/scripts/debug_test.py +0 -0
  102. {uipath-2.1.105 → uipath-2.1.106}/scripts/lint_httpx_client.py +0 -0
  103. {uipath-2.1.105 → uipath-2.1.106}/scripts/update_agents_md.py +0 -0
  104. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/__init__.py +0 -0
  105. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/README.md +0 -0
  106. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/__init__.py +0 -0
  107. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  108. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  109. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/_models.py +0 -0
  110. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  111. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  112. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  113. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/_utils.py +0 -0
  114. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/auth_config.json +0 -0
  115. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/index.html +0 -0
  116. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/localhost.crt +0 -0
  117. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_auth/localhost.key +0 -0
  118. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  119. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  120. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  121. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
  122. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  123. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  124. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  125. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  126. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  127. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  128. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  129. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  130. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/__init__.py +0 -0
  131. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
  132. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_evaluate.py +0 -0
  133. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
  134. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
  135. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
  136. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  137. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
  138. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
  139. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  140. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  141. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  142. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_runtime.py +0 -0
  143. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/_span_collection.py +0 -0
  144. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
  145. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/mocks/input_mocker.py +0 -0
  146. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/mocks/llm_mocker.py +0 -0
  147. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/mocks/mocker.py +0 -0
  148. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
  149. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
  150. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_evals/mocks/mocks.py +0 -0
  151. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  152. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  153. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  154. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_runtime/_logging.py +0 -0
  155. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  156. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_runtime/_runtime_factory.py +0 -0
  157. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  158. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  159. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_templates/.rels.template +0 -0
  160. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  161. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_templates/main.py.template +0 -0
  162. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  163. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_common.py +0 -0
  164. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_console.py +0 -0
  165. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_constants.py +0 -0
  166. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_debug.py +0 -0
  167. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  168. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_folders.py +0 -0
  169. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_input_args.py +0 -0
  170. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  171. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_processes.py +0 -0
  172. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_project_files.py +0 -0
  173. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  174. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_tracing.py +0 -0
  175. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  176. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_auth.py +0 -0
  177. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_debug.py +0 -0
  178. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_deploy.py +0 -0
  179. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_dev.py +0 -0
  180. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_eval.py +0 -0
  181. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_init.py +0 -0
  182. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_invoke.py +0 -0
  183. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_new.py +0 -0
  184. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_pack.py +0 -0
  185. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_publish.py +0 -0
  186. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_pull.py +0 -0
  187. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_push.py +0 -0
  188. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/cli_run.py +0 -0
  189. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/middlewares.py +0 -0
  190. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/models/__init__.py +0 -0
  191. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/models/runtime_schema.py +0 -0
  192. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_cli/spinner.py +0 -0
  193. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_config.py +0 -0
  194. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_events/__init__.py +0 -0
  195. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_events/_event_bus.py +0 -0
  196. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_events/_events.py +0 -0
  197. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_execution_context.py +0 -0
  198. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_folder_context.py +0 -0
  199. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_resources/AGENTS.md +0 -0
  200. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_resources/CLAUDE.md +0 -0
  201. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_resources/CLI_REFERENCE.md +0 -0
  202. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_resources/REQUIRED_STRUCTURE.md +0 -0
  203. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_resources/SDK_REFERENCE.md +0 -0
  204. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/__init__.py +0 -0
  205. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/_base_service.py +0 -0
  206. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/actions_service.py +0 -0
  207. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/api_client.py +0 -0
  208. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/assets_service.py +0 -0
  209. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/attachments_service.py +0 -0
  210. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/buckets_service.py +0 -0
  211. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/connections_service.py +0 -0
  212. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/context_grounding_service.py +0 -0
  213. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/documents_service.py +0 -0
  214. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/entities_service.py +0 -0
  215. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/external_application_service.py +0 -0
  216. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/folder_service.py +0 -0
  217. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/jobs_service.py +0 -0
  218. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/llm_gateway_service.py +0 -0
  219. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/processes_service.py +0 -0
  220. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_services/queues_service.py +0 -0
  221. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_uipath.py +0 -0
  222. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/__init__.py +0 -0
  223. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_auth.py +0 -0
  224. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_endpoint.py +0 -0
  225. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_infer_bindings.py +0 -0
  226. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_logs.py +0 -0
  227. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_read_overwrites.py +0 -0
  228. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_request_override.py +0 -0
  229. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_request_spec.py +0 -0
  230. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_ssl_context.py +0 -0
  231. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_url.py +0 -0
  232. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/_user_agent.py +0 -0
  233. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/_utils/constants.py +0 -0
  234. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/_utils.py +0 -0
  235. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/__init__.py +0 -0
  236. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/async_stream.py +0 -0
  237. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/citation.py +0 -0
  238. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/content.py +0 -0
  239. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/conversation.py +0 -0
  240. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/event.py +0 -0
  241. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/exchange.py +0 -0
  242. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/message.py +0 -0
  243. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/meta.py +0 -0
  244. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/conversation/tool.py +0 -0
  245. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/models/agent.py +0 -0
  246. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/models/evals.py +0 -0
  247. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/react/__init__.py +0 -0
  248. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/react/prompts.py +0 -0
  249. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/agent/react/tools.py +0 -0
  250. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/_helpers/__init__.py +0 -0
  251. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/_helpers/helpers.py +0 -0
  252. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/evaluators/__init__.py +0 -0
  253. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  254. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  255. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  256. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  257. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  258. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  259. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/mocks/__init__.py +0 -0
  260. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/mocks/mockable.py +0 -0
  261. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/models/__init__.py +0 -0
  262. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/eval/models/models.py +0 -0
  263. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/__init__.py +0 -0
  264. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/action_schema.py +0 -0
  265. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/actions.py +0 -0
  266. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/assets.py +0 -0
  267. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/attachment.py +0 -0
  268. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/auth.py +0 -0
  269. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/buckets.py +0 -0
  270. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/connections.py +0 -0
  271. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/context_grounding.py +0 -0
  272. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/context_grounding_index.py +0 -0
  273. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/documents.py +0 -0
  274. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/entities.py +0 -0
  275. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/errors.py +0 -0
  276. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/exceptions.py +0 -0
  277. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/guardrails.py +0 -0
  278. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/interrupt_models.py +0 -0
  279. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/job.py +0 -0
  280. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/llm_gateway.py +0 -0
  281. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/processes.py +0 -0
  282. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/models/queues.py +0 -0
  283. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/py.typed +0 -0
  284. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/telemetry/__init__.py +0 -0
  285. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/telemetry/_constants.py +0 -0
  286. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/telemetry/_track.py +0 -0
  287. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/tracing/__init__.py +0 -0
  288. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/tracing/_otel_exporters.py +0 -0
  289. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/tracing/_traced.py +0 -0
  290. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/tracing/_utils.py +0 -0
  291. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/utils/__init__.py +0 -0
  292. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/utils/_endpoints_manager.py +0 -0
  293. {uipath-2.1.105 → uipath-2.1.106}/src/uipath/utils/dynamic_schema.py +0 -0
  294. {uipath-2.1.105 → uipath-2.1.106}/testcases/apicalls-testcase/main.py +0 -0
  295. {uipath-2.1.105 → uipath-2.1.106}/testcases/apicalls-testcase/pyproject.toml +0 -0
  296. {uipath-2.1.105 → uipath-2.1.106}/testcases/apicalls-testcase/run.sh +0 -0
  297. {uipath-2.1.105 → uipath-2.1.106}/testcases/apicalls-testcase/src/assert.py +0 -0
  298. {uipath-2.1.105 → uipath-2.1.106}/testcases/basic-testcase/main.py +0 -0
  299. {uipath-2.1.105 → uipath-2.1.106}/testcases/basic-testcase/pyproject.toml +0 -0
  300. {uipath-2.1.105 → uipath-2.1.106}/testcases/basic-testcase/run.sh +0 -0
  301. {uipath-2.1.105 → uipath-2.1.106}/testcases/basic-testcase/src/assert.py +0 -0
  302. {uipath-2.1.105 → uipath-2.1.106}/testcases/common/validate_output.sh +0 -0
  303. {uipath-2.1.105 → uipath-2.1.106}/testcases/langchain-cross/agent.mermaid +0 -0
  304. {uipath-2.1.105 → uipath-2.1.106}/testcases/langchain-cross/langgraph.json +0 -0
  305. {uipath-2.1.105 → uipath-2.1.106}/testcases/langchain-cross/pyproject.toml +0 -0
  306. {uipath-2.1.105 → uipath-2.1.106}/testcases/langchain-cross/run.sh +0 -0
  307. {uipath-2.1.105 → uipath-2.1.106}/testcases/langchain-cross/src/assert.py +0 -0
  308. {uipath-2.1.105 → uipath-2.1.106}/testcases/langchain-cross/src/main.py +0 -0
  309. {uipath-2.1.105 → uipath-2.1.106}/testcases/llamaindex-cross/agent.mermaid +0 -0
  310. {uipath-2.1.105 → uipath-2.1.106}/testcases/llamaindex-cross/llama_index.json +0 -0
  311. {uipath-2.1.105 → uipath-2.1.106}/testcases/llamaindex-cross/pyproject.toml +0 -0
  312. {uipath-2.1.105 → uipath-2.1.106}/testcases/llamaindex-cross/run.sh +0 -0
  313. {uipath-2.1.105 → uipath-2.1.106}/testcases/llamaindex-cross/src/assert.py +0 -0
  314. {uipath-2.1.105 → uipath-2.1.106}/testcases/llamaindex-cross/src/main.py +0 -0
  315. {uipath-2.1.105 → uipath-2.1.106}/tests/__init__.py +0 -0
  316. {uipath-2.1.105 → uipath-2.1.106}/tests/agent/models/test_agent.py +0 -0
  317. {uipath-2.1.105 → uipath-2.1.106}/tests/agent/models/test_evals.py +0 -0
  318. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/conftest.py +0 -0
  319. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/eval/evals/eval-sets/default.json +0 -0
  320. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/eval/evals/evaluators/equality.json +0 -0
  321. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/eval/mocks/test_input_mocker.py +0 -0
  322. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/eval/mocks/test_mocks.py +0 -0
  323. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/eval/test_evaluate.py +0 -0
  324. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  325. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/mocks/bindings_script.py +0 -0
  326. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/mocks/pyproject.toml +0 -0
  327. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/mocks/simple_script.py +0 -0
  328. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/mocks/uipath-mock.json +0 -0
  329. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  330. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/models/test_runtime_schema.py +0 -0
  331. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_auth.py +0 -0
  332. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_hitl.py +0 -0
  333. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_init.py +0 -0
  334. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_init_agents_md.py +0 -0
  335. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_input_args.py +0 -0
  336. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_invoke.py +0 -0
  337. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_new.py +0 -0
  338. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_oidc_utils.py +0 -0
  339. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_pack.py +0 -0
  340. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  341. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_portal_service_refresh_token.py +0 -0
  342. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_publish.py +0 -0
  343. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_pull.py +0 -0
  344. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_push.py +0 -0
  345. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_run.py +0 -0
  346. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/test_utils.py +0 -0
  347. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/utils/common.py +0 -0
  348. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/utils/project_details.py +0 -0
  349. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/utils/test_dynamic_schema.py +0 -0
  350. {uipath-2.1.105 → uipath-2.1.106}/tests/cli/utils/uipath_json.py +0 -0
  351. {uipath-2.1.105 → uipath-2.1.106}/tests/conftest.py +0 -0
  352. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/conftest.py +0 -0
  353. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_actions_service.py +0 -0
  354. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_api_client.py +0 -0
  355. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_assets_service.py +0 -0
  356. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_attachments_service.py +0 -0
  357. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_base_service.py +0 -0
  358. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_buckets_service.py +0 -0
  359. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_connections_service.py +0 -0
  360. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_context_grounding_service.py +0 -0
  361. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_documents_service.py +0 -0
  362. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_entities_service.py +0 -0
  363. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_external_application_service.py +0 -0
  364. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_folder_service.py +0 -0
  365. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_jobs_service.py +0 -0
  366. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_llm_integration.py +0 -0
  367. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  368. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_llm_service.py +0 -0
  369. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_processes_service.py +0 -0
  370. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_queues_service.py +0 -0
  371. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  372. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  373. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  374. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  375. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/test_bindings_inference.py +0 -0
  376. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/test_config.py +0 -0
  377. {uipath-2.1.105 → uipath-2.1.106}/tests/sdk/test_overwrites.py +0 -0
  378. {uipath-2.1.105 → uipath-2.1.106}/tests/tracing/test_otel_exporters.py +0 -0
  379. {uipath-2.1.105 → uipath-2.1.106}/tests/tracing/test_span_utils.py +0 -0
  380. {uipath-2.1.105 → uipath-2.1.106}/tests/tracing/test_traced.py +0 -0
  381. {uipath-2.1.105 → uipath-2.1.106}/tests/tracing/test_tracing_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.1.105
3
+ Version: 2.1.106
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.1.105"
3
+ version = "2.1.106"
4
4
  description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
5
5
  readme = { file = "README.md", content-type = "text/markdown" }
6
6
  requires-python = ">=3.10"
@@ -3,7 +3,8 @@ import json
3
3
  import logging
4
4
  import os
5
5
  from abc import ABC, abstractmethod
6
- from typing import Any, Dict, Optional
6
+ from enum import Enum
7
+ from typing import Any, Dict, List, Optional, Set
7
8
 
8
9
  from pydantic import BaseModel
9
10
  from pysignalr.client import SignalRClient
@@ -22,6 +23,50 @@ from uipath._events._events import UiPathAgentStateEvent
22
23
  logger = logging.getLogger(__name__)
23
24
 
24
25
 
26
+ class DebuggerQuitException(Exception):
27
+ """Raised when user quits the debugger."""
28
+
29
+ pass
30
+
31
+
32
+ class DebugCommand(str, Enum):
33
+ """Available debug commands."""
34
+
35
+ CONTINUE = "continue"
36
+ STEP = "step"
37
+ BREAKPOINT = "breakpoint"
38
+ LIST_BREAKPOINTS = "list"
39
+ CLEAR_BREAKPOINT = "clear"
40
+ HELP = "help"
41
+ QUIT = "quit"
42
+
43
+
44
+ class DebuggerState:
45
+ """Maintains debugger state across execution."""
46
+
47
+ def __init__(self):
48
+ self.breakpoints: Set[str] = set()
49
+ self.step_mode: bool = False
50
+
51
+ def add_breakpoint(self, node_name: str) -> None:
52
+ """Add a breakpoint at a node."""
53
+ self.breakpoints.add(node_name)
54
+
55
+ def remove_breakpoint(self, node_name: str) -> None:
56
+ """Remove a breakpoint from a node."""
57
+ self.breakpoints.discard(node_name)
58
+
59
+ def clear_all_breakpoints(self) -> None:
60
+ """Clear all breakpoints."""
61
+ self.breakpoints.clear()
62
+
63
+ def should_break(self, node_name: str) -> bool:
64
+ """Check if execution should break at this node."""
65
+ if self.step_mode:
66
+ return True
67
+ return node_name in self.breakpoints
68
+
69
+
25
70
  class UiPathDebugBridge(ABC):
26
71
  """Abstract interface for debug communication.
27
72
 
@@ -77,6 +122,15 @@ class UiPathDebugBridge(ABC):
77
122
  """Wait for resume command from debugger."""
78
123
  pass
79
124
 
125
+ @abstractmethod
126
+ def get_breakpoints(self) -> List[str]:
127
+ """Get nodes to suspend execution at.
128
+
129
+ Returns:
130
+ List of node names to suspend at, or ["*"] for all nodes (step mode)
131
+ """
132
+ pass
133
+
80
134
 
81
135
  class ConsoleDebugBridge(UiPathDebugBridge):
82
136
  """Console-based debug bridge for local development."""
@@ -89,15 +143,12 @@ class ConsoleDebugBridge(UiPathDebugBridge):
89
143
  """
90
144
  self.console = Console()
91
145
  self.verbose = verbose
146
+ self.state = DebuggerState()
92
147
 
93
148
  async def connect(self) -> None:
94
149
  """Connect to console debugger."""
95
150
  self.console.print()
96
- self.console.print("[bold cyan]─" * 40)
97
- self.console.print("[bold cyan]Debug Mode")
98
- self.console.print("[dim]Press ENTER to continue | Type 'quit' to exit")
99
- self.console.print("[bold cyan]─" * 40)
100
- self.console.print()
151
+ self._print_help()
101
152
 
102
153
  async def disconnect(self) -> None:
103
154
  """Cleanup."""
@@ -182,18 +233,128 @@ class ConsoleDebugBridge(UiPathDebugBridge):
182
233
 
183
234
  async def wait_for_resume(self) -> Any:
184
235
  """Wait for user to press Enter or type commands."""
185
- self.console.print()
186
- self.console.print("[cyan]> [/cyan]", end="")
236
+ while True: # Keep looping until we get a resume command
237
+ self.console.print()
187
238
 
188
- # Run input() in executor to not block async loop
189
- loop = asyncio.get_running_loop()
190
- user_input = await loop.run_in_executor(None, input)
239
+ # Run input() in executor to not block async loop
240
+ loop = asyncio.get_running_loop()
241
+ user_input = await loop.run_in_executor(None, lambda: input("> "))
191
242
 
192
- if user_input.strip().lower() == "quit":
243
+ command_result = self._parse_command(user_input.strip())
244
+
245
+ # Handle commands that need another prompt
246
+ if command_result["command"] in [
247
+ DebugCommand.BREAKPOINT,
248
+ DebugCommand.LIST_BREAKPOINTS,
249
+ DebugCommand.CLEAR_BREAKPOINT,
250
+ DebugCommand.HELP,
251
+ ]:
252
+ # These commands don't resume execution, loop again
253
+ continue
254
+
255
+ # Reset step modes if continuing
256
+ if command_result["command"] == DebugCommand.CONTINUE:
257
+ self.state.step_mode = False
258
+
259
+ if command_result["command"] == DebugCommand.QUIT:
260
+ raise DebuggerQuitException("User requested exit")
261
+
262
+ # Commands that resume execution: CONTINUE, STEP
263
+ self.console.print()
264
+ return command_result
265
+
266
+ def get_breakpoints(self) -> List[str]:
267
+ """Get nodes to suspend execution at."""
268
+ if self.state.step_mode:
269
+ return ["*"] # Suspend at all nodes
270
+ return list(self.state.breakpoints) # Only suspend at breakpoints
271
+
272
+ def _parse_command(self, user_input: str) -> Dict[str, Any]:
273
+ """Parse user command input.
274
+
275
+ Returns:
276
+ Dict with 'command' and optional 'args'
277
+ """
278
+ if not user_input:
279
+ return {"command": DebugCommand.CONTINUE, "args": None}
280
+
281
+ parts = user_input.lower().split()
282
+ cmd = parts[0]
283
+ args = parts[1:] if len(parts) > 1 else []
284
+
285
+ if cmd in ["c", "continue"]:
286
+ return {"command": DebugCommand.CONTINUE, "args": None}
287
+
288
+ elif cmd in ["s", "step"]:
289
+ self.state.step_mode = True
290
+ return {"command": DebugCommand.STEP, "args": None}
291
+
292
+ elif cmd in ["b", "break", "breakpoint"]:
293
+ if not args:
294
+ self.console.print(
295
+ "[red]Error: breakpoint command requires a node name[/red]"
296
+ )
297
+ return {"command": DebugCommand.HELP, "args": None}
298
+ node_name = " ".join(args)
299
+ self.state.add_breakpoint(node_name)
300
+ self.console.print(f"[green]✓ Breakpoint set at: {node_name}[/green]")
301
+ return {"command": DebugCommand.BREAKPOINT, "args": {"node": node_name}}
302
+
303
+ elif cmd in ["l", "list"]:
304
+ self._list_breakpoints()
305
+ return {"command": DebugCommand.LIST_BREAKPOINTS, "args": None}
306
+
307
+ elif cmd in ["r", "remove", "delete"]:
308
+ if not args:
309
+ self.console.print("[yellow]Removing all breakpoints[/yellow]")
310
+ self.state.clear_all_breakpoints()
311
+ else:
312
+ node_name = " ".join(args)
313
+ self.state.remove_breakpoint(node_name)
314
+ self.console.print(f"[green]✓ Breakpoint removed: {node_name}[/green]")
315
+ return {
316
+ "command": DebugCommand.CLEAR_BREAKPOINT,
317
+ "args": {"node": " ".join(args) if args else None},
318
+ }
319
+
320
+ elif cmd in ["q", "quit", "exit"]:
193
321
  raise KeyboardInterrupt("User requested exit")
194
322
 
323
+ elif cmd in ["h", "help", "?"]:
324
+ self._print_help()
325
+ return {"command": DebugCommand.HELP, "args": None}
326
+
327
+ else:
328
+ self.console.print(f"[red]Unknown command: {cmd}[/red]")
329
+ self.console.print("[dim]Type 'help' for available commands[/dim]")
330
+ return {"command": DebugCommand.HELP, "args": None}
331
+
332
+ def _list_breakpoints(self) -> None:
333
+ """List all active breakpoints."""
334
+ if not self.state.breakpoints:
335
+ self.console.print("[dim]No breakpoints set[/dim]")
336
+ else:
337
+ self.console.print("[yellow]Active breakpoints:[/yellow]")
338
+ for i, bp in enumerate(sorted(self.state.breakpoints), 1):
339
+ self.console.print(f" {i}. [cyan]{bp}[/cyan]")
340
+
341
+ def _print_help(self) -> None:
342
+ """Print available commands."""
343
+ self.console.print("[bold cyan]Debug Mode Commands[/bold cyan]")
344
+ self.console.print(
345
+ " [yellow]c, continue[/yellow] Continue until next breakpoint"
346
+ )
347
+ self.console.print(" [yellow]s, step[/yellow] Step to next node")
348
+ self.console.print(
349
+ " [yellow]b <node>[/yellow] Set breakpoint at <node>"
350
+ )
351
+ self.console.print(" [yellow]l, list[/yellow] List all breakpoints")
352
+ self.console.print(
353
+ " [yellow]r <node>[/yellow] Remove breakpoint at <node>"
354
+ )
355
+ self.console.print(" [yellow]h, help[/yellow] Show help")
356
+ self.console.print(" [yellow]q, quit[/yellow] Exit debugger")
195
357
  self.console.print()
196
- return user_input
197
358
 
198
359
  def _print_json(self, data: Dict[str, Any], label: str = "data") -> None:
199
360
  """Print JSON data with enhanced hierarchy."""
@@ -289,6 +450,7 @@ class SignalRDebugBridge(UiPathDebugBridge):
289
450
  self.hub_url = hub_url
290
451
  self.access_token = access_token
291
452
  self.headers = headers or {}
453
+ self.state = DebuggerState()
292
454
  self._client: Optional[SignalRClient] = None
293
455
  self._connected_event = asyncio.Event()
294
456
  self._resume_event: Optional[asyncio.Event] = None
@@ -396,6 +558,12 @@ class SignalRDebugBridge(UiPathDebugBridge):
396
558
  logger.info("Resume command received")
397
559
  return self._resume_data
398
560
 
561
+ def get_breakpoints(self) -> List[str]:
562
+ """Get nodes to suspend execution at."""
563
+ if self.state.step_mode:
564
+ return ["*"] # Suspend at all nodes
565
+ return list(self.state.breakpoints) # Only suspend at breakpoints
566
+
399
567
  async def _send(self, method: str, data: Dict[str, Any]) -> None:
400
568
  """Send message to SignalR hub."""
401
569
  if not self._client:
@@ -11,9 +11,10 @@ from .._runtime._contracts import (
11
11
  UiPathRuntimeContext,
12
12
  UiPathRuntimeFactory,
13
13
  UiPathRuntimeResult,
14
+ UiPathRuntimeStatus,
14
15
  UiPathRuntimeStreamNotSupportedError,
15
16
  )
16
- from ._bridge import UiPathDebugBridge
17
+ from ._bridge import DebuggerQuitException, UiPathDebugBridge
17
18
 
18
19
  logger = logging.getLogger(__name__)
19
20
 
@@ -91,8 +92,15 @@ class UiPathDebugRuntime(UiPathBaseRuntime, Generic[T, C]):
91
92
  final_result: Optional[UiPathRuntimeResult] = None
92
93
  execution_completed = False
93
94
 
95
+ # Starting in paused state - wait for breakpoints and resume
96
+ await self.debug_bridge.wait_for_resume()
97
+
94
98
  # Keep streaming until execution completes (not just paused at breakpoint)
95
99
  while not execution_completed:
100
+ # Update breakpoints from debug bridge
101
+ self._inner_runtime.context.breakpoints = (
102
+ self.debug_bridge.get_breakpoints()
103
+ )
96
104
  # Stream events from inner runtime
97
105
  async for event in self._inner_runtime.stream():
98
106
  # Handle final result
@@ -101,10 +109,18 @@ class UiPathDebugRuntime(UiPathBaseRuntime, Generic[T, C]):
101
109
 
102
110
  # Check if it's a breakpoint result
103
111
  if isinstance(event, UiPathBreakpointResult):
104
- # Hit a breakpoint - wait for resume and continue
105
- await self.debug_bridge.emit_breakpoint_hit(event)
106
- await self.debug_bridge.wait_for_resume()
107
- self._inner_runtime.context.resume = True
112
+ try:
113
+ # Hit a breakpoint - wait for resume and continue
114
+ await self.debug_bridge.emit_breakpoint_hit(event)
115
+ await self.debug_bridge.wait_for_resume()
116
+
117
+ self._inner_runtime.context.resume = True
118
+
119
+ except DebuggerQuitException:
120
+ final_result = UiPathRuntimeResult(
121
+ status=UiPathRuntimeStatus.SUCCESSFUL,
122
+ )
123
+ execution_completed = True
108
124
  else:
109
125
  # Normal completion or suspension with dynamic interrupt
110
126
  execution_completed = True
@@ -382,6 +382,7 @@ class UiPathRuntimeContext(BaseModel):
382
382
  log_handler: Optional[logging.Handler] = None
383
383
  chat_handler: Optional[UiPathConversationHandler] = None
384
384
  is_conversational: Optional[bool] = None
385
+ breakpoints: Optional[List[str]] = None
385
386
 
386
387
  model_config = {"arbitrary_types_allowed": True, "extra": "allow"}
387
388
 
@@ -2823,7 +2823,7 @@ wheels = [
2823
2823
 
2824
2824
  [[package]]
2825
2825
  name = "uipath"
2826
- version = "2.1.105"
2826
+ version = "2.1.106"
2827
2827
  source = { editable = "." }
2828
2828
  dependencies = [
2829
2829
  { name = "azure-monitor-opentelemetry" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes