uipath 2.1.88__tar.gz → 2.1.90__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of uipath might be problematic. Click here for more details.

Files changed (367) hide show
  1. {uipath-2.1.88 → uipath-2.1.90}/PKG-INFO +1 -1
  2. {uipath-2.1.88 → uipath-2.1.90}/pyproject.toml +1 -1
  3. {uipath-2.1.88 → uipath-2.1.90}/scripts/update_agents_md.py +9 -177
  4. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_models/_evaluation_set.py +13 -0
  5. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_runtime.py +18 -0
  6. uipath-2.1.90/src/uipath/_cli/_evals/mocks/input_mocker.py +111 -0
  7. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/mocks/mocker.py +6 -0
  8. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_push/sw_file_handler.py +24 -40
  9. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_runtime/_logging.py +4 -0
  10. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_project_files.py +67 -37
  11. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_init.py +26 -12
  12. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_pull.py +22 -1
  13. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_resources/AGENTS.md +2 -20
  14. uipath-2.1.90/src/uipath/_resources/REQUIRED_STRUCTURE.md +64 -0
  15. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_resources/SDK_REFERENCE.md +1 -1
  16. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/_utils.py +14 -1
  17. uipath-2.1.90/src/uipath/agent/loop/__init__.py +17 -0
  18. uipath-2.1.90/src/uipath/agent/loop/prompts.py +57 -0
  19. uipath-2.1.90/src/uipath/agent/loop/tools.py +42 -0
  20. uipath-2.1.90/tests/cli/eval/mocks/test_input_mocker.py +106 -0
  21. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/eval/mocks/test_mocks.py +1 -0
  22. uipath-2.1.90/tests/cli/test_init_agents_md.py +210 -0
  23. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_pull.py +7 -7
  24. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_push.py +21 -21
  25. {uipath-2.1.88 → uipath-2.1.90}/uv.lock +1 -1
  26. uipath-2.1.88/src/uipath/_resources/REQUIRED_STRUCTURE.md +0 -93
  27. uipath-2.1.88/tests/cli/test_init_agents_md.py +0 -156
  28. {uipath-2.1.88 → uipath-2.1.90}/.claude/agents/command-tester.md +0 -0
  29. {uipath-2.1.88 → uipath-2.1.90}/.claude/commands/prepare-pr.md +0 -0
  30. {uipath-2.1.88 → uipath-2.1.90}/.cursorrules +0 -0
  31. {uipath-2.1.88 → uipath-2.1.90}/.editorconfig +0 -0
  32. {uipath-2.1.88 → uipath-2.1.90}/.gitattributes +0 -0
  33. {uipath-2.1.88 → uipath-2.1.90}/.github/labeler.yml +0 -0
  34. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/auto-label.yml +0 -0
  35. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/cd.yml +0 -0
  36. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/ci.yml +0 -0
  37. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/commitlint.yml +0 -0
  38. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/integration_tests.yml +0 -0
  39. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/lint.yml +0 -0
  40. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/publish-dev.yml +0 -0
  41. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/publish-docs.yml +0 -0
  42. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/slack.yml +0 -0
  43. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/test-uipath-langchain.yml +0 -0
  44. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/test-uipath-llamaindex.yml +0 -0
  45. {uipath-2.1.88 → uipath-2.1.90}/.github/workflows/test.yml +0 -0
  46. {uipath-2.1.88 → uipath-2.1.90}/.gitignore +0 -0
  47. {uipath-2.1.88 → uipath-2.1.90}/.pre-commit-config.yaml +0 -0
  48. {uipath-2.1.88 → uipath-2.1.90}/.python-version +0 -0
  49. {uipath-2.1.88 → uipath-2.1.90}/.vscode/extensions.json +0 -0
  50. {uipath-2.1.88 → uipath-2.1.90}/.vscode/launch.json +0 -0
  51. {uipath-2.1.88 → uipath-2.1.90}/.vscode/settings.json +0 -0
  52. {uipath-2.1.88 → uipath-2.1.90}/CONTRIBUTING.md +0 -0
  53. {uipath-2.1.88 → uipath-2.1.90}/LICENSE +0 -0
  54. {uipath-2.1.88 → uipath-2.1.90}/README.md +0 -0
  55. {uipath-2.1.88 → uipath-2.1.90}/docs/CONTRIBUTING.md +0 -0
  56. {uipath-2.1.88 → uipath-2.1.90}/docs/FAQ.md +0 -0
  57. {uipath-2.1.88 → uipath-2.1.90}/docs/assets/env-preparation-failed-dark.png +0 -0
  58. {uipath-2.1.88 → uipath-2.1.90}/docs/assets/env-preparation-failed-light.png +0 -0
  59. {uipath-2.1.88 → uipath-2.1.90}/docs/assets/favicon.png +0 -0
  60. {uipath-2.1.88 → uipath-2.1.90}/docs/assets/llms.txt +0 -0
  61. {uipath-2.1.88 → uipath-2.1.90}/docs/assets/logo-dark.svg +0 -0
  62. {uipath-2.1.88 → uipath-2.1.90}/docs/assets/logo-light.svg +0 -0
  63. {uipath-2.1.88 → uipath-2.1.90}/docs/cli/index.md +0 -0
  64. {uipath-2.1.88 → uipath-2.1.90}/docs/core/actions.md +0 -0
  65. {uipath-2.1.88 → uipath-2.1.90}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  66. {uipath-2.1.88 → uipath-2.1.90}/docs/core/assets/cloud_env_var_light.gif +0 -0
  67. {uipath-2.1.88 → uipath-2.1.90}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  68. {uipath-2.1.88 → uipath-2.1.90}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  69. {uipath-2.1.88 → uipath-2.1.90}/docs/core/assets/copy_path_dark.png +0 -0
  70. {uipath-2.1.88 → uipath-2.1.90}/docs/core/assets/copy_path_light.png +0 -0
  71. {uipath-2.1.88 → uipath-2.1.90}/docs/core/assets.md +0 -0
  72. {uipath-2.1.88 → uipath-2.1.90}/docs/core/attachments.md +0 -0
  73. {uipath-2.1.88 → uipath-2.1.90}/docs/core/buckets.md +0 -0
  74. {uipath-2.1.88 → uipath-2.1.90}/docs/core/connections.md +0 -0
  75. {uipath-2.1.88 → uipath-2.1.90}/docs/core/context_grounding.md +0 -0
  76. {uipath-2.1.88 → uipath-2.1.90}/docs/core/documents.md +0 -0
  77. {uipath-2.1.88 → uipath-2.1.90}/docs/core/documents_models.md +0 -0
  78. {uipath-2.1.88 → uipath-2.1.90}/docs/core/environment_variables.md +0 -0
  79. {uipath-2.1.88 → uipath-2.1.90}/docs/core/getting_started.md +0 -0
  80. {uipath-2.1.88 → uipath-2.1.90}/docs/core/jobs.md +0 -0
  81. {uipath-2.1.88 → uipath-2.1.90}/docs/core/llm_gateway.md +0 -0
  82. {uipath-2.1.88 → uipath-2.1.90}/docs/core/processes.md +0 -0
  83. {uipath-2.1.88 → uipath-2.1.90}/docs/core/queues.md +0 -0
  84. {uipath-2.1.88 → uipath-2.1.90}/docs/core/traced.md +0 -0
  85. {uipath-2.1.88 → uipath-2.1.90}/docs/hooks.py +0 -0
  86. {uipath-2.1.88 → uipath-2.1.90}/docs/index.md +0 -0
  87. {uipath-2.1.88 → uipath-2.1.90}/docs/javascripts/extra.js +0 -0
  88. {uipath-2.1.88 → uipath-2.1.90}/docs/overrides/main.html +0 -0
  89. {uipath-2.1.88 → uipath-2.1.90}/docs/overrides/partials/actions.html +0 -0
  90. {uipath-2.1.88 → uipath-2.1.90}/docs/overrides/partials/logo.html +0 -0
  91. {uipath-2.1.88 → uipath-2.1.90}/docs/release_policy.md +0 -0
  92. {uipath-2.1.88 → uipath-2.1.90}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  93. {uipath-2.1.88 → uipath-2.1.90}/docs/stylesheets/extra.css +0 -0
  94. {uipath-2.1.88 → uipath-2.1.90}/justfile +0 -0
  95. {uipath-2.1.88 → uipath-2.1.90}/mkdocs.yml +0 -0
  96. {uipath-2.1.88 → uipath-2.1.90}/py.typed +0 -0
  97. {uipath-2.1.88 → uipath-2.1.90}/samples/asset-modifier-agent/.env.example +0 -0
  98. {uipath-2.1.88 → uipath-2.1.90}/samples/asset-modifier-agent/README.md +0 -0
  99. {uipath-2.1.88 → uipath-2.1.90}/samples/asset-modifier-agent/input.json +0 -0
  100. {uipath-2.1.88 → uipath-2.1.90}/samples/asset-modifier-agent/main.py +0 -0
  101. {uipath-2.1.88 → uipath-2.1.90}/samples/asset-modifier-agent/pyproject.toml +0 -0
  102. {uipath-2.1.88 → uipath-2.1.90}/samples/asset-modifier-agent/uv.lock +0 -0
  103. {uipath-2.1.88 → uipath-2.1.90}/samples/calculator/README.md +0 -0
  104. {uipath-2.1.88 → uipath-2.1.90}/samples/calculator/evals/eval-sets/default.json +0 -0
  105. {uipath-2.1.88 → uipath-2.1.90}/samples/calculator/evals/evaluators/equality.json +0 -0
  106. {uipath-2.1.88 → uipath-2.1.90}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
  107. {uipath-2.1.88 → uipath-2.1.90}/samples/calculator/main.py +0 -0
  108. {uipath-2.1.88 → uipath-2.1.90}/samples/calculator/pyproject.toml +0 -0
  109. {uipath-2.1.88 → uipath-2.1.90}/samples/calculator/uipath.json +0 -0
  110. {uipath-2.1.88 → uipath-2.1.90}/samples/event-trigger/.python-version +0 -0
  111. {uipath-2.1.88 → uipath-2.1.90}/samples/event-trigger/README.md +0 -0
  112. {uipath-2.1.88 → uipath-2.1.90}/samples/event-trigger/main.py +0 -0
  113. {uipath-2.1.88 → uipath-2.1.90}/samples/event-trigger/pyproject.toml +0 -0
  114. {uipath-2.1.88 → uipath-2.1.90}/samples/google-ADK-agent/.env.example +0 -0
  115. {uipath-2.1.88 → uipath-2.1.90}/samples/google-ADK-agent/README.md +0 -0
  116. {uipath-2.1.88 → uipath-2.1.90}/samples/google-ADK-agent/input.json +0 -0
  117. {uipath-2.1.88 → uipath-2.1.90}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  118. {uipath-2.1.88 → uipath-2.1.90}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  119. {uipath-2.1.88 → uipath-2.1.90}/samples/google-ADK-agent/pyproject.toml +0 -0
  120. {uipath-2.1.88 → uipath-2.1.90}/samples/google-ADK-agent/uv.lock +0 -0
  121. {uipath-2.1.88 → uipath-2.1.90}/scripts/debug_test.py +0 -0
  122. {uipath-2.1.88 → uipath-2.1.90}/scripts/lint_httpx_client.py +0 -0
  123. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/__init__.py +0 -0
  124. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/README.md +0 -0
  125. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/__init__.py +0 -0
  126. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  127. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/_auth_service.py +0 -0
  128. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/_models.py +0 -0
  129. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  130. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  131. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/_url_utils.py +0 -0
  132. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/_utils.py +0 -0
  133. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/auth_config.json +0 -0
  134. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/index.html +0 -0
  135. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/localhost.crt +0 -0
  136. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_auth/localhost.key +0 -0
  137. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
  138. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
  139. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
  140. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
  141. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
  142. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
  143. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
  144. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
  145. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
  146. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
  147. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
  148. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
  149. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
  150. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
  151. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
  152. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
  153. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
  154. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
  155. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_models/_output.py +0 -0
  156. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
  157. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
  158. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/_span_collection.py +0 -0
  159. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
  160. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/mocks/llm_mocker.py +0 -0
  161. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
  162. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
  163. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_evals/mocks/mocks.py +0 -0
  164. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  165. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  166. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  167. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  168. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
  169. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  170. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_templates/.rels.template +0 -0
  171. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  172. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_templates/main.py.template +0 -0
  173. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  174. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_common.py +0 -0
  175. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_console.py +0 -0
  176. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_constants.py +0 -0
  177. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_debug.py +0 -0
  178. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_eval_set.py +0 -0
  179. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_folders.py +0 -0
  180. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_input_args.py +0 -0
  181. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  182. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_processes.py +0 -0
  183. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_studio_project.py +0 -0
  184. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_tracing.py +0 -0
  185. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
  186. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_auth.py +0 -0
  187. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_deploy.py +0 -0
  188. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_dev.py +0 -0
  189. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_eval.py +0 -0
  190. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_invoke.py +0 -0
  191. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_new.py +0 -0
  192. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_pack.py +0 -0
  193. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_publish.py +0 -0
  194. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_push.py +0 -0
  195. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/cli_run.py +0 -0
  196. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/middlewares.py +0 -0
  197. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_cli/spinner.py +0 -0
  198. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_config.py +0 -0
  199. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_events/__init__.py +0 -0
  200. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_events/_event_bus.py +0 -0
  201. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_events/_events.py +0 -0
  202. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_execution_context.py +0 -0
  203. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_folder_context.py +0 -0
  204. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_resources/CLAUDE.md +0 -0
  205. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_resources/CLI_REFERENCE.md +0 -0
  206. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/__init__.py +0 -0
  207. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/_base_service.py +0 -0
  208. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/actions_service.py +0 -0
  209. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/api_client.py +0 -0
  210. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/assets_service.py +0 -0
  211. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/attachments_service.py +0 -0
  212. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/buckets_service.py +0 -0
  213. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/connections_service.py +0 -0
  214. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/context_grounding_service.py +0 -0
  215. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/documents_service.py +0 -0
  216. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/entities_service.py +0 -0
  217. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/external_application_service.py +0 -0
  218. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/folder_service.py +0 -0
  219. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/jobs_service.py +0 -0
  220. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/llm_gateway_service.py +0 -0
  221. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/processes_service.py +0 -0
  222. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_services/queues_service.py +0 -0
  223. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_uipath.py +0 -0
  224. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/__init__.py +0 -0
  225. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_auth.py +0 -0
  226. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_endpoint.py +0 -0
  227. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_infer_bindings.py +0 -0
  228. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_logs.py +0 -0
  229. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_read_overwrites.py +0 -0
  230. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_request_override.py +0 -0
  231. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_request_spec.py +0 -0
  232. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_ssl_context.py +0 -0
  233. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_url.py +0 -0
  234. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/_user_agent.py +0 -0
  235. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/_utils/constants.py +0 -0
  236. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/__init__.py +0 -0
  237. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/async_stream.py +0 -0
  238. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/citation.py +0 -0
  239. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/content.py +0 -0
  240. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/conversation.py +0 -0
  241. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/event.py +0 -0
  242. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/exchange.py +0 -0
  243. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/message.py +0 -0
  244. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/meta.py +0 -0
  245. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/conversation/tool.py +0 -0
  246. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/agent/models/agent.py +0 -0
  247. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/_helpers/__init__.py +0 -0
  248. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/_helpers/helpers.py +0 -0
  249. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/evaluators/__init__.py +0 -0
  250. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
  251. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
  252. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
  253. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
  254. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
  255. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
  256. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/mocks/__init__.py +0 -0
  257. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/mocks/mockable.py +0 -0
  258. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/models/__init__.py +0 -0
  259. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/eval/models/models.py +0 -0
  260. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/__init__.py +0 -0
  261. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/action_schema.py +0 -0
  262. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/actions.py +0 -0
  263. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/assets.py +0 -0
  264. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/attachment.py +0 -0
  265. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/auth.py +0 -0
  266. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/buckets.py +0 -0
  267. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/connections.py +0 -0
  268. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/context_grounding.py +0 -0
  269. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/context_grounding_index.py +0 -0
  270. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/documents.py +0 -0
  271. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/entities.py +0 -0
  272. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/errors.py +0 -0
  273. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/exceptions.py +0 -0
  274. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/interrupt_models.py +0 -0
  275. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/job.py +0 -0
  276. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/llm_gateway.py +0 -0
  277. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/processes.py +0 -0
  278. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/models/queues.py +0 -0
  279. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/py.typed +0 -0
  280. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/telemetry/__init__.py +0 -0
  281. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/telemetry/_constants.py +0 -0
  282. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/telemetry/_track.py +0 -0
  283. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/tracing/__init__.py +0 -0
  284. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/tracing/_otel_exporters.py +0 -0
  285. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/tracing/_traced.py +0 -0
  286. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/tracing/_utils.py +0 -0
  287. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/utils/__init__.py +0 -0
  288. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/utils/_endpoints_manager.py +0 -0
  289. {uipath-2.1.88 → uipath-2.1.90}/src/uipath/utils/dynamic_schema.py +0 -0
  290. {uipath-2.1.88 → uipath-2.1.90}/testcases/apicalls-testcase/main.py +0 -0
  291. {uipath-2.1.88 → uipath-2.1.90}/testcases/apicalls-testcase/pyproject.toml +0 -0
  292. {uipath-2.1.88 → uipath-2.1.90}/testcases/apicalls-testcase/run.sh +0 -0
  293. {uipath-2.1.88 → uipath-2.1.90}/testcases/apicalls-testcase/src/assert.py +0 -0
  294. {uipath-2.1.88 → uipath-2.1.90}/testcases/basic-testcase/main.py +0 -0
  295. {uipath-2.1.88 → uipath-2.1.90}/testcases/basic-testcase/pyproject.toml +0 -0
  296. {uipath-2.1.88 → uipath-2.1.90}/testcases/basic-testcase/run.sh +0 -0
  297. {uipath-2.1.88 → uipath-2.1.90}/testcases/basic-testcase/src/assert.py +0 -0
  298. {uipath-2.1.88 → uipath-2.1.90}/testcases/common/validate_output.sh +0 -0
  299. {uipath-2.1.88 → uipath-2.1.90}/testcases/langchain-cross/agent.mermaid +0 -0
  300. {uipath-2.1.88 → uipath-2.1.90}/testcases/langchain-cross/langgraph.json +0 -0
  301. {uipath-2.1.88 → uipath-2.1.90}/testcases/langchain-cross/pyproject.toml +0 -0
  302. {uipath-2.1.88 → uipath-2.1.90}/testcases/langchain-cross/run.sh +0 -0
  303. {uipath-2.1.88 → uipath-2.1.90}/testcases/langchain-cross/src/assert.py +0 -0
  304. {uipath-2.1.88 → uipath-2.1.90}/testcases/langchain-cross/src/main.py +0 -0
  305. {uipath-2.1.88 → uipath-2.1.90}/testcases/llamaindex-cross/agent.mermaid +0 -0
  306. {uipath-2.1.88 → uipath-2.1.90}/testcases/llamaindex-cross/llama_index.json +0 -0
  307. {uipath-2.1.88 → uipath-2.1.90}/testcases/llamaindex-cross/pyproject.toml +0 -0
  308. {uipath-2.1.88 → uipath-2.1.90}/testcases/llamaindex-cross/run.sh +0 -0
  309. {uipath-2.1.88 → uipath-2.1.90}/testcases/llamaindex-cross/src/assert.py +0 -0
  310. {uipath-2.1.88 → uipath-2.1.90}/testcases/llamaindex-cross/src/main.py +0 -0
  311. {uipath-2.1.88 → uipath-2.1.90}/tests/__init__.py +0 -0
  312. {uipath-2.1.88 → uipath-2.1.90}/tests/agent/models/test_agent.py +0 -0
  313. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/conftest.py +0 -0
  314. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
  315. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/mocks/bindings_script.py +0 -0
  316. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/mocks/pyproject.toml +0 -0
  317. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/mocks/simple_script.py +0 -0
  318. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/mocks/uipath-mock.json +0 -0
  319. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  320. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_auth.py +0 -0
  321. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_hitl.py +0 -0
  322. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_init.py +0 -0
  323. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_input_args.py +0 -0
  324. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_invoke.py +0 -0
  325. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_new.py +0 -0
  326. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_oidc_utils.py +0 -0
  327. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_pack.py +0 -0
  328. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
  329. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_portal_service_refresh_token.py +0 -0
  330. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_publish.py +0 -0
  331. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_run.py +0 -0
  332. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/test_utils.py +0 -0
  333. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/utils/common.py +0 -0
  334. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/utils/project_details.py +0 -0
  335. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/utils/test_dynamic_schema.py +0 -0
  336. {uipath-2.1.88 → uipath-2.1.90}/tests/cli/utils/uipath_json.py +0 -0
  337. {uipath-2.1.88 → uipath-2.1.90}/tests/conftest.py +0 -0
  338. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/conftest.py +0 -0
  339. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_actions_service.py +0 -0
  340. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_api_client.py +0 -0
  341. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_assets_service.py +0 -0
  342. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_attachments_service.py +0 -0
  343. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_base_service.py +0 -0
  344. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_buckets_service.py +0 -0
  345. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_connections_service.py +0 -0
  346. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_context_grounding_service.py +0 -0
  347. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_documents_service.py +0 -0
  348. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_entities_service.py +0 -0
  349. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_external_application_service.py +0 -0
  350. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_folder_service.py +0 -0
  351. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_jobs_service.py +0 -0
  352. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_llm_integration.py +0 -0
  353. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
  354. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_llm_service.py +0 -0
  355. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_processes_service.py +0 -0
  356. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_queues_service.py +0 -0
  357. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  358. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
  359. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
  360. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
  361. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/test_bindings_inference.py +0 -0
  362. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/test_config.py +0 -0
  363. {uipath-2.1.88 → uipath-2.1.90}/tests/sdk/test_overwrites.py +0 -0
  364. {uipath-2.1.88 → uipath-2.1.90}/tests/tracing/test_otel_exporters.py +0 -0
  365. {uipath-2.1.88 → uipath-2.1.90}/tests/tracing/test_span_utils.py +0 -0
  366. {uipath-2.1.88 → uipath-2.1.90}/tests/tracing/test_traced.py +0 -0
  367. {uipath-2.1.88 → uipath-2.1.90}/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.88
