uipath-langchain 0.0.120__tar.gz → 0.0.121__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-langchain might be problematic. Click here for more details.
- uipath_langchain-0.0.121/.github/workflows/integration_tests.yml +162 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/PKG-INFO +3 -3
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/pyproject.toml +3 -3
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_runtime.py +17 -3
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/cli_run.py +3 -2
- uipath_langchain-0.0.121/testcases/Dockerfile +16 -0
- uipath_langchain-0.0.121/testcases/company-research-agent/run.sh +44 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/src/graph.py +6 -6
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/uv.lock +1 -1
- uipath_langchain-0.0.121/testcases/multi-agent-supervisor-researcher-coder/run.sh +44 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/src/graph.py +6 -6
- uipath_langchain-0.0.121/testcases/simple-local-mcp/run.sh +45 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/simple-local-mcp/graph.py +5 -2
- uipath_langchain-0.0.121/testcases/ticket-classification/run.sh +48 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/src/main.py +9 -6
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/uv.lock +1670 -1671
- uipath_langchain-0.0.120/.github/workflows/integration_tests.yml +0 -38
- uipath_langchain-0.0.120/testcases/company-research-agent/Dockerfile +0 -35
- uipath_langchain-0.0.120/testcases/multi-agent-supervisor-researcher-coder/Dockerfile +0 -36
- uipath_langchain-0.0.120/testcases/simple-local-mcp/Dockerfile +0 -34
- uipath_langchain-0.0.120/testcases/ticket-classification/Dockerfile +0 -37
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.cursorrules +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.editorconfig +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.gitattributes +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/cd.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/ci.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/commitlint.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/lint-custom-version.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/lint.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/publish-dev.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/publish-docs.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/publish-prior-stable-version.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/slack.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/test-custom-version.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/test.yml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.gitignore +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.pre-commit-config.yaml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.python-version +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.vscode/extensions.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.vscode/settings.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/CONTRIBUTING.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/LICENSE +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/chat_models.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/context_grounding.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/human_in_the_loop.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/cloud_env_var_dark.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/cloud_env_var_light.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/invoke_output_dark.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/invoke_output_light.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/click-storage-bucket.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-index-1.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-index-2.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-process.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-quiz-generator.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-storage-bucket-1.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-storage-bucket-2.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/folder-path.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/job-info.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/output.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/process-page.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/researcher-1.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/researcher-2.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/run-process-1.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/run-process-2.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/storage-bucket-content.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/coder-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/coder-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/planner-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/planner-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/researcher-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/researcher-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/activate-apps.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/activate-deployment.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/copy-folder-path.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/deploy-solution-package-wizard.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/deploy-solution-package.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/monitor-agent.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/navigate-to-solution-folder.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/resume-condition.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/run-agent.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/solution-destination-folder.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/start-job.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/upload-solution-package.png +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/input.example/quiz-generator-debug-input.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/input.example/researcher-debug-input.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/quiz-generator-RAG-agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/researcher-RAG-agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/src/agents/quiz-generator-RAG-agent.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/src/agents/researcher-RAG-agent.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/graph.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/database.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/main.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/models.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/schemas.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/templates/index.html +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/coder.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/planner.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/researcher.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/coder.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/planner.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/researcher.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/graph.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/main.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/main.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/main.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_context.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_exception.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_input.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_output.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_templates/langgraph.json.template +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_templates/main.py.template +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_utils/_graph.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/cli_init.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/cli_new.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/_request_mixin.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/_settings.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/_sleep_policy.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/chat/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/chat/models.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/embeddings/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/embeddings/embeddings.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/middlewares.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/retrievers/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/retrievers/context_grounding_retriever.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/AsyncUiPathTracer.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/_events.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/_instrument_traceable.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/_utils.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/vectorstores/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/vectorstores/context_grounding_vectorstore.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/input.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/src/assert.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/input.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/src/assert.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/input.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/assert.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/.env.example +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/README.md +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/agent.mermaid +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/input.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/pyproject.toml +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/src/assert.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/uv.lock +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/conftest.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/mocks/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/mocks/simple_agent.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/mocks/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/test_run.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/conftest.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/action_trigger_hitl.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/api_trigger_hitl.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/job_trigger_hitl.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/langgraph.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/uipath-default-escalation.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/uipath.json +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_action_trigger.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_hitl_api_trigger.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_hitl_default_escalation.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_hitl_job_trigger.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/test_dummy.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/tracers/__init__.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/tracers/test_async_uipath_tracer.py +0 -0
- {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/tracers/test_instrument_traceable.py +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
name: Integration testing
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
integration-tests:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
pull-requests: write
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout code
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up Docker Buildx
|
|
21
|
+
uses: docker/setup-buildx-action@v3
|
|
22
|
+
|
|
23
|
+
- name: Build common Docker image
|
|
24
|
+
run: |
|
|
25
|
+
echo "Building common Docker image at $(date)"
|
|
26
|
+
docker build -f testcases/Dockerfile \
|
|
27
|
+
-t uipath-langchain-testbase:latest \
|
|
28
|
+
.
|
|
29
|
+
echo "Common Docker image built at $(date)"
|
|
30
|
+
|
|
31
|
+
- name: Set jobs variable
|
|
32
|
+
run: |
|
|
33
|
+
echo "Discovering testcase folders..."
|
|
34
|
+
|
|
35
|
+
# Find all testcase folders (excluding common folders like README, etc.)
|
|
36
|
+
testcase_dirs=$(find testcases -maxdepth 1 -type d -name "*-*" | sed 's|testcases/||' | sort)
|
|
37
|
+
|
|
38
|
+
echo "Found testcase directories:"
|
|
39
|
+
echo "$testcase_dirs"
|
|
40
|
+
|
|
41
|
+
# Generate jobs array as a single line with space-separated values
|
|
42
|
+
jobs_list=""
|
|
43
|
+
for testcase in $testcase_dirs; do
|
|
44
|
+
# Add all 4 combinations for each testcase
|
|
45
|
+
jobs_list="${jobs_list} ${testcase}:true:alpha"
|
|
46
|
+
jobs_list="${jobs_list} ${testcase}:false:alpha"
|
|
47
|
+
jobs_list="${jobs_list} ${testcase}:true:cloud"
|
|
48
|
+
jobs_list="${jobs_list} ${testcase}:false:cloud"
|
|
49
|
+
done
|
|
50
|
+
|
|
51
|
+
echo "Generated jobs list:"
|
|
52
|
+
echo "$jobs_list"
|
|
53
|
+
|
|
54
|
+
# Save to GITHUB_ENV as a simple variable
|
|
55
|
+
echo "JOBS_LIST=$jobs_list" >> $GITHUB_ENV
|
|
56
|
+
|
|
57
|
+
- name: Run testcases
|
|
58
|
+
run: |
|
|
59
|
+
# Convert the jobs list back to an array
|
|
60
|
+
read -a jobs <<< "$JOBS_LIST"
|
|
61
|
+
|
|
62
|
+
echo "=== STARTING TESTCASE EXECUTION ==="
|
|
63
|
+
echo "Total testcases to run: ${#jobs[@]}"
|
|
64
|
+
echo "Alpha environment with UiPathAzureChatOpenAI: $(echo "${jobs[@]}" | tr ' ' '\n' | grep ':true:alpha' | wc -l)"
|
|
65
|
+
echo "Alpha environment with UiPathChat: $(echo "${jobs[@]}" | tr ' ' '\n' | grep ':false:alpha' | wc -l)"
|
|
66
|
+
echo "Cloud environment with UiPathAzureChatOpenAI: $(echo "${jobs[@]}" | tr ' ' '\n' | grep ':true:cloud' | wc -l)"
|
|
67
|
+
echo "Cloud environment with UiPathChat: $(echo "${jobs[@]}" | tr ' ' '\n' | grep ':false:cloud' | wc -l)"
|
|
68
|
+
echo "======================================="
|
|
69
|
+
|
|
70
|
+
for job in "${jobs[@]}"; do
|
|
71
|
+
IFS=":" read -r testcase use_azure_chat environment <<< "$job"
|
|
72
|
+
llm=$([ "$use_azure_chat" = "true" ] && echo "UiPathAzureChatOpenAI" || echo "UiPathChat")
|
|
73
|
+
log_file="run_${testcase}_${llm}_${environment}.log"
|
|
74
|
+
|
|
75
|
+
# Set environment-specific credentials
|
|
76
|
+
if [ "$environment" = "alpha" ]; then
|
|
77
|
+
CLIENT_ID_VAR='${{ secrets.ALPHA_TEST_CLIENT_ID }}'
|
|
78
|
+
CLIENT_SECRET_VAR='${{ secrets.ALPHA_TEST_CLIENT_SECRET }}'
|
|
79
|
+
BASE_URL_VAR='${{ secrets.ALPHA_BASE_URL }}'
|
|
80
|
+
else
|
|
81
|
+
CLIENT_ID_VAR='${{ secrets.CLOUD_TEST_CLIENT_ID }}'
|
|
82
|
+
CLIENT_SECRET_VAR='${{ secrets.CLOUD_TEST_CLIENT_SECRET }}'
|
|
83
|
+
BASE_URL_VAR='${{ secrets.CLOUD_BASE_URL }}'
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
(
|
|
87
|
+
echo "[$(date)] STARTING: $testcase ($llm) [$environment]"
|
|
88
|
+
|
|
89
|
+
# Create log file with header
|
|
90
|
+
{
|
|
91
|
+
echo "========================================"
|
|
92
|
+
echo "TESTCASE: $testcase"
|
|
93
|
+
echo "LLM: $llm"
|
|
94
|
+
echo "ENVIRONMENT: $environment"
|
|
95
|
+
echo "USE_AZURE_CHAT: $use_azure_chat"
|
|
96
|
+
echo "STARTED_AT: $(date)"
|
|
97
|
+
echo "========================================"
|
|
98
|
+
echo ""
|
|
99
|
+
} > "$log_file"
|
|
100
|
+
|
|
101
|
+
# Run the testcase and append to log file
|
|
102
|
+
docker run --rm \
|
|
103
|
+
-e CLIENT_ID="$CLIENT_ID_VAR" \
|
|
104
|
+
-e CLIENT_SECRET="$CLIENT_SECRET_VAR" \
|
|
105
|
+
-e BASE_URL="$BASE_URL_VAR" \
|
|
106
|
+
-e USE_AZURE_CHAT="$use_azure_chat" \
|
|
107
|
+
uipath-langchain-testbase:latest \
|
|
108
|
+
bash /app/testcases/$testcase/run.sh >> "$log_file" 2>&1
|
|
109
|
+
|
|
110
|
+
# Capture the exit code immediately
|
|
111
|
+
exit_code=$?
|
|
112
|
+
|
|
113
|
+
# Add completion status to log file
|
|
114
|
+
if [ $exit_code -eq 0 ]; then
|
|
115
|
+
echo "[$(date)] SUCCESS: $testcase ($llm) [$environment]"
|
|
116
|
+
{
|
|
117
|
+
echo ""
|
|
118
|
+
echo "========================================"
|
|
119
|
+
echo "COMPLETED_AT: $(date)"
|
|
120
|
+
echo "STATUS: SUCCESS"
|
|
121
|
+
echo "========================================"
|
|
122
|
+
} >> "$log_file"
|
|
123
|
+
else
|
|
124
|
+
echo "[$(date)] FAILED: $testcase ($llm) [$environment]"
|
|
125
|
+
{
|
|
126
|
+
echo ""
|
|
127
|
+
echo "========================================"
|
|
128
|
+
echo "COMPLETED_AT: $(date)"
|
|
129
|
+
echo "STATUS: FAILED"
|
|
130
|
+
echo "EXIT_CODE: $exit_code"
|
|
131
|
+
echo "========================================"
|
|
132
|
+
} >> "$log_file"
|
|
133
|
+
fi
|
|
134
|
+
) &
|
|
135
|
+
done
|
|
136
|
+
|
|
137
|
+
wait
|
|
138
|
+
echo "All testcases execution completed."
|
|
139
|
+
|
|
140
|
+
- name: Display all testcase logs
|
|
141
|
+
run: |
|
|
142
|
+
# Convert the jobs list back to an array
|
|
143
|
+
read -a jobs <<< "$JOBS_LIST"
|
|
144
|
+
|
|
145
|
+
for job in "${jobs[@]}"; do
|
|
146
|
+
IFS=":" read -r testcase use_azure_chat environment <<< "$job"
|
|
147
|
+
llm=$([ "$use_azure_chat" = "true" ] && echo "UiPathAzureChatOpenAI" || echo "UiPathChat")
|
|
148
|
+
log_file="run_${testcase}_${llm}_${environment}.log"
|
|
149
|
+
|
|
150
|
+
# Create a collapsible group for each testcase log
|
|
151
|
+
echo "::group::${testcase^^} (${llm}) ${environment^^} LOG"
|
|
152
|
+
echo "Log file: $log_file"
|
|
153
|
+
|
|
154
|
+
if [ -f "$log_file" ]; then
|
|
155
|
+
cat "$log_file"
|
|
156
|
+
else
|
|
157
|
+
echo "ERROR: Log file not found!"
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
echo "::endgroup::"
|
|
161
|
+
echo ""
|
|
162
|
+
done
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: uipath-langchain
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.121
|
|
4
4
|
Summary: UiPath Langchain
|
|
5
5
|
Project-URL: Homepage, https://uipath.com
|
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/uipath-langchain-python
|
|
@@ -20,11 +20,11 @@ Requires-Dist: langchain-core>=0.3.34
|
|
|
20
20
|
Requires-Dist: langchain-openai>=0.3.3
|
|
21
21
|
Requires-Dist: langchain>=0.3.4
|
|
22
22
|
Requires-Dist: langgraph-checkpoint-sqlite>=2.0.3
|
|
23
|
-
Requires-Dist: langgraph
|
|
23
|
+
Requires-Dist: langgraph<0.7.0,>=0.5.0
|
|
24
24
|
Requires-Dist: openai>=1.65.5
|
|
25
25
|
Requires-Dist: pydantic-settings>=2.6.0
|
|
26
26
|
Requires-Dist: python-dotenv>=1.0.1
|
|
27
|
-
Requires-Dist: uipath<2.2.0,>=2.1.
|
|
27
|
+
Requires-Dist: uipath<2.2.0,>=2.1.10
|
|
28
28
|
Provides-Extra: langchain
|
|
29
29
|
Description-Content-Type: text/markdown
|
|
30
30
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "uipath-langchain"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.121"
|
|
4
4
|
description = "UiPath Langchain"
|
|
5
5
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
dependencies = [
|
|
8
|
-
"uipath>=2.1.
|
|
9
|
-
"langgraph>=0.
|
|
8
|
+
"uipath>=2.1.10, <2.2.0",
|
|
9
|
+
"langgraph>=0.5.0, <0.7.0",
|
|
10
10
|
"langchain-core>=0.3.34",
|
|
11
11
|
"langgraph-checkpoint-sqlite>=2.0.3",
|
|
12
12
|
"langchain-community>=0.3.21",
|
{uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_runtime.py
RENAMED
|
@@ -101,7 +101,7 @@ class LangGraphRuntime(UiPathBaseRuntime):
|
|
|
101
101
|
graph_config["max_concurrency"] = int(max_concurrency)
|
|
102
102
|
|
|
103
103
|
# Stream the output at debug time
|
|
104
|
-
if self.
|
|
104
|
+
if self.is_debug_run():
|
|
105
105
|
# Get final chunk while streaming
|
|
106
106
|
final_chunk = None
|
|
107
107
|
async for stream_chunk in graph.astream(
|
|
@@ -115,7 +115,7 @@ class LangGraphRuntime(UiPathBaseRuntime):
|
|
|
115
115
|
|
|
116
116
|
self.context.output = self._extract_graph_result(final_chunk, graph)
|
|
117
117
|
else:
|
|
118
|
-
# Execute the graph normally at runtime
|
|
118
|
+
# Execute the graph normally at runtime or eval
|
|
119
119
|
self.context.output = await graph.ainvoke(
|
|
120
120
|
processed_input, graph_config
|
|
121
121
|
)
|
|
@@ -310,9 +310,23 @@ class LangGraphRuntime(UiPathBaseRuntime):
|
|
|
310
310
|
# Check which channels are present
|
|
311
311
|
available_channels = [ch for ch in output_channels if ch in final_chunk]
|
|
312
312
|
|
|
313
|
+
# if no available channels, output may contain the last_node name as key
|
|
314
|
+
unwrapped_final_chunk = {}
|
|
315
|
+
if not available_channels:
|
|
316
|
+
if len(final_chunk) == 1 and isinstance(
|
|
317
|
+
unwrapped_final_chunk := next(iter(final_chunk.values())), dict
|
|
318
|
+
):
|
|
319
|
+
available_channels = [
|
|
320
|
+
ch for ch in output_channels if ch in unwrapped_final_chunk
|
|
321
|
+
]
|
|
322
|
+
|
|
313
323
|
if available_channels:
|
|
314
324
|
# Create a dict with the available channels
|
|
315
|
-
return {
|
|
325
|
+
return {
|
|
326
|
+
channel: final_chunk.get(channel, None)
|
|
327
|
+
or unwrapped_final_chunk[channel]
|
|
328
|
+
for channel in available_channels
|
|
329
|
+
}
|
|
316
330
|
|
|
317
331
|
# Fallback for any other case
|
|
318
332
|
return final_chunk
|
|
@@ -31,8 +31,8 @@ def langgraph_run_middleware(
|
|
|
31
31
|
tracing = bool_map[tracing.lower()]
|
|
32
32
|
|
|
33
33
|
async def execute():
|
|
34
|
-
context = LangGraphRuntimeContext.from_config(
|
|
35
|
-
env.get("UIPATH_CONFIG_PATH", "uipath.json")
|
|
34
|
+
context: LangGraphRuntimeContext = LangGraphRuntimeContext.from_config(
|
|
35
|
+
env.get("UIPATH_CONFIG_PATH", "uipath.json"), **kwargs
|
|
36
36
|
)
|
|
37
37
|
context.entrypoint = entrypoint
|
|
38
38
|
context.input = input
|
|
@@ -42,6 +42,7 @@ def langgraph_run_middleware(
|
|
|
42
42
|
context.logs_min_level = env.get("LOG_LEVEL", "INFO")
|
|
43
43
|
context.job_id = env.get("UIPATH_JOB_KEY")
|
|
44
44
|
context.trace_id = env.get("UIPATH_TRACE_ID")
|
|
45
|
+
context.is_eval_run = kwargs.get("is_eval_run", False)
|
|
45
46
|
context.tracing_enabled = tracing
|
|
46
47
|
context.input_file = kwargs.get("input_file", None)
|
|
47
48
|
context.execution_output_file = kwargs.get("execution_output_file", None)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
FROM ghcr.io/astral-sh/uv:python3.12-bookworm
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
|
|
5
|
+
COPY . .
|
|
6
|
+
|
|
7
|
+
# Install dependencies for all testcases
|
|
8
|
+
RUN uv sync
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# Set environment variables for runtime
|
|
12
|
+
ENV TAVILY_API_KEY=${TAVILY_API_KEY:-""}
|
|
13
|
+
ENV UIPATH_TENANT_ID=${UIPATH_TENANT_ID:-""}
|
|
14
|
+
ENV UIPATH_JOB_KEY=3a03d5cb-fa21-4021-894d-a8e2eda0afe0
|
|
15
|
+
|
|
16
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Authenticate with UiPath
|
|
4
|
+
echo "Authenticating with UiPath..."
|
|
5
|
+
uv run uipath auth --client-id="$CLIENT_ID" --client-secret="$CLIENT_SECRET" --base-url="$BASE_URL"
|
|
6
|
+
|
|
7
|
+
cd /app/testcases/company-research-agent
|
|
8
|
+
|
|
9
|
+
# Sync dependencies for this specific testcase
|
|
10
|
+
echo "Syncing dependencies..."
|
|
11
|
+
uv sync
|
|
12
|
+
|
|
13
|
+
# Pack the agent
|
|
14
|
+
echo "Packing agent..."
|
|
15
|
+
uv run uipath pack
|
|
16
|
+
|
|
17
|
+
# Run the agent
|
|
18
|
+
echo "Running agent with $CHAT_MODE mode..."
|
|
19
|
+
echo "Input from input.json file"
|
|
20
|
+
uv run uipath run agent --file input.json
|
|
21
|
+
|
|
22
|
+
# Print the output file
|
|
23
|
+
echo "Printing output file..."
|
|
24
|
+
if [ -f "__uipath/output.json" ]; then
|
|
25
|
+
echo "=== OUTPUT FILE CONTENT ==="
|
|
26
|
+
cat __uipath/output.json
|
|
27
|
+
echo "=== END OUTPUT FILE CONTENT ==="
|
|
28
|
+
else
|
|
29
|
+
echo "ERROR: __uipath/output.json not found!"
|
|
30
|
+
echo "Checking directory contents:"
|
|
31
|
+
ls -la
|
|
32
|
+
if [ -d "__uipath" ]; then
|
|
33
|
+
echo "Contents of __uipath directory:"
|
|
34
|
+
ls -la __uipath/
|
|
35
|
+
else
|
|
36
|
+
echo "__uipath directory does not exist!"
|
|
37
|
+
fi
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Validate output
|
|
41
|
+
echo "Validating output..."
|
|
42
|
+
python src/assert.py
|
|
43
|
+
|
|
44
|
+
echo "Testcase completed successfully."
|
{uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/src/graph.py
RENAMED
|
@@ -7,7 +7,7 @@ from langgraph.graph import END, START, MessagesState, StateGraph
|
|
|
7
7
|
from langgraph.prebuilt import create_react_agent
|
|
8
8
|
from pydantic import BaseModel
|
|
9
9
|
|
|
10
|
-
from uipath_langchain.chat import UiPathAzureChatOpenAI
|
|
10
|
+
from uipath_langchain.chat import UiPathAzureChatOpenAI, UiPathChat
|
|
11
11
|
|
|
12
12
|
# Configuration constants
|
|
13
13
|
MAX_SEARCH_RESULTS = 5
|
|
@@ -46,11 +46,11 @@ DO NOT do any math as specified in your instructions.
|
|
|
46
46
|
"""
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
def create_llm() -> UiPathAzureChatOpenAI:
|
|
50
|
-
"""Create and configure the language model."""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
def create_llm() -> Union[UiPathAzureChatOpenAI, UiPathChat]:
|
|
50
|
+
"""Create and configure the language model based on an environment variable."""
|
|
51
|
+
if os.getenv("USE_AZURE_CHAT", "false").lower() == "true":
|
|
52
|
+
return UiPathAzureChatOpenAI(model=DEFAULT_MODEL)
|
|
53
|
+
return UiPathChat(model=DEFAULT_MODEL)
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
def create_research_agent():
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Authenticate with UiPath
|
|
4
|
+
echo "Authenticating with UiPath..."
|
|
5
|
+
uv run uipath auth --client-id="$CLIENT_ID" --client-secret="$CLIENT_SECRET" --base-url="$BASE_URL"
|
|
6
|
+
|
|
7
|
+
cd /app/testcases/multi-agent-supervisor-researcher-coder
|
|
8
|
+
|
|
9
|
+
# Sync dependencies for this specific testcase
|
|
10
|
+
echo "Syncing dependencies..."
|
|
11
|
+
uv sync
|
|
12
|
+
|
|
13
|
+
# Pack the agent
|
|
14
|
+
echo "Packing agent..."
|
|
15
|
+
uv run uipath pack
|
|
16
|
+
|
|
17
|
+
# Run the agent
|
|
18
|
+
echo "Running agent with $CHAT_MODE mode..."
|
|
19
|
+
echo "Input from input.json file"
|
|
20
|
+
uv run uipath run agent --file input.json
|
|
21
|
+
|
|
22
|
+
# Print the output file
|
|
23
|
+
echo "Printing output file..."
|
|
24
|
+
if [ -f "__uipath/output.json" ]; then
|
|
25
|
+
echo "=== OUTPUT FILE CONTENT ==="
|
|
26
|
+
cat __uipath/output.json
|
|
27
|
+
echo "=== END OUTPUT FILE CONTENT ==="
|
|
28
|
+
else
|
|
29
|
+
echo "ERROR: __uipath/output.json not found!"
|
|
30
|
+
echo "Checking directory contents:"
|
|
31
|
+
ls -la
|
|
32
|
+
if [ -d "__uipath" ]; then
|
|
33
|
+
echo "Contents of __uipath directory:"
|
|
34
|
+
ls -la __uipath/
|
|
35
|
+
else
|
|
36
|
+
echo "__uipath directory does not exist!"
|
|
37
|
+
fi
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Validate output
|
|
41
|
+
echo "Validating output..."
|
|
42
|
+
python src/assert.py
|
|
43
|
+
|
|
44
|
+
echo "Testcase completed successfully."
|
|
@@ -12,7 +12,7 @@ from langgraph.types import Command
|
|
|
12
12
|
from pydantic import BaseModel
|
|
13
13
|
from typing_extensions import TypedDict
|
|
14
14
|
|
|
15
|
-
from uipath_langchain.chat import UiPathAzureChatOpenAI
|
|
15
|
+
from uipath_langchain.chat import UiPathAzureChatOpenAI, UiPathChat
|
|
16
16
|
|
|
17
17
|
# Configuration constants
|
|
18
18
|
MAX_SEARCH_RESULTS = 5
|
|
@@ -69,11 +69,11 @@ def create_supervisor_prompt() -> str:
|
|
|
69
69
|
)
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
def create_llm() -> UiPathAzureChatOpenAI:
|
|
73
|
-
"""Create and configure the language model."""
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
def create_llm() -> Union[UiPathAzureChatOpenAI, UiPathChat]:
|
|
73
|
+
"""Create and configure the language model based on an environment variable."""
|
|
74
|
+
if os.getenv("USE_AZURE_CHAT", "false").lower() == "true":
|
|
75
|
+
return UiPathAzureChatOpenAI(model=DEFAULT_MODEL)
|
|
76
|
+
return UiPathChat(model=DEFAULT_MODEL)
|
|
77
77
|
|
|
78
78
|
|
|
79
79
|
# Type definitions
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Authenticate with UiPath
|
|
4
|
+
echo "Authenticating with UiPath..."
|
|
5
|
+
uv run uipath auth --client-id="$CLIENT_ID" --client-secret="$CLIENT_SECRET" --base-url="$BASE_URL"
|
|
6
|
+
|
|
7
|
+
cd /app/testcases/simple-local-mcp
|
|
8
|
+
|
|
9
|
+
# Sync dependencies for this specific testcase
|
|
10
|
+
echo "Syncing dependencies..."
|
|
11
|
+
uv sync
|
|
12
|
+
|
|
13
|
+
# Pack the agent
|
|
14
|
+
echo "Packing agent..."
|
|
15
|
+
uv run uipath pack
|
|
16
|
+
|
|
17
|
+
# Run the agent
|
|
18
|
+
echo "Running agent with $CHAT_MODE mode..."
|
|
19
|
+
echo "Input from input.json file"
|
|
20
|
+
uv run uipath run agent --file input.json
|
|
21
|
+
|
|
22
|
+
# Print the output file
|
|
23
|
+
echo "Printing output file..."
|
|
24
|
+
if [ -f "__uipath/output.json" ]; then
|
|
25
|
+
echo "=== OUTPUT FILE CONTENT ==="
|
|
26
|
+
cat __uipath/output.json
|
|
27
|
+
echo "=== END OUTPUT FILE CONTENT ==="
|
|
28
|
+
else
|
|
29
|
+
echo "ERROR: __uipath/output.json not found!"
|
|
30
|
+
echo "Checking directory contents:"
|
|
31
|
+
ls -la
|
|
32
|
+
if [ -d "__uipath" ]; then
|
|
33
|
+
echo "Contents of __uipath directory:"
|
|
34
|
+
ls -la __uipath/
|
|
35
|
+
else
|
|
36
|
+
echo "__uipath directory does not exist!"
|
|
37
|
+
fi
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Validate output
|
|
42
|
+
echo "Validating output..."
|
|
43
|
+
python src/assert.py
|
|
44
|
+
|
|
45
|
+
echo "Testcase completed successfully."
|
|
@@ -4,9 +4,12 @@ from contextlib import asynccontextmanager
|
|
|
4
4
|
|
|
5
5
|
from langchain_mcp_adapters.client import MultiServerMCPClient
|
|
6
6
|
from langgraph.prebuilt import create_react_agent
|
|
7
|
-
from uipath_langchain.chat import UiPathAzureChatOpenAI
|
|
7
|
+
from uipath_langchain.chat import UiPathAzureChatOpenAI, UiPathChat
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
if os.getenv("USE_AZURE_CHAT", "false").lower() == "true":
|
|
10
|
+
model = UiPathAzureChatOpenAI(model="gpt-4o-2024-08-06")
|
|
11
|
+
else:
|
|
12
|
+
model = UiPathChat(model="gpt-4o-2024-08-06")
|
|
10
13
|
|
|
11
14
|
@asynccontextmanager
|
|
12
15
|
async def make_graph():
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Authenticate with UiPath
|
|
4
|
+
echo "Authenticating with UiPath..."
|
|
5
|
+
uv run uipath auth --client-id="$CLIENT_ID" --client-secret="$CLIENT_SECRET" --base-url="$BASE_URL"
|
|
6
|
+
|
|
7
|
+
cd /app/testcases/ticket-classification
|
|
8
|
+
|
|
9
|
+
# Sync dependencies for this specific testcase
|
|
10
|
+
echo "Syncing dependencies..."
|
|
11
|
+
uv sync
|
|
12
|
+
|
|
13
|
+
# Pack the agent
|
|
14
|
+
echo "Packing agent..."
|
|
15
|
+
uv run uipath pack
|
|
16
|
+
|
|
17
|
+
# Run the agent
|
|
18
|
+
echo "Running agent with $CHAT_MODE mode..."
|
|
19
|
+
echo "Input from input.json file"
|
|
20
|
+
uv run uipath run agent --file input.json
|
|
21
|
+
|
|
22
|
+
echo "Resuming agent run by default with {'Answer': true}..."
|
|
23
|
+
uv run uipath run agent '{"Answer": true}' --resume;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# Print the output file
|
|
27
|
+
echo "Printing output file..."
|
|
28
|
+
if [ -f "__uipath/output.json" ]; then
|
|
29
|
+
echo "=== OUTPUT FILE CONTENT ==="
|
|
30
|
+
cat __uipath/output.json
|
|
31
|
+
echo "=== END OUTPUT FILE CONTENT ==="
|
|
32
|
+
else
|
|
33
|
+
echo "ERROR: __uipath/output.json not found!"
|
|
34
|
+
echo "Checking directory contents:"
|
|
35
|
+
ls -la
|
|
36
|
+
if [ -d "__uipath" ]; then
|
|
37
|
+
echo "Contents of __uipath directory:"
|
|
38
|
+
ls -la __uipath/
|
|
39
|
+
else
|
|
40
|
+
echo "__uipath directory does not exist!"
|
|
41
|
+
fi
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
# Validate output
|
|
45
|
+
echo "Validating output..."
|
|
46
|
+
python src/assert.py
|
|
47
|
+
|
|
48
|
+
echo "Testcase completed successfully."
|
{uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/src/main.py
RENAMED
|
@@ -13,7 +13,7 @@ from pydantic import BaseModel, Field
|
|
|
13
13
|
|
|
14
14
|
from uipath import UiPath
|
|
15
15
|
from uipath.models import CreateAction
|
|
16
|
-
from uipath_langchain.chat import UiPathAzureChatOpenAI
|
|
16
|
+
from uipath_langchain.chat import UiPathAzureChatOpenAI, UiPathChat
|
|
17
17
|
|
|
18
18
|
# Configuration
|
|
19
19
|
logger = logging.getLogger(__name__)
|
|
@@ -115,8 +115,11 @@ def decide_next_node(state: GraphState) -> NextNode:
|
|
|
115
115
|
|
|
116
116
|
async def classify(state: GraphState) -> Command:
|
|
117
117
|
"""Classify the support ticket using LLM."""
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
if os.getenv("USE_AZURE_CHAT", "false").lower() == "true":
|
|
119
|
+
llm = UiPathAzureChatOpenAI(model=DEFAULT_MODEL)
|
|
120
|
+
else:
|
|
121
|
+
llm = UiPathChat(model=DEFAULT_MODEL)
|
|
122
|
+
|
|
120
123
|
# Add rejection message if there was a previous prediction
|
|
121
124
|
if state.get("last_predicted_category"):
|
|
122
125
|
predicted_category = state["last_predicted_category"]
|
|
@@ -125,16 +128,16 @@ async def classify(state: GraphState) -> Command:
|
|
|
125
128
|
"Choose another one."
|
|
126
129
|
)
|
|
127
130
|
state["messages"].append(HumanMessage(content=rejection_message))
|
|
128
|
-
|
|
131
|
+
|
|
129
132
|
chain = llm | output_parser
|
|
130
|
-
|
|
133
|
+
|
|
131
134
|
try:
|
|
132
135
|
result = await chain.ainvoke(state["messages"])
|
|
133
136
|
logger.info(
|
|
134
137
|
f"Ticket classified with label: {result.label}, "
|
|
135
138
|
f"confidence score: {result.confidence}"
|
|
136
139
|
)
|
|
137
|
-
|
|
140
|
+
|
|
138
141
|
return Command(
|
|
139
142
|
update={
|
|
140
143
|
"confidence": result.confidence,
|