uipath 2.1.106__tar.gz → 2.1.107__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 (384) hide show
  1. {uipath-2.1.106 → uipath-2.1.107}/PKG-INFO +1 -1
  2. {uipath-2.1.106 → uipath-2.1.107}/pyproject.toml +1 -1
  3. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_resources/SDK_REFERENCE.md +1 -1
  4. uipath-2.1.107/src/uipath/_services/guardrails_service.py +76 -0
  5. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/llm_gateway_service.py +15 -2
  6. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/models/agent.py +147 -2
  7. uipath-2.1.107/src/uipath/models/guardrails.py +246 -0
  8. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/tracing/_utils.py +18 -4
  9. {uipath-2.1.106 → uipath-2.1.107}/tests/agent/models/test_agent.py +59 -10
  10. uipath-2.1.107/tests/sdk/services/test_guardrails_service.py +114 -0
  11. {uipath-2.1.106 → uipath-2.1.107}/tests/tracing/test_traced.py +78 -0
  12. {uipath-2.1.106 → uipath-2.1.107}/uv.lock +1 -1
  13. uipath-2.1.106/src/uipath/models/guardrails.py +0 -469
  14. {uipath-2.1.106 → uipath-2.1.107}/.claude/agents/command-tester.md +0 -0
  15. {uipath-2.1.106 → uipath-2.1.107}/.claude/commands/prepare-pr.md +0 -0
  16. {uipath-2.1.106 → uipath-2.1.107}/.cursorrules +0 -0
  17. {uipath-2.1.106 → uipath-2.1.107}/.editorconfig +0 -0
  18. {uipath-2.1.106 → uipath-2.1.107}/.gitattributes +0 -0
  19. {uipath-2.1.106 → uipath-2.1.107}/.github/labeler.yml +0 -0
  20. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/auto-label.yml +0 -0
  21. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/cd.yml +0 -0
  22. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/ci.yml +0 -0
  23. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/commitlint.yml +0 -0
  24. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/integration_tests.yml +0 -0
  25. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/lint.yml +0 -0
  26. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/publish-dev.yml +0 -0
  27. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/publish-docs.yml +0 -0
  28. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/slack.yml +0 -0
  29. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/test-uipath-langchain.yml +0 -0
  30. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/test-uipath-llamaindex.yml +0 -0
  31. {uipath-2.1.106 → uipath-2.1.107}/.github/workflows/test.yml +0 -0
  32. {uipath-2.1.106 → uipath-2.1.107}/.gitignore +0 -0
  33. {uipath-2.1.106 → uipath-2.1.107}/.pre-commit-config.yaml +0 -0
  34. {uipath-2.1.106 → uipath-2.1.107}/.python-version +0 -0
  35. {uipath-2.1.106 → uipath-2.1.107}/.vscode/extensions.json +0 -0
  36. {uipath-2.1.106 → uipath-2.1.107}/.vscode/launch.json +0 -0
  37. {uipath-2.1.106 → uipath-2.1.107}/.vscode/settings.json +0 -0
  38. {uipath-2.1.106 → uipath-2.1.107}/CONTRIBUTING.md +0 -0
  39. {uipath-2.1.106 → uipath-2.1.107}/LICENSE +0 -0
  40. {uipath-2.1.106 → uipath-2.1.107}/README.md +0 -0
  41. {uipath-2.1.106 → uipath-2.1.107}/docs/AutomationSuite.md +0 -0
  42. {uipath-2.1.106 → uipath-2.1.107}/docs/CONTRIBUTING.md +0 -0
  43. {uipath-2.1.106 → uipath-2.1.107}/docs/FAQ.md +0 -0
  44. {uipath-2.1.106 → uipath-2.1.107}/docs/assets/env-preparation-failed-dark.png +0 -0
  45. {uipath-2.1.106 → uipath-2.1.107}/docs/assets/env-preparation-failed-light.png +0 -0
  46. {uipath-2.1.106 → uipath-2.1.107}/docs/assets/favicon.png +0 -0
  47. {uipath-2.1.106 → uipath-2.1.107}/docs/assets/llms.txt +0 -0
  48. {uipath-2.1.106 → uipath-2.1.107}/docs/assets/logo-dark.svg +0 -0
  49. {uipath-2.1.106 → uipath-2.1.107}/docs/assets/logo-light.svg +0 -0
  50. {uipath-2.1.106 → uipath-2.1.107}/docs/cli/index.md +0 -0
  51. {uipath-2.1.106 → uipath-2.1.107}/docs/core/actions.md +0 -0
  52. {uipath-2.1.106 → uipath-2.1.107}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  53. {uipath-2.1.106 → uipath-2.1.107}/docs/core/assets/cloud_env_var_light.gif +0 -0
  54. {uipath-2.1.106 → uipath-2.1.107}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  55. {uipath-2.1.106 → uipath-2.1.107}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  56. {uipath-2.1.106 → uipath-2.1.107}/docs/core/assets/copy_path_dark.png +0 -0
  57. {uipath-2.1.106 → uipath-2.1.107}/docs/core/assets/copy_path_light.png +0 -0
  58. {uipath-2.1.106 → uipath-2.1.107}/docs/core/assets.md +0 -0
  59. {uipath-2.1.106 → uipath-2.1.107}/docs/core/attachments.md +0 -0
  60. {uipath-2.1.106 → uipath-2.1.107}/docs/core/buckets.md +0 -0
  61. {uipath-2.1.106 → uipath-2.1.107}/docs/core/connections.md +0 -0
  62. {uipath-2.1.106 → uipath-2.1.107}/docs/core/context_grounding.md +0 -0
  63. {uipath-2.1.106 → uipath-2.1.107}/docs/core/documents.md +0 -0
  64. {uipath-2.1.106 → uipath-2.1.107}/docs/core/documents_models.md +0 -0
  65. {uipath-2.1.106 → uipath-2.1.107}/docs/core/environment_variables.md +0 -0
  66. {uipath-2.1.106 → uipath-2.1.107}/docs/core/getting_started.md +0 -0
  67. {uipath-2.1.106 → uipath-2.1.107}/docs/core/jobs.md +0 -0
  68. {uipath-2.1.106 → uipath-2.1.107}/docs/core/llm_gateway.md +0 -0
  69. {uipath-2.1.106 → uipath-2.1.107}/docs/core/processes.md +0 -0
  70. {uipath-2.1.106 → uipath-2.1.107}/docs/core/queues.md +0 -0
  71. {uipath-2.1.106 → uipath-2.1.107}/docs/core/traced.md +0 -0
  72. {uipath-2.1.106 → uipath-2.1.107}/docs/hooks.py +0 -0
  73. {uipath-2.1.106 → uipath-2.1.107}/docs/index.md +0 -0
  74. {uipath-2.1.106 → uipath-2.1.107}/docs/javascripts/extra.js +0 -0
  75. {uipath-2.1.106 → uipath-2.1.107}/docs/overrides/main.html +0 -0
  76. {uipath-2.1.106 → uipath-2.1.107}/docs/overrides/partials/actions.html +0 -0
  77. {uipath-2.1.106 → uipath-2.1.107}/docs/overrides/partials/logo.html +0 -0
  78. {uipath-2.1.106 → uipath-2.1.107}/docs/release_policy.md +0 -0
  79. {uipath-2.1.106 → uipath-2.1.107}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  80. {uipath-2.1.106 → uipath-2.1.107}/docs/stylesheets/extra.css +0 -0
  81. {uipath-2.1.106 → uipath-2.1.107}/justfile +0 -0
  82. {uipath-2.1.106 → uipath-2.1.107}/mkdocs.yml +0 -0
  83. {uipath-2.1.106 → uipath-2.1.107}/py.typed +0 -0
  84. {uipath-2.1.106 → uipath-2.1.107}/samples/asset-modifier-agent/.env.example +0 -0
  85. {uipath-2.1.106 → uipath-2.1.107}/samples/asset-modifier-agent/README.md +0 -0
  86. {uipath-2.1.106 → uipath-2.1.107}/samples/asset-modifier-agent/input.json +0 -0
  87. {uipath-2.1.106 → uipath-2.1.107}/samples/asset-modifier-agent/main.py +0 -0
  88. {uipath-2.1.106 → uipath-2.1.107}/samples/asset-modifier-agent/pyproject.toml +0 -0
  89. {uipath-2.1.106 → uipath-2.1.107}/samples/asset-modifier-agent/uv.lock +0 -0
  90. {uipath-2.1.106 → uipath-2.1.107}/samples/calculator/README.md +0 -0
  91. {uipath-2.1.106 → uipath-2.1.107}/samples/calculator/evals/eval-sets/default.json +0 -0
  92. {uipath-2.1.106 → uipath-2.1.107}/samples/calculator/evals/evaluators/equality.json +0 -0
  93. {uipath-2.1.106 → uipath-2.1.107}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
  94. {uipath-2.1.106 → uipath-2.1.107}/samples/calculator/main.py +0 -0
  95. {uipath-2.1.106 → uipath-2.1.107}/samples/calculator/pyproject.toml +0 -0
  96. {uipath-2.1.106 → uipath-2.1.107}/samples/calculator/uipath.json +0 -0
  97. {uipath-2.1.106 → uipath-2.1.107}/samples/event-trigger/.python-version +0 -0
  98. {uipath-2.1.106 → uipath-2.1.107}/samples/event-trigger/README.md +0 -0
  99. {uipath-2.1.106 → uipath-2.1.107}/samples/event-trigger/main.py +0 -0
  100. {uipath-2.1.106 → uipath-2.1.107}/samples/event-trigger/pyproject.toml +0 -0
  101. {uipath-2.1.106 → uipath-2.1.107}/samples/google-ADK-agent/.env.example +0 -0
  102. {uipath-2.1.106 → uipath-2.1.107}/samples/google-ADK-agent/README.md +0 -0
  103. {uipath-2.1.106 → uipath-2.1.107}/samples/google-ADK-agent/input.json +0 -0
  104. {uipath-2.1.106 → uipath-2.1.107}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  105. {uipath-2.1.106 → uipath-2.1.107}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  106. {uipath-2.1.106 → uipath-2.1.107}/samples/google-ADK-agent/pyproject.toml +0 -0
  107. {uipath-2.1.106 → uipath-2.1.107}/samples/google-ADK-agent/uv.lock +0 -0
  108. {uipath-2.1.106 → uipath-2.1.107}/scripts/debug_test.py +0 -0
  109. {uipath-2.1.106 → uipath-2.1.107}/scripts/lint_httpx_client.py +0 -0
  110. {uipath-2.1.106 → uipath-2.1.107}/scripts/update_agents_md.py +0 -0
  111. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/__init__.py +0 -0
  112. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/README.md +0 -0
  113. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/__init__.py +0 -0
  114. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  115. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  116. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/_models.py +0 -0
  117. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  118. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  119. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  120. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/_utils.py +0 -0
  121. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/auth_config.json +0 -0
  122. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/index.html +0 -0
  123. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/localhost.crt +0 -0
  124. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_auth/localhost.key +0 -0
  125. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_debug/_bridge.py +0 -0
  126. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_debug/_runtime.py +0 -0
  127. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  128. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  129. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  130. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
  131. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  132. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  133. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  134. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  135. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  136. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  137. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  138. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  139. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/__init__.py +0 -0
  140. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
  141. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_evaluate.py +0 -0
  142. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
  143. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
  144. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
  145. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  146. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
  147. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
  148. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  149. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  150. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  151. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_runtime.py +0 -0
  152. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/_span_collection.py +0 -0
  153. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
  154. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/mocks/input_mocker.py +0 -0
  155. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/mocks/llm_mocker.py +0 -0
  156. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/mocks/mocker.py +0 -0
  157. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
  158. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
  159. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_evals/mocks/mocks.py +0 -0
  160. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  161. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  162. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  163. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  164. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_runtime/_logging.py +0 -0
  165. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  166. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_runtime/_runtime_factory.py +0 -0
  167. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  168. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  169. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_templates/.rels.template +0 -0
  170. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  171. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_templates/main.py.template +0 -0
  172. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  173. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_common.py +0 -0
  174. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_console.py +0 -0
  175. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_constants.py +0 -0
  176. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_debug.py +0 -0
  177. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  178. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_folders.py +0 -0
  179. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_input_args.py +0 -0
  180. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  181. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_processes.py +0 -0
  182. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_project_files.py +0 -0
  183. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  184. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_tracing.py +0 -0
  185. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  186. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_auth.py +0 -0
  187. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_debug.py +0 -0
  188. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_deploy.py +0 -0
  189. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_dev.py +0 -0
  190. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_eval.py +0 -0
  191. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_init.py +0 -0
  192. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_invoke.py +0 -0
  193. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_new.py +0 -0
  194. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_pack.py +0 -0
  195. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_publish.py +0 -0
  196. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_pull.py +0 -0
  197. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_push.py +0 -0
  198. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/cli_run.py +0 -0
  199. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/middlewares.py +0 -0
  200. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/models/__init__.py +0 -0
  201. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/models/runtime_schema.py +0 -0
  202. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_cli/spinner.py +0 -0
  203. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_config.py +0 -0
  204. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_events/__init__.py +0 -0
  205. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_events/_event_bus.py +0 -0
  206. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_events/_events.py +0 -0
  207. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_execution_context.py +0 -0
  208. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_folder_context.py +0 -0
  209. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_resources/AGENTS.md +0 -0
  210. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_resources/CLAUDE.md +0 -0
  211. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_resources/CLI_REFERENCE.md +0 -0
  212. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_resources/REQUIRED_STRUCTURE.md +0 -0
  213. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/__init__.py +0 -0
  214. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/_base_service.py +0 -0
  215. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/actions_service.py +0 -0
  216. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/api_client.py +0 -0
  217. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/assets_service.py +0 -0
  218. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/attachments_service.py +0 -0
  219. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/buckets_service.py +0 -0
  220. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/connections_service.py +0 -0
  221. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/context_grounding_service.py +0 -0
  222. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/documents_service.py +0 -0
  223. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/entities_service.py +0 -0
  224. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/external_application_service.py +0 -0
  225. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/folder_service.py +0 -0
  226. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/jobs_service.py +0 -0
  227. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/processes_service.py +0 -0
  228. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_services/queues_service.py +0 -0
  229. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_uipath.py +0 -0
  230. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/__init__.py +0 -0
  231. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_auth.py +0 -0
  232. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_endpoint.py +0 -0
  233. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_infer_bindings.py +0 -0
  234. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_logs.py +0 -0
  235. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_read_overwrites.py +0 -0
  236. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_request_override.py +0 -0
  237. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_request_spec.py +0 -0
  238. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_ssl_context.py +0 -0
  239. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_url.py +0 -0
  240. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/_user_agent.py +0 -0
  241. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/_utils/constants.py +0 -0
  242. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/_utils.py +0 -0
  243. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/__init__.py +0 -0
  244. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/async_stream.py +0 -0
  245. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/citation.py +0 -0
  246. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/content.py +0 -0
  247. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/conversation.py +0 -0
  248. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/event.py +0 -0
  249. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/exchange.py +0 -0
  250. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/message.py +0 -0
  251. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/meta.py +0 -0
  252. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/conversation/tool.py +0 -0
  253. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/models/evals.py +0 -0
  254. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/react/__init__.py +0 -0
  255. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/react/prompts.py +0 -0
  256. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/agent/react/tools.py +0 -0
  257. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/_helpers/__init__.py +0 -0
  258. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/_helpers/helpers.py +0 -0
  259. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/evaluators/__init__.py +0 -0
  260. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  261. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  262. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  263. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  264. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  265. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  266. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/mocks/__init__.py +0 -0
  267. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/mocks/mockable.py +0 -0
  268. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/models/__init__.py +0 -0
  269. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/eval/models/models.py +0 -0
  270. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/__init__.py +0 -0
  271. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/action_schema.py +0 -0
  272. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/actions.py +0 -0
  273. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/assets.py +0 -0
  274. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/attachment.py +0 -0
  275. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/auth.py +0 -0
  276. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/buckets.py +0 -0
  277. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/connections.py +0 -0
  278. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/context_grounding.py +0 -0
  279. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/context_grounding_index.py +0 -0
  280. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/documents.py +0 -0
  281. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/entities.py +0 -0
  282. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/errors.py +0 -0
  283. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/exceptions.py +0 -0
  284. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/interrupt_models.py +0 -0
  285. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/job.py +0 -0
  286. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/llm_gateway.py +0 -0
  287. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/processes.py +0 -0
  288. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/models/queues.py +0 -0
  289. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/py.typed +0 -0
  290. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/telemetry/__init__.py +0 -0
  291. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/telemetry/_constants.py +0 -0
  292. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/telemetry/_track.py +0 -0
  293. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/tracing/__init__.py +0 -0
  294. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/tracing/_otel_exporters.py +0 -0
  295. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/tracing/_traced.py +0 -0
  296. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/utils/__init__.py +0 -0
  297. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/utils/_endpoints_manager.py +0 -0
  298. {uipath-2.1.106 → uipath-2.1.107}/src/uipath/utils/dynamic_schema.py +0 -0
  299. {uipath-2.1.106 → uipath-2.1.107}/testcases/apicalls-testcase/main.py +0 -0
  300. {uipath-2.1.106 → uipath-2.1.107}/testcases/apicalls-testcase/pyproject.toml +0 -0
  301. {uipath-2.1.106 → uipath-2.1.107}/testcases/apicalls-testcase/run.sh +0 -0
  302. {uipath-2.1.106 → uipath-2.1.107}/testcases/apicalls-testcase/src/assert.py +0 -0
  303. {uipath-2.1.106 → uipath-2.1.107}/testcases/basic-testcase/main.py +0 -0
  304. {uipath-2.1.106 → uipath-2.1.107}/testcases/basic-testcase/pyproject.toml +0 -0
  305. {uipath-2.1.106 → uipath-2.1.107}/testcases/basic-testcase/run.sh +0 -0
  306. {uipath-2.1.106 → uipath-2.1.107}/testcases/basic-testcase/src/assert.py +0 -0
  307. {uipath-2.1.106 → uipath-2.1.107}/testcases/common/validate_output.sh +0 -0
  308. {uipath-2.1.106 → uipath-2.1.107}/testcases/langchain-cross/agent.mermaid +0 -0
  309. {uipath-2.1.106 → uipath-2.1.107}/testcases/langchain-cross/langgraph.json +0 -0
  310. {uipath-2.1.106 → uipath-2.1.107}/testcases/langchain-cross/pyproject.toml +0 -0
  311. {uipath-2.1.106 → uipath-2.1.107}/testcases/langchain-cross/run.sh +0 -0
  312. {uipath-2.1.106 → uipath-2.1.107}/testcases/langchain-cross/src/assert.py +0 -0
  313. {uipath-2.1.106 → uipath-2.1.107}/testcases/langchain-cross/src/main.py +0 -0
  314. {uipath-2.1.106 → uipath-2.1.107}/testcases/llamaindex-cross/agent.mermaid +0 -0
  315. {uipath-2.1.106 → uipath-2.1.107}/testcases/llamaindex-cross/llama_index.json +0 -0
  316. {uipath-2.1.106 → uipath-2.1.107}/testcases/llamaindex-cross/pyproject.toml +0 -0
  317. {uipath-2.1.106 → uipath-2.1.107}/testcases/llamaindex-cross/run.sh +0 -0
  318. {uipath-2.1.106 → uipath-2.1.107}/testcases/llamaindex-cross/src/assert.py +0 -0
  319. {uipath-2.1.106 → uipath-2.1.107}/testcases/llamaindex-cross/src/main.py +0 -0
  320. {uipath-2.1.106 → uipath-2.1.107}/tests/__init__.py +0 -0
  321. {uipath-2.1.106 → uipath-2.1.107}/tests/agent/models/test_evals.py +0 -0
  322. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/conftest.py +0 -0
  323. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/eval/evals/eval-sets/default.json +0 -0
  324. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/eval/evals/evaluators/equality.json +0 -0
  325. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/eval/mocks/test_input_mocker.py +0 -0
  326. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/eval/mocks/test_mocks.py +0 -0
  327. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/eval/test_evaluate.py +0 -0
  328. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  329. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/mocks/bindings_script.py +0 -0
  330. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/mocks/pyproject.toml +0 -0
  331. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/mocks/simple_script.py +0 -0
  332. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/mocks/uipath-mock.json +0 -0
  333. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  334. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/models/test_runtime_schema.py +0 -0
  335. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_auth.py +0 -0
  336. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_hitl.py +0 -0
  337. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_init.py +0 -0
  338. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_init_agents_md.py +0 -0
  339. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_input_args.py +0 -0
  340. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_invoke.py +0 -0
  341. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_new.py +0 -0
  342. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_oidc_utils.py +0 -0
  343. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_pack.py +0 -0
  344. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  345. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_portal_service_refresh_token.py +0 -0
  346. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_publish.py +0 -0
  347. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_pull.py +0 -0
  348. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_push.py +0 -0
  349. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_run.py +0 -0
  350. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/test_utils.py +0 -0
  351. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/utils/common.py +0 -0
  352. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/utils/project_details.py +0 -0
  353. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/utils/test_dynamic_schema.py +0 -0
  354. {uipath-2.1.106 → uipath-2.1.107}/tests/cli/utils/uipath_json.py +0 -0
  355. {uipath-2.1.106 → uipath-2.1.107}/tests/conftest.py +0 -0
  356. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/conftest.py +0 -0
  357. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_actions_service.py +0 -0
  358. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_api_client.py +0 -0
  359. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_assets_service.py +0 -0
  360. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_attachments_service.py +0 -0
  361. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_base_service.py +0 -0
  362. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_buckets_service.py +0 -0
  363. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_connections_service.py +0 -0
  364. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_context_grounding_service.py +0 -0
  365. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_documents_service.py +0 -0
  366. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_entities_service.py +0 -0
  367. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_external_application_service.py +0 -0
  368. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_folder_service.py +0 -0
  369. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_jobs_service.py +0 -0
  370. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_llm_integration.py +0 -0
  371. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  372. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_llm_service.py +0 -0
  373. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_processes_service.py +0 -0
  374. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_queues_service.py +0 -0
  375. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  376. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  377. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  378. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  379. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/test_bindings_inference.py +0 -0
  380. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/test_config.py +0 -0
  381. {uipath-2.1.106 → uipath-2.1.107}/tests/sdk/test_overwrites.py +0 -0
  382. {uipath-2.1.106 → uipath-2.1.107}/tests/tracing/test_otel_exporters.py +0 -0
  383. {uipath-2.1.106 → uipath-2.1.107}/tests/tracing/test_span_utils.py +0 -0
  384. {uipath-2.1.106 → uipath-2.1.107}/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.106