3
+ Version: 2.1.90
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.88"
3
+ version = "2.1.90"
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"
@@ -1,10 +1,9 @@
1
1
  #!/usr/bin/env python3
2
- """Script to update AGENTS.md with complete library documentation.
2
+ """Script to update AGENTS.md reference files with complete library documentation.
3
3
 
4
4
  This script extracts information from the uipath SDK and CLI commands and updates
5
- the AGENTS.md file with comprehensive documentation including
6
- - SDK version
7
- - Quick API Reference (SDK services and methods)
5
+ the AGENTS.md reference files with comprehensive documentation including
6
+ - API Reference (SDK services and methods)
8
7
  - CLI Commands Reference
9
8
  """
10
9
 
@@ -147,101 +146,8 @@ def get_service_methods(service_class: type) -> list[tuple[str, Any]]:
147
146
  return methods
148
147
 
149
148
 
150
- def generate_required_structure() -> str:
151
- """Generate Required Agent Structure documentation.
152
-
153
- Returns:
154
- Markdown string with required agent structure
155
- """
156
- output = StringIO()
157
- output.write("\n## Required Agent Structure\n\n")
158
- output.write(
159
- "**IMPORTANT**: All UiPath coded agents MUST follow this standard structure unless explicitly specified otherwise by the user.\n\n"
160
- )
161
-
162
- output.write("### Required Components\n\n")
163
- output.write(
164
- "Every agent implementation MUST include these three Pydantic models:\n\n"
165
- )
166
- output.write("```python\n")
167
- output.write("from pydantic import BaseModel\n\n")
168
- output.write("class Input(BaseModel):\n")
169
- output.write(' """Define input fields that the agent accepts"""\n')
170
- output.write(" # Add your input fields here\n")
171
- output.write(" pass\n\n")
172
- output.write("class State(BaseModel):\n")
173
- output.write(
174
- ' """Define the agent\'s internal state that flows between nodes"""\n'
175
- )
176
- output.write(" # Add your state fields here\n")
177
- output.write(" pass\n\n")
178
- output.write("class Output(BaseModel):\n")
179
- output.write(' """Define output fields that the agent returns"""\n')
180
- output.write(" # Add your output fields here\n")
181
- output.write(" pass\n")
182
- output.write("```\n\n")
183
-
184
- output.write("### Required LLM Initialization\n\n")
185
- output.write(
186
- "Unless the user explicitly requests a different LLM provider, always use `UiPathChat`:\n\n"
187
- )
188
- output.write("```python\n")
189
- output.write("from uipath_langchain.chat import UiPathChat\n\n")
190
- output.write('llm = UiPathChat(model="gpt-4o-2024-08-06", temperature=0.7)\n')
191
- output.write("```\n\n")
192
- output.write("**Alternative LLMs** (only use if explicitly requested):\n")
193
- output.write("- `ChatOpenAI` from `langchain_openai`\n")
194
- output.write("- `ChatAnthropic` from `langchain_anthropic`\n")
195
- output.write("- Other LangChain-compatible LLMs\n\n")
196
-
197
- output.write("### Standard Agent Template\n\n")
198
- output.write("Every agent should follow this basic structure:\n\n")
199
- output.write("```python\n")
200
- output.write("from langchain_core.messages import SystemMessage, HumanMessage\n")
201
- output.write("from langgraph.graph import START, StateGraph, END\n")
202
- output.write("from uipath_langchain.chat import UiPathChat\n")
203
- output.write("from pydantic import BaseModel\n\n")
204
- output.write("# 1. Define Input, State, and Output models\n")
205
- output.write("class Input(BaseModel):\n")
206
- output.write(" field: str\n\n")
207
- output.write("class State(BaseModel):\n")
208
- output.write(" field: str\n")
209
- output.write(' result: str = ""\n\n')
210
- output.write("class Output(BaseModel):\n")
211
- output.write(" result: str\n\n")
212
- output.write("# 2. Initialize UiPathChat LLM\n")
213
- output.write('llm = UiPathChat(model="gpt-4o-2024-08-06", temperature=0.7)\n\n')
214
- output.write("# 3. Define agent nodes (async functions)\n")
215
- output.write("async def process_node(state: State) -> State:\n")
216
- output.write(" response = await llm.ainvoke([HumanMessage(state.field)])\n")
217
- output.write(" return State(field=state.field, result=response.content)\n\n")
218
- output.write("async def output_node(state: State) -> Output:\n")
219
- output.write(" return Output(result=state.result)\n\n")
220
- output.write("# 4. Build the graph\n")
221
- output.write("builder = StateGraph(State, input=Input, output=Output)\n")
222
- output.write('builder.add_node("process", process_node)\n')
223
- output.write('builder.add_node("output", output_node)\n')
224
- output.write('builder.add_edge(START, "process")\n')
225
- output.write('builder.add_edge("process", "output")\n')
226
- output.write('builder.add_edge("output", END)\n\n')
227
- output.write("# 5. Compile the graph\n")
228
- output.write("graph = builder.compile()\n")
229
- output.write("```\n\n")
230
-
231
- output.write("**Key Rules**:\n")
232
- output.write("1. Always use async/await for all node functions\n")
233
- output.write("2. All nodes (except output) must accept and return `State`\n")
234
- output.write("3. The final output node must return `Output`\n")
235
- output.write(
236
- "4. Use `StateGraph(State, input=Input, output=Output)` for initialization\n"
237
- )
238
- output.write("5. Always compile with `graph = builder.compile()`\n\n")
239
-
240
- return output.getvalue()
241
-
242
-
243
149
  def generate_quick_api_docs() -> str:
