uipath 2.1.126__tar.gz → 2.1.127__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 (450) hide show
  1. {uipath-2.1.126 → uipath-2.1.127}/.pipelines/security-scans.yml +3 -3
  2. {uipath-2.1.126 → uipath-2.1.127}/PKG-INFO +1 -1
  3. {uipath-2.1.126 → uipath-2.1.127}/pyproject.toml +1 -1
  4. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_resources/SDK_REFERENCE.md +2 -2
  5. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/connections_service.py +171 -14
  6. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/connections.py +1 -0
  7. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_connections_service.py +261 -4
  8. {uipath-2.1.126 → uipath-2.1.127}/uv.lock +1 -1
  9. {uipath-2.1.126 → uipath-2.1.127}/.claude/agents/command-tester.md +0 -0
  10. {uipath-2.1.126 → uipath-2.1.127}/.claude/agents/test-reporter.md +0 -0
  11. {uipath-2.1.126 → uipath-2.1.127}/.claude/commands/prepare-pr.md +0 -0
  12. {uipath-2.1.126 → uipath-2.1.127}/.cursorrules +0 -0
  13. {uipath-2.1.126 → uipath-2.1.127}/.editorconfig +0 -0
  14. {uipath-2.1.126 → uipath-2.1.127}/.gitattributes +0 -0
  15. {uipath-2.1.126 → uipath-2.1.127}/.github/labeler.yml +0 -0
  16. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/auto-label.yml +0 -0
  17. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/cd.yml +0 -0
  18. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/ci.yml +0 -0
  19. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/commitlint.yml +0 -0
  20. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/integration_tests.yml +0 -0
  21. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/lint.yml +0 -0
  22. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/publish-dev.yml +0 -0
  23. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/publish-docs.yml +0 -0
  24. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/slack.yml +0 -0
  25. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/test-uipath-langchain.yml +0 -0
  26. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/test-uipath-llamaindex.yml +0 -0
  27. {uipath-2.1.126 → uipath-2.1.127}/.github/workflows/test.yml +0 -0
  28. {uipath-2.1.126 → uipath-2.1.127}/.gitignore +0 -0
  29. {uipath-2.1.126 → uipath-2.1.127}/.pipelines/variables.yml +0 -0
  30. {uipath-2.1.126 → uipath-2.1.127}/.pre-commit-config.yaml +0 -0
  31. {uipath-2.1.126 → uipath-2.1.127}/.python-version +0 -0
  32. {uipath-2.1.126 → uipath-2.1.127}/.vscode/extensions.json +0 -0
  33. {uipath-2.1.126 → uipath-2.1.127}/.vscode/launch.json +0 -0
  34. {uipath-2.1.126 → uipath-2.1.127}/.vscode/settings.json +0 -0
  35. {uipath-2.1.126 → uipath-2.1.127}/CONTRIBUTING.md +0 -0
  36. {uipath-2.1.126 → uipath-2.1.127}/LICENSE +0 -0
  37. {uipath-2.1.126 → uipath-2.1.127}/README.md +0 -0
  38. {uipath-2.1.126 → uipath-2.1.127}/docs/AutomationSuite.md +0 -0
  39. {uipath-2.1.126 → uipath-2.1.127}/docs/CONTRIBUTING.md +0 -0
  40. {uipath-2.1.126 → uipath-2.1.127}/docs/FAQ.md +0 -0
  41. {uipath-2.1.126 → uipath-2.1.127}/docs/assets/env-preparation-failed-dark.png +0 -0
  42. {uipath-2.1.126 → uipath-2.1.127}/docs/assets/env-preparation-failed-light.png +0 -0
  43. {uipath-2.1.126 → uipath-2.1.127}/docs/assets/favicon.png +0 -0
  44. {uipath-2.1.126 → uipath-2.1.127}/docs/assets/llms.txt +0 -0
  45. {uipath-2.1.126 → uipath-2.1.127}/docs/assets/logo-dark.svg +0 -0
  46. {uipath-2.1.126 → uipath-2.1.127}/docs/assets/logo-light.svg +0 -0
  47. {uipath-2.1.126 → uipath-2.1.127}/docs/cli/index.md +0 -0
  48. {uipath-2.1.126 → uipath-2.1.127}/docs/core/actions.md +0 -0
  49. {uipath-2.1.126 → uipath-2.1.127}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  50. {uipath-2.1.126 → uipath-2.1.127}/docs/core/assets/cloud_env_var_light.gif +0 -0
  51. {uipath-2.1.126 → uipath-2.1.127}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  52. {uipath-2.1.126 → uipath-2.1.127}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  53. {uipath-2.1.126 → uipath-2.1.127}/docs/core/assets/copy_path_dark.png +0 -0
  54. {uipath-2.1.126 → uipath-2.1.127}/docs/core/assets/copy_path_light.png +0 -0
  55. {uipath-2.1.126 → uipath-2.1.127}/docs/core/assets.md +0 -0
  56. {uipath-2.1.126 → uipath-2.1.127}/docs/core/attachments.md +0 -0
  57. {uipath-2.1.126 → uipath-2.1.127}/docs/core/buckets.md +0 -0
  58. {uipath-2.1.126 → uipath-2.1.127}/docs/core/connections.md +0 -0
  59. {uipath-2.1.126 → uipath-2.1.127}/docs/core/context_grounding.md +0 -0
  60. {uipath-2.1.126 → uipath-2.1.127}/docs/core/documents.md +0 -0
  61. {uipath-2.1.126 → uipath-2.1.127}/docs/core/documents_models.md +0 -0
  62. {uipath-2.1.126 → uipath-2.1.127}/docs/core/environment_variables.md +0 -0
  63. {uipath-2.1.126 → uipath-2.1.127}/docs/core/getting_started.md +0 -0
  64. {uipath-2.1.126 → uipath-2.1.127}/docs/core/jobs.md +0 -0
  65. {uipath-2.1.126 → uipath-2.1.127}/docs/core/llm_gateway.md +0 -0
  66. {uipath-2.1.126 → uipath-2.1.127}/docs/core/processes.md +0 -0
  67. {uipath-2.1.126 → uipath-2.1.127}/docs/core/queues.md +0 -0
  68. {uipath-2.1.126 → uipath-2.1.127}/docs/core/traced.md +0 -0
  69. {uipath-2.1.126 → uipath-2.1.127}/docs/hooks.py +0 -0
  70. {uipath-2.1.126 → uipath-2.1.127}/docs/index.md +0 -0
  71. {uipath-2.1.126 → uipath-2.1.127}/docs/javascripts/extra.js +0 -0
  72. {uipath-2.1.126 → uipath-2.1.127}/docs/overrides/main.html +0 -0
  73. {uipath-2.1.126 → uipath-2.1.127}/docs/overrides/partials/actions.html +0 -0
  74. {uipath-2.1.126 → uipath-2.1.127}/docs/overrides/partials/logo.html +0 -0
  75. {uipath-2.1.126 → uipath-2.1.127}/docs/release_policy.md +0 -0
  76. {uipath-2.1.126 → uipath-2.1.127}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  77. {uipath-2.1.126 → uipath-2.1.127}/docs/stylesheets/extra.css +0 -0
  78. {uipath-2.1.126 → uipath-2.1.127}/justfile +0 -0
  79. {uipath-2.1.126 → uipath-2.1.127}/mkdocs.yml +0 -0
  80. {uipath-2.1.126 → uipath-2.1.127}/py.typed +0 -0
  81. {uipath-2.1.126 → uipath-2.1.127}/samples/asset-modifier-agent/.env.example +0 -0
  82. {uipath-2.1.126 → uipath-2.1.127}/samples/asset-modifier-agent/README.md +0 -0
  83. {uipath-2.1.126 → uipath-2.1.127}/samples/asset-modifier-agent/input.json +0 -0
  84. {uipath-2.1.126 → uipath-2.1.127}/samples/asset-modifier-agent/main.py +0 -0
  85. {uipath-2.1.126 → uipath-2.1.127}/samples/asset-modifier-agent/pyproject.toml +0 -0
  86. {uipath-2.1.126 → uipath-2.1.127}/samples/asset-modifier-agent/uv.lock +0 -0
  87. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/README.md +0 -0
  88. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/eval-sets/default.json +0 -0
  89. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/eval-sets/legacy.json +0 -0
  90. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/contains.json +0 -0
  91. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/correct-operator-evaluator.json +0 -0
  92. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/custom/correct_operator.py +0 -0
  93. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/custom/types/correct-operator-evaluator-types.json +0 -0
  94. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/exact-match.json +0 -0
  95. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/json-similarity.json +0 -0
  96. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/legacy-equality.json +0 -0
  97. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/legacy-json-similarity.json +0 -0
  98. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/legacy-llm-as-a-judge.json +0 -0
  99. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/legacy-trajectory.json +0 -0
  100. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/llm-judge-semantic-similarity.json +0 -0
  101. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/llm-judge-strict-json-similarity.json +0 -0
  102. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/evals/evaluators/trajectory.json +0 -0
  103. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/main.py +0 -0
  104. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/pyproject.toml +0 -0
  105. {uipath-2.1.126 → uipath-2.1.127}/samples/calculator/uipath.json +0 -0
  106. {uipath-2.1.126 → uipath-2.1.127}/samples/event-trigger/.python-version +0 -0
  107. {uipath-2.1.126 → uipath-2.1.127}/samples/event-trigger/README.md +0 -0
  108. {uipath-2.1.126 → uipath-2.1.127}/samples/event-trigger/main.py +0 -0
  109. {uipath-2.1.126 → uipath-2.1.127}/samples/event-trigger/pyproject.toml +0 -0
  110. {uipath-2.1.126 → uipath-2.1.127}/samples/google-ADK-agent/.env.example +0 -0
  111. {uipath-2.1.126 → uipath-2.1.127}/samples/google-ADK-agent/README.md +0 -0
  112. {uipath-2.1.126 → uipath-2.1.127}/samples/google-ADK-agent/input.json +0 -0
  113. {uipath-2.1.126 → uipath-2.1.127}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  114. {uipath-2.1.126 → uipath-2.1.127}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  115. {uipath-2.1.126 → uipath-2.1.127}/samples/google-ADK-agent/pyproject.toml +0 -0
  116. {uipath-2.1.126 → uipath-2.1.127}/samples/google-ADK-agent/uv.lock +0 -0
  117. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/README.md +0 -0
  118. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/TOOL_EVALUATORS.md +0 -0
  119. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/evals/eval-sets/default.json +0 -0
  120. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/evals/evaluators/tool-call-args.json +0 -0
  121. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/evals/evaluators/tool-call-count.json +0 -0
  122. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/evals/evaluators/tool-call-order.json +0 -0
  123. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/evals/evaluators/tool-call-output.json +0 -0
  124. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/evals/evaluators/trajectory.json +0 -0
  125. {uipath-2.1.126 → uipath-2.1.127}/samples/weather_tools/main.py +0 -0
  126. {uipath-2.1.126 → uipath-2.1.127}/scripts/debug_test.py +0 -0
  127. {uipath-2.1.126 → uipath-2.1.127}/scripts/lint_httpx_client.py +0 -0
  128. {uipath-2.1.126 → uipath-2.1.127}/scripts/update_agents_md.py +0 -0
  129. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/__init__.py +0 -0
  130. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/README.md +0 -0
  131. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/__init__.py +0 -0
  132. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  133. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  134. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/_models.py +0 -0
  135. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  136. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  137. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  138. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/_utils.py +0 -0
  139. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/auth_config_25_10.json +0 -0
  140. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/auth_config_cloud.json +0 -0
  141. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/index.html +0 -0
  142. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/localhost.crt +0 -0
  143. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_auth/localhost.key +0 -0
  144. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_debug/_bridge.py +0 -0
  145. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_debug/_runtime.py +0 -0
  146. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  147. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  148. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  149. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
  150. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  151. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  152. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  153. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  154. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  155. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  156. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  157. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  158. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/__init__.py +0 -0
  159. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
  160. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_evaluate.py +0 -0
  161. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
  162. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_helpers.py +0 -0
  163. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
  164. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
  165. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  166. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
  167. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
  168. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  169. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  170. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  171. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_runtime.py +0 -0
  172. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/_span_collection.py +0 -0
  173. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
  174. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/mocks/input_mocker.py +0 -0
  175. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/mocks/llm_mocker.py +0 -0
  176. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/mocks/mocker.py +0 -0
  177. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
  178. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
  179. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_evals/mocks/mocks.py +0 -0
  180. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_push/models.py +0 -0
  181. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  182. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  183. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  184. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  185. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_runtime/_logging.py +0 -0
  186. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  187. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_runtime/_runtime_factory.py +0 -0
  188. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  189. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  190. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_templates/.rels.template +0 -0
  191. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  192. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_templates/custom_evaluator.py.template +0 -0
  193. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_templates/main.py.template +0 -0
  194. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  195. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_common.py +0 -0
  196. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_console.py +0 -0
  197. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_constants.py +0 -0
  198. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_debug.py +0 -0
  199. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  200. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_folders.py +0 -0
  201. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_input_args.py +0 -0
  202. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  203. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_processes.py +0 -0
  204. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_project_files.py +0 -0
  205. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_resources.py +0 -0
  206. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  207. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_tracing.py +0 -0
  208. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  209. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_add.py +0 -0
  210. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_auth.py +0 -0
  211. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_debug.py +0 -0
  212. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_deploy.py +0 -0
  213. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_dev.py +0 -0
  214. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_eval.py +0 -0
  215. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_init.py +0 -0
  216. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_invoke.py +0 -0
  217. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_new.py +0 -0
  218. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_pack.py +0 -0
  219. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_publish.py +0 -0
  220. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_pull.py +0 -0
  221. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_push.py +0 -0
  222. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_register.py +0 -0
  223. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/cli_run.py +0 -0
  224. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/middlewares.py +0 -0
  225. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/models/__init__.py +0 -0
  226. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/models/runtime_schema.py +0 -0
  227. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_cli/spinner.py +0 -0
  228. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_config.py +0 -0
  229. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_events/__init__.py +0 -0
  230. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_events/_event_bus.py +0 -0
  231. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_events/_events.py +0 -0
  232. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_execution_context.py +0 -0
  233. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_folder_context.py +0 -0
  234. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_resources/AGENTS.md +0 -0
  235. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_resources/CLAUDE.md +0 -0
  236. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_resources/CLI_REFERENCE.md +0 -0
  237. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_resources/REQUIRED_STRUCTURE.md +0 -0
  238. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/__init__.py +0 -0
  239. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/_base_service.py +0 -0
  240. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/actions_service.py +0 -0
  241. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/api_client.py +0 -0
  242. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/assets_service.py +0 -0
  243. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/attachments_service.py +0 -0
  244. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/buckets_service.py +0 -0
  245. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/context_grounding_service.py +0 -0
  246. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/documents_service.py +0 -0
  247. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/entities_service.py +0 -0
  248. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/external_application_service.py +0 -0
  249. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/folder_service.py +0 -0
  250. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/guardrails_service.py +0 -0
  251. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/jobs_service.py +0 -0
  252. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/llm_gateway_service.py +0 -0
  253. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/processes_service.py +0 -0
  254. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_services/queues_service.py +0 -0
  255. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_uipath.py +0 -0
  256. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/__init__.py +0 -0
  257. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_auth.py +0 -0
  258. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_bindings.py +0 -0
  259. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_endpoint.py +0 -0
  260. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_logs.py +0 -0
  261. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_request_override.py +0 -0
  262. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_request_spec.py +0 -0
  263. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_ssl_context.py +0 -0
  264. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_url.py +0 -0
  265. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/_user_agent.py +0 -0
  266. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/_utils/constants.py +0 -0
  267. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/_utils.py +0 -0
  268. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/__init__.py +0 -0
  269. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/async_stream.py +0 -0
  270. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/citation.py +0 -0
  271. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/content.py +0 -0
  272. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/conversation.py +0 -0
  273. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/event.py +0 -0
  274. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/exchange.py +0 -0
  275. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/message.py +0 -0
  276. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/meta.py +0 -0
  277. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/conversation/tool.py +0 -0
  278. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/models/agent.py +0 -0
  279. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/models/evals.py +0 -0
  280. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/react/__init__.py +0 -0
  281. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/react/prompts.py +0 -0
  282. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/agent/react/tools.py +0 -0
  283. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/_helpers/__init__.py +0 -0
  284. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/_helpers/evaluators_helpers.py +0 -0
  285. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/_helpers/helpers.py +0 -0
  286. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/__init__.py +0 -0
  287. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  288. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/contains_evaluator.py +0 -0
  289. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  290. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  291. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/legacy_base_evaluator.py +0 -0
  292. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/legacy_deterministic_evaluator_base.py +0 -0
  293. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/legacy_exact_match_evaluator.py +0 -0
  294. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/legacy_json_similarity_evaluator.py +0 -0
  295. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/legacy_llm_as_judge_evaluator.py +0 -0
  296. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/legacy_trajectory_evaluator.py +0 -0
  297. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  298. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/llm_judge_output_evaluator.py +0 -0
  299. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/llm_judge_trajectory_evaluator.py +0 -0
  300. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/output_evaluator.py +0 -0
  301. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/tool_call_args_evaluator.py +0 -0
  302. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/tool_call_count_evaluator.py +0 -0
  303. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/tool_call_order_evaluator.py +0 -0
  304. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators/tool_call_output_evaluator.py +0 -0
  305. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/ContainsEvaluator.json +0 -0
  306. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/ExactMatchEvaluator.json +0 -0
  307. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/JsonSimilarityEvaluator.json +0 -0
  308. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/LLMJudgeOutputEvaluator.json +0 -0
  309. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/LLMJudgeSimulationTrajectoryEvaluator.json +0 -0
  310. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/LLMJudgeStrictJSONSimilarityOutputEvaluator.json +0 -0
  311. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/LLMJudgeTrajectoryEvaluator.json +0 -0
  312. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/ToolCallArgsEvaluator.json +0 -0
  313. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/ToolCallCountEvaluator.json +0 -0
  314. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/ToolCallOrderEvaluator.json +0 -0
  315. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/ToolCallOutputEvaluator.json +0 -0
  316. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/evaluators_types/generate_types.py +0 -0
  317. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/mocks/__init__.py +0 -0
  318. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/mocks/mockable.py +0 -0
  319. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/models/__init__.py +0 -0
  320. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/models/llm_judge_types.py +0 -0
  321. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/eval/models/models.py +0 -0
  322. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/__init__.py +0 -0
  323. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/action_schema.py +0 -0
  324. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/actions.py +0 -0
  325. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/assets.py +0 -0
  326. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/attachment.py +0 -0
  327. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/auth.py +0 -0
  328. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/buckets.py +0 -0
  329. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/context_grounding.py +0 -0
  330. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/context_grounding_index.py +0 -0
  331. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/documents.py +0 -0
  332. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/entities.py +0 -0
  333. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/errors.py +0 -0
  334. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/exceptions.py +0 -0
  335. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/guardrails.py +0 -0
  336. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/interrupt_models.py +0 -0
  337. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/job.py +0 -0
  338. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/llm_gateway.py +0 -0
  339. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/processes.py +0 -0
  340. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/models/queues.py +0 -0
  341. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/py.typed +0 -0
  342. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/telemetry/__init__.py +0 -0
  343. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/telemetry/_constants.py +0 -0
  344. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/telemetry/_track.py +0 -0
  345. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/tracing/__init__.py +0 -0
  346. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/tracing/_otel_exporters.py +0 -0
  347. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/tracing/_traced.py +0 -0
  348. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/tracing/_utils.py +0 -0
  349. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/utils/__init__.py +0 -0
  350. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/utils/_endpoints_manager.py +0 -0
  351. {uipath-2.1.126 → uipath-2.1.127}/src/uipath/utils/dynamic_schema.py +0 -0
  352. {uipath-2.1.126 → uipath-2.1.127}/testcases/apicalls-testcase/main.py +0 -0
  353. {uipath-2.1.126 → uipath-2.1.127}/testcases/apicalls-testcase/pyproject.toml +0 -0
  354. {uipath-2.1.126 → uipath-2.1.127}/testcases/apicalls-testcase/run.sh +0 -0
  355. {uipath-2.1.126 → uipath-2.1.127}/testcases/apicalls-testcase/src/assert.py +0 -0
  356. {uipath-2.1.126 → uipath-2.1.127}/testcases/basic-testcase/main.py +0 -0
  357. {uipath-2.1.126 → uipath-2.1.127}/testcases/basic-testcase/pyproject.toml +0 -0
  358. {uipath-2.1.126 → uipath-2.1.127}/testcases/basic-testcase/run.sh +0 -0
  359. {uipath-2.1.126 → uipath-2.1.127}/testcases/basic-testcase/src/assert.py +0 -0
  360. {uipath-2.1.126 → uipath-2.1.127}/testcases/common/validate_output.sh +0 -0
  361. {uipath-2.1.126 → uipath-2.1.127}/testcases/langchain-cross/agent.mermaid +0 -0
  362. {uipath-2.1.126 → uipath-2.1.127}/testcases/langchain-cross/langgraph.json +0 -0
  363. {uipath-2.1.126 → uipath-2.1.127}/testcases/langchain-cross/pyproject.toml +0 -0
  364. {uipath-2.1.126 → uipath-2.1.127}/testcases/langchain-cross/run.sh +0 -0
  365. {uipath-2.1.126 → uipath-2.1.127}/testcases/langchain-cross/src/assert.py +0 -0
  366. {uipath-2.1.126 → uipath-2.1.127}/testcases/langchain-cross/src/main.py +0 -0
  367. {uipath-2.1.126 → uipath-2.1.127}/testcases/llamaindex-cross/agent.mermaid +0 -0
  368. {uipath-2.1.126 → uipath-2.1.127}/testcases/llamaindex-cross/llama_index.json +0 -0
  369. {uipath-2.1.126 → uipath-2.1.127}/testcases/llamaindex-cross/pyproject.toml +0 -0
  370. {uipath-2.1.126 → uipath-2.1.127}/testcases/llamaindex-cross/run.sh +0 -0
  371. {uipath-2.1.126 → uipath-2.1.127}/testcases/llamaindex-cross/src/assert.py +0 -0
  372. {uipath-2.1.126 → uipath-2.1.127}/testcases/llamaindex-cross/src/main.py +0 -0
  373. {uipath-2.1.126 → uipath-2.1.127}/testcases/tools-evals/pyproject.toml +0 -0
  374. {uipath-2.1.126 → uipath-2.1.127}/testcases/tools-evals/run.sh +0 -0
  375. {uipath-2.1.126 → uipath-2.1.127}/testcases/tools-evals/src/assert.py +0 -0
  376. {uipath-2.1.126 → uipath-2.1.127}/tests/__init__.py +0 -0
  377. {uipath-2.1.126 → uipath-2.1.127}/tests/agent/models/test_agent.py +0 -0
  378. {uipath-2.1.126 → uipath-2.1.127}/tests/agent/models/test_evals.py +0 -0
  379. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/conftest.py +0 -0
  380. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/eval/evals/eval-sets/default.json +0 -0
  381. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/eval/evals/evaluators/equality.json +0 -0
  382. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/eval/mocks/test_input_mocker.py +0 -0
  383. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/eval/mocks/test_mocks.py +0 -0
  384. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/eval/test_evaluate.py +0 -0
  385. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/eval/test_progress_reporter.py +0 -0
  386. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  387. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/mocks/bindings_script.py +0 -0
  388. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/mocks/pyproject.toml +0 -0
  389. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/mocks/simple_script.py +0 -0
  390. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/mocks/uipath-mock.json +0 -0
  391. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  392. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/models/test_runtime_schema.py +0 -0
  393. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_auth.py +0 -0
  394. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_hitl.py +0 -0
  395. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_init.py +0 -0
  396. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_init_agents_md.py +0 -0
  397. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_input_args.py +0 -0
  398. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_invoke.py +0 -0
  399. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_new.py +0 -0
  400. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_oidc_utils.py +0 -0
  401. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_pack.py +0 -0
  402. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  403. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_portal_service_refresh_token.py +0 -0
  404. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_publish.py +0 -0
  405. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_pull.py +0 -0
  406. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_push.py +0 -0
  407. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_run.py +0 -0
  408. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/test_utils.py +0 -0
  409. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/utils/common.py +0 -0
  410. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/utils/project_details.py +0 -0
  411. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/utils/test_dynamic_schema.py +0 -0
  412. {uipath-2.1.126 → uipath-2.1.127}/tests/cli/utils/uipath_json.py +0 -0
  413. {uipath-2.1.126 → uipath-2.1.127}/tests/conftest.py +0 -0
  414. {uipath-2.1.126 → uipath-2.1.127}/tests/evaluators/__init__.py +0 -0
  415. {uipath-2.1.126 → uipath-2.1.127}/tests/evaluators/test_evaluator_aggregation.py +0 -0
  416. {uipath-2.1.126 → uipath-2.1.127}/tests/evaluators/test_evaluator_helpers.py +0 -0
  417. {uipath-2.1.126 → uipath-2.1.127}/tests/evaluators/test_evaluator_methods.py +0 -0
  418. {uipath-2.1.126 → uipath-2.1.127}/tests/evaluators/test_evaluator_schemas.py +0 -0
  419. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/conftest.py +0 -0
  420. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_actions_service.py +0 -0
  421. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_api_client.py +0 -0
  422. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_assets_service.py +0 -0
  423. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_attachments_service.py +0 -0
  424. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_base_service.py +0 -0
  425. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_buckets_service.py +0 -0
  426. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_context_grounding_service.py +0 -0
  427. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_documents_service.py +0 -0
  428. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_entities_service.py +0 -0
  429. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_external_application_service.py +0 -0
  430. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_folder_service.py +0 -0
  431. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_guardrails_service.py +0 -0
  432. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_jobs_service.py +0 -0
  433. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_llm_integration.py +0 -0
  434. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  435. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_llm_service.py +0 -0
  436. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_processes_service.py +0 -0
  437. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_queues_service.py +0 -0
  438. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  439. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/tests_data/documents_service/classification_response.json +0 -0
  440. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  441. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/tests_data/documents_service/ixp_extraction_response.json +0 -0
  442. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/tests_data/documents_service/modern_extraction_response.json +0 -0
  443. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  444. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/test_bindings.py +0 -0
  445. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/test_config.py +0 -0
  446. {uipath-2.1.126 → uipath-2.1.127}/tests/sdk/test_uipath_caching.py +0 -0
  447. {uipath-2.1.126 → uipath-2.1.127}/tests/tracing/test_otel_exporters.py +0 -0
  448. {uipath-2.1.126 → uipath-2.1.127}/tests/tracing/test_span_utils.py +0 -0
  449. {uipath-2.1.126 → uipath-2.1.127}/tests/tracing/test_traced.py +0 -0
  450. {uipath-2.1.126 → uipath-2.1.127}/tests/tracing/test_tracing_manager.py +0 -0
