uipath 2.1.89__tar.gz → 2.1.91__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.89 → uipath-2.1.91}/PKG-INFO +1 -1
- {uipath-2.1.89 → uipath-2.1.91}/pyproject.toml +1 -1
- {uipath-2.1.89 → uipath-2.1.91}/samples/calculator/uipath.json +2 -2
- {uipath-2.1.89 → uipath-2.1.91}/scripts/update_agents_md.py +9 -177
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_runtime.py +4 -4
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/mocks/llm_mocker.py +8 -3
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/mocks/mocks.py +8 -1
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_push/sw_file_handler.py +3 -3
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_parse_ast.py +58 -32
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_project_files.py +8 -10
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_init.py +58 -40
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_pack.py +13 -11
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_push.py +4 -4
- uipath-2.1.91/src/uipath/_cli/models/runtime_schema.py +71 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_resources/AGENTS.md +2 -20
- uipath-2.1.91/src/uipath/_resources/REQUIRED_STRUCTURE.md +64 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_resources/SDK_REFERENCE.md +1 -1
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/models/agent.py +227 -55
- uipath-2.1.91/src/uipath/agent/models/evals.py +56 -0
- uipath-2.1.91/src/uipath/py.typed +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/telemetry/_track.py +1 -0
- uipath-2.1.91/tests/agent/models/test_agent.py +425 -0
- uipath-2.1.89/tests/agent/models/test_agent.py → uipath-2.1.91/tests/agent/models/test_evals.py +18 -64
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/eval/mocks/test_mocks.py +8 -8
- uipath-2.1.91/tests/cli/models/test_runtime_schema.py +96 -0
- uipath-2.1.91/tests/cli/test_init_agents_md.py +210 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_pack.py +2 -2
- {uipath-2.1.89 → uipath-2.1.91}/uv.lock +1 -1
- uipath-2.1.89/src/uipath/_resources/REQUIRED_STRUCTURE.md +0 -93
- uipath-2.1.89/tests/cli/test_init_agents_md.py +0 -156
- {uipath-2.1.89 → uipath-2.1.91}/.claude/agents/command-tester.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.claude/commands/prepare-pr.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.cursorrules +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.editorconfig +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.gitattributes +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/labeler.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/auto-label.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/cd.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/ci.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/commitlint.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/integration_tests.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/lint.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/publish-dev.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/publish-docs.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/slack.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/test-uipath-langchain.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/test-uipath-llamaindex.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.github/workflows/test.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.gitignore +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.pre-commit-config.yaml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.python-version +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.vscode/extensions.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.vscode/launch.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/.vscode/settings.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/CONTRIBUTING.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/LICENSE +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/README.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/CONTRIBUTING.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/FAQ.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/assets/env-preparation-failed-dark.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/assets/env-preparation-failed-light.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/assets/favicon.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/assets/llms.txt +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/assets/logo-dark.svg +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/assets/logo-light.svg +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/cli/index.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/actions.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/assets/cloud_env_var_dark.gif +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/assets/cloud_env_var_light.gif +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/assets/copy_path_dark.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/assets/copy_path_light.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/assets.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/attachments.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/buckets.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/connections.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/context_grounding.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/documents.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/documents_models.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/environment_variables.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/getting_started.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/jobs.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/llm_gateway.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/processes.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/queues.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/core/traced.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/hooks.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/index.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/javascripts/extra.js +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/overrides/main.html +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/overrides/partials/actions.html +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/overrides/partials/logo.html +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/release_policy.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/docs/stylesheets/extra.css +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/justfile +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/mkdocs.yml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/py.typed +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/asset-modifier-agent/.env.example +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/asset-modifier-agent/README.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/asset-modifier-agent/input.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/asset-modifier-agent/main.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/asset-modifier-agent/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/asset-modifier-agent/uv.lock +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/calculator/README.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/calculator/evals/eval-sets/default.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/calculator/evals/evaluators/equality.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/calculator/evals/evaluators/llm-as-a-judge.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/calculator/main.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/calculator/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/event-trigger/.python-version +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/event-trigger/README.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/event-trigger/main.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/event-trigger/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/google-ADK-agent/.env.example +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/google-ADK-agent/README.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/google-ADK-agent/input.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/google-ADK-agent/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/samples/google-ADK-agent/uv.lock +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/scripts/debug_test.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/scripts/lint_httpx_client.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/README.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/_auth_server.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/_auth_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/_models.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/_portal_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/_url_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/auth_config.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/index.html +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/localhost.crt +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_auth/localhost.key +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_components/_chat.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_components/_details.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_components/_history.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_components/_json_input.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_components/_new.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_models/_execution.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_models/_messages.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_styles/terminal.tcss +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_utils/_chat.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_utils/_exporter.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_dev/_terminal/_utils/_logger.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_console_progress_reporter.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_evaluator_factory.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_models/_evaluation_set.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_models/_evaluator.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_models/_evaluator_base_params.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_models/_exceptions.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_models/_mocks.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_models/_output.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_models/_sw_reporting.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_progress_reporter.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/_span_collection.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/mocks/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/mocks/input_mocker.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/mocks/mocker.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/mocks/mocker_factory.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_evals/mocks/mockito_mocker.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_runtime/_contracts.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_runtime/_escalation.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_runtime/_hitl.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_runtime/_logging.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_runtime/_runtime.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_runtime/_script_executor.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_templates/.rels.template +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_templates/main.py.template +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_common.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_console.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_constants.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_debug.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_eval_set.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_folders.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_input_args.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_processes.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_studio_project.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_tracing.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/_utils/_uv_helpers.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_auth.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_deploy.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_dev.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_eval.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_invoke.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_new.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_publish.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_pull.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/cli_run.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/middlewares.py +0 -0
- {uipath-2.1.89/src/uipath/_events → uipath-2.1.91/src/uipath/_cli/models}/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_cli/spinner.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_config.py +0 -0
- /uipath-2.1.89/src/uipath/py.typed → /uipath-2.1.91/src/uipath/_events/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_events/_event_bus.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_events/_events.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_execution_context.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_folder_context.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_resources/CLAUDE.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_resources/CLI_REFERENCE.md +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/_base_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/actions_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/api_client.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/assets_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/attachments_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/buckets_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/connections_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/context_grounding_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/documents_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/entities_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/external_application_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/folder_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/jobs_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/llm_gateway_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/processes_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_services/queues_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_uipath.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_auth.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_endpoint.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_infer_bindings.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_logs.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_read_overwrites.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_request_override.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_request_spec.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_ssl_context.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_url.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/_user_agent.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/_utils/constants.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/async_stream.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/citation.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/content.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/conversation.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/event.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/exchange.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/message.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/meta.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/conversation/tool.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/loop/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/loop/prompts.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/agent/loop/tools.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/_helpers/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/_helpers/helpers.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/evaluators/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/evaluators/base_evaluator.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/evaluators/deterministic_evaluator_base.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/evaluators/exact_match_evaluator.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/evaluators/json_similarity_evaluator.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/evaluators/llm_as_judge_evaluator.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/evaluators/trajectory_evaluator.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/mocks/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/mocks/mockable.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/models/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/eval/models/models.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/action_schema.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/actions.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/assets.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/attachment.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/auth.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/buckets.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/connections.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/context_grounding.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/context_grounding_index.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/documents.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/entities.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/errors.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/exceptions.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/interrupt_models.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/job.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/llm_gateway.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/processes.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/models/queues.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/telemetry/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/telemetry/_constants.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/tracing/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/tracing/_otel_exporters.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/tracing/_traced.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/tracing/_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/utils/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/utils/_endpoints_manager.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/src/uipath/utils/dynamic_schema.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/apicalls-testcase/main.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/apicalls-testcase/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/apicalls-testcase/run.sh +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/apicalls-testcase/src/assert.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/basic-testcase/main.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/basic-testcase/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/basic-testcase/run.sh +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/basic-testcase/src/assert.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/common/validate_output.sh +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/langchain-cross/agent.mermaid +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/langchain-cross/langgraph.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/langchain-cross/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/langchain-cross/run.sh +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/langchain-cross/src/assert.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/langchain-cross/src/main.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/llamaindex-cross/agent.mermaid +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/llamaindex-cross/llama_index.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/llamaindex-cross/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/llamaindex-cross/run.sh +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/llamaindex-cross/src/assert.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/testcases/llamaindex-cross/src/main.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/__init__.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/conftest.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/eval/mocks/test_input_mocker.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/evaluators/test_json_similarity_evaluator.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/mocks/bindings_script.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/mocks/pyproject.toml +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/mocks/simple_script.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/mocks/uipath-mock.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_auth.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_hitl.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_init.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_input_args.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_invoke.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_new.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_oidc_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_portal_service_ensure_valid_token.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_portal_service_refresh_token.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_publish.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_pull.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_push.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_run.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/test_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/utils/common.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/utils/project_details.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/utils/test_dynamic_schema.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/cli/utils/uipath_json.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/conftest.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/conftest.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_actions_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_api_client.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_assets_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_attachments_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_base_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_buckets_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_connections_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_context_grounding_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_documents_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_entities_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_external_application_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_folder_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_jobs_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_llm_integration.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_llm_schema_cleanup.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_llm_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_processes_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_queues_service.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/tests_data/documents_service/create_validation_action_response.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/tests_data/documents_service/extraction_response.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/services/tests_data/documents_service/validated_result.json +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/test_bindings_inference.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/test_config.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/sdk/test_overwrites.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/tracing/test_otel_exporters.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/tracing/test_span_utils.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/tests/tracing/test_traced.py +0 -0
- {uipath-2.1.89 → uipath-2.1.91}/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.
|
|
3
|
+
Version: 2.1.91
|
|
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.91"
|
|
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"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"entryPoints": [
|
|
3
3
|
{
|
|
4
4
|
"filePath": "main.py",
|
|
5
|
-
"uniqueId": "
|
|
5
|
+
"uniqueId": "f62a1945-cb6f-48b2-b575-9d802e3f90c1",
|
|
6
6
|
"type": "agent",
|
|
7
7
|
"input": {
|
|
8
8
|
"type": "object",
|
|
@@ -47,4 +47,4 @@
|
|
|
47
47
|
"version": "2.0",
|
|
48
48
|
"resources": []
|
|
49
49
|
}
|
|
50
|
-
}
|
|
50
|
+
}
|
|
@@ -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
|
|
6
|
-
- SDK
|
|
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
|
|
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##
|
|
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
|
|
571
|
-
"""
|
|
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
|
-
|
|
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
|
|
|
@@ -326,7 +326,8 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
326
326
|
if eval_item.input_mocking_strategy:
|
|
327
327
|
eval_item = await self._generate_input_for_eval(eval_item)
|
|
328
328
|
|
|
329
|
-
|
|
329
|
+
execution_id = str(uuid.uuid4())
|
|
330
|
+
set_execution_context(eval_item, self.span_collector, execution_id)
|
|
330
331
|
|
|
331
332
|
await event_bus.publish(
|
|
332
333
|
EvaluationEvents.CREATE_EVAL_RUN,
|
|
@@ -341,7 +342,7 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
341
342
|
)
|
|
342
343
|
|
|
343
344
|
try:
|
|
344
|
-
agent_execution_output = await self.execute_runtime(eval_item)
|
|
345
|
+
agent_execution_output = await self.execute_runtime(eval_item, execution_id)
|
|
345
346
|
evaluation_item_results: list[EvalItemResult] = []
|
|
346
347
|
|
|
347
348
|
for evaluator in evaluators:
|
|
@@ -448,9 +449,8 @@ class UiPathEvalRuntime(UiPathBaseRuntime, Generic[T, C]):
|
|
|
448
449
|
return spans, logs
|
|
449
450
|
|
|
450
451
|
async def execute_runtime(
|
|
451
|
-
self, eval_item: EvaluationItem
|
|
452
|
+
self, eval_item: EvaluationItem, execution_id: str
|
|
452
453
|
) -> UiPathEvalRunExecutionOutput:
|
|
453
|
-
execution_id = str(uuid.uuid4())
|
|
454
454
|
runtime_context: C = self.factory.new_context(
|
|
455
455
|
execution_id=execution_id,
|
|
456
456
|
input_json=eval_item.inputs,
|
|
@@ -96,7 +96,11 @@ class LLMMocker(Mocker):
|
|
|
96
96
|
from uipath import UiPath
|
|
97
97
|
from uipath._services.llm_gateway_service import _cleanup_schema
|
|
98
98
|
|
|
99
|
-
from .mocks import
|
|
99
|
+
from .mocks import (
|
|
100
|
+
evaluation_context,
|
|
101
|
+
execution_id_context,
|
|
102
|
+
span_collector_context,
|
|
103
|
+
)
|
|
100
104
|
|
|
101
105
|
llm = UiPath().llm
|
|
102
106
|
return_type: Any = func.__annotations__.get("return", None)
|
|
@@ -126,8 +130,9 @@ class LLMMocker(Mocker):
|
|
|
126
130
|
test_run_history = "(empty)"
|
|
127
131
|
eval_item = evaluation_context.get()
|
|
128
132
|
span_collector = span_collector_context.get()
|
|
129
|
-
|
|
130
|
-
|
|
133
|
+
execution_id = execution_id_context.get()
|
|
134
|
+
if eval_item and span_collector and execution_id:
|
|
135
|
+
spans = span_collector.get_spans(execution_id)
|
|
131
136
|
test_run_history = _SpanUtils.spans_to_llm_context(spans)
|
|
132
137
|
|
|
133
138
|
prompt_input: dict[str, Any] = {
|
|
@@ -21,11 +21,16 @@ span_collector_context: ContextVar[Optional[ExecutionSpanCollector]] = ContextVa
|
|
|
21
21
|
"span_collector", default=None
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
+
# Execution ID for the current evaluation item
|
|
25
|
+
execution_id_context: ContextVar[Optional[str]] = ContextVar(
|
|
26
|
+
"execution_id", default=None
|
|
27
|
+
)
|
|
28
|
+
|
|
24
29
|
logger = logging.getLogger(__name__)
|
|
25
30
|
|
|
26
31
|
|
|
27
32
|
def set_execution_context(
|
|
28
|
-
eval_item: EvaluationItem, span_collector: ExecutionSpanCollector
|
|
33
|
+
eval_item: EvaluationItem, span_collector: ExecutionSpanCollector, execution_id: str
|
|
29
34
|
) -> None:
|
|
30
35
|
"""Set the execution context for an evaluation run for mocking and trace access."""
|
|
31
36
|
evaluation_context.set(eval_item)
|
|
@@ -40,6 +45,7 @@ def set_execution_context(
|
|
|
40
45
|
mocker_context.set(None)
|
|
41
46
|
|
|
42
47
|
span_collector_context.set(span_collector)
|
|
48
|
+
execution_id_context.set(execution_id)
|
|
43
49
|
|
|
44
50
|
|
|
45
51
|
def clear_execution_context() -> None:
|
|
@@ -47,6 +53,7 @@ def clear_execution_context() -> None:
|
|
|
47
53
|
evaluation_context.set(None)
|
|
48
54
|
mocker_context.set(None)
|
|
49
55
|
span_collector_context.set(None)
|
|
56
|
+
execution_id_context.set(None)
|
|
50
57
|
|
|
51
58
|
|
|
52
59
|
async def get_mocked_response(
|
|
@@ -453,7 +453,7 @@ class SwFileHandler:
|
|
|
453
453
|
)
|
|
454
454
|
logger.info("Uploading 'agent.json'")
|
|
455
455
|
|
|
456
|
-
async def upload_source_files(self,
|
|
456
|
+
async def upload_source_files(self, settings: Optional[dict[str, Any]]) -> None:
|
|
457
457
|
"""Main method to upload source files to the UiPath project.
|
|
458
458
|
|
|
459
459
|
- Gets project structure
|
|
@@ -462,7 +462,7 @@ class SwFileHandler:
|
|
|
462
462
|
- Deletes removed files
|
|
463
463
|
|
|
464
464
|
Args:
|
|
465
|
-
|
|
465
|
+
settings: File handling settings
|
|
466
466
|
|
|
467
467
|
Returns:
|
|
468
468
|
Dict[str, ProjectFileExtended]: Root level files for agent.json handling
|
|
@@ -493,7 +493,7 @@ class SwFileHandler:
|
|
|
493
493
|
|
|
494
494
|
# Get files to upload and process them
|
|
495
495
|
files = files_to_include(
|
|
496
|
-
|
|
496
|
+
settings,
|
|
497
497
|
self.directory,
|
|
498
498
|
self.include_uv_lock,
|
|
499
499
|
directories_to_ignore=["evals"],
|
|
@@ -13,6 +13,7 @@ from ..._services import (
|
|
|
13
13
|
ProcessesService,
|
|
14
14
|
)
|
|
15
15
|
from ..._utils import get_inferred_bindings_names
|
|
16
|
+
from ..models.runtime_schema import BindingResource, BindingResourceValue, Bindings
|
|
16
17
|
from ._constants import BINDINGS_VERSION
|
|
17
18
|
|
|
18
19
|
|
|
@@ -428,7 +429,7 @@ def parse_sdk_usage(
|
|
|
428
429
|
return results
|
|
429
430
|
|
|
430
431
|
|
|
431
|
-
def convert_to_bindings_format(sdk_usage_data):
|
|
432
|
+
def convert_to_bindings_format(sdk_usage_data) -> Bindings:
|
|
432
433
|
"""Convert the output of parse_sdk_usage to a structure similar to bindings_v2.json.
|
|
433
434
|
|
|
434
435
|
Args:
|
|
@@ -437,7 +438,7 @@ def convert_to_bindings_format(sdk_usage_data):
|
|
|
437
438
|
Returns:
|
|
438
439
|
Dictionary in bindings_v2.json format
|
|
439
440
|
"""
|
|
440
|
-
bindings =
|
|
441
|
+
bindings = Bindings(version="2.0", resources=[])
|
|
441
442
|
|
|
442
443
|
for resource_type, components in sdk_usage_data.items():
|
|
443
444
|
for component in components:
|
|
@@ -448,24 +449,24 @@ def convert_to_bindings_format(sdk_usage_data):
|
|
|
448
449
|
)
|
|
449
450
|
is_connection_id_expression = connection_id.startswith("EXPR$")
|
|
450
451
|
connection_id = connection_id.replace("EXPR$", "")
|
|
451
|
-
resource_entry =
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
"ConnectionId":
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
"
|
|
459
|
-
|
|
452
|
+
resource_entry = BindingResource(
|
|
453
|
+
resource="connection",
|
|
454
|
+
key=connection_id,
|
|
455
|
+
value={
|
|
456
|
+
"ConnectionId": BindingResourceValue(
|
|
457
|
+
default_value=connection_id,
|
|
458
|
+
is_expression=is_connection_id_expression,
|
|
459
|
+
display_name="Connection",
|
|
460
|
+
),
|
|
460
461
|
},
|
|
461
|
-
|
|
462
|
+
metadata={
|
|
462
463
|
"BindingsVersion": BINDINGS_VERSION,
|
|
463
464
|
"Connector": connector_name,
|
|
464
465
|
"UseConnectionService": "True",
|
|
465
466
|
},
|
|
466
|
-
|
|
467
|
+
)
|
|
467
468
|
|
|
468
|
-
bindings
|
|
469
|
+
bindings.resources.append(resource_entry)
|
|
469
470
|
continue
|
|
470
471
|
|
|
471
472
|
resource_name = component.get("name", "")
|
|
@@ -481,36 +482,61 @@ def convert_to_bindings_format(sdk_usage_data):
|
|
|
481
482
|
key = name
|
|
482
483
|
if folder_path:
|
|
483
484
|
key = f"{folder_path}.{name}"
|
|
484
|
-
resource_entry =
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
"name":
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
"
|
|
492
|
-
|
|
485
|
+
resource_entry = BindingResource(
|
|
486
|
+
resource=service_name_resource_mapping[resource_type],
|
|
487
|
+
key=key,
|
|
488
|
+
value={
|
|
489
|
+
"name": BindingResourceValue(
|
|
490
|
+
default_value=name,
|
|
491
|
+
is_expression=is_expression,
|
|
492
|
+
display_name="Name",
|
|
493
|
+
),
|
|
493
494
|
},
|
|
494
|
-
|
|
495
|
+
metadata={
|
|
495
496
|
"ActivityName": method_name,
|
|
496
497
|
"BindingsVersion": BINDINGS_VERSION,
|
|
497
498
|
"DisplayLabel": "FullName",
|
|
498
499
|
},
|
|
499
|
-
|
|
500
|
+
)
|
|
500
501
|
|
|
501
502
|
if folder_path:
|
|
502
|
-
resource_entry
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
"
|
|
506
|
-
|
|
503
|
+
resource_entry.value["folderPath"] = BindingResourceValue(
|
|
504
|
+
default_value=folder_path,
|
|
505
|
+
is_expression=is_folder_path_expression,
|
|
506
|
+
display_name="Folder Path",
|
|
507
|
+
)
|
|
507
508
|
|
|
508
|
-
bindings
|
|
509
|
+
bindings.resources.append(resource_entry)
|
|
509
510
|
|
|
510
511
|
return bindings
|
|
511
512
|
|
|
512
513
|
|
|
513
|
-
def generate_bindings_json(file_path: str) -> str:
|
|
514
|
+
def generate_bindings_json(file_path: str) -> dict[str, Any]:
|
|
515
|
+
"""Generate bindings JSON from a Python file.
|
|
516
|
+
|
|
517
|
+
Args:
|
|
518
|
+
file_path: Path to the Python file to analyze
|
|
519
|
+
|
|
520
|
+
Returns:
|
|
521
|
+
JSON string representation of the bindings
|
|
522
|
+
"""
|
|
523
|
+
try:
|
|
524
|
+
with open(file_path, "r") as f:
|
|
525
|
+
source_code = f.read()
|
|
526
|
+
|
|
527
|
+
# Get the base directory for resolving imports
|
|
528
|
+
base_dir = os.path.dirname(os.path.abspath(file_path))
|
|
529
|
+
|
|
530
|
+
sdk_usage = parse_sdk_usage(source_code, base_dir)
|
|
531
|
+
bindings = convert_to_bindings_format(sdk_usage)
|
|
532
|
+
|
|
533
|
+
return bindings.model_dump(by_alias=True)
|
|
534
|
+
|
|
535
|
+
except Exception as e:
|
|
536
|
+
raise Exception(f"Error generating bindings JSON: {e}") from e
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def generate_bindings(file_path: str) -> Bindings:
|
|
514
540
|
"""Generate bindings JSON from a Python file.
|
|
515
541
|
|
|
516
542
|
Args:
|
|
@@ -7,9 +7,10 @@ import re
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from typing import Any, Dict, Optional, Protocol, Tuple
|
|
9
9
|
|
|
10
|
-
from pydantic import BaseModel
|
|
10
|
+
from pydantic import BaseModel, TypeAdapter
|
|
11
11
|
|
|
12
12
|
from .._utils._console import ConsoleLogger
|
|
13
|
+
from ..models.runtime_schema import RuntimeSchema
|
|
13
14
|
from ._constants import is_binary_file
|
|
14
15
|
from ._studio_project import (
|
|
15
16
|
ProjectFile,
|
|
@@ -93,21 +94,19 @@ def get_project_config(directory: str) -> dict[str, str]:
|
|
|
93
94
|
console.error("pyproject.toml not found.")
|
|
94
95
|
|
|
95
96
|
with open(config_path, "r") as config_file:
|
|
96
|
-
config_data = json.load(config_file)
|
|
97
|
-
|
|
98
|
-
validate_config_structure(config_data)
|
|
97
|
+
config_data = TypeAdapter(RuntimeSchema).validate_python(json.load(config_file))
|
|
99
98
|
|
|
100
99
|
toml_data = read_toml_project(toml_path)
|
|
101
100
|
|
|
102
101
|
return {
|
|
103
102
|
"project_name": toml_data["name"],
|
|
104
103
|
"description": toml_data["description"],
|
|
105
|
-
"entryPoints": config_data
|
|
104
|
+
"entryPoints": [ep.model_dump(by_alias=True) for ep in config_data.entrypoints],
|
|
106
105
|
"version": toml_data["version"],
|
|
107
106
|
"authors": toml_data["authors"],
|
|
108
107
|
"dependencies": toml_data.get("dependencies", {}),
|
|
109
108
|
"requires-python": toml_data.get("requires-python", None),
|
|
110
|
-
"settings": config_data.
|
|
109
|
+
"settings": config_data.settings or {},
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
|
|
@@ -347,7 +346,7 @@ def read_toml_project(file_path: str) -> dict:
|
|
|
347
346
|
|
|
348
347
|
|
|
349
348
|
def files_to_include(
|
|
350
|
-
|
|
349
|
+
settings: Optional[dict[str, Any]],
|
|
351
350
|
directory: str,
|
|
352
351
|
include_uv_lock: bool = True,
|
|
353
352
|
directories_to_ignore: list[str] | None = None,
|
|
@@ -358,7 +357,7 @@ def files_to_include(
|
|
|
358
357
|
and explicit inclusion rules. Skips virtual environments and hidden directories.
|
|
359
358
|
|
|
360
359
|
Args:
|
|
361
|
-
|
|
360
|
+
settings: File handling settings
|
|
362
361
|
directory: Root directory to search for files
|
|
363
362
|
include_uv_lock: Whether to include uv.lock file
|
|
364
363
|
directories_to_ignore: List of directories to ignore
|
|
@@ -374,8 +373,7 @@ def files_to_include(
|
|
|
374
373
|
directories_to_ignore = []
|
|
375
374
|
if include_uv_lock:
|
|
376
375
|
files_included += ["uv.lock"]
|
|
377
|
-
if
|
|
378
|
-
settings = config_data["settings"]
|
|
376
|
+
if settings is not None:
|
|
379
377
|
if "fileExtensionsIncluded" in settings:
|
|
380
378
|
file_extensions_included.extend(settings["fileExtensionsIncluded"])
|
|
381
379
|
if "filesIncluded" in settings:
|