244
- """Generate Quick API Reference documentation for SDK.
150
+ """Generate API Reference documentation for SDK.
245
151
 
246
152
  Returns:
247
153
  Markdown string with SDK API documentation
@@ -249,7 +155,7 @@ def generate_quick_api_docs() -> str:
249
155
  from uipath import UiPath
250
156
 
251
157
  output = StringIO()
252
- output.write("\n## Quick API Reference\n\n")
158
+ output.write("\n## API Reference\n\n")
253
159
  output.write(
254
160
  "This section provides a comprehensive reference for all UiPath SDK services and methods. "
255
161
  "Each service is documented with complete method signatures, including parameter types and return types.\n\n"
@@ -567,103 +473,29 @@ def generate_cli_docs() -> str:
567
473
  return output.getvalue()
568
474
 
569
475
 
570
- def update_agents_md() -> None:
571
- """Update the AGENTS.md file and generate separate reference files."""
476
+ def generate_agents_md_reference_files() -> None:
477
+ """Generate separate reference files."""
572
478
  resources_dir = Path(__file__).parent.parent / "src" / "uipath" / "_resources"
573
- agents_md_path = resources_dir / "AGENTS.md"
574
479
 
575
- if not agents_md_path.exists():
576
- print(f"Error: AGENTS.md not found at {agents_md_path}", file=sys.stderr)
577
- sys.exit(1)
578
-
579
- with open(agents_md_path, "r", encoding="utf-8") as f:
580
- content = f.read()
581
-
582
- required_structure_marker = "## Required Agent Structure"
583
- api_marker = "## Quick API Reference"
584
- cli_marker = "## CLI Commands Reference"
585
- reference_marker = "## Documentation Structure"
586
-
587
- if reference_marker in content:
588
- header = content.split(reference_marker)[0].rstrip()
589
- elif required_structure_marker in content:
590
- header = content.split(required_structure_marker)[0].rstrip()
591
- elif api_marker in content:
592
- header = content.split(api_marker)[0].rstrip()
593
- elif cli_marker in content:
594
- header = content.split(cli_marker)[0].rstrip()
595
- else:
596
- header = content.rstrip()
597
-
598
- required_structure_path = resources_dir / "REQUIRED_STRUCTURE.md"
599
480
  sdk_reference_path = resources_dir / "SDK_REFERENCE.md"
600
481
  cli_reference_path = resources_dir / "CLI_REFERENCE.md"
601
482
 
602
- required_structure = generate_required_structure()
603
483
  api_docs = generate_quick_api_docs()
604
484
  cli_docs = generate_cli_docs()
605
485
 
606
- with open(required_structure_path, "w", encoding="utf-8") as f:
607
- f.write(required_structure.lstrip("\n"))
608
-
609
486
  with open(sdk_reference_path, "w", encoding="utf-8") as f:
610
487
  f.write(api_docs.lstrip("\n"))
611
488
 
612
489
  with open(cli_reference_path, "w", encoding="utf-8") as f:
613
490
  f.write(cli_docs.lstrip("\n"))
614
491
 
615
- updated_content = f"""{header}
616
-
617
- ## Documentation Structure
618
-
619
- This documentation is split into multiple files for efficient context loading. Load only the files you need:
620
-
621
- ### Core Documentation Files
622
-
623
- 1. **@.agent/REQUIRED_STRUCTURE.md** - Agent structure patterns and templates
624
- - **When to load:** Creating a new agent or understanding required patterns
625
- - **Contains:** Required Pydantic models (Input, State, Output), LLM initialization patterns, standard agent template
626
- - **Size:** ~90 lines
627
-
628
- 2. **@.agent/SDK_REFERENCE.md** - Complete SDK API reference
629
- - **When to load:** Calling UiPath SDK methods, working with services (actions, assets, jobs, etc.)
630
- - **Contains:** All SDK services and methods with full signatures and type annotations
631
- - **Size:** ~400 lines
632
-
633
- 3. **@.agent/CLI_REFERENCE.md** - CLI commands documentation
634
- - **When to load:** Working with `uipath init`, `uipath run`, or `uipath eval` commands
635
- - **Contains:** Command syntax, options, usage examples, and workflows
636
- - **Size:** ~200 lines
637
-
638
- ### Usage Guidelines
639
-
640
- **For LLMs:**
641
- - Read this file (AGENTS.md) first to understand the documentation structure
642
- - Load .agent/REQUIRED_STRUCTURE.md when building new agents or need structure reference
643
- - Load .agent/SDK_REFERENCE.md only when you need to call specific SDK methods
644
- - Load .agent/CLI_REFERENCE.md only when working with CLI commands
645
-
646
- **Benefits:**
647
- - Reduced token usage by loading only relevant context
648
- - Faster response times
649
- - More focused context for specific tasks
650
- """
651
-
652
- with open(agents_md_path, "w", encoding="utf-8") as f:
653
- f.write(updated_content)
654
-
655
- print(f"Successfully updated {agents_md_path}")
656
- print(f"Generated {required_structure_path}")
657
- print(f"Generated {sdk_reference_path}")
658
- print(f"Generated {cli_reference_path}")
659
-
660
492
 
661
493
  def main():
662
494
  """Main function."""
663
495
  try:
664
- update_agents_md()
496
+ generate_agents_md_reference_files()
665
497
  except Exception as e:
666
- print(f"Error updating AGENTS.md: {e}", file=sys.stderr)
498
+ print(f"Error updating AGENTS.md reference files: {e}", file=sys.stderr)
667
499
  sys.exit(1)
668
500
 
669
501
 
@@ -44,6 +44,15 @@ class LLMMockingStrategy(BaseMockingStrategy):
44
44
  )
