uipath 2.1.71__tar.gz → 2.1.73__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 (336) hide show
  1. uipath-2.1.73/.github/labeler.yml +7 -0
  2. uipath-2.1.73/.github/workflows/auto-label.yml +19 -0
  3. uipath-2.1.73/.github/workflows/test-uipath-langchain.yml +184 -0
  4. uipath-2.1.73/.github/workflows/test-uipath-llamaindex.yml +153 -0
  5. {uipath-2.1.71 → uipath-2.1.73}/PKG-INFO +4 -1
  6. {uipath-2.1.71 → uipath-2.1.73}/pyproject.toml +7 -2
  7. uipath-2.1.73/samples/calculator/evals/eval-sets/default.json +67 -0
  8. uipath-2.1.73/samples/calculator/evals/evaluators/equality.json +11 -0
  9. {uipath-2.1.71 → uipath-2.1.73}/samples/calculator/main.py +25 -5
  10. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_components/_history.py +25 -5
  11. uipath-2.1.73/src/uipath/_cli/_evals/_evaluator_factory.py +106 -0
  12. uipath-2.1.73/src/uipath/_cli/_evals/_models/_evaluation_set.py +167 -0
  13. uipath-2.1.73/src/uipath/_cli/_evals/_models/_evaluator.py +106 -0
  14. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_evals/_runtime.py +2 -0
  15. uipath-2.1.73/src/uipath/_cli/_evals/mocks/__init__.py +1 -0
  16. uipath-2.1.73/src/uipath/_cli/_evals/mocks/llm_mocker.py +153 -0
  17. uipath-2.1.73/src/uipath/_cli/_evals/mocks/mocker.py +29 -0
  18. uipath-2.1.73/src/uipath/_cli/_evals/mocks/mocker_factory.py +25 -0
  19. uipath-2.1.73/src/uipath/_cli/_evals/mocks/mockito_mocker.py +62 -0
  20. uipath-2.1.73/src/uipath/_cli/_evals/mocks/mocks.py +136 -0
  21. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_runtime/_contracts.py +1 -0
  22. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_runtime/_logging.py +112 -31
  23. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_pull.py +1 -1
  24. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/llm_gateway_service.py +24 -27
  25. uipath-2.1.73/src/uipath/agent/_utils.py +124 -0
  26. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/models/agent.py +11 -0
  27. {uipath-2.1.71 → uipath-2.1.73}/tests/agent/models/test_agent.py +152 -0
  28. uipath-2.1.73/tests/cli/eval/mocks/test_mocks.py +272 -0
  29. {uipath-2.1.71 → uipath-2.1.73}/uv.lock +948 -888
  30. uipath-2.1.71/src/uipath/_cli/_evals/_evaluator_factory.py +0 -144
  31. uipath-2.1.71/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -58
  32. uipath-2.1.71/src/uipath/agent/_utils.py +0 -55
  33. {uipath-2.1.71 → uipath-2.1.73}/.cursorrules +0 -0
  34. {uipath-2.1.71 → uipath-2.1.73}/.editorconfig +0 -0
  35. {uipath-2.1.71 → uipath-2.1.73}/.gitattributes +0 -0
  36. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/cd.yml +0 -0
  37. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/ci.yml +0 -0
  38. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/commitlint.yml +0 -0
  39. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/integration_tests.yml +0 -0
  40. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/lint.yml +0 -0
  41. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/publish-dev.yml +0 -0
  42. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/publish-docs.yml +0 -0
  43. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/slack.yml +0 -0
  44. {uipath-2.1.71 → uipath-2.1.73}/.github/workflows/test.yml +0 -0
  45. {uipath-2.1.71 → uipath-2.1.73}/.gitignore +0 -0
  46. {uipath-2.1.71 → uipath-2.1.73}/.pre-commit-config.yaml +0 -0
  47. {uipath-2.1.71 → uipath-2.1.73}/.python-version +0 -0
  48. {uipath-2.1.71 → uipath-2.1.73}/.vscode/extensions.json +0 -0
  49. {uipath-2.1.71 → uipath-2.1.73}/.vscode/launch.json +0 -0
  50. {uipath-2.1.71 → uipath-2.1.73}/.vscode/settings.json +0 -0
  51. {uipath-2.1.71 → uipath-2.1.73}/CONTRIBUTING.md +0 -0
  52. {uipath-2.1.71 → uipath-2.1.73}/LICENSE +0 -0
  53. {uipath-2.1.71 → uipath-2.1.73}/README.md +0 -0
  54. {uipath-2.1.71 → uipath-2.1.73}/docs/CONTRIBUTING.md +0 -0
  55. {uipath-2.1.71 → uipath-2.1.73}/docs/FAQ.md +0 -0
  56. {uipath-2.1.71 → uipath-2.1.73}/docs/assets/env-preparation-failed-dark.png +0 -0
  57. {uipath-2.1.71 → uipath-2.1.73}/docs/assets/env-preparation-failed-light.png +0 -0
  58. {uipath-2.1.71 → uipath-2.1.73}/docs/assets/favicon.png +0 -0
  59. {uipath-2.1.71 → uipath-2.1.73}/docs/assets/logo-dark.svg +0 -0
  60. {uipath-2.1.71 → uipath-2.1.73}/docs/assets/logo-light.svg +0 -0
  61. {uipath-2.1.71 → uipath-2.1.73}/docs/cli/index.md +0 -0
  62. {uipath-2.1.71 → uipath-2.1.73}/docs/core/actions.md +0 -0
  63. {uipath-2.1.71 → uipath-2.1.73}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  64. {uipath-2.1.71 → uipath-2.1.73}/docs/core/assets/cloud_env_var_light.gif +0 -0
  65. {uipath-2.1.71 → uipath-2.1.73}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  66. {uipath-2.1.71 → uipath-2.1.73}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  67. {uipath-2.1.71 → uipath-2.1.73}/docs/core/assets/copy_path_dark.png +0 -0
  68. {uipath-2.1.71 → uipath-2.1.73}/docs/core/assets/copy_path_light.png +0 -0
  69. {uipath-2.1.71 → uipath-2.1.73}/docs/core/assets.md +0 -0
  70. {uipath-2.1.71 → uipath-2.1.73}/docs/core/attachments.md +0 -0
  71. {uipath-2.1.71 → uipath-2.1.73}/docs/core/buckets.md +0 -0
  72. {uipath-2.1.71 → uipath-2.1.73}/docs/core/connections.md +0 -0
  73. {uipath-2.1.71 → uipath-2.1.73}/docs/core/context_grounding.md +0 -0
  74. {uipath-2.1.71 → uipath-2.1.73}/docs/core/documents.md +0 -0
  75. {uipath-2.1.71 → uipath-2.1.73}/docs/core/documents_models.md +0 -0
  76. {uipath-2.1.71 → uipath-2.1.73}/docs/core/environment_variables.md +0 -0
  77. {uipath-2.1.71 → uipath-2.1.73}/docs/core/getting_started.md +0 -0
  78. {uipath-2.1.71 → uipath-2.1.73}/docs/core/jobs.md +0 -0
  79. {uipath-2.1.71 → uipath-2.1.73}/docs/core/llm_gateway.md +0 -0
  80. {uipath-2.1.71 → uipath-2.1.73}/docs/core/processes.md +0 -0
  81. {uipath-2.1.71 → uipath-2.1.73}/docs/core/queues.md +0 -0
  82. {uipath-2.1.71 → uipath-2.1.73}/docs/core/traced.md +0 -0
  83. {uipath-2.1.71 → uipath-2.1.73}/docs/hooks.py +0 -0
  84. {uipath-2.1.71 → uipath-2.1.73}/docs/index.md +0 -0
  85. {uipath-2.1.71 → uipath-2.1.73}/docs/javascripts/extra.js +0 -0
  86. {uipath-2.1.71 → uipath-2.1.73}/docs/overrides/main.html +0 -0
  87. {uipath-2.1.71 → uipath-2.1.73}/docs/overrides/partials/actions.html +0 -0
  88. {uipath-2.1.71 → uipath-2.1.73}/docs/overrides/partials/logo.html +0 -0
  89. {uipath-2.1.71 → uipath-2.1.73}/docs/release_policy.md +0 -0
  90. {uipath-2.1.71 → uipath-2.1.73}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  91. {uipath-2.1.71 → uipath-2.1.73}/docs/stylesheets/extra.css +0 -0
  92. {uipath-2.1.71 → uipath-2.1.73}/justfile +0 -0
  93. {uipath-2.1.71 → uipath-2.1.73}/mkdocs.yml +0 -0
  94. {uipath-2.1.71 → uipath-2.1.73}/py.typed +0 -0
  95. {uipath-2.1.71 → uipath-2.1.73}/samples/calculator/README.md +0 -0
  96. {uipath-2.1.71 → uipath-2.1.73}/samples/calculator/pyproject.toml +0 -0
  97. {uipath-2.1.71 → uipath-2.1.73}/samples/event-trigger/.python-version +0 -0
  98. {uipath-2.1.71 → uipath-2.1.73}/samples/event-trigger/README.md +0 -0
  99. {uipath-2.1.71 → uipath-2.1.73}/samples/event-trigger/main.py +0 -0
  100. {uipath-2.1.71 → uipath-2.1.73}/samples/event-trigger/pyproject.toml +0 -0
  101. {uipath-2.1.71 → uipath-2.1.73}/samples/google-ADK-agent/.env.example +0 -0
  102. {uipath-2.1.71 → uipath-2.1.73}/samples/google-ADK-agent/README.md +0 -0
  103. {uipath-2.1.71 → uipath-2.1.73}/samples/google-ADK-agent/input.json +0 -0
  104. {uipath-2.1.71 → uipath-2.1.73}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  105. {uipath-2.1.71 → uipath-2.1.73}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  106. {uipath-2.1.71 → uipath-2.1.73}/samples/google-ADK-agent/pyproject.toml +0 -0
  107. {uipath-2.1.71 → uipath-2.1.73}/samples/google-ADK-agent/uv.lock +0 -0
  108. {uipath-2.1.71 → uipath-2.1.73}/scripts/debug_test.py +0 -0
  109. {uipath-2.1.71 → uipath-2.1.73}/scripts/lint_httpx_client.py +0 -0
  110. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/__init__.py +0 -0
  111. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/README.md +0 -0
  112. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/__init__.py +0 -0
  113. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  114. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  115. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
  116. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_models.py +0 -0
  117. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  118. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  119. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  120. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/_utils.py +0 -0
  121. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/auth_config.json +0 -0
  122. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/index.html +0 -0
  123. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/localhost.crt +0 -0
  124. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_auth/localhost.key +0 -0
  125. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  126. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  127. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  128. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  129. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  130. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  131. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  132. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  133. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  134. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  135. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  136. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  137. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  138. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  139. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_evals/_models/_trajectory_span.py +0 -0
  140. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  141. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  142. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  143. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  144. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  145. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  146. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  147. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_templates/.rels.template +0 -0
  148. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  149. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_templates/main.py.template +0 -0
  150. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  151. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_common.py +0 -0
  152. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_console.py +0 -0
  153. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_constants.py +0 -0
  154. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_debug.py +0 -0
  155. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  156. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_folders.py +0 -0
  157. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_input_args.py +0 -0
  158. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  159. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_processes.py +0 -0
  160. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_project_files.py +0 -0
  161. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  162. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_tracing.py +0 -0
  163. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  164. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_auth.py +0 -0
  165. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_deploy.py +0 -0
  166. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_dev.py +0 -0
  167. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_eval.py +0 -0
  168. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_init.py +0 -0
  169. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_invoke.py +0 -0
  170. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_new.py +0 -0
  171. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_pack.py +0 -0
  172. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_publish.py +0 -0
  173. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_push.py +0 -0
  174. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/cli_run.py +0 -0
  175. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/middlewares.py +0 -0
  176. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_cli/spinner.py +0 -0
  177. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_config.py +0 -0
  178. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_events/__init__.py +0 -0
  179. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_events/_event_bus.py +0 -0
  180. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_events/_events.py +0 -0
  181. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_execution_context.py +0 -0
  182. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_folder_context.py +0 -0
  183. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_resources/AGENTS.md +0 -0
  184. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/__init__.py +0 -0
  185. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/_base_service.py +0 -0
  186. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/actions_service.py +0 -0
  187. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/api_client.py +0 -0
  188. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/assets_service.py +0 -0
  189. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/attachments_service.py +0 -0
  190. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/buckets_service.py +0 -0
  191. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/connections_service.py +0 -0
  192. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/context_grounding_service.py +0 -0
  193. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/documents_service.py +0 -0
  194. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/entities_service.py +0 -0
  195. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/folder_service.py +0 -0
  196. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/jobs_service.py +0 -0
  197. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/processes_service.py +0 -0
  198. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_services/queues_service.py +0 -0
  199. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_uipath.py +0 -0
  200. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/__init__.py +0 -0
  201. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_endpoint.py +0 -0
  202. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_infer_bindings.py +0 -0
  203. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_logs.py +0 -0
  204. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_read_overwrites.py +0 -0
  205. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_request_override.py +0 -0
  206. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_request_spec.py +0 -0
  207. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_ssl_context.py +0 -0
  208. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_url.py +0 -0
  209. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/_user_agent.py +0 -0
  210. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/_utils/constants.py +0 -0
  211. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/__init__.py +0 -0
  212. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/async_stream.py +0 -0
  213. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/citation.py +0 -0
  214. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/content.py +0 -0
  215. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/conversation.py +0 -0
  216. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/event.py +0 -0
  217. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/exchange.py +0 -0
  218. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/message.py +0 -0
  219. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/meta.py +0 -0
  220. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/agent/conversation/tool.py +0 -0
  221. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/_helpers/__init__.py +0 -0
  222. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/_helpers/helpers.py +0 -0
  223. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/evaluators/__init__.py +0 -0
  224. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  225. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  226. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  227. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  228. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  229. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  230. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/models/__init__.py +0 -0
  231. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/eval/models/models.py +0 -0
  232. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/__init__.py +0 -0
  233. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/action_schema.py +0 -0
  234. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/actions.py +0 -0
  235. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/assets.py +0 -0
  236. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/attachment.py +0 -0
  237. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/buckets.py +0 -0
  238. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/connections.py +0 -0
  239. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/context_grounding.py +0 -0
  240. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/context_grounding_index.py +0 -0
  241. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/documents.py +0 -0
  242. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/entities.py +0 -0
  243. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/errors.py +0 -0
  244. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/exceptions.py +0 -0
  245. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/interrupt_models.py +0 -0
  246. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/job.py +0 -0
  247. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/llm_gateway.py +0 -0
  248. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/processes.py +0 -0
  249. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/models/queues.py +0 -0
  250. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/py.typed +0 -0
  251. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/telemetry/__init__.py +0 -0
  252. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/telemetry/_constants.py +0 -0
  253. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/telemetry/_track.py +0 -0
  254. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/tracing/__init__.py +0 -0
  255. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/tracing/_otel_exporters.py +0 -0
  256. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/tracing/_traced.py +0 -0
  257. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/tracing/_utils.py +0 -0
  258. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/utils/__init__.py +0 -0
  259. {uipath-2.1.71 → uipath-2.1.73}/src/uipath/utils/_endpoints_manager.py +0 -0
  260. {uipath-2.1.71 → uipath-2.1.73}/testcases/apicalls-testcase/main.py +0 -0
  261. {uipath-2.1.71 → uipath-2.1.73}/testcases/apicalls-testcase/pyproject.toml +0 -0
  262. {uipath-2.1.71 → uipath-2.1.73}/testcases/apicalls-testcase/run.sh +0 -0
  263. {uipath-2.1.71 → uipath-2.1.73}/testcases/apicalls-testcase/src/assert.py +0 -0
  264. {uipath-2.1.71 → uipath-2.1.73}/testcases/basic-testcase/main.py +0 -0
  265. {uipath-2.1.71 → uipath-2.1.73}/testcases/basic-testcase/pyproject.toml +0 -0
  266. {uipath-2.1.71 → uipath-2.1.73}/testcases/basic-testcase/run.sh +0 -0
  267. {uipath-2.1.71 → uipath-2.1.73}/testcases/basic-testcase/src/assert.py +0 -0
  268. {uipath-2.1.71 → uipath-2.1.73}/testcases/common/validate_output.sh +0 -0
  269. {uipath-2.1.71 → uipath-2.1.73}/testcases/langchain-cross/agent.mermaid +0 -0
  270. {uipath-2.1.71 → uipath-2.1.73}/testcases/langchain-cross/langgraph.json +0 -0
  271. {uipath-2.1.71 → uipath-2.1.73}/testcases/langchain-cross/pyproject.toml +0 -0
  272. {uipath-2.1.71 → uipath-2.1.73}/testcases/langchain-cross/run.sh +0 -0
  273. {uipath-2.1.71 → uipath-2.1.73}/testcases/langchain-cross/src/assert.py +0 -0
  274. {uipath-2.1.71 → uipath-2.1.73}/testcases/langchain-cross/src/main.py +0 -0
  275. {uipath-2.1.71 → uipath-2.1.73}/testcases/llamaindex-cross/agent.mermaid +0 -0
  276. {uipath-2.1.71 → uipath-2.1.73}/testcases/llamaindex-cross/llama_index.json +0 -0
  277. {uipath-2.1.71 → uipath-2.1.73}/testcases/llamaindex-cross/pyproject.toml +0 -0
  278. {uipath-2.1.71 → uipath-2.1.73}/testcases/llamaindex-cross/run.sh +0 -0
  279. {uipath-2.1.71 → uipath-2.1.73}/testcases/llamaindex-cross/src/assert.py +0 -0
  280. {uipath-2.1.71 → uipath-2.1.73}/testcases/llamaindex-cross/src/main.py +0 -0
  281. {uipath-2.1.71 → uipath-2.1.73}/tests/__init__.py +0 -0
  282. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/conftest.py +0 -0
  283. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  284. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/mocks/bindings_script.py +0 -0
  285. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/mocks/pyproject.toml +0 -0
  286. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/mocks/simple_script.py +0 -0
  287. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/mocks/uipath-mock.json +0 -0
  288. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  289. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_auth.py +0 -0
  290. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_hitl.py +0 -0
  291. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_init.py +0 -0
  292. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_init_agents_md.py +0 -0
  293. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_input_args.py +0 -0
  294. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_invoke.py +0 -0
  295. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_new.py +0 -0
  296. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_pack.py +0 -0
  297. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  298. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_portal_service_refresh_token.py +0 -0
  299. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_publish.py +0 -0
  300. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_pull.py +0 -0
  301. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_push.py +0 -0
  302. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_run.py +0 -0
  303. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/test_utils.py +0 -0
  304. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/utils/common.py +0 -0
  305. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/utils/project_details.py +0 -0
  306. {uipath-2.1.71 → uipath-2.1.73}/tests/cli/utils/uipath_json.py +0 -0
  307. {uipath-2.1.71 → uipath-2.1.73}/tests/conftest.py +0 -0
  308. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/conftest.py +0 -0
  309. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_actions_service.py +0 -0
  310. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_api_client.py +0 -0
  311. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_assets_service.py +0 -0
  312. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_attachments_service.py +0 -0
  313. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_base_service.py +0 -0
  314. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_buckets_service.py +0 -0
  315. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_connections_service.py +0 -0
  316. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_context_grounding_service.py +0 -0
  317. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_documents_service.py +0 -0
  318. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_entities_service.py +0 -0
  319. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_folder_service.py +0 -0
  320. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_jobs_service.py +0 -0
  321. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_llm_integration.py +0 -0
  322. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  323. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_llm_service.py +0 -0
  324. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_processes_service.py +0 -0
  325. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_queues_service.py +0 -0
  326. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  327. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  328. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  329. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  330. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/test_bindings_inference.py +0 -0
  331. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/test_config.py +0 -0
  332. {uipath-2.1.71 → uipath-2.1.73}/tests/sdk/test_overwrites.py +0 -0
  333. {uipath-2.1.71 → uipath-2.1.73}/tests/tracing/test_otel_exporters.py +0 -0
  334. {uipath-2.1.71 → uipath-2.1.73}/tests/tracing/test_span_utils.py +0 -0
  335. {uipath-2.1.71 → uipath-2.1.73}/tests/tracing/test_traced.py +0 -0
  336. {uipath-2.1.71 → uipath-2.1.73}/tests/tracing/test_tracing_manager.py +0 -0