@@ -35,8 +35,8 @@ stages:
35
35
  parameters:
36
36
  OS: linux
37
37
  azureSubscription: $(azureInternalProductionEaConnectionName)
38
- FOSSAFlags: '--project "Coded Agents" --branch "$(Build.SourceBranch)" --revision "$(Build.SourceVersion)-$(Build.BuildId)"'
39
- FOSSATestFlags: '--project "Coded Agents" --revision "$(Build.SourceVersion)-$(Build.BuildId)"'
38
+ FOSSAFlags: '--project "UiPath Python SDK" --branch "$(Build.SourceBranch)" --revision "$(Build.SourceVersion)-$(Build.BuildId)"'
39
+ FOSSATestFlags: '--project "UiPath Python SDK" --revision "$(Build.SourceVersion)-$(Build.BuildId)"'
40
40
  ${{ if contains(variables['Build.SourceBranch'], 'main') }}:
41
41
  publishSecurityReports: true
42
42
 
@@ -50,4 +50,4 @@ stages:
50
50
  parameters:
51
51
  os: 'linux64'
52
52
  language: 'python'
53
- azureSubscription: $(azureInternalProductionEaConnectionName)
53
+ azureSubscription: $(azureInternalProductionEaConnectionName)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.1.126
3
+ Version: 2.1.127
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.126"
3
+ version = "2.1.127"
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"
@@ -168,10 +168,10 @@ sdk.connections.list(name: Optional[str]=None, folder_path: Optional[str]=None,
168
168
  sdk.connections.list_async(name: Optional[str]=None, folder_path: Optional[str]=None, folder_key: Optional[str]=None, connector_key: Optional[str]=None, skip: Optional[int]=None, top: Optional[int]=None) -> typing.List[uipath.models.connections.Connection]
169
169
 
170
170
  # Synchronously retrieve connection API metadata.
171
- sdk.connections.metadata(element_instance_id: int, tool_path: str, schema_mode: bool=True) -> uipath.models.connections.ConnectionMetadata
171
+ sdk.connections.metadata(element_instance_id: int, connector_key: str, tool_path: str, parameters: Optional[Dict[str, str]]=None, schema_mode: bool=True, max_jit_depth: int=5) -> uipath.models.connections.ConnectionMetadata
172
172
 
173
173
  # Asynchronously retrieve connection API metadata.
174
- sdk.connections.metadata_async(element_instance_id: int, tool_path: str, schema_mode: bool=True) -> uipath.models.connections.ConnectionMetadata
174
+ sdk.connections.metadata_async(element_instance_id: int, connector_key: str, tool_path: str, parameters: Optional[Dict[str, str]]=None, schema_mode: bool=True, max_jit_depth: int=5) -> uipath.models.connections.ConnectionMetadata
175
175
 
176
176
  # Retrieve connection details by its key.
177
177
  sdk.connections.retrieve(key: str) -> uipath.models.connections.Connection
@@ -1,6 +1,7 @@
1
1
  import json
2
2
  import logging
3
3
  from typing import Any, Dict, List, Optional
4
+ from urllib.parse import parse_qsl, quote, urlsplit
4
5
 
5
6
  from httpx import Response
6
7
 
@@ -60,24 +61,77 @@ class ConnectionsService(BaseService):
60
61
  hide_output=True,
61
62
  )
