uipath 2.1.77__tar.gz → 2.1.79__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.
Files changed (339) hide show
  1. {uipath-2.1.77 → uipath-2.1.79}/PKG-INFO +1 -1
  2. uipath-2.1.79/docs/assets/llms.txt +55 -0
  3. {uipath-2.1.77 → uipath-2.1.79}/docs/cli/index.md +13 -0
  4. {uipath-2.1.77 → uipath-2.1.79}/pyproject.toml +1 -1
  5. {uipath-2.1.77 → uipath-2.1.79}/samples/calculator/evals/eval-sets/default.json +5 -1
  6. {uipath-2.1.77 → uipath-2.1.79}/samples/calculator/main.py +4 -3
  7. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_models/_evaluation_set.py +13 -33
  8. uipath-2.1.79/src/uipath/_cli/_evals/_models/_mocks.py +9 -0
  9. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/mocks/llm_mocker.py +28 -9
  10. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/mocks/mocker.py +8 -2
  11. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +20 -2
  12. uipath-2.1.79/src/uipath/_cli/_evals/mocks/mocks.py +41 -0
  13. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/connections_service.py +0 -2
  14. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/llm_gateway_service.py +6 -1
  15. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/models/agent.py +10 -3
  16. uipath-2.1.79/src/uipath/eval/mocks/__init__.py +7 -0
  17. uipath-2.1.77/src/uipath/_cli/_evals/mocks/mocks.py → uipath-2.1.79/src/uipath/eval/mocks/mockable.py +31 -64
  18. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/eval/mocks/test_mocks.py +20 -3
  19. {uipath-2.1.77 → uipath-2.1.79}/uv.lock +897 -897
  20. {uipath-2.1.77 → uipath-2.1.79}/.cursorrules +0 -0
  21. {uipath-2.1.77 → uipath-2.1.79}/.editorconfig +0 -0
  22. {uipath-2.1.77 → uipath-2.1.79}/.gitattributes +0 -0
  23. {uipath-2.1.77 → uipath-2.1.79}/.github/labeler.yml +0 -0
  24. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/auto-label.yml +0 -0
  25. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/cd.yml +0 -0
  26. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/ci.yml +0 -0
  27. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/commitlint.yml +0 -0
  28. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/integration_tests.yml +0 -0
  29. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/lint.yml +0 -0
  30. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/publish-dev.yml +0 -0
  31. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/publish-docs.yml +0 -0
  32. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/slack.yml +0 -0
  33. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/test-uipath-langchain.yml +0 -0
  34. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/test-uipath-llamaindex.yml +0 -0
  35. {uipath-2.1.77 → uipath-2.1.79}/.github/workflows/test.yml +0 -0
  36. {uipath-2.1.77 → uipath-2.1.79}/.gitignore +0 -0
  37. {uipath-2.1.77 → uipath-2.1.79}/.pre-commit-config.yaml +0 -0
  38. {uipath-2.1.77 → uipath-2.1.79}/.python-version +0 -0
  39. {uipath-2.1.77 → uipath-2.1.79}/.vscode/extensions.json +0 -0
  40. {uipath-2.1.77 → uipath-2.1.79}/.vscode/launch.json +0 -0
  41. {uipath-2.1.77 → uipath-2.1.79}/.vscode/settings.json +0 -0
  42. {uipath-2.1.77 → uipath-2.1.79}/CONTRIBUTING.md +0 -0
  43. {uipath-2.1.77 → uipath-2.1.79}/LICENSE +0 -0
  44. {uipath-2.1.77 → uipath-2.1.79}/README.md +0 -0
  45. {uipath-2.1.77 → uipath-2.1.79}/docs/CONTRIBUTING.md +0 -0
  46. {uipath-2.1.77 → uipath-2.1.79}/docs/FAQ.md +0 -0
  47. {uipath-2.1.77 → uipath-2.1.79}/docs/assets/env-preparation-failed-dark.png +0 -0
  48. {uipath-2.1.77 → uipath-2.1.79}/docs/assets/env-preparation-failed-light.png +0 -0
  49. {uipath-2.1.77 → uipath-2.1.79}/docs/assets/favicon.png +0 -0
  50. {uipath-2.1.77 → uipath-2.1.79}/docs/assets/logo-dark.svg +0 -0
  51. {uipath-2.1.77 → uipath-2.1.79}/docs/assets/logo-light.svg +0 -0
  52. {uipath-2.1.77 → uipath-2.1.79}/docs/core/actions.md +0 -0
  53. {uipath-2.1.77 → uipath-2.1.79}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  54. {uipath-2.1.77 → uipath-2.1.79}/docs/core/assets/cloud_env_var_light.gif +0 -0
  55. {uipath-2.1.77 → uipath-2.1.79}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  56. {uipath-2.1.77 → uipath-2.1.79}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  57. {uipath-2.1.77 → uipath-2.1.79}/docs/core/assets/copy_path_dark.png +0 -0
  58. {uipath-2.1.77 → uipath-2.1.79}/docs/core/assets/copy_path_light.png +0 -0
  59. {uipath-2.1.77 → uipath-2.1.79}/docs/core/assets.md +0 -0
  60. {uipath-2.1.77 → uipath-2.1.79}/docs/core/attachments.md +0 -0
  61. {uipath-2.1.77 → uipath-2.1.79}/docs/core/buckets.md +0 -0
  62. {uipath-2.1.77 → uipath-2.1.79}/docs/core/connections.md +0 -0
  63. {uipath-2.1.77 → uipath-2.1.79}/docs/core/context_grounding.md +0 -0
  64. {uipath-2.1.77 → uipath-2.1.79}/docs/core/documents.md +0 -0
  65. {uipath-2.1.77 → uipath-2.1.79}/docs/core/documents_models.md +0 -0
  66. {uipath-2.1.77 → uipath-2.1.79}/docs/core/environment_variables.md +0 -0
  67. {uipath-2.1.77 → uipath-2.1.79}/docs/core/getting_started.md +0 -0
  68. {uipath-2.1.77 → uipath-2.1.79}/docs/core/jobs.md +0 -0
  69. {uipath-2.1.77 → uipath-2.1.79}/docs/core/llm_gateway.md +0 -0
  70. {uipath-2.1.77 → uipath-2.1.79}/docs/core/processes.md +0 -0
  71. {uipath-2.1.77 → uipath-2.1.79}/docs/core/queues.md +0 -0
  72. {uipath-2.1.77 → uipath-2.1.79}/docs/core/traced.md +0 -0
  73. {uipath-2.1.77 → uipath-2.1.79}/docs/hooks.py +0 -0
  74. {uipath-2.1.77 → uipath-2.1.79}/docs/index.md +0 -0
  75. {uipath-2.1.77 → uipath-2.1.79}/docs/javascripts/extra.js +0 -0
  76. {uipath-2.1.77 → uipath-2.1.79}/docs/overrides/main.html +0 -0
  77. {uipath-2.1.77 → uipath-2.1.79}/docs/overrides/partials/actions.html +0 -0
  78. {uipath-2.1.77 → uipath-2.1.79}/docs/overrides/partials/logo.html +0 -0
  79. {uipath-2.1.77 → uipath-2.1.79}/docs/release_policy.md +0 -0
  80. {uipath-2.1.77 → uipath-2.1.79}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  81. {uipath-2.1.77 → uipath-2.1.79}/docs/stylesheets/extra.css +0 -0
  82. {uipath-2.1.77 → uipath-2.1.79}/justfile +0 -0
  83. {uipath-2.1.77 → uipath-2.1.79}/mkdocs.yml +0 -0
  84. {uipath-2.1.77 → uipath-2.1.79}/py.typed +0 -0
  85. {uipath-2.1.77 → uipath-2.1.79}/samples/calculator/README.md +0 -0
  86. {uipath-2.1.77 → uipath-2.1.79}/samples/calculator/evals/evaluators/equality.json +0 -0
  87. {uipath-2.1.77 → uipath-2.1.79}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
  88. {uipath-2.1.77 → uipath-2.1.79}/samples/calculator/pyproject.toml +0 -0
  89. {uipath-2.1.77 → uipath-2.1.79}/samples/event-trigger/.python-version +0 -0
  90. {uipath-2.1.77 → uipath-2.1.79}/samples/event-trigger/README.md +0 -0
  91. {uipath-2.1.77 → uipath-2.1.79}/samples/event-trigger/main.py +0 -0
  92. {uipath-2.1.77 → uipath-2.1.79}/samples/event-trigger/pyproject.toml +0 -0
  93. {uipath-2.1.77 → uipath-2.1.79}/samples/google-ADK-agent/.env.example +0 -0
  94. {uipath-2.1.77 → uipath-2.1.79}/samples/google-ADK-agent/README.md +0 -0
  95. {uipath-2.1.77 → uipath-2.1.79}/samples/google-ADK-agent/input.json +0 -0
  96. {uipath-2.1.77 → uipath-2.1.79}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  97. {uipath-2.1.77 → uipath-2.1.79}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  98. {uipath-2.1.77 → uipath-2.1.79}/samples/google-ADK-agent/pyproject.toml +0 -0
  99. {uipath-2.1.77 → uipath-2.1.79}/samples/google-ADK-agent/uv.lock +0 -0
  100. {uipath-2.1.77 → uipath-2.1.79}/scripts/debug_test.py +0 -0
  101. {uipath-2.1.77 → uipath-2.1.79}/scripts/lint_httpx_client.py +0 -0
  102. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/__init__.py +0 -0
  103. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/README.md +0 -0
  104. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/__init__.py +0 -0
  105. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  106. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  107. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
  108. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_models.py +0 -0
  109. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  110. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  111. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  112. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/_utils.py +0 -0
  113. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/auth_config.json +0 -0
  114. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/index.html +0 -0
  115. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/localhost.crt +0 -0
  116. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_auth/localhost.key +0 -0
  117. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  118. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  119. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  120. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
  121. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  122. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  123. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  124. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  125. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  126. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  127. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  128. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  129. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
  130. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
  131. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
  132. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  133. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
  134. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  135. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  136. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  137. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/_runtime.py +0 -0
  138. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
  139. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
  140. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  141. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  142. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  143. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  144. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_runtime/_logging.py +0 -0
  145. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  146. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  147. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  148. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_templates/.rels.template +0 -0
  149. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  150. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_templates/main.py.template +0 -0
  151. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  152. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_common.py +0 -0
  153. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_console.py +0 -0
  154. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_constants.py +0 -0
  155. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_debug.py +0 -0
  156. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  157. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_folders.py +0 -0
  158. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_input_args.py +0 -0
  159. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  160. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_processes.py +0 -0
  161. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_project_files.py +0 -0
  162. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  163. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_tracing.py +0 -0
  164. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  165. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_auth.py +0 -0
  166. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_deploy.py +0 -0
  167. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_dev.py +0 -0
  168. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_eval.py +0 -0
  169. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_init.py +0 -0
  170. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_invoke.py +0 -0
  171. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_new.py +0 -0
  172. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_pack.py +0 -0
  173. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_publish.py +0 -0
  174. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_pull.py +0 -0
  175. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_push.py +0 -0
  176. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/cli_run.py +0 -0
  177. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/middlewares.py +0 -0
  178. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_cli/spinner.py +0 -0
  179. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_config.py +0 -0
  180. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_events/__init__.py +0 -0
  181. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_events/_event_bus.py +0 -0
  182. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_events/_events.py +0 -0
  183. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_execution_context.py +0 -0
  184. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_folder_context.py +0 -0
  185. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_resources/AGENTS.md +0 -0
  186. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/__init__.py +0 -0
  187. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/_base_service.py +0 -0
  188. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/actions_service.py +0 -0
  189. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/api_client.py +0 -0
  190. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/assets_service.py +0 -0
  191. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/attachments_service.py +0 -0
  192. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/buckets_service.py +0 -0
  193. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/context_grounding_service.py +0 -0
  194. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/documents_service.py +0 -0
  195. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/entities_service.py +0 -0
  196. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/folder_service.py +0 -0
  197. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/jobs_service.py +0 -0
  198. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/processes_service.py +0 -0
  199. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_services/queues_service.py +0 -0
  200. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_uipath.py +0 -0
  201. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/__init__.py +0 -0
  202. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_endpoint.py +0 -0
  203. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_infer_bindings.py +0 -0
  204. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_logs.py +0 -0
  205. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_read_overwrites.py +0 -0
  206. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_request_override.py +0 -0
  207. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_request_spec.py +0 -0
  208. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_ssl_context.py +0 -0
  209. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_url.py +0 -0
  210. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/_user_agent.py +0 -0
  211. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/_utils/constants.py +0 -0
  212. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/_utils.py +0 -0
  213. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/__init__.py +0 -0
  214. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/async_stream.py +0 -0
  215. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/citation.py +0 -0
  216. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/content.py +0 -0
  217. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/conversation.py +0 -0
  218. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/event.py +0 -0
  219. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/exchange.py +0 -0
  220. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/message.py +0 -0
  221. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/meta.py +0 -0
  222. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/agent/conversation/tool.py +0 -0
  223. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/_helpers/__init__.py +0 -0
  224. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/_helpers/helpers.py +0 -0
  225. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/evaluators/__init__.py +0 -0
  226. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  227. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  228. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  229. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  230. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  231. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  232. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/models/__init__.py +0 -0
  233. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/eval/models/models.py +0 -0
  234. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/__init__.py +0 -0
  235. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/action_schema.py +0 -0
  236. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/actions.py +0 -0
  237. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/assets.py +0 -0
  238. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/attachment.py +0 -0
  239. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/buckets.py +0 -0
  240. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/connections.py +0 -0
  241. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/context_grounding.py +0 -0
  242. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/context_grounding_index.py +0 -0
  243. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/documents.py +0 -0
  244. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/entities.py +0 -0
  245. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/errors.py +0 -0
  246. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/exceptions.py +0 -0
  247. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/interrupt_models.py +0 -0
  248. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/job.py +0 -0
  249. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/llm_gateway.py +0 -0
  250. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/processes.py +0 -0
  251. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/models/queues.py +0 -0
  252. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/py.typed +0 -0
  253. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/telemetry/__init__.py +0 -0
  254. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/telemetry/_constants.py +0 -0
  255. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/telemetry/_track.py +0 -0
  256. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/tracing/__init__.py +0 -0
  257. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/tracing/_otel_exporters.py +0 -0
  258. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/tracing/_traced.py +0 -0
  259. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/tracing/_utils.py +0 -0
  260. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/utils/__init__.py +0 -0
  261. {uipath-2.1.77 → uipath-2.1.79}/src/uipath/utils/_endpoints_manager.py +0 -0
  262. {uipath-2.1.77 → uipath-2.1.79}/testcases/apicalls-testcase/main.py +0 -0
  263. {uipath-2.1.77 → uipath-2.1.79}/testcases/apicalls-testcase/pyproject.toml +0 -0
  264. {uipath-2.1.77 → uipath-2.1.79}/testcases/apicalls-testcase/run.sh +0 -0
  265. {uipath-2.1.77 → uipath-2.1.79}/testcases/apicalls-testcase/src/assert.py +0 -0
  266. {uipath-2.1.77 → uipath-2.1.79}/testcases/basic-testcase/main.py +0 -0
  267. {uipath-2.1.77 → uipath-2.1.79}/testcases/basic-testcase/pyproject.toml +0 -0
  268. {uipath-2.1.77 → uipath-2.1.79}/testcases/basic-testcase/run.sh +0 -0
  269. {uipath-2.1.77 → uipath-2.1.79}/testcases/basic-testcase/src/assert.py +0 -0
  270. {uipath-2.1.77 → uipath-2.1.79}/testcases/common/validate_output.sh +0 -0
  271. {uipath-2.1.77 → uipath-2.1.79}/testcases/langchain-cross/agent.mermaid +0 -0
  272. {uipath-2.1.77 → uipath-2.1.79}/testcases/langchain-cross/langgraph.json +0 -0
  273. {uipath-2.1.77 → uipath-2.1.79}/testcases/langchain-cross/pyproject.toml +0 -0
  274. {uipath-2.1.77 → uipath-2.1.79}/testcases/langchain-cross/run.sh +0 -0
  275. {uipath-2.1.77 → uipath-2.1.79}/testcases/langchain-cross/src/assert.py +0 -0
  276. {uipath-2.1.77 → uipath-2.1.79}/testcases/langchain-cross/src/main.py +0 -0
  277. {uipath-2.1.77 → uipath-2.1.79}/testcases/llamaindex-cross/agent.mermaid +0 -0
  278. {uipath-2.1.77 → uipath-2.1.79}/testcases/llamaindex-cross/llama_index.json +0 -0
  279. {uipath-2.1.77 → uipath-2.1.79}/testcases/llamaindex-cross/pyproject.toml +0 -0
  280. {uipath-2.1.77 → uipath-2.1.79}/testcases/llamaindex-cross/run.sh +0 -0
  281. {uipath-2.1.77 → uipath-2.1.79}/testcases/llamaindex-cross/src/assert.py +0 -0
  282. {uipath-2.1.77 → uipath-2.1.79}/testcases/llamaindex-cross/src/main.py +0 -0
  283. {uipath-2.1.77 → uipath-2.1.79}/tests/__init__.py +0 -0
  284. {uipath-2.1.77 → uipath-2.1.79}/tests/agent/models/test_agent.py +0 -0
  285. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/conftest.py +0 -0
  286. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  287. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/mocks/bindings_script.py +0 -0
  288. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/mocks/pyproject.toml +0 -0
  289. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/mocks/simple_script.py +0 -0
  290. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/mocks/uipath-mock.json +0 -0
  291. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  292. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_auth.py +0 -0
  293. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_hitl.py +0 -0
  294. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_init.py +0 -0
  295. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_init_agents_md.py +0 -0
  296. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_input_args.py +0 -0
  297. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_invoke.py +0 -0
  298. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_new.py +0 -0
  299. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_pack.py +0 -0
  300. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  301. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_portal_service_refresh_token.py +0 -0
  302. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_publish.py +0 -0
  303. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_pull.py +0 -0
  304. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_push.py +0 -0
  305. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_run.py +0 -0
  306. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/test_utils.py +0 -0
  307. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/utils/common.py +0 -0
  308. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/utils/project_details.py +0 -0
  309. {uipath-2.1.77 → uipath-2.1.79}/tests/cli/utils/uipath_json.py +0 -0
  310. {uipath-2.1.77 → uipath-2.1.79}/tests/conftest.py +0 -0
  311. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/conftest.py +0 -0
  312. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_actions_service.py +0 -0
  313. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_api_client.py +0 -0
  314. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_assets_service.py +0 -0
  315. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_attachments_service.py +0 -0
  316. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_base_service.py +0 -0
  317. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_buckets_service.py +0 -0
  318. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_connections_service.py +0 -0
  319. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_context_grounding_service.py +0 -0
  320. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_documents_service.py +0 -0
  321. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_entities_service.py +0 -0
  322. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_folder_service.py +0 -0
  323. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_jobs_service.py +0 -0
  324. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_llm_integration.py +0 -0
  325. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  326. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_llm_service.py +0 -0
  327. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_processes_service.py +0 -0
  328. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_queues_service.py +0 -0
  329. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  330. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  331. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  332. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  333. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/test_bindings_inference.py +0 -0
  334. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/test_config.py +0 -0
  335. {uipath-2.1.77 → uipath-2.1.79}/tests/sdk/test_overwrites.py +0 -0
  336. {uipath-2.1.77 → uipath-2.1.79}/tests/tracing/test_otel_exporters.py +0 -0
  337. {uipath-2.1.77 → uipath-2.1.79}/tests/tracing/test_span_utils.py +0 -0
  338. {uipath-2.1.77 → uipath-2.1.79}/tests/tracing/test_traced.py +0 -0
  339. {uipath-2.1.77 → uipath-2.1.79}/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.77