45
45
 
46
46
 
47
+ class InputMockingStrategy(BaseModel):
48
+ prompt: str = Field(..., alias="prompt")
49
+ model: Optional[ModelSettings] = Field(None, alias="model")
50
+
51
+ model_config = ConfigDict(
52
+ validate_by_name=True, validate_by_alias=True, extra="allow"
53
+ )
54
+
55
+
47
56
  class MockingArgument(BaseModel):
48
57
  args: List[Any] = Field(default_factory=lambda: [], alias="args")
49
58
  kwargs: Dict[str, Any] = Field(default_factory=lambda: {}, alias="kwargs")
@@ -110,6 +119,10 @@ class EvaluationItem(BaseModel):
110
119
  default=None,
111
120
  alias="mockingStrategy",
112
121
  )
122
+ input_mocking_strategy: Optional[InputMockingStrategy] = Field(
123
+ default=None,
124
+ alias="inputMockingStrategy",
125
+ )
113
126
 
114
127
 
115
128
  class EvaluationSet(BaseModel):
@@ -11,6 +11,10 @@ from opentelemetry import context as context_api
11
11
  from opentelemetry.sdk.trace import ReadableSpan, Span
12
12
  from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult
13
13
 
14
+ from uipath._cli._evals.mocks.input_mocker import (
15
+ generate_llm_input,
16
+ )
17
+
14
18
  from ..._events._event_bus import EventBus