62
63
  def metadata(
63
- self, element_instance_id: int, tool_path: str, schema_mode: bool = True
64
+ self,
65
+ element_instance_id: int,
66
+ connector_key: str,
67
+ tool_path: str,
68
+ parameters: Optional[Dict[str, str]] = None,
69
+ schema_mode: bool = True,
70
+ max_jit_depth: int = 5,
64
71
  ) -> ConnectionMetadata:
65
72
  """Synchronously retrieve connection API metadata.
66
73
 
67
- This method fetches the metadata for a connection,
68
- which can be used to establish communication with an external service.
74
+ This method fetches the metadata for a connection. When parameters are provided,
75
+ it automatically fetches JIT (Just-In-Time) metadata for cascading fields in a loop,
76
+ following action URLs up to a maximum depth.
69
77
 
70
78
  Args:
71
79
  element_instance_id (int): The element instance ID of the connection.
80
+ connector_key (str): The connector key (e.g., 'uipath-atlassian-jira', 'uipath-slack').
72
81
  tool_path (str): The tool path to retrieve metadata for.
82
+ parameters (Optional[Dict[str, str]]): Parameter values. When provided, triggers
83
+ automatic JIT fetching for cascading fields.
73
84
  schema_mode (bool): Whether or not to represent the output schema in the response fields.
85
+ max_jit_depth (int): The maximum depth of the JIT resolution loop.
74
86
 
75
87
  Returns:
76
88
  ConnectionMetadata: The connection metadata.
89
+
90
+ Examples:
91
+ >>> metadata = sdk.connections.metadata(
92
+ ... element_instance_id=123,
93
+ ... connector_key="uipath-atlassian-jira",
94
+ ... tool_path="Issue",
95
+ ... parameters={"projectId": "PROJ-123"} # Optional
96
+ ... )
77
97
  """