3
+ Version: 2.1.107
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.106"
3
+ version = "2.1.107"
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"
@@ -339,7 +339,7 @@ Llm service
339
339
 
340
340
  ```python
341
341
  # Generate chat completions using UiPath's normalized LLM Gateway API.
342
- sdk.llm.chat_completions(messages: List[Dict[str, str]], model: str="gpt-4o-mini-2024-07-18", max_tokens: int=4096, temperature: float=0, n: int=1, frequency_penalty: float=0, presence_penalty: float=0, top_p: Optional[float]=1, top_k: Optional[int]=None, tools: Optional[List[uipath.models.llm_gateway.ToolDefinition]]=None, tool_choice: Union[uipath.models.llm_gateway.AutoToolChoice, uipath.models.llm_gateway.RequiredToolChoice, uipath.models.llm_gateway.SpecificToolChoice, Literal['auto', 'none'], NoneType]=None, response_format: Union[Dict[str, Any], type[pydantic.main.BaseModel], NoneType]=None, api_version: str="2024-08-01-preview")
342
+ sdk.llm.chat_completions(messages: Union[List[Dict[str, str]], List[tuple[str, str]]], model: str="gpt-4o-mini-2024-07-18", max_tokens: int=4096, temperature: float=0, n: int=1, frequency_penalty: float=0, presence_penalty: float=0, top_p: Optional[float]=1, top_k: Optional[int]=None, tools: Optional[List[uipath.models.llm_gateway.ToolDefinition]]=None, tool_choice: Union[uipath.models.llm_gateway.AutoToolChoice, uipath.models.llm_gateway.RequiredToolChoice, uipath.models.llm_gateway.SpecificToolChoice, Literal['auto', 'none'], NoneType]=None, response_format: Union[Dict[str, Any], type[pydantic.main.BaseModel], NoneType]=None, api_version: str="2024-08-01-preview")
343
343
 
344
344
  ```
