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.

Files changed (252) hide show
  1. uipath_langchain-0.0.121/.github/workflows/integration_tests.yml +162 -0
  2. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/PKG-INFO +3 -3
  3. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/pyproject.toml +3 -3
  4. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_runtime.py +17 -3
  5. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/cli_run.py +3 -2
  6. uipath_langchain-0.0.121/testcases/Dockerfile +16 -0
  7. uipath_langchain-0.0.121/testcases/company-research-agent/run.sh +44 -0
  8. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/src/graph.py +6 -6
  9. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/uv.lock +1 -1
  10. uipath_langchain-0.0.121/testcases/multi-agent-supervisor-researcher-coder/run.sh +44 -0
  11. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/src/graph.py +6 -6
  12. uipath_langchain-0.0.121/testcases/simple-local-mcp/run.sh +45 -0
  13. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/simple-local-mcp/graph.py +5 -2
  14. uipath_langchain-0.0.121/testcases/ticket-classification/run.sh +48 -0
  15. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/src/main.py +9 -6
  16. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/uv.lock +1670 -1671
  17. uipath_langchain-0.0.120/.github/workflows/integration_tests.yml +0 -38
  18. uipath_langchain-0.0.120/testcases/company-research-agent/Dockerfile +0 -35
  19. uipath_langchain-0.0.120/testcases/multi-agent-supervisor-researcher-coder/Dockerfile +0 -36
  20. uipath_langchain-0.0.120/testcases/simple-local-mcp/Dockerfile +0 -34
  21. uipath_langchain-0.0.120/testcases/ticket-classification/Dockerfile +0 -37
  22. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.cursorrules +0 -0
  23. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.editorconfig +0 -0
  24. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.gitattributes +0 -0
  25. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/cd.yml +0 -0
  26. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/ci.yml +0 -0
  27. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/commitlint.yml +0 -0
  28. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/lint-custom-version.yml +0 -0
  29. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/lint.yml +0 -0
  30. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/publish-dev.yml +0 -0
  31. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/publish-docs.yml +0 -0
  32. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/publish-prior-stable-version.yml +0 -0
  33. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/slack.yml +0 -0
  34. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/test-custom-version.yml +0 -0
  35. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.github/workflows/test.yml +0 -0
  36. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.gitignore +0 -0
  37. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.pre-commit-config.yaml +0 -0
  38. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.python-version +0 -0
  39. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.vscode/extensions.json +0 -0
  40. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/.vscode/settings.json +0 -0
  41. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/CONTRIBUTING.md +0 -0
  42. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/LICENSE +0 -0
  43. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/README.md +0 -0
  44. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/chat_models.md +0 -0
  45. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/context_grounding.md +0 -0
  46. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/human_in_the_loop.md +0 -0
  47. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start.md +0 -0
  48. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/cloud_env_var_dark.png +0 -0
  49. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/cloud_env_var_light.png +0 -0
  50. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/invoke_output_dark.png +0 -0
  51. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/quick_start_images/invoke_output_light.png +0 -0
  52. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/click-storage-bucket.png +0 -0
  53. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-index-1.png +0 -0
  54. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-index-2.png +0 -0
  55. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-process.png +0 -0
  56. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-quiz-generator.png +0 -0
  57. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-storage-bucket-1.png +0 -0
  58. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/create-storage-bucket-2.png +0 -0
  59. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/folder-path.png +0 -0
  60. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/job-info.png +0 -0
  61. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/output.png +0 -0
  62. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/process-page.png +0 -0
  63. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/researcher-1.png +0 -0
  64. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/researcher-2.png +0 -0
  65. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/run-process-1.png +0 -0
  66. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/run-process-2.png +0 -0
  67. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/RAG/storage-bucket-content.png +0 -0
  68. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/coder-agent-package-overview.png +0 -0
  69. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/coder-agent-process-configuration.png +0 -0
  70. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/planner-agent-package-overview.png +0 -0
  71. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/planner-agent-process-configuration.png +0 -0
  72. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/researcher-agent-package-overview.png +0 -0
  73. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/multi-agent-distributed/researcher-agent-process-configuration.png +0 -0
  74. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/activate-apps.png +0 -0
  75. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/activate-deployment.png +0 -0
  76. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/copy-folder-path.png +0 -0
  77. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/deploy-solution-package-wizard.png +0 -0
  78. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/deploy-solution-package.png +0 -0
  79. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/monitor-agent.png +0 -0
  80. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/navigate-to-solution-folder.png +0 -0
  81. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/resume-condition.png +0 -0
  82. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/run-agent.png +0 -0
  83. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/solution-destination-folder.png +0 -0
  84. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/start-job.png +0 -0
  85. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/docs/sample_images/ticket-classification/upload-solution-package.png +0 -0
  86. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/README.md +0 -0
  87. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/env.example +0 -0
  88. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/input.example/quiz-generator-debug-input.json +0 -0
  89. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/input.example/researcher-debug-input.json +0 -0
  90. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/langgraph.json +0 -0
  91. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/pyproject.toml +0 -0
  92. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/quiz-generator-RAG-agent.mermaid +0 -0
  93. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/researcher-RAG-agent.mermaid +0 -0
  94. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/src/agents/quiz-generator-RAG-agent.py +0 -0
  95. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/src/agents/researcher-RAG-agent.py +0 -0
  96. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/uipath.json +0 -0
  97. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/RAG-quiz-generator/uv.lock +0 -0
  98. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/README.md +0 -0
  99. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/.env.example +0 -0
  100. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/agent.mermaid +0 -0
  101. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/graph.py +0 -0
  102. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/langgraph.json +0 -0
  103. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/pyproject.toml +0 -0
  104. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/uipath.json +0 -0
  105. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/company-research-agent/uv.lock +0 -0
  106. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/database.py +0 -0
  107. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/main.py +0 -0
  108. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/models.py +0 -0
  109. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/pyproject.toml +0 -0
  110. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/schemas.py +0 -0
  111. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/templates/index.html +0 -0
  112. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/hitl-inbox-server/uv.lock +0 -0
  113. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/.env.example +0 -0
  114. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/README.md +0 -0
  115. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/coder.mermaid +0 -0
  116. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/langgraph.json +0 -0
  117. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/planner.mermaid +0 -0
  118. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/pyproject.toml +0 -0
  119. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/researcher.mermaid +0 -0
  120. {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
  121. {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
  122. {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
  123. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/uipath.json +0 -0
  124. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-planner-researcher-coder-distributed/uv.lock +0 -0
  125. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/.env.example +0 -0
  126. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/README.md +0 -0
  127. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
  128. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/graph.py +0 -0
  129. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
  130. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
  131. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
  132. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
  133. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/.env.example +0 -0
  134. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/README.md +0 -0
  135. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/main.py +0 -0
  136. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/pyproject.toml +0 -0
  137. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/retrieval-chain/uv.lock +0 -0
  138. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/.env.example +0 -0
  139. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/README.md +0 -0
  140. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/agent.mermaid +0 -0
  141. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/langgraph.json +0 -0
  142. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/pyproject.toml +0 -0
  143. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
  144. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
  145. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
  146. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/uipath.json +0 -0
  147. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-local-mcp/uv.lock +0 -0
  148. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/.env.example +0 -0
  149. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/README.md +0 -0
  150. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/agent.mermaid +0 -0
  151. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/langgraph.json +0 -0
  152. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/main.py +0 -0
  153. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/pyproject.toml +0 -0
  154. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/uipath.json +0 -0
  155. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/simple-remote-mcp/uv.lock +0 -0
  156. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/.env.example +0 -0
  157. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/README.md +0 -0
  158. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/agent.mermaid +0 -0
  159. {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
  160. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/langgraph.json +0 -0
  161. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/main.py +0 -0
  162. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/pyproject.toml +0 -0
  163. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/uipath.json +0 -0
  164. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/samples/ticket-classification/uv.lock +0 -0
  165. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/__init__.py +0 -0
  166. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/__init__.py +0 -0
  167. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_context.py +0 -0
  168. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_exception.py +0 -0
  169. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_input.py +0 -0
  170. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_runtime/_output.py +0 -0
  171. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_templates/langgraph.json.template +0 -0
  172. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_templates/main.py.template +0 -0
  173. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/_utils/_graph.py +0 -0
  174. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/cli_init.py +0 -0
  175. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_cli/cli_new.py +0 -0
  176. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/__init__.py +0 -0
  177. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/_request_mixin.py +0 -0
  178. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/_settings.py +0 -0
  179. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/_utils/_sleep_policy.py +0 -0
  180. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/chat/__init__.py +0 -0
  181. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/chat/models.py +0 -0
  182. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/embeddings/__init__.py +0 -0
  183. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/embeddings/embeddings.py +0 -0
  184. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/middlewares.py +0 -0
  185. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/retrievers/__init__.py +0 -0
  186. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/retrievers/context_grounding_retriever.py +0 -0
  187. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/AsyncUiPathTracer.py +0 -0
  188. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/__init__.py +0 -0
  189. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/_events.py +0 -0
  190. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/_instrument_traceable.py +0 -0
  191. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/tracers/_utils.py +0 -0
  192. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/vectorstores/__init__.py +0 -0
  193. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/src/uipath_langchain/vectorstores/context_grounding_vectorstore.py +0 -0
  194. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/README.md +0 -0
  195. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/.env.example +0 -0
  196. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/agent.mermaid +0 -0
  197. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/input.json +0 -0
  198. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/langgraph.json +0 -0
  199. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/pyproject.toml +0 -0
  200. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/src/assert.py +0 -0
  201. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/company-research-agent/uipath.json +0 -0
  202. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/.env.example +0 -0
  203. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/README.md +0 -0
  204. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
  205. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/input.json +0 -0
  206. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
  207. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
  208. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/src/assert.py +0 -0
  209. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
  210. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
  211. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/.env.example +0 -0
  212. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/README.md +0 -0
  213. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/agent.mermaid +0 -0
  214. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/input.json +0 -0
  215. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/langgraph.json +0 -0
  216. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/pyproject.toml +0 -0
  217. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/assert.py +0 -0
  218. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
  219. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
  220. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/uipath.json +0 -0
  221. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/simple-local-mcp/uv.lock +0 -0
  222. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/.env.example +0 -0
  223. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/README.md +0 -0
  224. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/agent.mermaid +0 -0
  225. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/input.json +0 -0
  226. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/langgraph.json +0 -0
  227. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/pyproject.toml +0 -0
  228. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/src/assert.py +0 -0
  229. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/uipath.json +0 -0
  230. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/testcases/ticket-classification/uv.lock +0 -0
  231. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/__init__.py +0 -0
  232. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/conftest.py +0 -0
  233. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/mocks/langgraph.json +0 -0
  234. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/mocks/simple_agent.py +0 -0
  235. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/mocks/uipath.json +0 -0
  236. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/cli/test_run.py +0 -0
  237. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/__init__.py +0 -0
  238. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/conftest.py +0 -0
  239. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/action_trigger_hitl.py +0 -0
  240. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/api_trigger_hitl.py +0 -0
  241. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/job_trigger_hitl.py +0 -0
  242. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/langgraph.json +0 -0
  243. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/uipath-default-escalation.json +0 -0
  244. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/mocks/uipath.json +0 -0
  245. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_action_trigger.py +0 -0
  246. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_hitl_api_trigger.py +0 -0
  247. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_hitl_default_escalation.py +0 -0
  248. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/hitl/test_hitl_job_trigger.py +0 -0
  249. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/test_dummy.py +0 -0
  250. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/tracers/__init__.py +0 -0
  251. {uipath_langchain-0.0.120 → uipath_langchain-0.0.121}/tests/tracers/test_async_uipath_tracer.py +0 -0
  252. {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.120
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>=0.2.70
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.0
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.120"
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.0, <2.2.0",
9
- "langgraph>=0.2.70",
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",
@@ -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.context.job_id is None:
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 {channel: final_chunk[channel] for channel in available_channels}
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."
@@ -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
- return UiPathAzureChatOpenAI(model=DEFAULT_MODEL)
52
- # Alternative model option:
53
- # return ChatAnthropic(model=ALTERNATIVE_MODEL)
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():
@@ -2650,7 +2650,7 @@ wheels = [
2650
2650
 
2651
2651
  [[package]]
2652
2652
  name = "uipath-langchain"
2653
- version = "0.0.118"
2653
+ version = "0.0.119"
2654
2654
  source = { editable = "../../" }
2655
2655
  dependencies = [
2656
2656
  { name = "httpx" },
@@ -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
- return UiPathAzureChatOpenAI(model=DEFAULT_MODEL)
75
- # Alternative model option:
76
- # return ChatAnthropic(model=ALTERNATIVE_MODEL)
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
- model = UiPathAzureChatOpenAI(model="gpt-4o-2024-08-06")
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."
@@ -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
- llm = UiPathAzureChatOpenAI(model=DEFAULT_MODEL)
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,