78
- spec = self._metadata_spec(element_instance_id, tool_path, schema_mode)
79
- response = self.request(spec.method, url=spec.endpoint, headers=spec.headers)
80
- return ConnectionMetadata.model_validate(response.json())
98
+ spec = self._metadata_spec(
99
+ element_instance_id, connector_key, tool_path, schema_mode
100
+ )
101
+ response = self.request(
102
+ spec.method, url=spec.endpoint, params=spec.params, headers=spec.headers
103
+ )
104
+ data = response.json()
105
+ metadata = ConnectionMetadata.model_validate(data)
106
+
107
+ last_action_url = None
108
+ depth = 0
109
+
110
+ while (
111
+ parameters
112
+ and (action_url := self._get_jit_action_url(metadata))
113
+ and depth < max_jit_depth
114
+ ):
115
+ # Stop if we're about to call the same URL template again
116
+ if action_url == last_action_url:
117
+ break
118
+
119
+ last_action_url = action_url
120
+ depth += 1
121
+
122
+ jit_spec = self._metadata_jit_spec(
123
+ element_instance_id, action_url, parameters, schema_mode
124
+ )
125
+ jit_response = self.request(
126
+ jit_spec.method,
127
+ url=jit_spec.endpoint,
128
+ params=jit_spec.params,
129
+ headers=jit_spec.headers,
130
+ )
131
+ data = jit_response.json()
132
+ metadata = ConnectionMetadata.model_validate(data)
133
+
134
+ return metadata
81
135
 