15
19
  from ..._events._events import (
16
20
  EvalItemExceptionDetails,
@@ -318,6 +322,10 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
318
322
  evaluators: List[BaseEvaluator[Any]],
319
323
  event_bus: EventBus,
320
324
  ) -> EvaluationRunResult:
325
+ # Generate LLM-based input if input_mocking_strategy is defined
326
+ if eval_item.input_mocking_strategy:
327
+ eval_item = await self._generate_input_for_eval(eval_item)
328
+
321
329
  set_execution_context(eval_item, self.span_collector)
322
330
 
323
331
  await event_bus.publish(
@@ -417,6 +425,16 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
417
425
 
418
426
  return evaluation_run_results
419
427
 
428
+ async def _generate_input_for_eval(
429
+ self, eval_item: EvaluationItem
430
+ ) -> EvaluationItem:
431
+ """Use LLM to generate a mock input for an evaluation item."""
432
+ # TODO(bai): get the input schema from agent definition, once it is available there.
433
+ input_schema: dict[str, Any] = {}
434
+ generated_input = await generate_llm_input(eval_item, input_schema)
435
+ updated_eval_item = eval_item.model_copy(update={"inputs": generated_input})
436
+ return updated_eval_item
437
+
420
438
  def _get_and_clear_execution_data(
421
439
  self, execution_id: str
422
440
  ) -> tuple[List[ReadableSpan], list[logging.LogRecord]]:
@@ -0,0 +1,111 @@
1
+ """LLM Input Mocker implementation."""
2
+
3
+ import json
4
+ from datetime import datetime
5
+ from typing import Any, Dict
6
+
7
+ from uipath import UiPath
8
+ from uipath._cli._evals._models._evaluation_set import EvaluationItem
9
+ from uipath.tracing._traced import traced
10
+
11
+ from .mocker import UiPathInputMockingError
12
+
13
+
14
+ def get_input_mocking_prompt(
15
+ input_schema: str,
16
+ input_generation_instructions: str,
17
+ expected_behavior: str,
18
+ expected_output: str,
19
+ ) -> str:
20
+ """Generate the LLM input mocking prompt."""
21
+ current_datetime = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
22
+
23
+ return f"""You are simulating input for automated testing purposes of an Agent as part of a simulation run.
24
+ You will need to generate realistic input to a LLM agent which will call various tools to achieve a goal. This must be in the exact format of the INPUT_SCHEMA.
25
+ You may need to follow specific INPUT_GENERATION_INSTRUCTIONS. If no relevant instructions are provided pertaining to input generation, use the other provided information and your own judgement to generate input.
26
+ If the INPUT_GENERATION_INSTRUCTIONS are provided, you MUST follow them exactly. For example if the instructions say to generate a value for a field to be before a certain calendar date, you must generate a value that is before that date.
27
+
28
+ The current date and time is: {current_datetime}
29
+
30
+ #INPUT_SCHEMA: You MUST OUTPUT THIS EXACT JSON SCHEMA
31
+ {input_schema}
32
+ #END_INPUT_SCHEMA
33
+
34
+ #INPUT_GENERATION_INSTRUCTIONS
35
+ {input_generation_instructions}
36
+ #END_INPUT_GENERATION_INSTRUCTIONS
37
+
38
+ #EXPECTED_BEHAVIOR
39
+ {expected_behavior}
40
+ #END_EXPECTED_BEHAVIOR
41
+
42
+ #EXPECTED_OUTPUT
43
+ {expected_output}
44
+ #END_EXPECTED_OUTPUT
45
+
46
+ Based on the above information, provide a realistic input to the LLM agent. Your response should:
47
+ 1. Match the expected input format according to the INPUT_SCHEMA exactly
48
+ 2. Be consistent with the style and level of detail in the example inputs
49
+ 3. Consider the context of the the agent being tested
50
+ 4. Be realistic and representative of what a real user might say or ask
51
+
52
+ OUTPUT: ONLY the simulated agent input in the exact format of the INPUT_SCHEMA in valid JSON. Do not include any explanations, quotation marks, or markdown."""
53
+
54
+
55
+ @traced(name="__mocker__")
56
+ async def generate_llm_input(
57
+ evaluation_item: EvaluationItem,
58
+ input_schema: Dict[str, Any],
59
+ ) -> Dict[str, Any]:
60
+ """Generate synthetic input using an LLM based on the evaluation context."""
61
+ try:
62
+ llm = UiPath().llm
63
+
64
+ prompt = get_input_mocking_prompt(
65
+ input_schema=json.dumps(input_schema, indent=2),
66
+ input_generation_instructions=evaluation_item.input_mocking_strategy.prompt
67
+ if evaluation_item.input_mocking_strategy
68
+ else "",
69
+ expected_behavior=evaluation_item.expected_agent_behavior or "",
70
+ expected_output=json.dumps(evaluation_item.expected_output, indent=2)
71
+ if evaluation_item.expected_output
72
+ else "",
73
+ )
74
+
75
+ response_format = {
76
+ "type": "json_schema",
77
+ "json_schema": {
78
+ "name": "agent_input",
79
+ "strict": True,
80
+ "schema": input_schema,
81
+ },
82
+ }
83
+
84
+ model_parameters = (
85
+ evaluation_item.input_mocking_strategy.model
86
+ if evaluation_item.input_mocking_strategy
87
+ else None
88
+ )
89
+ completion_kwargs = (
90
+ model_parameters.model_dump(by_alias=False, exclude_none=True)
91
+ if model_parameters
92
+ else {}
93
+ )
94
+
95
+ response = await llm.chat_completions(
96
+ [{"role": "user", "content": prompt}],
97
+ response_format=response_format,
98
+ **completion_kwargs,
99
+ )
100
+
101
+ generated_input_str = response.choices[0].message.content
102
+
103
+ return json.loads(generated_input_str)
104
+ except json.JSONDecodeError as e:
105
+ raise UiPathInputMockingError(
106
+ f"Failed to parse LLM response as JSON: {str(e)}"
107
+ ) from e
108
+ except UiPathInputMockingError:
109
+ raise
110
+ except Exception as e:
111
+ raise UiPathInputMockingError(f"Failed to generate input: {str(e)}") from e
@@ -33,3 +33,9 @@ class UiPathMockResponseGenerationError(Exception):
33
33
  """Exception when a mocker is configured unable to generate a response."""
34
34
 
35
35
  pass
36
+
37
+
38
+ class UiPathInputMockingError(Exception):
39
+ """Exception when input mocking fails."""
40
+
41
+ pass
@@ -1,14 +1,12 @@
1
1
  """Studio Web File Handler for managing file operations in UiPath projects."""
2
2
 
3
3
  import json
4
+ import logging
4
5
  import os
5
6
  from datetime import datetime, timezone
6
7
  from typing import Any, Dict, Optional, Set
7
8
 
8
- import click
9
-
10
9
  from ...models.exceptions import EnrichedException
11
- from .._utils._console import ConsoleLogger
12
10
  from .._utils._constants import (
13
11
  AGENT_INITIAL_CODE_VERSION,
14
12
  AGENT_STORAGE_VERSION,
@@ -30,6 +28,8 @@ from .._utils._studio_project import (
30
28
  StudioClient,
31
29
  )
32
30
 
31
+ logger = logging.getLogger(__name__)
32
+
33
33
 
34
34
  class SwFileHandler:
35
35
  """Handler for Studio Web file operations.
@@ -58,7 +58,6 @@ class SwFileHandler:
58
58
  """
59
59
  self.directory = directory
60
60
  self.include_uv_lock = include_uv_lock
61
- self.console = ConsoleLogger()
62
61
  self._studio_client = StudioClient(project_id)
63
62
  self._project_structure: Optional[ProjectStructure] = None
64
63
 
@@ -156,9 +155,7 @@ class SwFileHandler:
156
155
 
157
156
  for local_file in local_files:
158
157
  if not os.path.exists(local_file.file_path):
159
- self.console.warning(
160
- f"File not found: {click.style(local_file.file_path, fg='cyan')}"
161
- )
158
+ logger.info(f"File not found: '{local_file.file_path}'")
162
159
  continue
163
160
 
164
161
  # Skip agent.json as it's handled separately
@@ -175,9 +172,7 @@ class SwFileHandler:
175
172
  id=remote_file.id, content_file_path=local_file.file_path
176
173
  )
177
174
  )
