uipath 2.1.70__tar.gz → 2.1.72__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 (329) hide show
  1. uipath-2.1.72/.github/labeler.yml +7 -0
  2. uipath-2.1.72/.github/workflows/auto-label.yml +19 -0
  3. uipath-2.1.72/.github/workflows/test-uipath-langchain.yml +184 -0
  4. uipath-2.1.72/.github/workflows/test-uipath-llamaindex.yml +153 -0
  5. {uipath-2.1.70 → uipath-2.1.72}/PKG-INFO +1 -1
  6. {uipath-2.1.70 → uipath-2.1.72}/pyproject.toml +4 -2
  7. uipath-2.1.72/samples/calculator/evals/eval-sets/default.json +29 -0
  8. uipath-2.1.72/samples/calculator/evals/evaluators/equality.json +13 -0
  9. {uipath-2.1.70 → uipath-2.1.72}/samples/calculator/main.py +1 -1
  10. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_history.py +25 -5
  11. uipath-2.1.72/src/uipath/_cli/_evals/_evaluator_factory.py +106 -0
  12. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_evaluation_set.py +25 -15
  13. uipath-2.1.72/src/uipath/_cli/_evals/_models/_evaluator.py +106 -0
  14. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_contracts.py +1 -0
  15. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_logging.py +112 -31
  16. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_pull.py +1 -1
  17. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/context_grounding_service.py +304 -22
  18. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/constants.py +12 -0
  19. uipath-2.1.72/src/uipath/agent/_utils.py +103 -0
  20. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/models/agent.py +10 -0
  21. {uipath-2.1.70 → uipath-2.1.72}/tests/agent/models/test_agent.py +152 -0
  22. uipath-2.1.72/tests/sdk/services/test_context_grounding_service.py +875 -0
  23. {uipath-2.1.70 → uipath-2.1.72}/uv.lock +1 -1
  24. uipath-2.1.70/src/uipath/_cli/_evals/_evaluator_factory.py +0 -144
  25. uipath-2.1.70/src/uipath/agent/_utils.py +0 -55
  26. uipath-2.1.70/tests/sdk/services/test_context_grounding_service.py +0 -334
  27. {uipath-2.1.70 → uipath-2.1.72}/.cursorrules +0 -0
  28. {uipath-2.1.70 → uipath-2.1.72}/.editorconfig +0 -0
  29. {uipath-2.1.70 → uipath-2.1.72}/.gitattributes +0 -0
  30. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/cd.yml +0 -0
  31. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/ci.yml +0 -0
  32. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/commitlint.yml +0 -0
  33. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/integration_tests.yml +0 -0
  34. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/lint.yml +0 -0
  35. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/publish-dev.yml +0 -0
  36. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/publish-docs.yml +0 -0
  37. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/slack.yml +0 -0
  38. {uipath-2.1.70 → uipath-2.1.72}/.github/workflows/test.yml +0 -0
  39. {uipath-2.1.70 → uipath-2.1.72}/.gitignore +0 -0
  40. {uipath-2.1.70 → uipath-2.1.72}/.pre-commit-config.yaml +0 -0
  41. {uipath-2.1.70 → uipath-2.1.72}/.python-version +0 -0
  42. {uipath-2.1.70 → uipath-2.1.72}/.vscode/extensions.json +0 -0
  43. {uipath-2.1.70 → uipath-2.1.72}/.vscode/launch.json +0 -0
  44. {uipath-2.1.70 → uipath-2.1.72}/.vscode/settings.json +0 -0
  45. {uipath-2.1.70 → uipath-2.1.72}/CONTRIBUTING.md +0 -0
  46. {uipath-2.1.70 → uipath-2.1.72}/LICENSE +0 -0
  47. {uipath-2.1.70 → uipath-2.1.72}/README.md +0 -0
  48. {uipath-2.1.70 → uipath-2.1.72}/docs/CONTRIBUTING.md +0 -0
  49. {uipath-2.1.70 → uipath-2.1.72}/docs/FAQ.md +0 -0
  50. {uipath-2.1.70 → uipath-2.1.72}/docs/assets/env-preparation-failed-dark.png +0 -0
  51. {uipath-2.1.70 → uipath-2.1.72}/docs/assets/env-preparation-failed-light.png +0 -0
  52. {uipath-2.1.70 → uipath-2.1.72}/docs/assets/favicon.png +0 -0
  53. {uipath-2.1.70 → uipath-2.1.72}/docs/assets/logo-dark.svg +0 -0
  54. {uipath-2.1.70 → uipath-2.1.72}/docs/assets/logo-light.svg +0 -0
  55. {uipath-2.1.70 → uipath-2.1.72}/docs/cli/index.md +0 -0
  56. {uipath-2.1.70 → uipath-2.1.72}/docs/core/actions.md +0 -0
  57. {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  58. {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_light.gif +0 -0
  59. {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  60. {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  61. {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/copy_path_dark.png +0 -0
  62. {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets/copy_path_light.png +0 -0
  63. {uipath-2.1.70 → uipath-2.1.72}/docs/core/assets.md +0 -0
  64. {uipath-2.1.70 → uipath-2.1.72}/docs/core/attachments.md +0 -0
  65. {uipath-2.1.70 → uipath-2.1.72}/docs/core/buckets.md +0 -0
  66. {uipath-2.1.70 → uipath-2.1.72}/docs/core/connections.md +0 -0
  67. {uipath-2.1.70 → uipath-2.1.72}/docs/core/context_grounding.md +0 -0
  68. {uipath-2.1.70 → uipath-2.1.72}/docs/core/documents.md +0 -0
  69. {uipath-2.1.70 → uipath-2.1.72}/docs/core/documents_models.md +0 -0
  70. {uipath-2.1.70 → uipath-2.1.72}/docs/core/environment_variables.md +0 -0
  71. {uipath-2.1.70 → uipath-2.1.72}/docs/core/getting_started.md +0 -0
  72. {uipath-2.1.70 → uipath-2.1.72}/docs/core/jobs.md +0 -0
  73. {uipath-2.1.70 → uipath-2.1.72}/docs/core/llm_gateway.md +0 -0
  74. {uipath-2.1.70 → uipath-2.1.72}/docs/core/processes.md +0 -0
  75. {uipath-2.1.70 → uipath-2.1.72}/docs/core/queues.md +0 -0
  76. {uipath-2.1.70 → uipath-2.1.72}/docs/core/traced.md +0 -0
  77. {uipath-2.1.70 → uipath-2.1.72}/docs/hooks.py +0 -0
  78. {uipath-2.1.70 → uipath-2.1.72}/docs/index.md +0 -0
  79. {uipath-2.1.70 → uipath-2.1.72}/docs/javascripts/extra.js +0 -0
  80. {uipath-2.1.70 → uipath-2.1.72}/docs/overrides/main.html +0 -0
  81. {uipath-2.1.70 → uipath-2.1.72}/docs/overrides/partials/actions.html +0 -0
  82. {uipath-2.1.70 → uipath-2.1.72}/docs/overrides/partials/logo.html +0 -0
  83. {uipath-2.1.70 → uipath-2.1.72}/docs/release_policy.md +0 -0
  84. {uipath-2.1.70 → uipath-2.1.72}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  85. {uipath-2.1.70 → uipath-2.1.72}/docs/stylesheets/extra.css +0 -0
  86. {uipath-2.1.70 → uipath-2.1.72}/justfile +0 -0
  87. {uipath-2.1.70 → uipath-2.1.72}/mkdocs.yml +0 -0
  88. {uipath-2.1.70 → uipath-2.1.72}/py.typed +0 -0
  89. {uipath-2.1.70 → uipath-2.1.72}/samples/calculator/README.md +0 -0
  90. {uipath-2.1.70 → uipath-2.1.72}/samples/calculator/pyproject.toml +0 -0
  91. {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/.python-version +0 -0
  92. {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/README.md +0 -0
  93. {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/main.py +0 -0
  94. {uipath-2.1.70 → uipath-2.1.72}/samples/event-trigger/pyproject.toml +0 -0
  95. {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/.env.example +0 -0
  96. {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/README.md +0 -0
  97. {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/input.json +0 -0
  98. {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  99. {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  100. {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/pyproject.toml +0 -0
  101. {uipath-2.1.70 → uipath-2.1.72}/samples/google-ADK-agent/uv.lock +0 -0
  102. {uipath-2.1.70 → uipath-2.1.72}/scripts/debug_test.py +0 -0
  103. {uipath-2.1.70 → uipath-2.1.72}/scripts/lint_httpx_client.py +0 -0
  104. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/__init__.py +0 -0
  105. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/README.md +0 -0
  106. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/__init__.py +0 -0
  107. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  108. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  109. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
  110. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_models.py +0 -0
  111. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  112. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  113. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  114. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/_utils.py +0 -0
  115. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/auth_config.json +0 -0
  116. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/index.html +0 -0
  117. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/localhost.crt +0 -0
  118. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_auth/localhost.key +0 -0
  119. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  120. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  121. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  122. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  123. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  124. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  125. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  126. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  127. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  128. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  129. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  130. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  131. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  132. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  133. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_models/_trajectory_span.py +0 -0
  134. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  135. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_evals/_runtime.py +0 -0
  136. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
  137. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  138. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  139. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  140. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  141. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  142. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/.rels.template +0 -0
  143. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  144. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/main.py.template +0 -0
  145. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  146. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_common.py +0 -0
  147. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_console.py +0 -0
  148. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_constants.py +0 -0
  149. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_debug.py +0 -0
  150. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  151. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_folders.py +0 -0
  152. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_input_args.py +0 -0
  153. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  154. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_processes.py +0 -0
  155. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_project_files.py +0 -0
  156. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  157. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_tracing.py +0 -0
  158. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  159. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_auth.py +0 -0
  160. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_deploy.py +0 -0
  161. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_dev.py +0 -0
  162. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_eval.py +0 -0
  163. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_init.py +0 -0
  164. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_invoke.py +0 -0
  165. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_new.py +0 -0
  166. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_pack.py +0 -0
  167. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_publish.py +0 -0
  168. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_push.py +0 -0
  169. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/cli_run.py +0 -0
  170. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/middlewares.py +0 -0
  171. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_cli/spinner.py +0 -0
  172. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_config.py +0 -0
  173. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_events/__init__.py +0 -0
  174. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_events/_event_bus.py +0 -0
  175. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_events/_events.py +0 -0
  176. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_execution_context.py +0 -0
  177. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_folder_context.py +0 -0
  178. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_resources/AGENTS.md +0 -0
  179. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/__init__.py +0 -0
  180. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/_base_service.py +0 -0
  181. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/actions_service.py +0 -0
  182. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/api_client.py +0 -0
  183. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/assets_service.py +0 -0
  184. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/attachments_service.py +0 -0
  185. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/buckets_service.py +0 -0
  186. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/connections_service.py +0 -0
  187. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/documents_service.py +0 -0
  188. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/entities_service.py +0 -0
  189. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/folder_service.py +0 -0
  190. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/jobs_service.py +0 -0
  191. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/llm_gateway_service.py +0 -0
  192. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/processes_service.py +0 -0
  193. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_services/queues_service.py +0 -0
  194. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_uipath.py +0 -0
  195. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/__init__.py +0 -0
  196. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_endpoint.py +0 -0
  197. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_infer_bindings.py +0 -0
  198. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_logs.py +0 -0
  199. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_read_overwrites.py +0 -0
  200. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_request_override.py +0 -0
  201. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_request_spec.py +0 -0
  202. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_ssl_context.py +0 -0
  203. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_url.py +0 -0
  204. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/_utils/_user_agent.py +0 -0
  205. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/__init__.py +0 -0
  206. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/async_stream.py +0 -0
  207. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/citation.py +0 -0
  208. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/content.py +0 -0
  209. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/conversation.py +0 -0
  210. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/event.py +0 -0
  211. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/exchange.py +0 -0
  212. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/message.py +0 -0
  213. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/meta.py +0 -0
  214. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/agent/conversation/tool.py +0 -0
  215. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/_helpers/__init__.py +0 -0
  216. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/_helpers/helpers.py +0 -0
  217. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/__init__.py +0 -0
  218. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  219. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  220. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  221. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  222. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  223. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  224. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/models/__init__.py +0 -0
  225. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/eval/models/models.py +0 -0
  226. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/__init__.py +0 -0
  227. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/action_schema.py +0 -0
  228. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/actions.py +0 -0
  229. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/assets.py +0 -0
  230. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/attachment.py +0 -0
  231. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/buckets.py +0 -0
  232. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/connections.py +0 -0
  233. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/context_grounding.py +0 -0
  234. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/context_grounding_index.py +0 -0
  235. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/documents.py +0 -0
  236. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/entities.py +0 -0
  237. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/errors.py +0 -0
  238. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/exceptions.py +0 -0
  239. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/interrupt_models.py +0 -0
  240. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/job.py +0 -0
  241. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/llm_gateway.py +0 -0
  242. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/processes.py +0 -0
  243. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/models/queues.py +0 -0
  244. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/py.typed +0 -0
  245. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/telemetry/__init__.py +0 -0
  246. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/telemetry/_constants.py +0 -0
  247. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/telemetry/_track.py +0 -0
  248. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/__init__.py +0 -0
  249. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/_otel_exporters.py +0 -0
  250. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/_traced.py +0 -0
  251. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/tracing/_utils.py +0 -0
  252. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/utils/__init__.py +0 -0
  253. {uipath-2.1.70 → uipath-2.1.72}/src/uipath/utils/_endpoints_manager.py +0 -0
  254. {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/main.py +0 -0
  255. {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/pyproject.toml +0 -0
  256. {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/run.sh +0 -0
  257. {uipath-2.1.70 → uipath-2.1.72}/testcases/apicalls-testcase/src/assert.py +0 -0
  258. {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/main.py +0 -0
  259. {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/pyproject.toml +0 -0
  260. {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/run.sh +0 -0
  261. {uipath-2.1.70 → uipath-2.1.72}/testcases/basic-testcase/src/assert.py +0 -0
  262. {uipath-2.1.70 → uipath-2.1.72}/testcases/common/validate_output.sh +0 -0
  263. {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/agent.mermaid +0 -0
  264. {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/langgraph.json +0 -0
  265. {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/pyproject.toml +0 -0
  266. {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/run.sh +0 -0
  267. {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/src/assert.py +0 -0
  268. {uipath-2.1.70 → uipath-2.1.72}/testcases/langchain-cross/src/main.py +0 -0
  269. {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/agent.mermaid +0 -0
  270. {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/llama_index.json +0 -0
  271. {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/pyproject.toml +0 -0
  272. {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/run.sh +0 -0
  273. {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/src/assert.py +0 -0
  274. {uipath-2.1.70 → uipath-2.1.72}/testcases/llamaindex-cross/src/main.py +0 -0
  275. {uipath-2.1.70 → uipath-2.1.72}/tests/__init__.py +0 -0
  276. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/conftest.py +0 -0
  277. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  278. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/bindings_script.py +0 -0
  279. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/pyproject.toml +0 -0
  280. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/simple_script.py +0 -0
  281. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/uipath-mock.json +0 -0
  282. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  283. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_auth.py +0 -0
  284. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_hitl.py +0 -0
  285. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_init.py +0 -0
  286. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_init_agents_md.py +0 -0
  287. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_input_args.py +0 -0
  288. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_invoke.py +0 -0
  289. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_new.py +0 -0
  290. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_pack.py +0 -0
  291. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  292. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_portal_service_refresh_token.py +0 -0
  293. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_publish.py +0 -0
  294. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_pull.py +0 -0
  295. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_push.py +0 -0
  296. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_run.py +0 -0
  297. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/test_utils.py +0 -0
  298. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/utils/common.py +0 -0
  299. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/utils/project_details.py +0 -0
  300. {uipath-2.1.70 → uipath-2.1.72}/tests/cli/utils/uipath_json.py +0 -0
  301. {uipath-2.1.70 → uipath-2.1.72}/tests/conftest.py +0 -0
  302. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/conftest.py +0 -0
  303. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_actions_service.py +0 -0
  304. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_api_client.py +0 -0
  305. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_assets_service.py +0 -0
  306. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_attachments_service.py +0 -0
  307. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_base_service.py +0 -0
  308. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_buckets_service.py +0 -0
  309. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_connections_service.py +0 -0
  310. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_documents_service.py +0 -0
  311. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_entities_service.py +0 -0
  312. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_folder_service.py +0 -0
  313. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_jobs_service.py +0 -0
  314. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_llm_integration.py +0 -0
  315. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  316. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_llm_service.py +0 -0
  317. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_processes_service.py +0 -0
  318. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_queues_service.py +0 -0
  319. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  320. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  321. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  322. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  323. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/test_bindings_inference.py +0 -0
  324. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/test_config.py +0 -0
  325. {uipath-2.1.70 → uipath-2.1.72}/tests/sdk/test_overwrites.py +0 -0
  326. {uipath-2.1.70 → uipath-2.1.72}/tests/tracing/test_otel_exporters.py +0 -0
  327. {uipath-2.1.70 → uipath-2.1.72}/tests/tracing/test_span_utils.py +0 -0
  328. {uipath-2.1.70 → uipath-2.1.72}/tests/tracing/test_traced.py +0 -0
  329. {uipath-2.1.70 → uipath-2.1.72}/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.70
3
+ Version: 2.1.72
4
4
  Summary: Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools.
5
5
  Project-URL: Homepage, https://uipath.com
6
6
  Project-URL: Repository, https://github.com/UiPath/uipath-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.1.70"
3
+ version = "2.1.72"
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"
@@ -72,7 +72,9 @@ dev = [
72
72
 
73
73
  [tool.hatch.build.targets.wheel]
74
74
  packages = ["src/uipath"]
75
- include = ["src/uipath/_resources"]
75
+ include = [
76
+ "src/uipath/_resources"
77
+ ]
76
78
 
77
79
  [tool.ruff]
78
80
  line-length = 88
@@ -0,0 +1,29 @@
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",
12
+ "name": "Test Addition",
13
+ "inputs": {"a": 1, "b": 1, "operator": "+"},
14
+ "expectedOutput": {"result": 2},
15
+ "simulationInstructions": "",
16
+ "expectedAgentBehavior": "",
17
+ "simulateInput": false,
18
+ "inputGenerationInstructions": "",
19
+ "simulateTools": false,
20
+ "toolsToSimulate": [],
21
+ "evalSetId": "default-eval-set-id",
22
+ "createdAt": "2025-09-04T18:54:58.378Z",
23
+ "updatedAt": "2025-09-04T18:55:55.416Z"
24
+ }
25
+ ],
26
+ "modelSettings": [],
27
+ "createdAt": "2025-09-04T18:54:58.379Z",
28
+ "updatedAt": "2025-09-04T18:55:55.416Z"
29
+ }
@@ -0,0 +1,13 @@
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
+ "prompt": "",
9
+ "model": "same-as-agent",
10
+ "targetOutputKey": "*",
11
+ "createdAt": "2025-06-26T17:45:39.651Z",
12
+ "updatedAt": "2025-06-26T17:45:39.651Z"
13
+ }
@@ -25,7 +25,7 @@ class CalculatorOutput:
25
25
  # use InputTriggerEventArgs when called by UiPath EventTriggers
26
26
  @traced()
27
27
  def main(input: CalculatorInput) -> CalculatorOutput:
28
- result = 0
28
+ result = 0.0
29
29
  match input.operator:
30
30
  case Operator.ADD: result = input.a + input.b
31
31
  case Operator.SUBTRACT: result = input.a - input.b
@@ -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
@@ -0,0 +1,106 @@
1
+ from typing import Any, Dict
2
+
3
+ from pydantic import TypeAdapter
4
+
5
+ from uipath._cli._evals._models._evaluator import (
6
+ EqualsEvaluatorParams,
7
+ Evaluator,
8
+ JsonSimilarityEvaluatorParams,
9
+ LLMEvaluatorParams,
10
+ TrajectoryEvaluatorParams,
11
+ )
12
+ from uipath._cli._evals._models._evaluator_base_params import EvaluatorBaseParams
13
+ from uipath.eval.evaluators import (
14
+ BaseEvaluator,
15
+ ExactMatchEvaluator,
16
+ JsonSimilarityEvaluator,
17
+ LlmAsAJudgeEvaluator,
18
+ TrajectoryEvaluator,
19
+ )
20
+
21
+
22
+ class EvaluatorFactory:
23
+ """Factory class for creating evaluator instances based on configuration."""
24
+
25
+ @classmethod
26
+ def create_evaluator(cls, data: Dict[str, Any]) -> BaseEvaluator[Any]:
27
+ """Create an evaluator instance from configuration data.
28
+
29
+ Args:
30
+ data: Dictionary containing evaluator configuration from JSON file
31
+
32
+ Returns:
33
+ Appropriate evaluator instance based on category
34
+
35
+ Raises:
36
+ ValueError: If category is unknown or required fields are missing
37
+ """
38
+ # Extract common fields
39
+ name = data.get("name", "")
40
+ if not name:
41
+ raise ValueError("Evaluator configuration must include 'name' field")
42
+ id = data.get("id", "")
43
+ if not id:
44
+ raise ValueError("Evaluator configuration must include 'id' field")
45
+
46
+ params: EvaluatorBaseParams = TypeAdapter(Evaluator).validate_python(data)
47
+
48
+ match params:
49
+ case EqualsEvaluatorParams():
50
+ return EvaluatorFactory._create_exact_match_evaluator(params)
51
+ case JsonSimilarityEvaluatorParams():
52
+ return EvaluatorFactory._create_json_similarity_evaluator(params)
53
+ case LLMEvaluatorParams():
54
+ return EvaluatorFactory._create_llm_as_judge_evaluator(params)
55
+ case TrajectoryEvaluatorParams():
56
+ return EvaluatorFactory._create_trajectory_evaluator(params)
57
+ case _:
58
+ raise ValueError(f"Unknown evaluator category: {params}")
59
+
60
+ @staticmethod
61
+ def _create_exact_match_evaluator(
62
+ params: EqualsEvaluatorParams,
63
+ ) -> ExactMatchEvaluator:
64
+ """Create a deterministic evaluator."""
65
+ return ExactMatchEvaluator(**params.model_dump())
66
+
67
+ @staticmethod
68
+ def _create_json_similarity_evaluator(
69
+ params: JsonSimilarityEvaluatorParams,
70
+ ) -> JsonSimilarityEvaluator:
71
+ """Create a deterministic evaluator."""
72
+ return JsonSimilarityEvaluator(**params.model_dump())
73
+
74
+ @staticmethod
75
+ def _create_llm_as_judge_evaluator(
76
+ params: LLMEvaluatorParams,
77
+ ) -> LlmAsAJudgeEvaluator:
78
+ """Create an LLM-as-a-judge evaluator."""
79
+ if not params.prompt:
80
+ raise ValueError("LLM evaluator must include 'prompt' field")
81
+
82
+ if not params.model:
83
+ raise ValueError("LLM evaluator must include 'model' field")
84
+ if params.model == "same-as-agent":
85
+ raise ValueError(
86
+ "'same-as-agent' model option is not supported by coded agents evaluations. Please select a specific model for the evaluator."
87
+ )
88
+
89
+ return LlmAsAJudgeEvaluator(**params.model_dump())
90
+
91
+ @staticmethod
92
+ def _create_trajectory_evaluator(
93
+ params: TrajectoryEvaluatorParams,
94
+ ) -> TrajectoryEvaluator:
95
+ """Create a trajectory evaluator."""
96
+ if not params.prompt:
97
+ raise ValueError("Trajectory evaluator must include 'prompt' field")
98
+
99
+ if not params.model:
100
+ raise ValueError("LLM evaluator must include 'model' field")
101
+ if params.model == "same-as-agent":
102
+ raise ValueError(
103
+ "'same-as-agent' model option is not supported by coded agents evaluations. Please select a specific model for the evaluator."
104
+ )
105
+
106
+ return TrajectoryEvaluator(**params.model_dump())
@@ -5,6 +5,10 @@ from pydantic import BaseModel, ConfigDict, Field
5
5
  from pydantic.alias_generators import to_camel
6
6
 
7
7
 
8
+ class EvaluationSimulationTool(BaseModel):
9
+ name: str = Field(..., alias="name")
10
+
11
+
8
12
  class EvaluationItem(BaseModel):
9
13
  """Individual evaluation item within an evaluation set."""
10
14
 
@@ -14,15 +18,19 @@ class EvaluationItem(BaseModel):
14
18
  name: str
15
19
  inputs: Dict[str, Any]
16
20
  expected_output: Dict[str, Any]
17
- expected_agent_behavior: str = ""
18
- simulation_instructions: str = ""
19
- simulate_input: bool = False
20
- input_generation_instructions: str = ""
21
- simulate_tools: bool = False
22
- tools_to_simulate: List[str] = Field(default_factory=list)
23
- eval_set_id: str
24
- created_at: str
25
- updated_at: str
21
+ expected_agent_behavior: str = Field(default="", alias="expectedAgentBehavior")
22
+ simulation_instructions: str = Field(default="", alias="simulationInstructions")
23
+ simulate_input: bool = Field(default=False, alias="simulateInput")
24
+ input_generation_instructions: str = Field(
25
+ default="", alias="inputGenerationInstructions"
26
+ )
27
+ simulate_tools: bool = Field(default=False, alias="simulateTools")
28
+ tools_to_simulate: List[EvaluationSimulationTool] = Field(
29
+ default_factory=list, alias="toolsToSimulate"
30
+ )
31
+ eval_set_id: str = Field(alias="evalSetId")
32
+ created_at: str = Field(alias="createdAt")
33
+ updated_at: str = Field(alias="updatedAt")
26
34
 
27
35
 
28
36
  class EvaluationSet(BaseModel):
@@ -31,15 +39,17 @@ class EvaluationSet(BaseModel):
31
39
  model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
32
40
 
33
41
  id: str
34
- file_name: str
42
+ file_name: str = Field(..., alias="fileName")
35
43
  evaluator_refs: List[str] = Field(default_factory=list)
36
44
  evaluations: List[EvaluationItem] = Field(default_factory=list)
37
45
  name: str
38
- batch_size: int = 10
39
- timeout_minutes: int = 20
40
- model_settings: List[Dict[str, Any]] = Field(default_factory=list)
41
- created_at: str
42
- updated_at: str
46
+ batch_size: int = Field(10, alias="batchSize")
47
+ timeout_minutes: int = Field(default=20, alias="timeoutMinutes")
48
+ model_settings: List[Dict[str, Any]] = Field(
49
+ default_factory=list, alias="modelSettings"
50
+ )
51
+ created_at: str = Field(alias="createdAt")
52
+ updated_at: str = Field(alias="updatedAt")
43
53
 
44
54
  def extract_selected_evals(self, eval_ids) -> None:
45
55
  selected_evals: list[EvaluationItem] = []