82
136
  @traced(name="connections_list", run_type="uipath")
83
137
  def list(
@@ -217,26 +271,77 @@ class ConnectionsService(BaseService):
217
271
  hide_output=True,
218
272
  )
219
273
  async def metadata_async(
220
- self, element_instance_id: int, tool_path: str, schema_mode: bool = True
274
+ self,
275
+ element_instance_id: int,
276
+ connector_key: str,
277
+ tool_path: str,
278
+ parameters: Optional[Dict[str, str]] = None,
279
+ schema_mode: bool = True,
280
+ max_jit_depth: int = 5,
221
281
  ) -> ConnectionMetadata:
222
282
  """Asynchronously retrieve connection API metadata.
223
283
 
224
- This method fetches the metadata for a connection,
225
- which can be used to establish communication with an external service.
284
+ This method fetches the metadata for a connection. When parameters are provided,
285
+ it automatically fetches JIT (Just-In-Time) metadata for cascading fields in a loop,
286
+ following action URLs up to a maximum depth.
226
287
 
227
288
  Args:
228
289
  element_instance_id (int): The element instance ID of the connection.
290
+ connector_key (str): The connector key (e.g., 'uipath-atlassian-jira', 'uipath-slack').
229
291
  tool_path (str): The tool path to retrieve metadata for.
292
+ parameters (Optional[Dict[str, str]]): Parameter values. When provided, triggers
293
+ automatic JIT fetching for cascading fields.
230
294
  schema_mode (bool): Whether or not to represent the output schema in the response fields.
295
+ max_jit_depth (int): The maximum depth of the JIT resolution loop.
231
296
 
232
297
  Returns:
233
298
  ConnectionMetadata: The connection metadata.
299
+
300
+ Examples:
301
+ >>> metadata = await sdk.connections.metadata_async(
302
+ ... element_instance_id=123,
303
+ ... connector_key="uipath-atlassian-jira",
304
+ ... tool_path="Issue",
305
+ ... parameters={"projectId": "PROJ-123"} # Optional
306
+ ... )
234
307
  """