178
- self.console.info(
179
- f"Updating {click.style(local_file.file_name, fg='yellow')}"
180
- )
175
+ logger.info(f"Updating '{local_file.file_name}'")
181
176
  else:
182
177
  parent_path = os.path.dirname(local_file.relative_path)
183
178
  structural_migration.added_resources.append(
@@ -188,9 +183,7 @@ class SwFileHandler:
188
183
  else "source_code",
189
184
  )
190
185
  )
191
- self.console.info(
192
- f"Uploading {click.style(local_file.relative_path, fg='cyan')}"
193
- )
186
+ logger.info(f"Uploading '{local_file.relative_path}'")
194
187
 
195
188
  # identify and add deleted files
196
189
  structural_migration.deleted_resources.extend(
@@ -236,9 +229,7 @@ class SwFileHandler:
236
229
  for _, remote_file in source_code_files.items():
237
230
  if remote_file.id not in processed_source_file_paths:
238
231
  deleted_files.add(remote_file.id)
239
- self.console.info(
240
- f"Deleting {click.style(remote_file.name, fg='bright_red')}"
241
- )
232
+ logger.info(f"Deleting '{remote_file.name}'")
242
233
 
243
234
  return deleted_files
244
235
 
@@ -263,16 +254,14 @@ class SwFileHandler:
263
254
  for folder_info in empty_folder_ids:
264
255
  try:
265
256
  await self._studio_client.delete_item_async(folder_info["id"])
266
- self.console.info(
267
- f"Deleted empty folder {click.style(folder_info['name'], fg='bright_red')}"
268
- )
257
+ logger.info(f"Deleted empty folder '{folder_info['name']}'")
269
258
  except Exception as e:
270
- self.console.warning(
271
- f"Failed to delete empty folder {folder_info['name']}: {str(e)}"
259
+ logger.warning(
260
+ f"Failed to delete empty folder '{folder_info['name']}': {str(e)}"
272
261
  )
273
262
 
274
263
  except Exception as e:
275
- self.console.warning(f"Failed to cleanup empty folders: {str(e)}")
264
+ logger.warning(f"Failed to cleanup empty folders: {str(e)}")
276
265
 
277
266
  def _collect_empty_folders(self, folder: ProjectFolder) -> list[dict[str, str]]:
278
267
  """Recursively collect IDs and names of empty folders.
@@ -335,8 +324,8 @@ class SwFileHandler:
335
324
  entry_points_json["entryPoints"] = uipath_config["entryPoints"]
336
325
 
337
326
  except Exception:
338
- self.console.warning(
339
- "Could not parse existing entry-points.json file, using default version"
327
+ logger.info(
328
+ "Could not parse existing 'entry-points.json' file, using default version"
340
329
  )
341
330
  structural_migration.modified_resources.append(
342
331
  ModifiedResource(
@@ -344,12 +333,10 @@ class SwFileHandler:
344
333
  content_string=json.dumps(entry_points_json),
345
334
  )
346
335
  )
347
- self.console.info(
348
- f"Updating {click.style('entry-points.json', fg='yellow')}"
349
- )
336
+ logger.info("Updating 'entry-points.json'")
350
337
 
351
338
  else:
352
- self.console.warning(
339
+ logger.info(
353
340
  "'entry-points.json' file does not exist in Studio Web project, initializing using default version"
354
341
  )
355
342
  entry_points_json = {
@@ -363,9 +350,7 @@ class SwFileHandler:
363
350
  content_string=json.dumps(entry_points_json),
364
351
  )
365
352
  )
366
- self.console.info(
367
- f"Uploading {click.style('entry-points.json', fg='cyan')}"
368
- )
353
+ logger.info("Uploading 'entry-points.json'")
369
354
 
370
355
  async def _prepare_agent_json_migration(
371
356
  self,
@@ -400,9 +385,10 @@ class SwFileHandler:
400
385
  input_schema = uipath_config["entryPoints"][0]["input"]
401
386
  output_schema = uipath_config["entryPoints"][0]["output"]
402
387
  except (FileNotFoundError, KeyError) as e:
403
- self.console.error(
388
+ logger.error(
404
389
  f"Unable to extract entrypoints from configuration file. Please run 'uipath init' : {str(e)}",
405
390
  )
391
+ return
406
392
 
407
393
  author = get_author_from_token_or_toml()
408
394
 
@@ -444,8 +430,8 @@ class SwFileHandler:
444
430
  AGENT_INITIAL_CODE_VERSION[:-1] + "1"
445
431
  )
446
432
  except Exception:
447
- self.console.warning(
448
- "Could not parse existing agent.json file, using default version"
433
+ logger.info(
434
+ "Could not parse existing 'agent.json' file, using default version"
449
435
  )
450
436
 
451
437
  structural_migration.modified_resources.append(
@@ -454,9 +440,9 @@ class SwFileHandler:
454
440
  content_string=json.dumps(agent_json),
455
441
  )
456
442
  )
457
- self.console.info(f"Updating {click.style('agent.json', fg='yellow')}")
443
+ logger.info("Updating 'agent.json'")
458
444
  else:
459
- self.console.warning(
445
+ logger.info(
460
446
  "'agent.json' file does not exist in Studio Web project, initializing using default version"
461
447
  )
462
448
  structural_migration.added_resources.append(
@@ -465,7 +451,7 @@ class SwFileHandler:
465
451
  content_string=json.dumps(agent_json),
466
452
  )
467
453
  )
468
- self.console.info(f"Uploading {click.style('agent.json', fg='cyan')}")
454
+ logger.info("Uploading 'agent.json'")
469
455
 
470
456
  async def upload_source_files(self, config_data: dict[str, Any]) -> None:
471
457
  """Main method to upload source files to the UiPath project.
@@ -502,9 +488,7 @@ class SwFileHandler:
502
488
  if not source_code_folder:
503
489
  await self._studio_client.create_folder_async("source_code")
504
490
 
505
- self.console.success(
506
- f"Created {click.style('source_code', fg='cyan')} folder"
507
- )
491
+ logger.info("Created 'source_code' folder.")
508
492
  source_code_files = {}
509
493
 
510
494
  # Get files to upload and process them
@@ -266,6 +266,10 @@ class LogsInterceptor:
266
266
  def writable(self) -> bool:
267
267
  return True
268
268
 
269
+ def __getattr__(self, name):
270
+ # Delegate any unknown attributes to the original file
271
+ return getattr(self.sys_file, name)
272
+
269
273
  # Set up stdout and stderr loggers
270
274
  stdout_logger = logging.getLogger("stdout")
271
275
  stderr_logger = logging.getLogger("stderr")