uipath 2.1.97__tar.gz → 2.1.99__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.
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/integration_tests.yml +18 -1
- {uipath-2.1.97 → uipath-2.1.99}/PKG-INFO +1 -1
- {uipath-2.1.97 → uipath-2.1.99}/pyproject.toml +2 -4
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/__init__.py +2 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_debug/_bridge.py +77 -28
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_debug/_runtime.py +2 -2
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_runtime.py +6 -6
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_runtime/_contracts.py +19 -2
- uipath-2.1.99/src/uipath/_cli/_runtime/_runtime.py +145 -0
- uipath-2.1.99/src/uipath/_cli/_runtime/_runtime_factory.py +21 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_debug.py +0 -2
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_eval.py +12 -18
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_init.py +61 -70
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_run.py +16 -22
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_resources/CLI_REFERENCE.md +1 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/documents_service.py +4 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_uipath.py +0 -2
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_logs.py +0 -1
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/job.py +1 -1
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_init.py +1 -1
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_init_agents_md.py +61 -20
- {uipath-2.1.97 → uipath-2.1.99}/uv.lock +1 -1
- uipath-2.1.97/src/uipath/_cli/_runtime/_runtime.py +0 -76
- {uipath-2.1.97 → uipath-2.1.99}/.claude/agents/command-tester.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.claude/commands/prepare-pr.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.cursorrules +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.editorconfig +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.gitattributes +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/labeler.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/auto-label.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/cd.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/ci.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/commitlint.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/lint.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/publish-dev.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/publish-docs.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/slack.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/test-uipath-langchain.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/test-uipath-llamaindex.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.github/workflows/test.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.gitignore +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.pre-commit-config.yaml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.python-version +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.vscode/extensions.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.vscode/launch.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/.vscode/settings.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/CONTRIBUTING.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/LICENSE +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/README.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/CONTRIBUTING.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/FAQ.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/assets/env-preparation-failed-dark.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/assets/env-preparation-failed-light.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/assets/favicon.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/assets/llms.txt +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/assets/logo-dark.svg +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/assets/logo-light.svg +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/cli/index.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/actions.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/assets/cloud_env_var_dark.gif +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/assets/cloud_env_var_light.gif +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/assets/copy_path_dark.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/assets/copy_path_light.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/assets.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/attachments.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/buckets.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/connections.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/context_grounding.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/documents.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/documents_models.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/environment_variables.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/getting_started.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/jobs.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/llm_gateway.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/processes.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/queues.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/core/traced.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/hooks.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/index.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/javascripts/extra.js +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/overrides/main.html +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/overrides/partials/actions.html +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/overrides/partials/logo.html +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/release_policy.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/docs/stylesheets/extra.css +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/justfile +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/mkdocs.yml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/py.typed +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/asset-modifier-agent/.env.example +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/asset-modifier-agent/README.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/asset-modifier-agent/input.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/asset-modifier-agent/main.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/asset-modifier-agent/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/asset-modifier-agent/uv.lock +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/calculator/README.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/calculator/evals/eval-sets/default.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/calculator/evals/evaluators/equality.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/calculator/main.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/calculator/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/calculator/uipath.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/event-trigger/.python-version +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/event-trigger/README.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/event-trigger/main.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/event-trigger/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/google-ADK-agent/.env.example +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/google-ADK-agent/README.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/google-ADK-agent/input.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/google-ADK-agent/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/samples/google-ADK-agent/uv.lock +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/scripts/debug_test.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/scripts/lint_httpx_client.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/scripts/update_agents_md.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/README.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/_auth_server.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/_auth_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/_models.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/_portal_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/_url_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/auth_config.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/index.html +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/localhost.crt +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_auth/localhost.key +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_models/_output.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/_span_collection.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/mocks/input_mocker.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/mocks/llm_mocker.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/mocks/mocker.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_evals/mocks/mocks.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_push/sw_file_handler.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_runtime/_escalation.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_runtime/_hitl.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_runtime/_logging.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_templates/.rels.template +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_templates/main.py.template +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_common.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_console.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_constants.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_debug.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_eval_set.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_folders.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_input_args.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_processes.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_project_files.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_studio_project.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_tracing.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_auth.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_deploy.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_dev.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_invoke.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_new.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_pack.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_publish.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_pull.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/cli_push.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/middlewares.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/models/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/models/runtime_schema.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_cli/spinner.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_config.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_events/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_events/_event_bus.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_events/_events.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_execution_context.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_folder_context.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_resources/AGENTS.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_resources/CLAUDE.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_resources/REQUIRED_STRUCTURE.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_resources/SDK_REFERENCE.md +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/_base_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/actions_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/api_client.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/assets_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/attachments_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/buckets_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/connections_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/context_grounding_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/entities_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/external_application_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/folder_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/jobs_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/llm_gateway_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/processes_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_services/queues_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_auth.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_endpoint.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_infer_bindings.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_read_overwrites.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_request_override.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_request_spec.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_ssl_context.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_url.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/_user_agent.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/_utils/constants.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/async_stream.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/citation.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/content.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/conversation.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/event.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/exchange.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/message.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/meta.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/conversation/tool.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/loop/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/loop/prompts.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/loop/tools.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/models/agent.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/agent/models/evals.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/_helpers/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/_helpers/helpers.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/evaluators/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/mocks/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/mocks/mockable.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/models/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/eval/models/models.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/action_schema.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/actions.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/assets.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/attachment.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/auth.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/buckets.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/connections.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/context_grounding.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/context_grounding_index.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/documents.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/entities.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/errors.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/exceptions.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/interrupt_models.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/llm_gateway.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/processes.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/models/queues.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/py.typed +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/telemetry/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/telemetry/_constants.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/telemetry/_track.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/tracing/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/tracing/_otel_exporters.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/tracing/_traced.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/tracing/_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/utils/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/utils/_endpoints_manager.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/src/uipath/utils/dynamic_schema.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/apicalls-testcase/main.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/apicalls-testcase/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/apicalls-testcase/run.sh +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/apicalls-testcase/src/assert.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/basic-testcase/main.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/basic-testcase/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/basic-testcase/run.sh +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/basic-testcase/src/assert.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/common/validate_output.sh +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/langchain-cross/agent.mermaid +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/langchain-cross/langgraph.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/langchain-cross/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/langchain-cross/run.sh +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/langchain-cross/src/assert.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/langchain-cross/src/main.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/llamaindex-cross/agent.mermaid +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/llamaindex-cross/llama_index.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/llamaindex-cross/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/llamaindex-cross/run.sh +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/llamaindex-cross/src/assert.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/testcases/llamaindex-cross/src/main.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/__init__.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/agent/models/test_agent.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/agent/models/test_evals.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/conftest.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/eval/mocks/test_input_mocker.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/eval/mocks/test_mocks.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/mocks/bindings_script.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/mocks/pyproject.toml +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/mocks/simple_script.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/mocks/uipath-mock.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/models/test_runtime_schema.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_auth.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_hitl.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_input_args.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_invoke.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_new.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_oidc_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_pack.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_portal_service_refresh_token.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_publish.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_pull.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_push.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_run.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/test_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/utils/common.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/utils/project_details.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/utils/test_dynamic_schema.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/cli/utils/uipath_json.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/conftest.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/conftest.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_actions_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_api_client.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_assets_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_attachments_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_base_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_buckets_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_connections_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_context_grounding_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_documents_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_entities_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_external_application_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_folder_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_jobs_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_llm_integration.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_llm_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_processes_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_queues_service.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/test_bindings_inference.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/test_config.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/sdk/test_overwrites.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/tracing/test_otel_exporters.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/tracing/test_span_utils.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/tracing/test_traced.py +0 -0
- {uipath-2.1.97 → uipath-2.1.99}/tests/tracing/test_tracing_manager.py +0 -0
|
@@ -63,10 +63,27 @@ jobs:
|
|
|
63
63
|
USE_AZURE_CHAT: ${{ matrix.use_azure_chat }}
|
|
64
64
|
working-directory: testcases/${{ matrix.testcase }}
|
|
65
65
|
run: |
|
|
66
|
+
# If any errors occur execution will stop with exit code
|
|
67
|
+
set -e
|
|
68
|
+
|
|
66
69
|
echo "Running testcase: ${{ matrix.testcase }}"
|
|
67
70
|
echo "Environment: ${{ matrix.environment }}"
|
|
68
71
|
echo "Working directory: $(pwd)"
|
|
69
72
|
|
|
70
73
|
# Execute the testcase run script directly
|
|
71
74
|
bash run.sh
|
|
72
|
-
bash ../common/validate_output.sh
|
|
75
|
+
bash ../common/validate_output.sh
|
|
76
|
+
|
|
77
|
+
summarize-results:
|
|
78
|
+
needs: [integration-tests]
|
|
79
|
+
runs-on: ubuntu-latest
|
|
80
|
+
if: always() # This ensures the job runs even if the tests fail
|
|
81
|
+
steps:
|
|
82
|
+
- name: Check integration tests status
|
|
83
|
+
run: |
|
|
84
|
+
if [[ "${{ needs.integration-tests.result }}" == "success" ]]; then
|
|
85
|
+
echo "All integration tests passed"
|
|
86
|
+
else
|
|
87
|
+
echo "Some integration tests failed"
|
|
88
|
+
exit 1
|
|
89
|
+
fi
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: uipath
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.99
|
|
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.
|
|
3
|
+
version = "2.1.99"
|
|
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"
|
|
@@ -76,9 +76,7 @@ dev = [
|
|
|
76
76
|
|
|
77
77
|
[tool.hatch.build.targets.wheel]
|
|
78
78
|
packages = ["src/uipath"]
|
|
79
|
-
include = [
|
|
80
|
-
"src/uipath/_resources"
|
|
81
|
-
]
|
|
79
|
+
include = ["src/uipath/_resources"]
|
|
82
80
|
|
|
83
81
|
[tool.ruff]
|
|
84
82
|
line-length = 88
|
|
@@ -3,6 +3,7 @@ import sys
|
|
|
3
3
|
|
|
4
4
|
import click
|
|
5
5
|
|
|
6
|
+
from .._utils._logs import setup_logging
|
|
6
7
|
from ._utils._common import add_cwd_to_path, load_environment_variables
|
|
7
8
|
from .cli_auth import auth as auth
|
|
8
9
|
from .cli_debug import debug as debug # type: ignore
|
|
@@ -47,6 +48,7 @@ def _get_safe_version() -> str:
|
|
|
47
48
|
def cli(lv: bool, v: bool) -> None:
|
|
48
49
|
load_environment_variables()
|
|
49
50
|
add_cwd_to_path()
|
|
51
|
+
setup_logging()
|
|
50
52
|
if lv:
|
|
51
53
|
try:
|
|
52
54
|
version = importlib.metadata.version("uipath-langchain")
|
|
@@ -5,9 +5,11 @@ import os
|
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
6
|
from typing import Any, Dict, Optional
|
|
7
7
|
|
|
8
|
+
from pydantic import BaseModel
|
|
8
9
|
from pysignalr.client import SignalRClient
|
|
9
10
|
from rich.console import Console
|
|
10
11
|
from rich.syntax import Syntax
|
|
12
|
+
from rich.tree import Tree
|
|
11
13
|
|
|
12
14
|
from uipath._cli._runtime._contracts import (
|
|
13
15
|
UiPathBreakpointResult,
|
|
@@ -115,7 +117,7 @@ class ConsoleDebugBridge(UiPathDebugBridge):
|
|
|
115
117
|
|
|
116
118
|
self.console.print(f"[yellow]●[/yellow] [bold]{state_event.node_name}[/bold]")
|
|
117
119
|
if state_event.payload:
|
|
118
|
-
self._print_json(state_event.payload, label="
|
|
120
|
+
self._print_json(state_event.payload, label="state")
|
|
119
121
|
|
|
120
122
|
async def emit_breakpoint_hit(
|
|
121
123
|
self, breakpoint_result: UiPathBreakpointResult
|
|
@@ -135,7 +137,7 @@ class ConsoleDebugBridge(UiPathDebugBridge):
|
|
|
135
137
|
|
|
136
138
|
# Display current state
|
|
137
139
|
if breakpoint_result.current_state:
|
|
138
|
-
self._print_json(breakpoint_result.current_state, label="
|
|
140
|
+
self._print_json(breakpoint_result.current_state, label="state")
|
|
139
141
|
|
|
140
142
|
async def emit_execution_completed(
|
|
141
143
|
self,
|
|
@@ -157,7 +159,7 @@ class ConsoleDebugBridge(UiPathDebugBridge):
|
|
|
157
159
|
|
|
158
160
|
self.console.print(f"[{color}]{symbol} END[/{color}]")
|
|
159
161
|
if runtime_result.output:
|
|
160
|
-
self._print_json(runtime_result.output, label="
|
|
162
|
+
self._print_json(runtime_result.output, label="output")
|
|
161
163
|
|
|
162
164
|
async def emit_execution_error(
|
|
163
165
|
self,
|
|
@@ -193,36 +195,83 @@ class ConsoleDebugBridge(UiPathDebugBridge):
|
|
|
193
195
|
self.console.print()
|
|
194
196
|
return user_input
|
|
195
197
|
|
|
196
|
-
def _print_json(self, data: Dict[str, Any], label: str = "
|
|
197
|
-
"""Print JSON data
|
|
198
|
+
def _print_json(self, data: Dict[str, Any], label: str = "data") -> None:
|
|
199
|
+
"""Print JSON data with enhanced hierarchy."""
|
|
198
200
|
try:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
201
|
+
# Create a tree for nested structure
|
|
202
|
+
tree = Tree(f"[bold cyan]{label}[/bold cyan]")
|
|
203
|
+
|
|
204
|
+
def process_value(
|
|
205
|
+
node: Tree, value: Any, key_label: str, depth: int
|
|
206
|
+
) -> None:
|
|
207
|
+
"""Process a single value and add it to the tree."""
|
|
208
|
+
if isinstance(value, BaseModel):
|
|
209
|
+
branch = node.add(
|
|
210
|
+
f"{key_label} [dim]({type(value).__name__})[/dim]"
|
|
211
|
+
)
|
|
212
|
+
add_to_tree(branch, value, depth + 1)
|
|
213
|
+
elif isinstance(value, dict):
|
|
214
|
+
branch = node.add(f"{key_label} [dim](dict)[/dim]")
|
|
215
|
+
add_to_tree(branch, value, depth + 1)
|
|
216
|
+
elif isinstance(value, list):
|
|
217
|
+
branch = node.add(
|
|
218
|
+
f"{key_label} [dim](list, {len(value)} items)[/dim]"
|
|
219
|
+
)
|
|
220
|
+
add_to_tree(branch, value, depth + 1)
|
|
221
|
+
else:
|
|
222
|
+
val_str = str(value)
|
|
223
|
+
if len(val_str) > 250:
|
|
224
|
+
val_str = val_str[:250] + "..."
|
|
225
|
+
node.add(f"{key_label}: [green]{val_str}[/green]")
|
|
226
|
+
|
|
227
|
+
def add_to_tree(node: Tree, payload: Any, depth: int = 0):
|
|
228
|
+
if depth > 10:
|
|
229
|
+
node.add("[dim]...[/dim]")
|
|
230
|
+
return
|
|
231
|
+
|
|
232
|
+
if isinstance(payload, BaseModel):
|
|
233
|
+
try:
|
|
234
|
+
payload = payload.model_dump() # Pydantic v2
|
|
235
|
+
except AttributeError:
|
|
236
|
+
payload = payload.dict() # Pydantic v1
|
|
237
|
+
add_to_tree(node, payload, depth)
|
|
238
|
+
|
|
239
|
+
elif isinstance(payload, dict):
|
|
240
|
+
for key, value in payload.items():
|
|
241
|
+
process_value(node, value, f"[yellow]{key}[/yellow]", depth)
|
|
242
|
+
|
|
243
|
+
elif isinstance(payload, list):
|
|
244
|
+
for i, item in enumerate(payload):
|
|
245
|
+
process_value(node, item, f"[cyan]#{i}[/cyan]", depth)
|
|
246
|
+
|
|
247
|
+
else:
|
|
248
|
+
val_str = str(payload)
|
|
249
|
+
if len(val_str) > 250:
|
|
250
|
+
val_str = val_str[:250] + "..."
|
|
251
|
+
node.add(f"[green]{val_str}[/green]")
|
|
252
|
+
|
|
253
|
+
add_to_tree(tree, data)
|
|
214
254
|
|
|
215
255
|
self.console.print()
|
|
216
|
-
|
|
217
|
-
self.console.print(f"[dim]{label}{truncated_text}:")
|
|
218
|
-
self.console.print(syntax)
|
|
256
|
+
self.console.print(tree)
|
|
219
257
|
self.console.print()
|
|
258
|
+
|
|
220
259
|
except Exception:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
260
|
+
try:
|
|
261
|
+
json_str = json.dumps(data, indent=2, default=str)
|
|
262
|
+
if len(json_str) > 10000:
|
|
263
|
+
json_str = json_str[:10000] + "\n..."
|
|
264
|
+
|
|
265
|
+
syntax = Syntax(json_str, "json", theme="monokai", line_numbers=False)
|
|
266
|
+
self.console.print(f"\n[dim]{label}:")
|
|
267
|
+
self.console.print(syntax)
|
|
268
|
+
self.console.print()
|
|
269
|
+
except Exception:
|
|
270
|
+
# Fallback to simple print
|
|
271
|
+
self.console.print()
|
|
272
|
+
self.console.print(f"[dim]{label}:")
|
|
273
|
+
self.console.print(str(data))
|
|
274
|
+
self.console.print()
|
|
226
275
|
|
|
227
276
|
|
|
228
277
|
class SignalRDebugBridge(UiPathDebugBridge):
|
|
@@ -56,7 +56,7 @@ class UiPathDebugRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
56
56
|
raise RuntimeError("Failed to create inner runtime")
|
|
57
57
|
|
|
58
58
|
await self.debug_bridge.emit_execution_started(
|
|
59
|
-
execution_id=self.context.
|
|
59
|
+
execution_id=self.context.job_id or "default"
|
|
60
60
|
)
|
|
61
61
|
|
|
62
62
|
# Try to stream events from inner runtime
|
|
@@ -78,7 +78,7 @@ class UiPathDebugRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
78
78
|
except Exception as e:
|
|
79
79
|
# Emit execution error
|
|
80
80
|
await self.debug_bridge.emit_execution_error(
|
|
81
|
-
execution_id=self.context.
|
|
81
|
+
execution_id=self.context.job_id or "default",
|
|
82
82
|
error=str(e),
|
|
83
83
|
)
|
|
84
84
|
raise
|
|
@@ -451,12 +451,12 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
451
451
|
async def execute_runtime(
|
|
452
452
|
self, eval_item: EvaluationItem, execution_id: str
|
|
453
453
|
) -> UiPathEvalRunExecutionOutput:
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
)
|
|
454
|
+
context_args = self.context.model_dump()
|
|
455
|
+
context_args["execution_id"] = execution_id
|
|
456
|
+
context_args["input_json"] = eval_item.inputs
|
|
457
|
+
context_args["is_eval_run"] = True
|
|
458
|
+
context_args["log_handler"] = self._setup_execution_logging(execution_id)
|
|
459
|
+
runtime_context: C = self.factory.new_context(**context_args)
|
|
460
460
|
if runtime_context.execution_id is None:
|
|
461
461
|
raise ValueError("execution_id must be set for eval runs")
|
|
462
462
|
|
|
@@ -39,6 +39,7 @@ from uipath._events._events import UiPathRuntimeEvent
|
|
|
39
39
|
from uipath.agent.conversation import UiPathConversationEvent, UiPathConversationMessage
|
|
40
40
|
from uipath.tracing import TracingManager
|
|
41
41
|
|
|
42
|
+
from ..models.runtime_schema import BindingResource, Entrypoint
|
|
42
43
|
from ._logging import LogsInterceptor
|
|
43
44
|
|
|
44
45
|
logger = logging.getLogger(__name__)
|
|
@@ -516,6 +517,22 @@ class UiPathBaseRuntime(ABC):
|
|
|
516
517
|
runtime = cls(context)
|
|
517
518
|
return runtime
|
|
518
519
|
|
|
520
|
+
@property
|
|
521
|
+
def get_binding_resources(self) -> List[BindingResource]:
|
|
522
|
+
"""Get binding resources for this runtime.
|
|
523
|
+
|
|
524
|
+
Returns: A list of binding resources.
|
|
525
|
+
"""
|
|
526
|
+
raise NotImplementedError()
|
|
527
|
+
|
|
528
|
+
@property
|
|
529
|
+
def get_entrypoint(self) -> Entrypoint:
|
|
530
|
+
"""Get entrypoint for this runtime.
|
|
531
|
+
|
|
532
|
+
Returns: A entrypoint for this runtime.
|
|
533
|
+
"""
|
|
534
|
+
raise NotImplementedError()
|
|
535
|
+
|
|
519
536
|
async def __aenter__(self):
|
|
520
537
|
"""Async enter method called when entering the 'async with' block.
|
|
521
538
|
|
|
@@ -806,9 +823,9 @@ class UiPathRuntimeFactory(Generic[T, C]):
|
|
|
806
823
|
return self.context_generator(**kwargs)
|
|
807
824
|
return self.context_class(**kwargs)
|
|
808
825
|
|
|
809
|
-
def new_runtime(self) -> T:
|
|
826
|
+
def new_runtime(self, **kwargs) -> T:
|
|
810
827
|
"""Create a new runtime instance."""
|
|
811
|
-
context = self.new_context()
|
|
828
|
+
context = self.new_context(**kwargs)
|
|
812
829
|
if self.runtime_generator:
|
|
813
830
|
return self.runtime_generator(context)
|
|
814
831
|
return self.runtime_class.from_context(context)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"""Python script runtime implementation for executing and managing python scripts."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
import os
|
|
5
|
+
import uuid
|
|
6
|
+
from functools import cached_property
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import Any, Awaitable, Callable, List, Optional, TypeVar
|
|
9
|
+
|
|
10
|
+
from typing_extensions import override
|
|
11
|
+
|
|
12
|
+
from .._utils._console import ConsoleLogger
|
|
13
|
+
from .._utils._input_args import generate_args
|
|
14
|
+
from .._utils._parse_ast import generate_bindings # type: ignore[attr-defined]
|
|
15
|
+
from ..models.runtime_schema import BindingResource, Entrypoint
|
|
16
|
+
from ._contracts import (
|
|
17
|
+
UiPathBaseRuntime,
|
|
18
|
+
UiPathErrorCategory,
|
|
19
|
+
UiPathRuntimeContext,
|
|
20
|
+
UiPathRuntimeError,
|
|
21
|
+
UiPathRuntimeResult,
|
|
22
|
+
UiPathRuntimeStatus,
|
|
23
|
+
)
|
|
24
|
+
from ._script_executor import ScriptExecutor
|
|
25
|
+
|
|
26
|
+
logger = logging.getLogger(__name__)
|
|
27
|
+
|
|
28
|
+
T = TypeVar("T")
|
|
29
|
+
R = TypeVar("R")
|
|
30
|
+
AsyncFunc = Callable[[T], Awaitable[R]]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class UiPathRuntime(UiPathBaseRuntime):
|
|
34
|
+
def __init__(self, context: UiPathRuntimeContext, executor: AsyncFunc[Any, Any]):
|
|
35
|
+
self.context = context
|
|
36
|
+
self.executor = executor
|
|
37
|
+
|
|
38
|
+
async def cleanup(self) -> None:
|
|
39
|
+
"""Cleanup runtime resources."""
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
async def validate(self):
|
|
43
|
+
"""Validate runtime context."""
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
async def execute(self) -> Optional[UiPathRuntimeResult]:
|
|
47
|
+
"""Execute the Python script with the provided input and configuration.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
Dictionary with execution results
|
|
51
|
+
|
|
52
|
+
Raises:
|
|
53
|
+
UiPathRuntimeError: If execution fails
|
|
54
|
+
"""
|
|
55
|
+
try:
|
|
56
|
+
script_result = await self.executor(self.context.input_json)
|
|
57
|
+
|
|
58
|
+
self.context.result = UiPathRuntimeResult(
|
|
59
|
+
output=script_result, status=UiPathRuntimeStatus.SUCCESSFUL
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
return self.context.result
|
|
63
|
+
|
|
64
|
+
except Exception as e:
|
|
65
|
+
if isinstance(e, UiPathRuntimeError):
|
|
66
|
+
raise
|
|
67
|
+
|
|
68
|
+
raise UiPathRuntimeError(
|
|
69
|
+
"EXECUTION_ERROR",
|
|
70
|
+
"Python script execution failed",
|
|
71
|
+
f"Error: {str(e)}",
|
|
72
|
+
UiPathErrorCategory.SYSTEM,
|
|
73
|
+
) from e
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
console = ConsoleLogger()
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def get_user_script(directory: str, entrypoint: Optional[str] = None) -> Optional[str]:
|
|
80
|
+
"""Find the Python script to process."""
|
|
81
|
+
if entrypoint:
|
|
82
|
+
script_path = os.path.join(directory, entrypoint)
|
|
83
|
+
if not os.path.isfile(script_path):
|
|
84
|
+
console.error(
|
|
85
|
+
f"The {entrypoint} file does not exist in the current directory."
|
|
86
|
+
)
|
|
87
|
+
return None
|
|
88
|
+
return script_path
|
|
89
|
+
|
|
90
|
+
python_files = [f for f in os.listdir(directory) if f.endswith(".py")]
|
|
91
|
+
|
|
92
|
+
if not python_files:
|
|
93
|
+
console.error(
|
|
94
|
+
"No python files found in the current directory.\nPlease specify the entrypoint: `uipath init <entrypoint_path>`"
|
|
95
|
+
)
|
|
96
|
+
return None
|
|
97
|
+
elif len(python_files) == 1:
|
|
98
|
+
return os.path.join(directory, python_files[0])
|
|
99
|
+
else:
|
|
100
|
+
console.error(
|
|
101
|
+
"Multiple python files found in the current directory.\nPlease specify the entrypoint: `uipath init <entrypoint_path>`"
|
|
102
|
+
)
|
|
103
|
+
return None
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class UiPathScriptRuntime(UiPathRuntime):
|
|
107
|
+
"""Runtime for executing Python scripts."""
|
|
108
|
+
|
|
109
|
+
def __init__(self, context: UiPathRuntimeContext, entrypoint: str):
|
|
110
|
+
executor = ScriptExecutor(entrypoint)
|
|
111
|
+
super().__init__(context, executor)
|
|
112
|
+
|
|
113
|
+
@classmethod
|
|
114
|
+
def from_context(cls, context: UiPathRuntimeContext):
|
|
115
|
+
"""Create runtime instance from context."""
|
|
116
|
+
return UiPathScriptRuntime(context, context.entrypoint or "")
|
|
117
|
+
|
|
118
|
+
@cached_property
|
|
119
|
+
@override
|
|
120
|
+
def get_binding_resources(self) -> List[BindingResource]:
|
|
121
|
+
"""Get binding resources for script runtime.
|
|
122
|
+
|
|
123
|
+
Returns: A list of binding resources.
|
|
124
|
+
"""
|
|
125
|
+
working_dir = self.context.runtime_dir or os.getcwd()
|
|
126
|
+
script_path = get_user_script(working_dir, entrypoint=self.context.entrypoint)
|
|
127
|
+
bindings = generate_bindings(script_path)
|
|
128
|
+
return bindings.resources
|
|
129
|
+
|
|
130
|
+
@cached_property
|
|
131
|
+
@override
|
|
132
|
+
def get_entrypoint(self) -> Entrypoint:
|
|
133
|
+
working_dir = self.context.runtime_dir or os.getcwd()
|
|
134
|
+
script_path = get_user_script(working_dir, entrypoint=self.context.entrypoint)
|
|
135
|
+
if not script_path:
|
|
136
|
+
raise ValueError("Entrypoint not found.")
|
|
137
|
+
relative_path = Path(script_path).relative_to(working_dir).as_posix()
|
|
138
|
+
args = generate_args(script_path)
|
|
139
|
+
return Entrypoint(
|
|
140
|
+
file_path=relative_path, # type: ignore[call-arg] # This exists
|
|
141
|
+
unique_id=str(uuid.uuid4()),
|
|
142
|
+
type="agent",
|
|
143
|
+
input=args["input"],
|
|
144
|
+
output=args["output"],
|
|
145
|
+
)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from uipath._cli._runtime._contracts import (
|
|
2
|
+
UiPathBaseRuntime,
|
|
3
|
+
UiPathRuntimeContext,
|
|
4
|
+
UiPathRuntimeFactory,
|
|
5
|
+
)
|
|
6
|
+
from uipath._cli._runtime._runtime import UiPathScriptRuntime
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def generate_runtime_factory() -> UiPathRuntimeFactory[
|
|
10
|
+
UiPathBaseRuntime, UiPathRuntimeContext
|
|
11
|
+
]:
|
|
12
|
+
runtime_factory: UiPathRuntimeFactory[UiPathBaseRuntime, UiPathRuntimeContext] = (
|
|
13
|
+
UiPathRuntimeFactory(
|
|
14
|
+
UiPathScriptRuntime,
|
|
15
|
+
UiPathRuntimeContext,
|
|
16
|
+
context_generator=lambda **kwargs: UiPathRuntimeContext.with_defaults(
|
|
17
|
+
**kwargs
|
|
18
|
+
),
|
|
19
|
+
)
|
|
20
|
+
)
|
|
21
|
+
return runtime_factory
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# type: ignore
|
|
2
2
|
import asyncio
|
|
3
3
|
import os
|
|
4
|
-
import uuid
|
|
5
4
|
from os import environ as env
|
|
6
5
|
from typing import Optional
|
|
7
6
|
|
|
@@ -110,7 +109,6 @@ def debug(
|
|
|
110
109
|
execution_output_file=output_file,
|
|
111
110
|
debug=debug,
|
|
112
111
|
)
|
|
113
|
-
debug_context.execution_id = debug_context.job_id or str(uuid.uuid4())
|
|
114
112
|
|
|
115
113
|
runtime_factory = UiPathRuntimeFactory(
|
|
116
114
|
UiPathScriptRuntime,
|
|
@@ -12,11 +12,7 @@ from uipath._cli._evals._runtime import (
|
|
|
12
12
|
UiPathEvalContext,
|
|
13
13
|
UiPathEvalRuntime,
|
|
14
14
|
)
|
|
15
|
-
from uipath._cli._runtime.
|
|
16
|
-
UiPathRuntimeContext,
|
|
17
|
-
UiPathRuntimeFactory,
|
|
18
|
-
)
|
|
19
|
-
from uipath._cli._runtime._runtime import UiPathScriptRuntime
|
|
15
|
+
from uipath._cli._runtime._runtime_factory import generate_runtime_factory
|
|
20
16
|
from uipath._cli._utils._constants import UIPATH_PROJECT_ID
|
|
21
17
|
from uipath._cli._utils._folders import get_personal_workspace_key_async
|
|
22
18
|
from uipath._cli.middlewares import Middlewares
|
|
@@ -96,6 +92,15 @@ def eval(
|
|
|
96
92
|
workers: Number of parallel workers for running evaluations
|
|
97
93
|
no_report: Do not report the evaluation results
|
|
98
94
|
"""
|
|
95
|
+
context_args = {
|
|
96
|
+
"entrypoint": entrypoint or auto_discover_entrypoint(),
|
|
97
|
+
"eval_set": eval_set,
|
|
98
|
+
"eval_ids": eval_ids,
|
|
99
|
+
"workers": workers,
|
|
100
|
+
"no_report": no_report,
|
|
101
|
+
"output_file": output_file,
|
|
102
|
+
}
|
|
103
|
+
|
|
99
104
|
should_register_progress_reporter = setup_reporting_prereq(no_report)
|
|
100
105
|
|
|
101
106
|
result = Middlewares.next(
|
|
@@ -119,16 +124,9 @@ def eval(
|
|
|
119
124
|
progress_reporter = StudioWebProgressReporter(LlmOpsHttpExporter())
|
|
120
125
|
asyncio.run(progress_reporter.subscribe_to_eval_runtime_events(event_bus))
|
|
121
126
|
|
|
122
|
-
def generate_runtime_context(**context_kwargs) -> UiPathRuntimeContext:
|
|
123
|
-
runtime_context = UiPathRuntimeContext.with_defaults(**context_kwargs)
|
|
124
|
-
runtime_context.entrypoint = runtime_entrypoint
|
|
125
|
-
return runtime_context
|
|
126
|
-
|
|
127
|
-
runtime_entrypoint = entrypoint or auto_discover_entrypoint()
|
|
128
|
-
|
|
129
127
|
eval_context = UiPathEvalContext.with_defaults(
|
|
130
128
|
execution_output_file=output_file,
|
|
131
|
-
entrypoint=
|
|
129
|
+
entrypoint=context_args["entrypoint"],
|
|
132
130
|
)
|
|
133
131
|
|
|
134
132
|
eval_context.no_report = no_report
|
|
@@ -140,11 +138,7 @@ def eval(
|
|
|
140
138
|
asyncio.run(console_reporter.subscribe_to_eval_runtime_events(event_bus))
|
|
141
139
|
|
|
142
140
|
try:
|
|
143
|
-
runtime_factory =
|
|
144
|
-
UiPathScriptRuntime,
|
|
145
|
-
UiPathRuntimeContext,
|
|
146
|
-
context_generator=generate_runtime_context,
|
|
147
|
-
)
|
|
141
|
+
runtime_factory = generate_runtime_factory()
|
|
148
142
|
if eval_context.job_id:
|
|
149
143
|
runtime_factory.add_span_exporter(LlmOpsHttpExporter())
|
|
150
144
|
|