235
- spec = self._metadata_spec(element_instance_id, tool_path, schema_mode)
308
+ spec = self._metadata_spec(
309
+ element_instance_id, connector_key, tool_path, schema_mode
310
+ )
236
311
  response = await self.request_async(
237
- spec.method, url=spec.endpoint, headers=spec.headers
312
+ spec.method, url=spec.endpoint, params=spec.params, headers=spec.headers
238
313
  )
239
- return ConnectionMetadata.model_validate(response.json())
314
+ data = response.json()
315
+ metadata = ConnectionMetadata.model_validate(data)
316
+
317
+ last_action_url = None
318
+ depth = 0
319
+
320
+ while (
321
+ parameters
322
+ and (action_url := self._get_jit_action_url(metadata))
323
+ and depth < max_jit_depth
324
+ ):
325
+ # Stop if we're about to call the same URL template again
326
+ if action_url == last_action_url:
327
+ break
328
+
329
+ last_action_url = action_url
330
+ depth += 1
331
+
332
+ jit_spec = self._metadata_jit_spec(
333
+ element_instance_id, action_url, parameters, schema_mode
334
+ )
335
+ jit_response = await self.request_async(
336
+ jit_spec.method,
337
+ url=jit_spec.endpoint,
338
+ params=jit_spec.params,
339
+ headers=jit_spec.headers,
340
+ )
341
+ data = jit_response.json()
342
+ metadata = ConnectionMetadata.model_validate(data)
343
+
344
+ return metadata
240
345
 
241
346
  @traced(
242
347
  name="connections_retrieve_token",
@@ -377,9 +482,13 @@ class ConnectionsService(BaseService):
377
482
  )
378
483
 
379
484
  def _metadata_spec(
380
- self, element_instance_id: int, tool_path: str, schema_mode: bool
485
+ self,
486
+ element_instance_id: int,
487
+ connector_key: str,
488
+ tool_path: str,
489
+ schema_mode: bool,
381
490
  ) -> RequestSpec:
382
- metadata_endpoint_url = f"/elements_/v3/element/instances/{element_instance_id}/elements/{tool_path}/metadata"
491
+ metadata_endpoint_url = f"/elements_/v3/element/instances/{element_instance_id}/elements/{connector_key}/objects/{tool_path}/metadata"
383
492
  return RequestSpec(
384
493
  method="GET",
385
494
  endpoint=Endpoint(metadata_endpoint_url),
@@ -390,6 +499,54 @@ class ConnectionsService(BaseService):
390
499
  },
391
500
  )
392
501
 