3
+ Version: 2.1.79
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
@@ -0,0 +1,55 @@
1
+ # UiPath Python SDK Documentation
2
+ > https://uipath.github.io/uipath-python/
3
+
4
+ A Python SDK for programmatic interaction with UiPath Cloud Platform services, featuring CLI tools for automation creation, packaging, and deployment. Includes support for LangChain, LlamaIndex, and Model Context Protocol (MCP) agent frameworks.
5
+
6
+ ## Core Documentation
7
+
8
+ ### Getting Started
9
+ - https://uipath.github.io/uipath-python/ - Main landing page
10
+ - https://uipath.github.io/uipath-python/core/getting_started - SDK quickstart guide
11
+ - https://uipath.github.io/uipath-python/FAQ - Frequently Asked Questions
12
+ - https://uipath.github.io/uipath-python/CONTRIBUTING - Contribution guidelines
13
+ - https://uipath.github.io/uipath-python/release_policy - Release policy
14
+
15
+ ### SDK Features
16
+ - https://uipath.github.io/uipath-python/core/processes - Process automation
17
+ - https://uipath.github.io/uipath-python/core/jobs - Job management
18
+ - https://uipath.github.io/uipath-python/core/assets - Asset storage and retrieval
19
+ - https://uipath.github.io/uipath-python/core/queues - Queue operations
20
+ - https://uipath.github.io/uipath-python/core/buckets - Cloud storage buckets
21
+ - https://uipath.github.io/uipath-python/core/attachments - File attachments
22
+ - https://uipath.github.io/uipath-python/core/actions - Action Center integration
23
+ - https://uipath.github.io/uipath-python/core/connections - External connections
24
+ - https://uipath.github.io/uipath-python/core/documents - Document handling
25
+ - https://uipath.github.io/uipath-python/core/documents_models - Document data models
26
+ - https://uipath.github.io/uipath-python/core/environment_variables - Environment configuration
27
+ - https://uipath.github.io/uipath-python/core/traced - Tracing and observability
28
+
29
+ ### LLM & AI Features
30
+ - https://uipath.github.io/uipath-python/core/llm_gateway - LLM Gateway for model access
31
+ - https://uipath.github.io/uipath-python/core/context_grounding - RAG and semantic search
32
+
33
+ ### Agent Frameworks
34
+ - https://uipath.github.io/uipath-python/mcp/quick_start - Model Context Protocol (MCP) SDK
35
+ - https://uipath.github.io/uipath-python/langchain/quick_start - LangChain integration
36
+ - https://uipath.github.io/uipath-python/llamaindex/quick_start - LlamaIndex integration
37
+
38
+ ### CLI Tools
39
+ - https://uipath.github.io/uipath-python/cli/ - Command-line interface reference
40
+
41
+ ## Supported LLM Models
42
+
43
+ The following LLM models are referenced in examples and evaluations throughout the repository:
44
+
45
+ ### OpenAI Models
46
+ - gpt-4o-mini-2024-07-18 - Used in samples and evaluations
47
+ - gpt-4o-2024-08-06 - Primary model for agent examples
48
+ - gpt-4 - General purpose examples
49
+ - gpt-4.1-2025-04-14 - LLM-as-judge evaluator
50
+
51
+ ### Google Models
52
+ - gemini-1.5-flash - Used in Google ADK agent sample
53
+
54
+ ### Embedding Models
55
+ - text-embedding-3-large - Azure OpenAI embeddings for RAG
@@ -6,6 +6,19 @@
6
6
  :depth: 1