@@ -0,0 +1,7 @@
1
+ test:uipath-llamaindex:
2
+ - changed-files:
3
+ - any-glob-to-any-file: ['src/**/*.py']
4
+
5
+ test:uipath-langchain:
6
+ - changed-files:
7
+ - any-glob-to-any-file: ['src/**/*.py']
@@ -0,0 +1,19 @@
1
+ name: Auto Label PRs
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize, reopened]
6
+
7
+ permissions:
8
+ contents: read
9
+ pull-requests: write
10
+
11
+ jobs:
12
+ label:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - name: Label PR
16
+ uses: actions/labeler@v5
17
+ with:
18
+ configuration-path: '.github/labeler.yml'
19
+ sync-labels: true
@@ -0,0 +1,184 @@
1
+ name: Test UiPath Langchain
2
+
3
+ on:
4
+ pull_request:
5
+ types: [ opened, synchronize, reopened, labeled ]
6
+
7
+ jobs:
8
+ test-uipath-langchain:
9
+ runs-on: ${{ matrix.os }}
10
+ strategy:
11
+ matrix:
12
+ python-version: [ "3.10", "3.11", "3.12", "3.13" ]
13
+ os: [ ubuntu-latest, windows-latest ]
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ # Only run if PR has the test:uipath-langchain label
19
+ if: contains(github.event.pull_request.labels.*.name, 'test:uipath-langchain')
20
+
21
+ steps:
22
+ - name: Checkout uipath-python
23
+ uses: actions/checkout@v4
24
+ with:
25
+ path: 'uipath-python'
26
+
27
+ - name: Setup uv
28
+ uses: astral-sh/setup-uv@v5
29
+
30
+ - name: Setup Python
31
+ uses: actions/setup-python@v5
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+ - name: Build uipath-python package
36
+ run: |
37
+ cd uipath-python
38
+ uv build
39
+
40
+ - name: Checkout uipath-langchain-python
41
+ uses: actions/checkout@v4
42
+ with:
43
+ repository: 'UiPath/uipath-langchain-python'
44
+ path: 'uipath-langchain-python'
45
+
46
+ - name: Update uipath-python version
47
+ shell: bash
48
+ run: |
49
+ cd uipath-langchain-python
50
+ uv add ../uipath-python/dist/*.whl --dev
51
+
52
+ - name: Run uipath-langchain tests
53
+ run: |
54
+ cd uipath-langchain-python
55
+ uv sync
56
+ uv run pytest
57
+
58
+ discover-testcases:
59
+ runs-on: ubuntu-latest
60
+ permissions:
61
+ contents: read
62
+ needs: [test-uipath-langchain]
63
+ outputs:
64
+ testcases: ${{ steps.discover.outputs.testcases }}
65
+ steps:
66
+ - name: Checkout uipath-langchain-python
67
+ uses: actions/checkout@v4
68
+ with:
69
+ repository: 'UiPath/uipath-langchain-python'
70
+ path: 'uipath-langchain-python'
71
+
72
+ - name: Discover testcases
73
+ id: discover
74
+ run: |
75
+ cd uipath-langchain-python
76
+
77
+ # Find all testcase folders (excluding common folders like README, etc.)
78
+ testcase_dirs=$(find testcases -maxdepth 1 -type d -name "*-*" | sed 's|testcases/||' | sort)
79
+
80
+ echo "Found testcase directories:"
81
+ echo "$testcase_dirs"
82
+
83
+ # Convert to JSON array for matrix
84
+ testcases_json=$(echo "$testcase_dirs" | jq -R -s -c 'split("\n")[:-1]')
85
+ echo "testcases=$testcases_json" >> $GITHUB_OUTPUT
86
+
87
+ run-uipath-langchain-integration-tests:
88
+ runs-on: ubuntu-latest
89
+ needs: [discover-testcases]
90
+ permissions:
91
+ contents: read
92
+ strategy:
93
+ matrix:
94
+ testcase: ${{ fromJson(needs.discover-testcases.outputs.testcases) }}
95
+ environment: [alpha, cloud]
96
+ use_azure_chat: [true, false]
97
+ steps:
98
+
99
+ - name: Checkout uipath-python
100
+ uses: actions/checkout@v4
101
+ with:
102
+ path: 'uipath-python'
103
+
104
+ - name: Setup uv
105
+ uses: astral-sh/setup-uv@v5
106
+
107
+ - name: Build uipath-python package
108
+ run: |
109
+ cd uipath-python
110
+ uv build
111
+
112
+ - name: Checkout uipath-langchain-python
113
+ uses: actions/checkout@v4
114
+ with:
115
+ repository: 'UiPath/uipath-langchain-python'
116
+ path: 'uipath-langchain-python'
117
+
118
+ - name: Copy wheel to uipath-langchain
119
+ run: |
120
+ mkdir -p uipath-langchain-python/wheels
121
+ cp uipath-python/dist/*.whl uipath-langchain-python/wheels/
122
+
123
+ - name: Update uipath-python version
124
+ shell: bash
125
+ run: |
126
+ cd uipath-langchain-python
127
+ WHL=$(ls wheels/*.whl | head -n1)
128
+ WHL_NAME=$(basename "$WHL")
129
+ echo "Using wheel: $WHL_NAME"
130
+ sed -i "s|uipath>=.*|uipath @ file:///app/wheels/$WHL_NAME\",|" pyproject.toml
131
+
132
+ if ! grep -q '\[tool.hatch.metadata\]' pyproject.toml; then
133
+ echo -e '\n[tool.hatch.metadata]\nallow-direct-references = true' >> pyproject.toml
134
+ fi
135
+
136
+ - name: Set up Docker Buildx
137
+ uses: docker/setup-buildx-action@v3
138
+
139
+ - name: Build Docker image
140
+ run: |
141
+ cd uipath-langchain-python
142
+ echo "Building Docker image at $(date)"
143
+ docker build -f testcases/Dockerfile \
144
+ -t uipath-langchain-testbase:latest .
145
+ echo "Docker image built at $(date)"
146
+
147
+ - name: Run integration test
148
+ env:
149
+ ALPHA_TEST_CLIENT_ID: ${{ secrets.ALPHA_TEST_CLIENT_ID }}
150
+ ALPHA_TEST_CLIENT_SECRET: ${{ secrets.ALPHA_TEST_CLIENT_SECRET }}
151
+ ALPHA_BASE_URL: ${{ secrets.ALPHA_BASE_URL }}
152
+ CLOUD_TEST_CLIENT_ID: ${{ secrets.CLOUD_TEST_CLIENT_ID }}
153
+ CLOUD_TEST_CLIENT_SECRET: ${{ secrets.CLOUD_TEST_CLIENT_SECRET }}
154
+ CLOUD_BASE_URL: ${{ secrets.CLOUD_BASE_URL }}
155
+ run: |
156
+ cd uipath-langchain-python
157
+
158
+ testcase="${{ matrix.testcase }}"
159
+ environment="${{ matrix.environment }}"
160
+ use_azure_chat="${{ matrix.use_azure_chat }}"
161
+
162
+ echo "Running testcase: $testcase"
163
+ echo "Environment: $environment"
164
+ echo "LLM: $( [ $use_azure_chat == "true" ] && echo "UiPathAzureChatOpenAI" || echo "UiPathChat" )"
165
+ echo "USE_AZURE_CHAT: $use_azure_chat"
166
+
167
+ if [ "$environment" == "alpha" ]; then
168
+ CLIENT_ID=$ALPHA_TEST_CLIENT_ID
169
+ CLIENT_SECRET=$ALPHA_TEST_CLIENT_SECRET
170
+ BASE_URL=$ALPHA_BASE_URL
171
+ else
172
+ CLIENT_ID=$CLOUD_TEST_CLIENT_ID
173
+ CLIENT_SECRET=$CLOUD_TEST_CLIENT_SECRET
174
+ BASE_URL=$CLOUD_BASE_URL
175
+ fi
176
+
177
+ docker run --rm \
178
+ -e CLIENT_ID="$CLIENT_ID" \
179
+ -e CLIENT_SECRET="$CLIENT_SECRET" \
180
+ -e BASE_URL="$BASE_URL" \
181
+ -e USE_AZURE_CHAT="$use_azure_chat" \
182
+ uipath-langchain-testbase:latest \
183
+ bash "/app/testcases/$testcase/run.sh"
184
+
@@ -0,0 +1,153 @@
1
+ name: Test UiPath LlamaIndex
2
+
3
+ on:
4
+ pull_request:
5
+ types: [ opened, synchronize, reopened, labeled ]
6
+
7
+ jobs:
8
+ test-uipath-llamaindex:
9
+ runs-on: ${{ matrix.os }}
10
+ strategy:
11
+ matrix:
12
+ python-version: [ "3.10", "3.11", "3.12", "3.13" ]
13
+ os: [ ubuntu-latest, windows-latest ]
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ # Only run if PR has the test:uipath-llamaindex label
19
+ if: contains(github.event.pull_request.labels.*.name, 'test:uipath-llamaindex')
20
+
21
+ steps:
22
+ - name: Checkout uipath-python
23
+ uses: actions/checkout@v4
24
+ with:
25
+ path: 'uipath-python'
26
+
27
+ - name: Setup uv
28
+ uses: astral-sh/setup-uv@v5
29
+
30
+ - name: Setup Python
31
+ uses: actions/setup-python@v5
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+ - name: Build uipath-python package
36
+ run: |
37
+ cd uipath-python
38
+ uv build
39
+
40
+ - name: Checkout uipath-llamaindex-python
41
+ uses: actions/checkout@v4
42
+ with:
43
+ repository: 'UiPath/uipath-llamaindex-python'
44
+ path: 'uipath-llamaindex-python'
45
+
46
+ - name: Update uipath-python version
47
+ shell: bash
48
+ run: |
49
+ cd uipath-llamaindex-python
50
+ uv add ../uipath-python/dist/*.whl --dev
51
+
52
+ - name: Run uipath-llamaindex tests
53
+ run: |
54
+ cd uipath-llamaindex-python
55
+ uv sync
56
+ uv run pytest
57
+
58
+ discover-testcases:
59
+ runs-on: ubuntu-latest
60
+ permissions:
61
+ contents: read
62
+ needs: test-uipath-llamaindex
63
+ outputs:
64
+ testcases: ${{ steps.discover.outputs.testcases }}
65
+ steps:
66
+ - name: Checkout uipath-llamaindex-python
67
+ uses: actions/checkout@v4
68
+ with:
69
+ repository: 'UiPath/uipath-llamaindex-python'
70
+ path: 'uipath-llamaindex-python'
71
+
72
+ - name: Discover testcases
73
+ id: discover
74
+ run: |
75
+ cd uipath-llamaindex-python
76
+
77
+ # Find all testcase folders (excluding common folders like README, etc.)
78
+ testcase_dirs=$(find testcases -maxdepth 1 -type d -name "*-*" | sed 's|testcases/||' | sort)
79
+
80
+ echo "Found testcase directories:"
81
+ echo "$testcase_dirs"
82
+
83
+ # Convert to JSON array for matrix
84
+ testcases_json=$(echo "$testcase_dirs" | jq -R -s -c 'split("\n")[:-1]')
85
+ echo "testcases=$testcases_json" >> $GITHUB_OUTPUT
86
+
87
+ run-uipath-llamaindex-integration-tests:
88
+ runs-on: ubuntu-latest
89
+ needs: [discover-testcases]
90
+ permissions:
91
+ contents: read
92
+ strategy:
93
+ matrix:
94
+ testcase: ${{ fromJson(needs.discover-testcases.outputs.testcases) }}
95
+ steps:
96
+
97
+ - name: Checkout uipath-python
98
+ uses: actions/checkout@v4
99
+ with:
100
+ path: 'uipath-python'
101
+
102
+ - name: Setup uv
103
+ uses: astral-sh/setup-uv@v5
104
+
105
+ - name: Build uipath-python package
106
+ run: |
107
+ cd uipath-python
108
+ uv build
109
+
110
+ - name: Checkout uipath-llamaindex-python
111
+ uses: actions/checkout@v4
112
+ with:
113
+ repository: 'UiPath/uipath-llamaindex-python'
114
+ path: 'uipath-llamaindex-python'
115
+
116
+ - name: Copy wheel file to uipath-llamaindex-python
117
+ run: |
118
+ mkdir -p uipath-llamaindex-python/wheels
119
+ cp uipath-python/dist/*.whl uipath-llamaindex-python/wheels/
120
+
121
+ - name: Update uipath-python version
122
+ shell: bash
123
+ run: |
124
+ cd uipath-llamaindex-python
125
+ WHL=$(ls wheels/*.whl | head -n1)
126
+ WHL_NAME=$(basename "$WHL")
127
+ echo "Using wheel: $WHL_NAME"
128
+ sed -i "s|uipath>=.*|uipath @ file:///app/wheels/$WHL_NAME\",|" pyproject.toml
129
+
130
+ if ! grep -q '\[tool.hatch.metadata\]' pyproject.toml; then
131
+ echo -e '\n[tool.hatch.metadata]\nallow-direct-references = true' >> pyproject.toml
132
+ fi
133
+
134
+ - name: Set up Docker Buildx
135
+ uses: docker/setup-buildx-action@v3
136
+
137
+ - name: Build Docker image and run integration test
138
+ env:
139
+ ALPHA_TEST_CLIENT_ID: ${{ secrets.ALPHA_TEST_CLIENT_ID }}
140
+ ALPHA_TEST_CLIENT_SECRET: ${{ secrets.ALPHA_TEST_CLIENT_SECRET }}
141
+ ALPHA_BASE_URL: ${{ secrets.ALPHA_BASE_URL }}
142
+ run: |
143
+ cd uipath-llamaindex-python
144
+
145
+ testcase="${{ matrix.testcase }}"
146
+ echo "Running testcase: $testcase"
147
+
148
+ docker build -f testcases/$testcase/Dockerfile \
149
+ -t $testcase:test \
150
+ --build-arg CLIENT_ID="$ALPHA_TEST_CLIENT_ID" \
151
+ --build-arg CLIENT_SECRET="$ALPHA_TEST_CLIENT_SECRET" \
152
+ --build-arg BASE_URL="$ALPHA_BASE_URL" \
153
+ .
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.1.71
3
+ Version: 2.1.73
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
@@ -17,9 +17,12 @@ Requires-Python: >=3.10
17
17
  Requires-Dist: azure-monitor-opentelemetry>=1.6.8
18
18
  Requires-Dist: click>=8.1.8
19
19
  Requires-Dist: httpx>=0.28.1
20
+ Requires-Dist: hydra-core>=1.3.2
21
+ Requires-Dist: mockito>=1.5.4
20
22
  Requires-Dist: opentelemetry-instrumentation>=0.52b1
21
23
  Requires-Dist: opentelemetry-sdk>=1.31.1
22
24
  Requires-Dist: pathlib>=1.0.1
25
+ Requires-Dist: pydantic-function-models>=0.1.10
23
26
  Requires-Dist: pydantic>=2.11.1
24
27
  Requires-Dist: pyperclip>=1.9.0
25
28
  Requires-Dist: python-dotenv>=1.0.1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.1.71"
3
+ version = "2.1.73"
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"
@@ -19,6 +19,9 @@ dependencies = [
19
19
  "truststore>=0.10.1",
20
20
  "textual>=5.3.0",
21
21
  "pyperclip>=1.9.0",
22
+ "mockito>=1.5.4",
23
+ "hydra-core>=1.3.2",
24
+ "pydantic-function-models>=0.1.10",
22
25
  ]
23
26
  classifiers = [
24
27
  "Development Status :: 3 - Alpha",
@@ -72,7 +75,9 @@ dev = [
72
75
 
73
76
  [tool.hatch.build.targets.wheel]
74
77
  packages = ["src/uipath"]
75
- include = ["src/uipath/_resources"]
78
+ include = [
79
+ "src/uipath/_resources"
80
+ ]
76
81
 
77
82
  [tool.ruff]
78
83
  line-length = 88
@@ -0,0 +1,67 @@
1
+ {
2
+ "fileName": "default.json",
3
+ "id": "default-eval-set-id",
4
+ "name": "Basic Calculator Evaluation Set",
5
+ "batchSize": 10,
6
+ "evaluatorRefs": [
7
+ "equality"
8
+ ],
9
+ "evaluations": [
10
+ {
11
+ "id": "test-addition",
12
+ "name": "Test Addition",
13
+ "inputs": {"a": 1, "b": 1, "operator": "+"},
14
+ "expectedOutput": {"result": 2},
15
+ "expectedAgentBehavior": "",
16
+ "evalSetId": "default-eval-set-id",
17
+ "createdAt": "2025-09-04T18:54:58.378Z",
18
+ "updatedAt": "2025-09-04T18:55:55.416Z"
19
+ },
20
+ {
21
+ "id": "test-random-addition-using-mockito",
22
+ "name": "Test Random Addition Using Mockito",
23
+ "inputs": {"a": 1, "b": 1, "operator": "random"},
24
+ "expectedOutput": {"result": 2},
25
+ "expectedAgentBehavior": "",
26
+ "mockingStrategy": {
27
+ "type": "mockito",
28
+ "behaviors": [
29
+ {
30
+ "function": "get_random_operator",
31
+ "arguments": {
32
+ "args": [],
33
+ "kwargs": {}
34
+ },
35
+ "then": [
36
+ {
37
+ "type": "return",
38
+ "value": {"result": "+"}
39
+ }
40
+ ]
41
+ }
42
+ ]
43
+ },
44
+ "evalSetId": "default-eval-set-id",
45
+ "createdAt": "2025-09-04T18:54:58.378Z",
46
+ "updatedAt": "2025-09-04T18:55:55.416Z"
47
+ },
48
+ {
49
+ "id": "test-random-addition-using-llm",
50
+ "name": "Test Random Addition Using LLM",
51
+ "inputs": {"a": 1, "b": 1, "operator": "random"},
52
+ "expectedOutput": {"result": 2},
53
+ "expectedAgentBehavior": "",
54
+ "mockingStrategy": {
55
+ "type": "llm",
56
+ "prompt": "The random operator is '+'.",
57
+ "toolsToSimulate": [{"name": "get_random_operator"}]
58
+ },
59
+ "evalSetId": "default-eval-set-id",
60
+ "createdAt": "2025-09-04T18:54:58.378Z",
61
+ "updatedAt": "2025-09-04T18:55:55.416Z"
62
+ }
63
+ ],
64
+ "modelSettings": [],
65
+ "createdAt": "2025-09-04T18:54:58.379Z",
66
+ "updatedAt": "2025-09-04T18:55:55.416Z"
67
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "fileName": "equality.json",
3
+ "id": "equality",
4
+ "name": "Equality Evaluator",
5
+ "description": "An evaluator that judges the agent based on expected output.",
6
+ "category": 0,
7
+ "type": 1,
8
+ "targetOutputKey": "*",
9
+ "createdAt": "2025-06-26T17:45:39.651Z",
10
+ "updatedAt": "2025-06-26T17:45:39.651Z"
11
+ }
@@ -1,9 +1,13 @@
1
+ import random
2
+
1
3
  from pydantic.dataclasses import dataclass
2
4
  from enum import Enum
3
5
 
4
6
  from uipath.tracing import traced
5
7
  import logging
6
8
 
9
+ from uipath._cli._evals.mocks.mocks import mockable
10
+
7
11
  logger = logging.getLogger(__name__)
8
12
 
9
13
  class Operator(Enum):
@@ -11,6 +15,7 @@ class Operator(Enum):
11
15
  SUBTRACT = "-"
12
16
  MULTIPLY = "*"
13
17
  DIVIDE = "/"
18
+ RANDOM = "random"
14
19
 
15
20
  @dataclass
16
21
  class CalculatorInput:
@@ -22,13 +27,28 @@ class CalculatorInput:
22
27
  class CalculatorOutput:
23
28
  result: float
24
29
 
25
- # use InputTriggerEventArgs when called by UiPath EventTriggers
30
+ @dataclass
31
+ class Wrapper:
32
+ # Testing nested objects
33
+ result: Operator
34
+
35
+ @traced()
36
+ @mockable()
37
+ def get_random_operator() -> Wrapper:
38
+ """Get a random operator."""
39
+ return Wrapper(result=random.choice([Operator.ADD, Operator.SUBTRACT, Operator.MULTIPLY, Operator.DIVIDE]))
40
+
41
+
26
42
  @traced()
27
- def main(input: CalculatorInput) -> CalculatorOutput:
28
- result = 0
29
- match input.operator:
43
+ async def main(input: CalculatorInput) -> CalculatorOutput:
44
+ if input.operator == Operator.RANDOM:
45
+ operator = get_random_operator().result
46
+ else:
47
+ operator = input.operator
48
+ match operator:
30
49
  case Operator.ADD: result = input.a + input.b
31
50
  case Operator.SUBTRACT: result = input.a - input.b
32
51
  case Operator.MULTIPLY: result = input.a * input.b
33
- case Operator.DIVIDE: result = input.a / input.b if input.b != 0 else 0
52
+ case Operator.DIVIDE: result = input.a / input.b if input.b != 0.0 else 0.0
53
+ case _: raise ValueError("Unknown operator")
34
54
  return CalculatorOutput(result=result)
@@ -73,13 +73,33 @@ class RunHistoryPanel(Container):
73
73
  self.refresh_list()
74
74
 
75
75
  def _refresh_running_items(self) -> None:
76
+ """Refresh display names for running items only."""
76
77
  if not any(run.status == "running" for run in self.runs):
77
- return None # No running items, skip update
78
+ return None
78
79
 
79
- run_list = self.query_one("#run-list", ListView)
80
+ try:
81
+ run_list = self.query_one("#run-list", ListView)
82
+ except Exception:
83
+ return None
84
+
85
+ # Take a snapshot of items to avoid mid-iteration changes
86
+ items_snapshot = list(run_list.children)
87
+
88
+ for item in items_snapshot:
89
+ if not hasattr(item, "run_id"):
90
+ continue
91
+
92
+ run = self.get_run_by_id(item.run_id)
93
+ if not run or run.status != "running":
94
+ continue
95
+
96
+ # Check if item still exists in the list (wasn't removed)
97
+ if item not in run_list.children:
98
+ continue
80
99
 
81
- for item in run_list.children:
82
- run = self.get_run_by_id(item.run_id) # type: ignore[attr-defined]
83
- if run and run.status == "running":
100
+ try:
84
101
  static = item.query_one(Static)
85
102
  static.update(run.display_name)
103
+ except Exception:
104
+ # Item structure changed or was removed
105
+ continue