502
+ def _metadata_jit_spec(
503
+ self,
504
+ element_instance_id: int,
505
+ dynamic_path: str,
506
+ parameters: Dict[str, str],
507
+ schema_mode: bool,
508
+ ) -> RequestSpec:
509
+ """Build request spec for JIT metadata with dynamic path parameter substitution.
510
+
511
+ For example, if the dynamic path is "elements/jira/projects/{projectId}/issues", and the parameters
512
+ are {"projectId": "PROJ-123"}, the resolved path will be "elements/jira/projects/PROJ-123/issues".
513
+ """
514
+ for key, value in parameters.items():
515
+ dynamic_path = dynamic_path.replace(
516
+ f"{{{key}}}", quote(str(value), safe="")
517
+ )
518
+ split = urlsplit(dynamic_path.lstrip("/"))
519
+ query_params = dict(parse_qsl(split.query))
520
+
521
+ return RequestSpec(
522
+ method="GET",
523
+ endpoint=Endpoint(
524
+ f"/elements_/v3/element/instances/{element_instance_id}/{split.path}"
525
+ ),
526
+ params=query_params,
527
+ headers={
528
+ "accept": "application/schema+json"
529
+ if schema_mode
530
+ else "application/json"
531
+ },
532
+ )
533
+
534
+ def _get_jit_action_url(
535
+ self, connection_metadata: ConnectionMetadata
536
+ ) -> Optional[str]:
537
+ """Return the URL of the JIT action that should be triggered dynamically."""
538
+ if "method" not in connection_metadata.metadata:
539
+ return None
540
+
541
+ methods = connection_metadata.metadata["method"]
542
+ actions = [
543
+ action
544
+ for method_data in methods.values()
545
+ for action in method_data.get("design", {}).get("actions", [])
546
+ if action.get("actionType") == "api"
547
+ ]
548
+ return actions[0].get("apiConfiguration", {}).get("url") if actions else None
549
+
393
550
  def _retrieve_token_spec(
394
551
  self, key: str, token_type: ConnectionTokenType = ConnectionTokenType.DIRECT
395
552
  ) -> RequestSpec:
@@ -8,6 +8,7 @@ class ConnectionMetadata(BaseModel):
8
8
  """Metadata about a connection."""
9
9
 
10
10
  fields: dict[str, Any] = Field(default_factory=dict, alias="fields")
11
+ metadata: dict[str, Any] = Field(default_factory=dict, alias="metadata")
11
12
 
12
13
  model_config = ConfigDict(populate_by_name=True, extra="allow")
13
14
 
@@ -98,6 +98,7 @@ class TestConnectionsService:
98
98
  version: str,
99
99
  ) -> None:
100
100
  element_instance_id = 123
101
+ connector_key = "test-connector"
101
102
  tool_path = "test-tool"
102
103
  valid_choice = {
103
104
  "index": 0,
@@ -188,14 +189,14 @@ class TestConnectionsService:
188
189
  },
189
190
  }
190
191
  httpx_mock.add_response(
191
- url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/{tool_path}/metadata",
192
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/{connector_key}/objects/{tool_path}/metadata",
192
193
  status_code=200,
193
194
  json={
194
195
  "fields": json_schema,
195
196
  },
196
197
  )
197
198
 
198
- metadata = service.metadata(element_instance_id, tool_path)
199
+ metadata = service.metadata(element_instance_id, connector_key, tool_path)
199
200
 
200
201
  assert isinstance(metadata, ConnectionMetadata)
201
202
  dynamic_type = jsonschema_to_pydantic(metadata.fields)
@@ -263,6 +264,7 @@ class TestConnectionsService:
263
264
  version: str,
264
265
  ) -> None:
265
266
  element_instance_id = 123
267
+ connector_key = "test-connector"
266
268
  tool_path = "test-tool"
267
269
  valid_choice = {
268
270
  "index": 0,
@@ -353,14 +355,16 @@ class TestConnectionsService:
353
355
  },
354
356
  }
355
357
  httpx_mock.add_response(
356
- url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/{tool_path}/metadata",
358
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/{connector_key}/objects/{tool_path}/metadata",
357
359
  status_code=200,
358
360
  json={
359
361
  "fields": json_schema,
360
362
  },
361
363
  )
362
364
 
363
- metadata = await service.metadata_async(element_instance_id, tool_path)
365
+ metadata = await service.metadata_async(
366
+ element_instance_id, connector_key, tool_path
367
+ )
364
368
 
365
369
  assert isinstance(metadata, ConnectionMetadata)
366
370
  dynamic_type = jsonschema_to_pydantic(metadata.fields)
@@ -1001,3 +1005,256 @@ class TestConnectionsService:
1001
1005
  exc_info.value
1002
1006
  )
1003
1007
  assert "cannot be provided together" in str(exc_info.value)