345
345
 
@@ -0,0 +1,76 @@
1
+ from typing import Any, Dict, Optional, Union
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+ from .._config import Config
6
+ from .._execution_context import ExecutionContext
7
+ from .._folder_context import FolderContext
8
+ from .._utils import Endpoint, RequestSpec, header_folder
9
+ from ..models.guardrails import BuiltInValidatorGuardrail, Guardrail
10
+ from ..tracing import traced
11
+ from ._base_service import BaseService
12
+
13
+
14
+ class BuiltInGuardrailValidationResult(BaseModel):
15
+ """Result from built-in guardrail validation."""
16
+
17
+ model_config = ConfigDict(populate_by_name=True)
18
+
19
+ validation_passed: bool = Field(alias="validation_passed")
20
+ reason: str = Field(alias="reason")
21
+
22
+
23
+ class GuardrailViolationError(Exception):
24
+ """Exception raised when guardrail validation fails."""
25
+
26
+ def __init__(self, detected_issue: Any):
27
+ self.detected_issue = detected_issue
28
+ super().__init__(f"Guardrail violation detected: {detected_issue}")
29
+
30
+
31
+ class GuardrailsService(FolderContext, BaseService):
32
+ """Service for validating text against UiPath Guardrails."""
33
+
34
+ def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
35
+ super().__init__(config=config, execution_context=execution_context)
36
+
37
+ @traced("evaluate_guardrail", run_type="uipath")
38
+ def evaluate_guardrail(
39
+ self,
40
+ input_data: Union[str, Dict[str, Any]],
41
+ guardrail: Guardrail,
42
+ *,
43
+ folder_key: Optional[str] = None,
44
+ folder_path: Optional[str] = None,
45
+ ) -> BuiltInGuardrailValidationResult:
46
+ """Call the API to validate input_data with the given guardrail.
47
+
48
+ Only supports built-in guardrails for now.
49
+ """
50
+ if isinstance(guardrail, BuiltInValidatorGuardrail):
51
+ parameters = [
52
+ param.model_dump(by_alias=True)
53
+ for param in guardrail.validator_parameters
54
+ ]
55
+ payload = {
56
+ "validator": guardrail.validator_type,
57
+ "input": input_data if isinstance(input_data, str) else str(input_data),
58
+ "parameters": parameters,
59
+ }
60
+ spec = RequestSpec(
61
+ method="POST",
62
+ endpoint=Endpoint("/agentsruntime_/api/execution/guardrails/validate"),
63
+ json=payload,
64
+ headers={**header_folder(folder_key, folder_path)},
65
+ )
66
+ response = self.request(
67
+ spec.method,
68
+ url=spec.endpoint,
69
+ json=spec.json,
70
+ headers=spec.headers,
71
+ )
72
+ return BuiltInGuardrailValidationResult.model_validate(response.json())
73
+ else:
74
+ raise NotImplementedError(
75
+ "Custom guardrail validation is not yet supported by the API."
76
+ )
@@ -344,7 +344,7 @@ class UiPathLlmChatService(BaseService):
344
344
  @traced(name="llm_chat_completions", run_type="uipath")