7
7
  :style: table
8
8
 
9
+ /// info | UiPath Automation Suite
10
+ For UiPath Automation Suite deployments, you must set the `UIPATH_URL` environment variable to your dedicated instance URL before running this command.
11
+
12
+ Example:
13
+ ```bash
14
+ UIPATH_URL=https://your-instance.com/account/tenant/orchestrator_/
15
+ ```
16
+
17
+ You can set this environment variable either:
18
+ - In a `.env` file in your project directory
19
+ - As a system-wide environment variable
20
+ ///
21
+
9
22
  <!-- termynal -->
10
23
 
11
24
  ```shell
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.1.77"
3
+ version = "2.1.79"
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"
@@ -55,7 +55,11 @@
55
55
  "mockingStrategy": {
56
56
  "type": "llm",
57
57
  "prompt": "The random operator is '+'.",
58
- "toolsToSimulate": [{"name": "get_random_operator"}]
58
+ "toolsToSimulate": [{"name": "get_random_operator"}],
59
+ "model": {
60
+ "model": "gpt-4o-mini-2024-07-18",
61
+ "temperature": 0
62
+ }
59
63
  },
60
64
  "evalSetId": "default-eval-set-id",
61
65
  "createdAt": "2025-09-04T18:54:58.378Z",
@@ -3,11 +3,10 @@ import random
3
3
  from pydantic.dataclasses import dataclass
4
4
  from enum import Enum
5
5
 
6
+ from uipath.eval.mocks import mockable, ExampleCall
6
7
  from uipath.tracing import traced
7
8
  import logging
8
9
 
9
- from uipath._cli._evals.mocks.mocks import mockable
10
-
11
10
  logger = logging.getLogger(__name__)
12
11
 
13
12
  class Operator(Enum):
@@ -32,8 +31,10 @@ class Wrapper:
32
31
  # Testing nested objects
33
32
  result: Operator
34
33
 
34
+ GET_RANDOM_OPERATOR_EXAMPLES = [ExampleCall(id="example", input="{}", output="{\"result\": \"*\"}")]
35
+
35
36
  @traced()
36
- @mockable()
37
+ @mockable(example_calls=GET_RANDOM_OPERATOR_EXAMPLES)
37
38
  def get_random_operator() -> Wrapper:
38
39
  """Get a random operator."""
39
40
  return Wrapper(result=random.choice([Operator.ADD, Operator.SUBTRACT, Operator.MULTIPLY, Operator.DIVIDE]))
@@ -19,39 +19,31 @@ class BaseMockingStrategy(BaseModel):
19
19
  pass
20
20
 
21
21
 
22
+ class ModelSettings(BaseModel):
23
+ """Model Generation Parameters."""
24
+
25
+ model: str = Field(..., alias="model")
26
+ temperature: Optional[float] = Field(default=None, alias="temperature")
27
+ top_p: Optional[float] = Field(default=None, alias="topP")
28
+ top_k: Optional[int] = Field(default=None, alias="topK")
29
+ frequency_penalty: Optional[float] = Field(default=None, alias="frequencyPenalty")
30
+ presence_penalty: Optional[float] = Field(default=None, alias="presencePenalty")
31
+ max_tokens: Optional[int] = Field(default=None, alias="maxTokens")
32
+
33
+
22
34
  class LLMMockingStrategy(BaseMockingStrategy):
23
35
  type: Literal[MockingStrategyType.LLM] = MockingStrategyType.LLM
24
36
  prompt: str = Field(..., alias="prompt")
25
37
  tools_to_simulate: list[EvaluationSimulationTool] = Field(
26
38
  ..., alias="toolsToSimulate"
27
39
  )
40
+ model: Optional[ModelSettings] = Field(None, alias="model")
28
41
 
29
42
  model_config = ConfigDict(
30
43
  validate_by_name=True, validate_by_alias=True, extra="allow"
31
44
  )
32
45
 
33
46
 
34
- """
35
- {
36
- "function": "postprocess",
37
- "arguments": {
38
- "args": [],
39
- "kwargs": {"x": 3}
40
- },
41
- "then": [
42
- {
43
- "return": 3
44
- },
45
- {
46
- "raise": {
47
- "__target__": "NotImplementedError"
48
- }
49
- }
50
- ]
51
- }
52
- """
53
-
54
-
55
47
  class MockingArgument(BaseModel):
56
48
  args: List[Any] = Field(default_factory=lambda: [], alias="args")
57
49
  kwargs: Dict[str, Any] = Field(default_factory=lambda: {}, alias="kwargs")
@@ -99,18 +91,6 @@ class UnknownMockingStrategy(BaseMockingStrategy):
99
91
  MockingStrategy = Union[KnownMockingStrategy, UnknownMockingStrategy]
100
92
 
101
93
 
102
- def migrate_mocking_strategy(data) -> MockingStrategy:
103
- if data.get("simulate_tools") and "tools_to_simulate" in data:
104
- return LLMMockingStrategy(
105
- **{
106
- "prompt": data["simulation_instructions"],
107
- "toolsToSimulate": data["tools_to_simulate"],
108
- }
109
- )
110
- else:
111
- return UnknownMockingStrategy(type=MockingStrategyType.UNKNOWN)
112
-
113
-
114
94
  class EvaluationItem(BaseModel):
115
95
  """Individual evaluation item within an evaluation set."""
116
96
 
@@ -0,0 +1,9 @@
1
+ from pydantic import BaseModel, Field
2
+
3
+
4
+ class ExampleCall(BaseModel):
5
+ """Example invocation for a resource."""
6
+
7
+ id: str = Field(..., alias="id")
8
+ input: str = Field(..., alias="input")
9
+ output: str = Field(..., alias="output")
@@ -6,11 +6,18 @@ from typing import Any, Callable
6
6
 
7
7
  from pydantic import BaseModel
8
8
 
9
- from uipath._cli._evals._models._evaluation_set import (
9
+ from .._models._evaluation_set import (
10
10
  EvaluationItem,
11
11
  LLMMockingStrategy,
12
12
  )
13
- from uipath._cli._evals.mocks.mocker import Mocker, R, T, UiPathMockingNoMatcherError
13
+ from .._models._mocks import ExampleCall
14
+ from .mocker import (
15
+ Mocker,
16
+ R,
17
+ T,
18
+ UiPathMockResponseGenerationError,
19
+ UiPathNoMockFoundError,
20
+ )
14
21
 
15
22
  PROMPT = """You are simulating a tool call for automated testing purposes of an Agent.
16
23
  Your task is to provide a realistic response for the tool based on its schema, examples, and context.
@@ -102,8 +109,15 @@ class LLMMocker(Mocker):
102
109
  },
103
110
  }
104
111
  try:
112
+ # Safely pull examples from params.
113
+ example_calls = params.get("example_calls", [])
114
+ if not isinstance(example_calls, list):
115
+ example_calls = []
116
+ example_calls = [
117
+ call for call in example_calls if isinstance(call, ExampleCall)
118
+ ]
105
119
  prompt_input: dict[str, Any] = {
106
- "toolRunExamples": [], # Taken from history. Contains id, input json, output json
120
+ "toolRunExamples": example_calls,
107
121
  "testRunHistory": [], # This should contain ordered spans.
108
122
  "toolInfo": {
109
123
  "name": function_name,
@@ -132,6 +146,12 @@ class LLMMocker(Mocker):
132
146
  k: json.dumps(pydantic_to_dict_safe(v))
133
147
  for k, v in prompt_input.items()
134
148
  }
149
+ model_parameters = self.evaluation_item.mocking_strategy.model
150
+ completion_kwargs = (
151
+ model_parameters.model_dump(by_alias=False, exclude_none=True)
152
+ if model_parameters
153
+ else {}
154
+ )
135
155
  response = await llm.chat_completions(
136
156
  [
137
157
  {
@@ -140,14 +160,13 @@ class LLMMocker(Mocker):
140
160
  },
141
161
  ],
142
162
  response_format=response_format,
163
+ **completion_kwargs,
143
164
  )
144
165
  mocked_response = OutputSchema(
145
166
  **json.loads(response.choices[0].message.content)
146
167
  )
147
- return mocked_response.response
148
- except Exception:
149
- raise
168
+ return mocked_response.model_dump(mode="json")["response"]
169
+ except Exception as e:
170
+ raise UiPathMockResponseGenerationError() from e
150
171
  else:
151
- raise UiPathMockingNoMatcherError(
152
- f"Method '{function_name}' is not simulated."
153
- )
172
+ raise UiPathNoMockFoundError(f"Method '{function_name}' is not simulated.")
@@ -23,7 +23,13 @@ class Mocker(ABC):
23
23
  raise NotImplementedError()
24
24
 
25
25
 
26
- class UiPathMockingNoMatcherError(Exception):
27
- """Exception when a mocker is unable to find a match with the invocation."""
26
+ class UiPathNoMockFoundError(Exception):
27
+ """Exception when a mocker is unable to find a match with the invocation. This is a signal to invoke the real function."""
28
+
29
+ pass
30
+
31
+
32
+ class UiPathMockResponseGenerationError(Exception):
33
+ """Exception when a mocker is configured unable to generate a response."""
28
34
 
29
35
  pass
@@ -13,7 +13,13 @@ from uipath._cli._evals._models._evaluation_set import (
13
13
  MockingAnswerType,
14
14
  MockitoMockingStrategy,
15
15
  )
16
- from uipath._cli._evals.mocks.mocker import Mocker, R, T
16
+ from uipath._cli._evals.mocks.mocker import (
17
+ Mocker,
18
+ R,
19
+ T,
20
+ UiPathMockResponseGenerationError,
21
+ UiPathNoMockFoundError,
22
+ )
17
23
 
18
24
 
19
25
  class Stub:
@@ -59,4 +65,16 @@ class MockitoMocker(Mocker):
59
65
  self, func: Callable[[T], R], params: dict[str, Any], *args: T, **kwargs
60
66
  ) -> R:
61
67
  """Respond with mocked response."""
62
- return getattr(self.stub, params["name"])(*args, **kwargs)
68
+ if not isinstance(
69
+ self.evaluation_item.mocking_strategy, MockitoMockingStrategy
70
+ ):
71
+ raise UiPathMockResponseGenerationError("Mocking strategy misconfigured.")
72
+ if not any(
73
+ behavior.function == params["name"]
74
+ for behavior in self.evaluation_item.mocking_strategy.behaviors
75
+ ):
76
+ raise UiPathNoMockFoundError()
77
+ try:
78
+ return getattr(self.stub, params["name"])(*args, **kwargs)
79
+ except Exception as e:
80
+ raise UiPathMockResponseGenerationError() from e
@@ -0,0 +1,41 @@
1
+ """Mocking interface."""
2
+
3
+ import logging
4
+ from contextvars import ContextVar
5
+ from typing import Any, Callable, Optional
6
+
7
+ from uipath._cli._evals._models._evaluation_set import EvaluationItem
8
+ from uipath._cli._evals.mocks.mocker import Mocker, UiPathNoMockFoundError
9
+ from uipath._cli._evals.mocks.mocker_factory import MockerFactory
10
+
11
+ evaluation_context: ContextVar[Optional[EvaluationItem]] = ContextVar(
12
+ "evaluation", default=None
13
+ )
14
+
15
+ mocker_context: ContextVar[Optional[Mocker]] = ContextVar("mocker", default=None)
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ def set_evaluation_item(item: EvaluationItem) -> None:
21
+ """Set an evaluation item within an evaluation set."""
22
+ evaluation_context.set(item)
23
+ try:
24
+ if item.mocking_strategy:
25
+ mocker_context.set(MockerFactory.create(item))
26
+ else:
27
+ mocker_context.set(None)
28
+ except Exception:
29
+ logger.warning(f"Failed to create mocker for evaluation {item.name}")
30
+ mocker_context.set(None)
31
+
32
+
33
+ async def get_mocked_response(
34
+ func: Callable[[Any], Any], params: dict[str, Any], *args, **kwargs
35
+ ) -> Any:
36
+ """Get a mocked response."""
37
+ mocker = mocker_context.get()
38
+ if mocker is None:
39
+ raise UiPathNoMockFoundError()
40
+ else:
41
+ return await mocker.response(func, params, *args, **kwargs)
@@ -32,7 +32,6 @@ class ConnectionsService(BaseService):
32
32
  super().__init__(config=config, execution_context=execution_context)
33
33
  self._folders_service = folders_service
34
34
 
35
- @infer_bindings(resource_type="connection", name="key")
36
35
  @traced(
37
36
  name="connections_retrieve",
38
37
  run_type="uipath",
@@ -165,7 +164,6 @@ class ConnectionsService(BaseService):
165
164
 
166
165
  return self._parse_and_validate_list_response(response)
167
166
 
168
- @infer_bindings(resource_type="connection", name="key")
169
167
  @traced(
170
168
  name="connections_retrieve",
171
169
  run_type="uipath",
@@ -351,7 +351,8 @@ class UiPathLlmChatService(BaseService):
351
351
  n: int = 1,
352
352
  frequency_penalty: float = 0,
353
353
  presence_penalty: float = 0,
354
- top_p: float = 1,
354
+ top_p: Optional[float] = 1,
355
+ top_k: Optional[int] = None,
355
356
  tools: Optional[List[ToolDefinition]] = None,
356
357
  tool_choice: Optional[ToolChoice] = None,
357
358
  response_format: Optional[Union[Dict[str, Any], type[BaseModel]]] = None,
@@ -385,6 +386,8 @@ class UiPathLlmChatService(BaseService):
385
386
  Positive values encourage discussion of new topics. Defaults to 0.
386
387
  top_p (float, optional): Nucleus sampling parameter between 0 and 1.
387
388
  Controls diversity by considering only the top p probability mass. Defaults to 1.
389
+ top_k (int, optional): Nucleus sampling parameter.
390
+ Controls diversity by considering only the top k most probable tokens. Defaults to None.
388
391
  tools (Optional[List[ToolDefinition]], optional): List of tool definitions that the
389
392
  model can call. Tools enable the model to perform actions or retrieve information
390
393
  beyond text generation. Defaults to None.
@@ -486,6 +489,8 @@ class UiPathLlmChatService(BaseService):
486
489
  "presence_penalty": presence_penalty,
487
490
  "top_p": top_p,
488
491
  }
492
+ if top_k is not None:
493
+ request_body["top_k"] = top_k
489
494
 
490
495
  # Handle response_format - convert BaseModel to schema if needed
491
496
  if response_format:
@@ -7,6 +7,7 @@ from pydantic import BaseModel, ConfigDict, Discriminator, Field, Tag
7
7
 
8
8
  from uipath._cli._evals._models._evaluation_set import EvaluationSet
9
9
  from uipath._cli._evals._models._evaluator import Evaluator
10
+ from uipath._cli._evals._models._mocks import ExampleCall
10
11
  from uipath.models import Connection
11
12
 
12
13
 
@@ -70,7 +71,13 @@ class AgentToolSettings(BaseModel):
70
71
  )
71
72
 
72
73
 
73
- class AgentProcessToolProperties(BaseModel):
74
+ class BaseResourceProperties(BaseModel):
75
+ """Base resource properties."""
76
+
77
+ example_calls: Optional[List[ExampleCall]] = Field(None, alias="exampleCalls")
78
+
79
+
80
+ class AgentProcessToolProperties(BaseResourceProperties):
74
81
  """Properties specific to tool configuration."""
75
82
 
76
83
  folder_path: Optional[str] = Field(None, alias="folderPath")
@@ -125,7 +132,7 @@ class AgentIntegrationToolParameter(BaseModel):
125
132
  )
126
133
 
127
134
 
128
- class AgentIntegrationToolProperties(BaseModel):
135
+ class AgentIntegrationToolProperties(BaseResourceProperties):
129
136
  """Properties specific to tool configuration."""
130
137
 
131
138
  tool_path: str = Field(..., alias="toolPath")
@@ -198,7 +205,7 @@ class AgentEscalationRecipient(BaseModel):
198
205
  )
199
206
 
200
207
 
201
- class AgentEscalationChannelProperties(BaseModel):
208
+ class AgentEscalationChannelProperties(BaseResourceProperties):
202
209
  """Agent escalation channel properties."""
203
210
 
204
211
  app_name: str = Field(..., alias="appName")
@@ -0,0 +1,7 @@
1
+ """Mock interface."""
2
+
3
+ from uipath._cli._evals._models._mocks import ExampleCall
4
+
5
+ from .mockable import mockable
6
+
7
+ __all__ = ["ExampleCall", "mockable"]
@@ -1,49 +1,18 @@
1
- """Mocking interface."""
1
+ """Mockable interface."""
2
2
 
3
3
  import asyncio
4
4
  import functools
5
5
  import inspect
6
6
  import logging
7
7
  import threading
8
- from contextvars import ContextVar
9
- from typing import Any, Callable, Optional
8
+ from typing import Any, List, Optional
10
9
 
11
10
  from pydantic import TypeAdapter
12
11
  from pydantic_function_models import ValidatedFunction # type: ignore[import-untyped]
13
12
 
14
- from uipath._cli._evals._models._evaluation_set import EvaluationItem
15
- from uipath._cli._evals.mocks.mocker import Mocker
16
- from uipath._cli._evals.mocks.mocker_factory import MockerFactory
17
-
18
- evaluation_context: ContextVar[Optional[EvaluationItem]] = ContextVar(
19
- "evaluation", default=None
20
- )
21
-
22
- mocker_context: ContextVar[Optional[Mocker]] = ContextVar("mocker", default=None)
23
-
24
-
25
- def set_evaluation_item(item: EvaluationItem) -> None:
26
- """Set an evaluation item within an evaluation set."""
27
- evaluation_context.set(item)
28
- try:
29
- mocker_context.set(MockerFactory.create(item))
30
- except Exception:
31
- logger.warning(f"Failed to create mocker for evaluation {item.name}")
32
- mocker_context.set(None)
33
-
34
-
35
- async def get_mocked_response(
36
- func: Callable[[Any], Any], params: dict[str, Any], *args, **kwargs
37
- ) -> Any:
38
- """Get a mocked response."""
39
- mocker = mocker_context.get()
40
- evaluation_item = evaluation_context.get()
41
- if mocker is None or evaluation_item is None:
42
- # TODO raise a new UiPath exception type
43
- raise RuntimeError(f"Evaluation item {func.__name__} has not been evaluated")
44
- else:
45
- return await mocker.response(func, params, *args, **kwargs)
46
-
13
+ from uipath._cli._evals._models._mocks import ExampleCall
14
+ from uipath._cli._evals.mocks.mocker import UiPathNoMockFoundError
15
+ from uipath._cli._evals.mocks.mocks import get_mocked_response
47
16
 
48
17
  _event_loop = None
49
18
  logger = logging.getLogger(__name__)
@@ -77,10 +46,7 @@ def mocked_response_decorator(func, params: dict[str, Any]):
77
46
  async def decorated_func(*args, **kwargs):
78
47
  try:
79
48
  return await mock_response_generator(*args, **kwargs)
80
- except Exception:
81
- logger.warning(
82
- f"Failed to mock response for {func.__name__}. Falling back to func."
83
- )
49
+ except UiPathNoMockFoundError:
84
50
  return await func(*args, **kwargs)
85
51
  else:
86
52
 
@@ -88,35 +54,12 @@ def mocked_response_decorator(func, params: dict[str, Any]):
88
54
  def decorated_func(*args, **kwargs):
89
55
  try:
90
56
  return run_coroutine(mock_response_generator(*args, **kwargs))
91
- except Exception:
92
- logger.warning(
93
- f"Failed to mock response for {func.__name__}. Falling back to func."
94
- )
57
+ except UiPathNoMockFoundError:
95
58
  return func(*args, **kwargs)
96
59
 
97
60
  return decorated_func
98
61
 
99
62
 
100
- def mockable(
101
- name: Optional[str] = None,
102
- description: Optional[str] = None,
103
- **kwargs,
104
- ):
105
- """Decorate a function to be a mockable."""
106
-
107
- def decorator(func):
108
- params = {
109
- "name": name or func.__name__,
110
- "description": description or func.__doc__,
111
- "input_schema": get_input_schema(func),
112
- "output_schema": get_output_schema(func),
113
- **kwargs,
114
- }
115
- return mocked_response_decorator(func, params)
116
-
117
- return decorator
118
-
119
-
120
63
  def get_output_schema(func):
121
64
  """Retrieves the JSON schema for a function's return type hint."""
122
65
  try:
@@ -134,3 +77,27 @@ def get_input_schema(func):
134
77
  except Exception:
135
78
  logger.warning(f"Unable to extract input schema for function {func.__name__}")
136
79
  return {}
80
+
81
+
82
+ def mockable(
83
+ name: Optional[str] = None,
84
+ description: Optional[str] = None,
85
+ input_schema: Optional[dict[str, Any]] = None,
86
+ output_schema: Optional[dict[str, Any]] = None,
87
+ example_calls: Optional[List[ExampleCall]] = None,
88
+ **kwargs,
89
+ ):
90
+ """Decorate a function to be a mockable."""
91
+
92
+ def decorator(func):
93
+ params = {
94
+ "name": name or func.__name__,
95
+ "description": description or func.__doc__,
96
+ "input_schema": input_schema or get_input_schema(func),
97
+ "output_schema": output_schema or get_output_schema(func),
98
+ "example_calls": example_calls,
99
+ **kwargs,
100
+ }
101
+ return mocked_response_decorator(func, params)
102
+
103
+ return decorator
@@ -9,7 +9,9 @@ from uipath._cli._evals._models._evaluation_set import (
9
9
  LLMMockingStrategy,
10
10
  MockitoMockingStrategy,
11
11
  )
12
- from uipath._cli._evals.mocks.mocks import mockable, set_evaluation_item
12
+ from uipath._cli._evals.mocks.mocker import UiPathMockResponseGenerationError
13
+ from uipath._cli._evals.mocks.mocks import set_evaluation_item
14
+ from uipath.eval.mocks import mockable
13
15
 
14
16
 
15
17
  def test_mockito_mockable_sync():
@@ -54,7 +56,7 @@ def test_mockito_mockable_sync():
54
56
  assert foo() == "bar2"
55
57
  assert foo() == "bar2"
56
58
 
57
- with pytest.raises(NotImplementedError):
59
+ with pytest.raises(UiPathMockResponseGenerationError):
58
60
  assert foo(x=1)
59
61
 
60
62
  with pytest.raises(NotImplementedError):
@@ -114,7 +116,7 @@ async def test_mockito_mockable_async():
114
116
  assert await foo() == "bar2"
115
117
  assert await foo() == "bar2"
116
118
 
117
- with pytest.raises(NotImplementedError):
119
+ with pytest.raises(UiPathMockResponseGenerationError):
118
120
  assert await foo(x=1)
119
121
 
120
122
  with pytest.raises(NotImplementedError):
@@ -204,6 +206,13 @@ def test_llm_mockable_sync(httpx_mock: HTTPXMock, monkeypatch: MonkeyPatch):
204
206
  assert foo() == "bar1"
205
207
  with pytest.raises(NotImplementedError):
206
208
  assert foofoo()
209
+ httpx_mock.add_response(
210
+ url="https://example.com/api/chat/completions?api-version=2024-08-01-preview",
211
+ status_code=200,
212
+ json={},
213
+ )
214
+ with pytest.raises(UiPathMockResponseGenerationError):
215
+ assert foo()
207
216
 
208
217
 
209
218
  @pytest.mark.asyncio
@@ -270,3 +279,11 @@ async def test_llm_mockable_async(httpx_mock: HTTPXMock, monkeypatch: MonkeyPatc
270
279
  assert await foo() == "bar1"
271
280
  with pytest.raises(NotImplementedError):
272
281
  assert await foofoo()
282
+
283
+ httpx_mock.add_response(
284
+ url="https://example.com/api/chat/completions?api-version=2024-08-01-preview",
285
+ status_code=200,
286
+ json={},
287
+ )
288
+ with pytest.raises(UiPathMockResponseGenerationError):
289
+ assert await foo()