1008
+
1009
+ def test_get_jit_action_url_with_api_action(
1010
+ self, service: ConnectionsService
1011
+ ) -> None:
1012
+ """Test _get_jit_action_url extracts URL from first API action."""
1013
+ metadata = ConnectionMetadata(
1014
+ fields={},
1015
+ metadata={
1016
+ "method": {
1017
+ "POST": {
1018
+ "design": {
1019
+ "actions": [
1020
+ {
1021
+ "actionType": "reset",
1022
+ "name": "Reset Form",
1023
+ },
1024
+ {
1025
+ "actionType": "api",
1026
+ "name": "Load Issue Types",
1027
+ "apiConfiguration": {
1028
+ "method": "GET",
1029
+ "url": "elements/jira/projects/{project.id}/issuetypes",
1030
+ },
1031
+ },
1032
+ ]
1033
+ }
1034
+ }
1035
+ }
1036
+ },
1037
+ )
1038
+
1039
+ url = service._get_jit_action_url(metadata)
1040
+
1041
+ assert url == "elements/jira/projects/{project.id}/issuetypes"
1042
+
1043
+ def test_metadata_with_jit_parameters(
1044
+ self,
1045
+ httpx_mock: HTTPXMock,
1046
+ service: ConnectionsService,
1047
+ base_url: str,
1048
+ org: str,
1049
+ tenant: str,
1050
+ ) -> None:
1051
+ """Test metadata() triggers JIT fetch when parameters are provided."""
1052
+ element_instance_id = 123
1053
+ connector_key = "uipath-jira"
1054
+ tool_path = "Issue"
1055
+ parameters = {"project.id": "PROJ-123"}
1056
+
1057
+ # Mock initial metadata response
1058
+ initial_response = {
1059
+ "fields": {
1060
+ "project.id": {"type": "string", "displayName": "Project ID"},
1061
+ "summary": {"type": "string", "displayName": "Summary"},
1062
+ },
1063
+ "metadata": {
1064
+ "method": {
1065
+ "POST": {
1066
+ "design": {
1067
+ "actions": [
1068
+ {
1069
+ "actionType": "api",
1070
+ "apiConfiguration": {
1071
+ "url": "elements/jira/projects/{project.id}/issuetypes"
1072
+ },
1073
+ }
1074
+ ]
1075
+ }
1076
+ }
1077
+ }
1078
+ },
1079
+ }
1080
+
1081
+ # Mock JIT metadata response
1082
+ jit_response = {
1083
+ "fields": {
1084
+ "CustomIssueType": {
1085
+ "type": "string",
1086
+ "displayName": "Custom Issue Type",
1087
+ },
1088
+ },
1089
+ }
1090
+
1091
+ # Add mock responses
1092
+ httpx_mock.add_response(
1093
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/{connector_key}/objects/{tool_path}/metadata",
1094
+ json=initial_response,
1095
+ )
1096
+ httpx_mock.add_response(
1097
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/jira/projects/PROJ-123/issuetypes",
1098
+ json=jit_response,
1099
+ )
1100
+
1101
+ metadata = service.metadata(
1102
+ element_instance_id, connector_key, tool_path, parameters
1103
+ )
1104
+
1105
+ # Should return JIT metadata
1106
+ assert isinstance(metadata, ConnectionMetadata)
1107
+ assert "CustomIssueType" in metadata.fields
1108
+
1109
+ # Verify both requests were made
1110
+ requests = httpx_mock.get_requests()
1111
+ assert len(requests) == 2
1112
+
1113
+ @pytest.mark.httpx_mock(assert_all_responses_were_requested=False)
1114
+ async def test_metadata_with_max_jit_depth(
1115
+ self,
1116
+ httpx_mock: HTTPXMock,
1117
+ service: ConnectionsService,
1118
+ base_url: str,
1119
+ org: str,
1120
+ tenant: str,
1121
+ ) -> None:
1122
+ """Test metadata() stops at max JIT depth to prevent infinite loops."""
1123
+ element_instance_id = 123
1124
+ connector_key = "uipath-jira"
1125
+ tool_path = "Issue"
1126
+ parameters = {"param": "value"}
1127
+ max_jit_depth = 5
1128
+
1129
+ # Create a response that always has another action (infinite chain)
1130
+ def create_response_with_action(level: int):
1131
+ return {
1132
+ "fields": {
1133
+ f"field_level_{level}": {
1134
+ "type": "string",
1135
+ "displayName": f"Field Level {level}",
1136
+ },
1137
+ },
1138
+ "metadata": {
1139
+ "method": {
1140
+ "POST": {
1141
+ "design": {
1142
+ "actions": [
1143
+ {
1144
+ "actionType": "api",
1145
+ "apiConfiguration": {
1146
+ "url": f"elements/jira/level{level + 1}"
1147
+ },
1148
+ }
1149
+ ]
1150
+ }
1151
+ }
1152
+ }
1153
+ },
1154
+ }
1155
+
1156
+ # Add initial response
1157
+ httpx_mock.add_response(
1158
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/{connector_key}/objects/{tool_path}/metadata",
1159
+ json=create_response_with_action(0),
1160
+ )
1161
+
1162
+ # Add 10 more levels (more than max JIT depth) to test limit
1163
+ for level in range(1, 11):
1164
+ httpx_mock.add_response(
1165
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/jira/level{level}",
1166
+ json=create_response_with_action(level),
1167
+ )
1168
+
1169
+ metadata = service.metadata(
1170
+ element_instance_id, connector_key, tool_path, parameters, max_jit_depth
1171
+ )
1172
+
1173
+ # Should return metadata from level 5 (stopped at max JIT depth)
1174
+ assert isinstance(metadata, ConnectionMetadata)
1175
+ assert "field_level_5" in metadata.fields
1176
+
1177
+ # Verify exactly 6 requests were made (initial + 5 JIT levels)
1178
+ requests = httpx_mock.get_requests()
1179
+ assert len(requests) == 6
1180
+
1181
+ def test_metadata_stops_on_repeated_url(
1182
+ self,
1183
+ httpx_mock: HTTPXMock,
1184
+ service: ConnectionsService,
1185
+ base_url: str,
1186
+ org: str,
1187
+ tenant: str,
1188
+ ) -> None:
1189
+ """Test metadata() stops early when action URL repeats."""
1190
+ element_instance_id = 123
1191
+ connector_key = "uipath-jira"
1192
+ tool_path = "Issue"
1193
+ parameters = {"project.id": "PROJ-123"}
1194
+
1195
+ # First response with action URL
1196
+ level1_response = {
1197
+ "fields": {
1198
+ "field1": {"type": "string", "displayName": "Field 1"},
1199
+ },
1200
+ "metadata": {
1201
+ "method": {
1202
+ "POST": {
1203
+ "design": {
1204
+ "actions": [
1205
+ {
1206
+ "actionType": "api",
1207
+ "apiConfiguration": {
1208
+ "url": "elements/jira/projects/{project.id}/metadata"
1209
+ },
1210
+ }
1211
+ ]
1212
+ }
1213
+ }
1214
+ }
1215
+ },
1216
+ }
1217
+
1218
+ # Second response with the same action URL
1219
+ level2_response = {
1220
+ "fields": {
1221
+ "field2": {"type": "string", "displayName": "Field 2"},
1222
+ },
1223
+ "metadata": {
1224
+ "method": {
1225
+ "POST": {
1226
+ "design": {
1227
+ "actions": [
1228
+ {
1229
+ "actionType": "api",
1230
+ "apiConfiguration": {
1231
+ "url": "elements/jira/projects/{project.id}/metadata"
1232
+ },
1233
+ }
1234
+ ]
1235
+ }
1236
+ }
1237
+ }
1238
+ },
1239
+ }
1240
+
1241
+ httpx_mock.add_response(
1242
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/{connector_key}/objects/{tool_path}/metadata",
1243
+ json=level1_response,
1244
+ )
1245
+ httpx_mock.add_response(
1246
+ url=f"{base_url}{org}{tenant}/elements_/v3/element/instances/{element_instance_id}/elements/jira/projects/PROJ-123/metadata",
1247
+ json=level2_response,
1248
+ )
1249
+
1250
+ metadata = service.metadata(
1251
+ element_instance_id, connector_key, tool_path, parameters
1252
+ )
1253
+
1254
+ # Should return metadata from level 2 (stopped because next URL is same)
1255
+ assert isinstance(metadata, ConnectionMetadata)
1256
+ assert "field2" in metadata.fields
1257
+
1258
+ # Verify exactly 2 requests were made (initial + 1 JIT level, then stopped)
1259
+ requests = httpx_mock.get_requests()
1260
+ assert len(requests) == 2
@@ -3047,7 +3047,7 @@ wheels = [
3047
3047
 
3048
3048
  [[package]]
3049
3049
  name = "uipath"
3050
- version = "2.1.126"
3050
+ version = "2.1.127"
3051
3051
  source = { editable = "." }
3052
3052
  dependencies = [
3053
3053
  { name = "azure-monitor-opentelemetry" },
File without changes
File without changes
File without changes
File without changes