345
345
  async def chat_completions(
346
346
  self,
347
- messages: List[Dict[str, str]],
347
+ messages: Union[List[Dict[str, str]], List[tuple[str, str]]],
348
348
  model: str = ChatModels.gpt_4o_mini_2024_07_18,
349
349
  max_tokens: int = 4096,
350
350
  temperature: float = 0,
@@ -475,13 +475,26 @@ class UiPathLlmChatService(BaseService):
475
475
  This service uses UiPath's normalized API format which provides consistent
476
476
  behavior across different underlying model providers and enhanced enterprise features.
477
477
  """
478
+ converted_messages = []
479
+
480
+ for message in messages:
481
+ if isinstance(message, tuple) and len(message) == 2:
482
+ role, content = message
483
+ converted_messages.append({"role": role, "content": content})
484
+ elif isinstance(message, dict):
485
+ converted_messages.append(message)
486
+ else:
487
+ raise ValueError(
488
+ f"Invalid message format: {message}. Expected tuple (role, content) or dict with 'role' and 'content' keys."
489
+ )
490
+
478
491
  endpoint = EndpointManager.get_normalized_endpoint().format(
479
492
  model=model, api_version=api_version
480
493
  )
481
494
  endpoint = Endpoint("/" + endpoint)
482
495
 
483
496
  request_body = {
484
- "messages": messages,
497
+ "messages": converted_messages,
485
498
  "max_tokens": max_tokens,
486
499
  "temperature": temperature,
487
500
  "n": n,
@@ -6,7 +6,11 @@ from typing import Annotated, Any, Dict, List, Literal, Optional, Union
6
6
  from pydantic import BaseModel, ConfigDict, Discriminator, Field, Tag, field_validator
7
7
 
8
8
  from uipath.models import Connection
9
- from uipath.models.guardrails import AgentEscalationRecipient, Guardrail
9
+ from uipath.models.guardrails import (
10
+ BuiltInValidatorGuardrail,
11
+ CustomGuardrail,
12
+ FieldReference,
13
+ )
10
14
 
11
15
 
12
16
  class AgentResourceType(str, Enum):
@@ -132,6 +136,37 @@ class AgentProcessToolResourceConfig(BaseAgentToolResourceConfig):
132
136
  )
133
137
 
134
138
 
139
+ class AgentEscalationRecipientType(str, Enum):
140
+ """Enum for escalation recipient types."""
141
+
142
+ USER_ID = "UserId"
143
+ GROUP_ID = "GroupId"
144
+ USER_EMAIL = "UserEmail"
145
+
146
+
147
+ class AgentEscalationRecipient(BaseModel):
148
+ """Recipient for escalation."""
149
+
150
+ type: Union[AgentEscalationRecipientType, str] = Field(..., alias="type")
151
+ value: str = Field(..., alias="value")
152
+ display_name: Optional[str] = Field(default=None, alias="displayName")
153
+
154
+ @field_validator("type", mode="before")
155
+ @classmethod
156
+ def normalize_type(cls, v: Any) -> str:
157
+ """Normalize recipient type from int (1=UserId, 2=GroupId, 3=UserEmail) or string. Unknown integers are converted to string."""
158
+ if isinstance(v, int):
159
+ mapping = {
160
+ 1: AgentEscalationRecipientType.USER_ID,
161
+ 2: AgentEscalationRecipientType.GROUP_ID,
162
+ 3: AgentEscalationRecipientType.USER_EMAIL,
163
+ }
164
+ return mapping.get(v, str(v))
165
+ return v
166
+
167
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
168
+
169
+
135
170
  class AgentIntegrationToolParameter(BaseModel):
136
171
  """Agent integration tool parameter."""
137
172
 
@@ -479,6 +514,116 @@ class AgentSettings(BaseModel):
479
514
  )
480
515
 
481
516
 
517
+ class AgentGuardrailActionType(str, Enum):
518
+ """Action type enumeration."""
519
+
520
+ BLOCK = "block"
521
+ ESCALATE = "escalate"
522
+ FILTER = "filter"
523
+ LOG = "log"
524
+
525
+
526
+ class AgentGuardrailBlockAction(BaseModel):
527
+ """Block action model."""
528
+
529
+ action_type: Literal["block"] = Field(alias="$actionType")
530
+ reason: str
531
+
532
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
533
+
534
+
535
+ class AgentGuardrailFilterAction(BaseModel):
536
+ """Filter action model."""
537
+
538
+ action_type: Literal["filter"] = Field(alias="$actionType")
539
+ fields: List[FieldReference]
540
+
541
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
542
+
543
+
544
+ class AgentGuardrailSeverityLevel(str, Enum):
545
+ """Severity level enumeration."""
546
+
547
+ ERROR = "Error"
548
+ INFO = "Info"
549
+ WARNING = "Warning"
550
+
551
+
552
+ class AgentGuardrailLogAction(BaseModel):
553
+ """Log action model."""
554
+
555
+ action_type: Literal["log"] = Field(alias="$actionType")
556
+ message: str = Field(..., alias="message")
557
+ severity_level: AgentGuardrailSeverityLevel = Field(alias="severityLevel")
558
+
559
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
560
+
561
+
562
+ class AgentGuardrailEscalateActionApp(BaseModel):
563
+ """Escalate action app model."""
564
+
565
+ id: Optional[str] = None
566
+ version: int
567
+ name: str
568
+ folder_id: Optional[str] = Field(None, alias="folderId")
569
+ folder_name: str = Field(alias="folderName")
570
+ app_process_key: Optional[str] = Field(None, alias="appProcessKey")
571
+ runtime: Optional[str] = None
572
+
573
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
574
+
575
+
576
+ class AgentGuardrailEscalateAction(BaseModel):
577
+ """Escalate action model."""
578
+
579
+ action_type: Literal["escalate"] = Field(alias="$actionType")
580
+ app: AgentGuardrailEscalateActionApp
581
+ recipient: AgentEscalationRecipient
582
+
583
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
584
+
585
+
586
+ GuardrailAction = Annotated[
587
+ Union[
588
+ AgentGuardrailBlockAction,
589
+ AgentGuardrailFilterAction,
590
+ AgentGuardrailLogAction,
591
+ AgentGuardrailEscalateAction,
592
+ ],
593
+ Field(discriminator="action_type"),
594
+ ]
595
+
596
+
597
+ class AgentCustomGuardrail(CustomGuardrail):
598
+ """Agent custom guardrail with action capabilities."""
599
+
600
+ action: GuardrailAction = Field(
601
+ ..., description="Action to take when guardrail is triggered"
602
+ )
603
+
604
+ model_config = ConfigDict(
605
+ validate_by_name=True, validate_by_alias=True, extra="allow"
606
+ )
607
+
608
+
609
+ class AgentBuiltInValidatorGuardrail(BuiltInValidatorGuardrail):
610
+ """Agent built-in validator guardrail with action capabilities."""
611
+
612
+ action: GuardrailAction = Field(
613
+ ..., description="Action to take when guardrail is triggered"
614
+ )
615
+
616
+ model_config = ConfigDict(
617
+ validate_by_name=True, validate_by_alias=True, extra="allow"
618
+ )
619
+
620
+
621
+ AgentGuardrail = Annotated[
622
+ Union[AgentCustomGuardrail, AgentBuiltInValidatorGuardrail],
623
+ Field(discriminator="guardrail_type"),
624
+ ]
625
+
626
+
482
627
  class BaseAgentDefinition(BaseModel):
483
628
  """Agent definition model."""
484
629
 
@@ -488,7 +633,7 @@ class BaseAgentDefinition(BaseModel):
488
633
  output_schema: Dict[str, Any] = Field(
489
634
  ..., alias="outputSchema", description="JSON schema for output arguments"
490
635
  )
491
- guardrails: Optional[List[Guardrail]] = Field(
636
+ guardrails: Optional[List[AgentGuardrail]] = Field(
492
637
  None, description="List of agent guardrails"
493
638
  )
494
639
 
@@ -0,0 +1,246 @@
1
+ from enum import Enum
2
+ from typing import Annotated, Dict, List, Literal, Optional, Union
3
+
4
+ from pydantic import BaseModel, ConfigDict, Field
5
+
6
+
7
+ class FieldSource(str, Enum):
8
+ """Field source enumeration."""
9
+
10
+ INPUT = "input"
11
+ OUTPUT = "output"
12
+
13
+
14
+ class ApplyTo(str, Enum):
15
+ """Apply to enumeration."""
16
+
17
+ INPUT = "input"
18
+ INPUT_AND_OUTPUT = "inputAndOutput"
19
+ OUTPUT = "output"
20
+
21
+
22
+ class FieldReference(BaseModel):
23
+ """Field reference model."""
24
+
25
+ path: str
26
+ source: FieldSource
27
+
28
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
29
+
30
+
31
+ class SelectorType(str, Enum):
32
+ """Selector type enumeration."""
33
+
34
+ ALL = "all"
35
+ SPECIFIC = "specific"
36
+
37
+
38
+ class AllFieldsSelector(BaseModel):
39
+ """All fields selector."""
40
+
41
+ selector_type: Literal["all"] = Field(alias="$selectorType")
42
+
43
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
44
+
45
+
46
+ class SpecificFieldsSelector(BaseModel):
47
+ """Specific fields selector."""
48
+
49
+ selector_type: Literal["specific"] = Field(alias="$selectorType")
50
+ fields: List[FieldReference]
51
+
52
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
53
+
54
+
55
+ FieldSelector = Annotated[
56
+ Union[AllFieldsSelector, SpecificFieldsSelector],
57
+ Field(discriminator="selector_type"),
58
+ ]
59
+
60
+
61
+ class RuleType(str, Enum):
62
+ """Rule type enumeration."""
63
+
64
+ BOOLEAN = "boolean"
65
+ NUMBER = "number"
66
+ UNIVERSAL = "always"
67
+ WORD = "word"
68
+
69
+
70
+ class WordOperator(str, Enum):
71
+ """Word operator enumeration."""
72
+
73
+ CONTAINS = "contains"
74
+ DOES_NOT_CONTAIN = "doesNotContain"
75
+ DOES_NOT_END_WITH = "doesNotEndWith"
76
+ DOES_NOT_EQUAL = "doesNotEqual"
77
+ DOES_NOT_START_WITH = "doesNotStartWith"
78
+ ENDS_WITH = "endsWith"
79
+ EQUALS = "equals"
80
+ IS_EMPTY = "isEmpty"
81
+ IS_NOT_EMPTY = "isNotEmpty"
82
+ STARTS_WITH = "startsWith"
83
+
84
+
85
+ class WordRule(BaseModel):
86
+ """Word rule model."""
87
+
88
+ rule_type: Literal["word"] = Field(alias="$ruleType")
89
+ field_selector: FieldSelector = Field(alias="fieldSelector")
90
+ operator: WordOperator
91
+ value: Optional[str] = None
92
+
93
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
94
+
95
+
96
+ class UniversalRule(BaseModel):
97
+ """Universal rule model."""
98
+
99
+ rule_type: Literal["always"] = Field(alias="$ruleType")
100
+ apply_to: ApplyTo = Field(alias="applyTo")
101
+
102
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
103
+
104
+
105
+ class NumberOperator(str, Enum):
106
+ """Number operator enumeration."""
107
+
108
+ DOES_NOT_EQUAL = "doesNotEqual"
109
+ EQUALS = "equals"
110
+ GREATER_THAN = "greaterThan"
111
+ GREATER_THAN_OR_EQUAL = "greaterThanOrEqual"
112
+ LESS_THAN = "lessThan"
113
+ LESS_THAN_OR_EQUAL = "lessThanOrEqual"
114
+
115
+
116
+ class NumberRule(BaseModel):
117
+ """Number rule model."""
118
+
119
+ rule_type: Literal["number"] = Field(alias="$ruleType")
120
+ field_selector: FieldSelector = Field(alias="fieldSelector")
121
+ operator: NumberOperator
122
+ value: float
123
+
124
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
125
+
126
+
127
+ class BooleanOperator(str, Enum):
128
+ """Boolean operator enumeration."""
129
+
130
+ EQUALS = "equals"
131
+
132
+
133
+ class BooleanRule(BaseModel):
134
+ """Boolean rule model."""
135
+
136
+ rule_type: Literal["boolean"] = Field(alias="$ruleType")
137
+ field_selector: FieldSelector = Field(alias="fieldSelector")
138
+ operator: BooleanOperator
139
+ value: bool
140
+
141
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
142
+
143
+
144
+ class EnumListParameterValue(BaseModel):
145
+ """Enum list parameter value."""
146
+
147
+ parameter_type: Literal["enum-list"] = Field(alias="$parameterType")
148
+ id: str
149
+ value: List[str]
150
+
151
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
152
+
153
+
154
+ class MapEnumParameterValue(BaseModel):
155
+ """Map enum parameter value."""
156
+
157
+ parameter_type: Literal["map-enum"] = Field(alias="$parameterType")
158
+ id: str
159
+ value: Dict[str, float]
160
+
161
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
162
+
163
+
164
+ class NumberParameterValue(BaseModel):
165
+ """Number parameter value."""
166
+
167
+ parameter_type: Literal["number"] = Field(alias="$parameterType")
168
+ id: str
169
+ value: float
170
+
171
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
172
+
173
+
174
+ ValidatorParameter = Annotated[
175
+ Union[EnumListParameterValue, MapEnumParameterValue, NumberParameterValue],
176
+ Field(discriminator="parameter_type"),
177
+ ]
178
+
179
+
180
+ Rule = Annotated[
181
+ Union[WordRule, NumberRule, BooleanRule, UniversalRule],
182
+ Field(discriminator="rule_type"),
183
+ ]
184
+
185
+
186
+ class GuardrailScope(str, Enum):
187
+ """Guardrail scope enumeration."""
188
+
189
+ AGENT = "Agent"
190
+ LLM = "Llm"
191
+ TOOL = "Tool"
192
+
193
+
194
+ class GuardrailSelector(BaseModel):
195
+ """Guardrail selector model."""
196
+
197
+ scopes: List[GuardrailScope] = Field(default=[GuardrailScope.TOOL])
198
+ match_names: Optional[List[str]] = Field(None, alias="matchNames")
199
+
200
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
201
+
202
+
203
+ class BaseGuardrail(BaseModel):
204
+ """Base guardrail model."""
205
+
206
+ id: str
207
+ name: str
208
+ description: Optional[str] = None
209
+ enabled_for_evals: bool = Field(True, alias="enabledForEvals")
210
+ selector: GuardrailSelector
211
+
212
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
213
+
214
+
215
+ class CustomGuardrail(BaseGuardrail):
216
+ """Custom guardrail model."""
217
+
218
+ guardrail_type: Literal["custom"] = Field(alias="$guardrailType")
219
+ rules: List[Rule]
220
+
221
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
222
+
223
+
224
+ class BuiltInValidatorGuardrail(BaseGuardrail):
225
+ """Built-in validator guardrail model."""
226
+
227
+ guardrail_type: Literal["builtInValidator"] = Field(alias="$guardrailType")
228
+ validator_type: str = Field(alias="validatorType")
229
+ validator_parameters: List[ValidatorParameter] = Field(
230
+ default_factory=list, alias="validatorParameters"
231
+ )
232
+
233
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
234
+
235
+
236
+ Guardrail = Annotated[
237
+ Union[CustomGuardrail, BuiltInValidatorGuardrail],
238
+ Field(discriminator="guardrail_type"),
239
+ ]
240
+
241
+
242
+ class GuardrailType(str, Enum):
243
+ """Guardrail type enumeration."""
244
+
245
+ BUILT_IN_VALIDATOR = "builtInValidator"
246
+ CUSTOM = "custom"
@@ -13,16 +13,26 @@ from zoneinfo import ZoneInfo
13
13
 
14
14
  from opentelemetry.sdk.trace import ReadableSpan
15
15
  from opentelemetry.trace import StatusCode
16
+ from pydantic import BaseModel
16
17
 
17
18
  logger = logging.getLogger(__name__)
18
19
 
19
20
 
20
21
  def _simple_serialize_defaults(obj):
21
- if hasattr(obj, "model_dump"):
22
+ # Handle Pydantic BaseModel instances
23
+ if hasattr(obj, "model_dump") and not isinstance(obj, type):
22
24
  return obj.model_dump(exclude_none=True, mode="json")
23
- if hasattr(obj, "dict"):
25
+
26
+ # Handle classes - convert to schema representation
27
+ if isinstance(obj, type) and issubclass(obj, BaseModel):
28
+ return {
29
+ "__class__": obj.__name__,
30
+ "__module__": obj.__module__,
31
+ "schema": obj.model_json_schema(),
32
+ }
33
+ if hasattr(obj, "dict") and not isinstance(obj, type):
24
34
  return obj.dict()
25
- if hasattr(obj, "to_dict"):
35
+ if hasattr(obj, "to_dict") and not isinstance(obj, type):
26
36
  return obj.to_dict()
27
37
 
28
38
  # Handle dataclasses
@@ -31,7 +41,7 @@ def _simple_serialize_defaults(obj):
31
41
 
32
42
  # Handle enums
33
43
  if isinstance(obj, Enum):
34
- return obj.value
44
+ return _simple_serialize_defaults(obj.value)
35
45
 
36
46
  if isinstance(obj, (set, tuple)):
37
47
  if hasattr(obj, "_asdict") and callable(obj._asdict):
@@ -44,6 +54,10 @@ def _simple_serialize_defaults(obj):
44
54
  if isinstance(obj, (timezone, ZoneInfo)):
45
55
  return obj.tzname(None)
46
56
 
57
+ # Allow JSON-serializable primitives to pass through unchanged
58
+ if obj is None or isinstance(obj, (bool, int, float, str)):
59
+ return obj
60
+
47
61
  return str(obj)
48
62
 
49
63